Переглянути джерело

添加反馈页面,查核详情添加上一项/下一项

code4eat 4 роки тому
батько
коміт
f8243280c1

+ 1 - 0
App.vue

@@ -25,6 +25,7 @@
 						if (plus.runtime.arguments) {
               // patParams: 院区,病区, 床号
               const { patParams } = JSON.parse(plus.runtime.arguments);
+			  console.log({patParams});
               uni.setStorageSync('patParams', patParams);
 						}
 					}

+ 347 - 0
components/imagex-uploader/imagex-uploader.vue

@@ -0,0 +1,347 @@
+<template>
+	<view class="imagex-uploader-container">
+		<view class="imagex-uploader-files">
+			<view v-for="(item, index) in fileList" :key="index">
+				<view class="imagex-uploader-file"
+					:class="[item.uploadPercent < 100 ? 'imagex-uploader-file-status' : '']"
+					@click="previewImage(index)">
+					<image class="imagex-uploader-img" :style="previewStyle" :src="item.path" mode="aspectFill" />
+					<view class="imagex-img-removeicon right" @click.stop="removeImage(index)" v-show="enableMove">×
+					</view>
+					<view class="imagex-loader-filecontent" v-if="item.uploadPercent < 100">{{ item.uploadPercent }}%
+					</view>
+				</view>
+			</view>
+			<view v-show="fileList.length < uploadLimit" hover-class="imagex-uploader-hover"
+				class="imagex-uploader-inputbox" @click="chooseImage" :style="uploadStyle">
+				<view><text class="iconfont" style="color: #666;"></text></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import ImagexUploader from './uploader.js';
+	export default {
+		data() {
+			return {
+				tempFilePaths: [],
+				upload_cache_list: [],
+				fileList: []
+			};
+		},
+		name: 'imagex-uploader',
+		props: {
+			// 服务ID
+			serviceId: {
+				type: String,
+				default: ''
+			},
+			// stsToken
+			stsToken: {
+				type: Object,
+				default: function() {
+					return {};
+				}
+			},
+			// 上传地区
+			region: {
+				type: String,
+				default: 'cn',
+			},
+			// userId
+			userId: {
+				type: String,
+				default: '',
+			},
+			// appId
+			appId: {
+				type: Number,
+				default: undefined,
+			},
+			// 预览图样式
+			previewStyle: {
+				type: Object,
+				default: function() {
+					return {
+						width: '162rpx',
+						height: '162rpx'
+					}
+				}
+			},
+			// 上传样式
+			uploadStyle: {
+				type: Object,
+				default: function() {
+					return {
+						width: '162rpx',
+						height: '162rpx'
+					}
+				}
+			},
+			// 上传数量限制
+			uploadLimit: {
+				type: Number,
+				default: 9
+			},
+			// 是否自动上传
+			autoUpload: {
+				type: Boolean,
+				default: true
+			},
+			// 是否显示移除
+			enableMove: {
+				type: Boolean,
+				default: true
+			},
+			// 服务器预览图片
+			defaultImageList: {
+				type: Array,
+				default: () => {
+					return [];
+				}
+			},
+		},
+		async created() {
+			let _self = this;
+			this.fileList = this.fileList.concat(this.defaultImageList);
+			this.defaultImageList.map(item => {
+				this.upload_cache_list.push(item.path);
+			});
+			this.emit();
+		},
+		methods: {
+			uploadImage(fileInfo) {
+				let _self = this;
+				const promises = fileInfo.tempFiles.map(function(file, index) {
+					return promisify(upload)({
+						info: {
+							tempFile: file,
+							tempFilePath: fileInfo.tempFilePaths[index],
+						},
+						_self: _self
+					});
+				});
+
+				uni.showLoading({
+					title: `正在上传...`
+				});
+
+				Promise.all(promises)
+					.then(function(data) {
+						uni.hideLoading();
+						_self.upload_cache_list.push(...data);
+						_self.emit();
+					})
+					.catch(function(res) {
+						uni.hideLoading();
+					});
+			},
+			chooseImage() {
+				let _self = this;
+				uni.chooseImage({
+					sizeType: ['compressed', 'original'],
+					sourceType: ['album', 'camera'],
+					success: function(res) {
+						for (let i = 0, len = res.tempFiles.length; i < len; i++) {
+							res.tempFiles[i]['uploadPercent'] = 0;
+							_self.fileList.push(res.tempFiles[i]);
+						}
+						_self.tempFilePaths = res.tempFilePaths;
+						_self.upload(res, _self.autoUpload);
+					},
+					fail: function(err) {
+						console.log(err);
+					}
+				});
+			},
+			async upload(fileInfo, autoUpload) {
+				let _self = this;
+				autoUpload ? await _self.uploadImage(fileInfo) : console.warn(
+					`传输参数:this.$refs.xx.upload(true)才可上传,默认false`);
+			},
+			previewImage(idx) {
+				let _self = this;
+				let preview = [];
+				for (let i = 0, len = _self.fileList.length; i < len; i++) {
+					// step3.这里修改服务器返回字段 !!!
+					preview.push(_self.fileList[i].path);
+				}
+				uni.previewImage({
+					current: idx,
+					urls: preview
+				});
+			},
+			removeImage(idx) {
+				let _self = this;
+				_self.fileList.splice(idx, 1);
+				_self.upload_cache_list.splice(idx, 1);
+				_self.emit();
+			},
+			emit() {
+				let _self = this;
+				_self.$emit('change', _self.upload_cache_list);
+			}
+		}
+	};
+
+	const promisify = api => {
+		return function(options, ...params) {
+			return new Promise(function(resolve, reject) {
+				api(
+					Object.assign({}, options, {
+						success: resolve,
+						fail: reject
+					}),
+					...params
+				);
+			});
+		};
+	};
+
+	const upload = function(options) {
+		let info = options.info;
+		let _self = options._self;
+
+		let imagexUploader = new ImagexUploader({
+			region: _self.region,
+			appId: _self.appId,
+			userId: _self.userId,
+			imageConfig: {
+				serviceId: _self.serviceId,
+			},
+		});
+
+		try {
+			imagexUploader.start({
+				path: info.tempFilePath,
+				size: info.tempFile.size,
+				type: 'image',
+				stsToken: _self.stsToken,
+				success: function(data) {
+					console.log('upload success', data);
+					if (options.success) {
+						options.success(data);
+					}
+				},
+				fail: function(data) {
+					console.log('upload fail', data);
+					if (options.fail) {
+						options.fail(data);
+					}
+				},
+				progress: function(data) {
+					console.log('progress: ', data);
+					let targetIndex = _self.fileList.findIndex(file => file.path === info.tempFilePath);
+					if (targetIndex >= 0) {
+						_self.fileList[targetIndex]['uploadPercent'] = data.progress;
+						_self.$set(_self.fileList, targetIndex, _self.fileList[targetIndex]);
+					}
+				}
+			});
+		} catch (e) {
+			console.log('error', e)
+		}
+	};
+</script>
+
+<style lang="scss">
+
+	.iconfont {
+		font-size: 16px;
+		font-style: normal;
+		-webkit-font-smoothing: antialiased;
+		-moz-osx-font-smoothing: grayscale;
+	}
+
+	.imagex-uploader-container {
+		padding: 20rpx;
+	}
+
+	.imagex-uploader-files {
+		display: flex;
+		flex-wrap: wrap;
+	}
+
+	.imagex-uploader-file {
+		position: relative;
+		margin-right: 16rpx;
+		margin-bottom: 16rpx;
+	}
+
+	.imagex-uploader-file-status:after {
+		content: ' ';
+		position: absolute;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		background-color: rgba(0, 0, 0, 0.5);
+	}
+
+	.imagex-uploader-img {
+		display: block;
+	}
+
+	.imagex-uploader-input {
+		position: absolute;
+		z-index: 1;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		opacity: 0;
+	}
+
+	.imagex-uploader-inputbox {
+		position: relative;
+		margin-bottom: 16rpx;
+		box-sizing: border-box;
+		background-color: #ededed;
+		display: flex;
+		flex-wrap: wrap;
+		align-items: center;
+		justify-content: center;
+		background-image: url('data:image/svg+xml;base64,PHN2ZyB0PSIxNjE3MDM4NjEwOTgzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEzMjk4IiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik0xMjggNTU0LjQ5Nmg3NjhjMjMuNTUyIDAgNDIuNDk2LTE4Ljk0NCA0Mi40OTYtNDIuNDk2cy0xOC45NDQtNDIuNDk2LTQyLjQ5Ni00Mi40OTZIMTI4Yy0yMy41NTIgMC00Mi40OTYgMTguOTQ0LTQyLjQ5NiA0Mi40OTZzMTguOTQ0IDQyLjQ5NiA0Mi40OTYgNDIuNDk2ek00NjkuNTA0IDEyOHY3NjhjMCAyMy41NTIgMTguOTQ0IDQyLjQ5NiA0Mi40OTYgNDIuNDk2czQyLjQ5Ni0xOC45NDQgNDIuNDk2LTQyLjQ5NlYxMjhjMC0yMy41NTItMTguOTQ0LTQyLjQ5Ni00Mi40OTYtNDIuNDk2cy00Mi40OTYgMTguOTQ0LTQyLjQ5NiA0Mi40OTZ6IiBwLWlkPSIxMzI5OSIgZmlsbD0iI2JmYmZiZiI+PC9wYXRoPjwvc3ZnPg==');
+		background-repeat: no-repeat;
+		background-position: center;
+	}
+
+	.imagex-img-removeicon {
+		position: absolute;
+		color: #fff;
+		width: 40upx;
+		height: 40upx;
+		line-height: 40upx;
+		z-index: 2;
+		text-align: center;
+		background-color: #e54d42;
+
+		&.right {
+			top: 0;
+			right: 0;
+		}
+	}
+
+	.imagex-loader-filecontent {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+		color: #fff;
+		z-index: 9;
+	}
+
+	.imagex-uploader-file:nth-child(4n + 0) {
+		margin-right: 0;
+	}
+
+	.imagex-uploader-inputbox>view {
+		text-align: center;
+	}
+
+	.imagex-uploader-hover {
+		box-shadow: 0 0 0 #e5e5e5;
+		background: #e5e5e5;
+	}
+</style>

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
components/imagex-uploader/uploader.js


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

@@ -25,7 +25,7 @@
 
 <style lang="less">
 	.tm-callback-listpage {
-		position: absolute;
+		position: fixed;
 		left: 25rpx;
 		bottom: 100rpx;
 		width: 75rpx;

+ 181 - 175
pages.json

@@ -1,175 +1,181 @@
-{
-	"pages": [
-		{
-			"path": "pages/login/login"
-		},
-		{
-			"path": "pages/creatingSituations/creatingSituations",
-			"style": {
-				"navigationBarTitleText": "创建情境",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/mission/mission",
-			"style": {
-				"navigationBarTitleText": "任务",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/configure/configure",
-			"style": {
-				"navigationBarTitleText": "配置",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/mission-details/mission-details",
-			"style": {
-				"navigationBarTitleText": "改善任务",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/mission-action/mission-action",
-			"style": {
-				"navigationBarTitleText": "改善任务",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/home/home",
-			"style": {
-				"navigationBarTitleText": "个人中心",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/role-switching/role-switching",
-			"style": {
-				"navigationBarTitleText": "角色切换",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/messages/messages",
-			"style": {
-				"navigationBarTitleText": "消息中心",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/calendar/calendar",
-			"style": {
-				"navigationBarTitleText": "日历",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/todayCheck/todayCheck",
-			"style": {
-				"navigationBarTitleText": "今日查核",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/improve-mission-list/improve-mission-list",
-			"style": {
-				"navigationBarTitleText": "改善列表",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/situationsCenter/situationsCenter",
-			"style": {
-				"navigationBarTitleText": "情境中心",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/situationDetail/situationDetail",
-			"style": {
-				"navigationBarTitleText": "情境详情",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/checkMapList/checkMapList",
-			"style": {
-				"navigationBarTitleText": "查核地图",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/checkList/checkList",
-			"style": {
-				"navigationBarTitleText": "查核列表",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/checkMainPoints/checkMainPoints",
-			"style": {
-				"navigationBarTitleText": "查核要点",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/auditItemDetails/auditItemDetails",
-			"style": {
-				"navigationBarTitleText": "查核项详情",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/legendDetails/legendDetails",
-			"style": {
-				"navigationBarTitleText": "图例详情",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/planList/planList",
-			"style": {
-				"navigationBarTitleText": "计划列表",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/editCheckList/editCheckList",
-			"style": {
-				"navigationBarTitleText": "查核列表",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/allocationPerson/allocationPerson",
-			"style": {
-				"navigationBarTitleText": "指派查核人员",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/mainPointsDetail/mainPointsDetail",
-			"style": {
-				"navigationBarTitleText": "要点详情",
-				"enablePullDownRefresh": false
-			}
-		}
-	],
-	"globalStyle": {
-		"navigationStyle": "custom",
-		// "autoBackButton": true,
-		// "homeButton": true,
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "追踪方法学",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8",
-		"app-plus": {
-			"background": "#efeff4"
-		},
-		"rpxCalcMaxDeviceWidth": 9999,
-		"onReachBottomDistance": 184
-	}
-}
+{
+	"pages": [{
+			"path": "pages/login/login"
+		},
+		{
+			"path": "pages/creatingSituations/creatingSituations",
+			"style": {
+				"navigationBarTitleText": "创建情境",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/mission/mission",
+			"style": {
+				"navigationBarTitleText": "任务",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/configure/configure",
+			"style": {
+				"navigationBarTitleText": "配置",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/mission-details/mission-details",
+			"style": {
+				"navigationBarTitleText": "改善任务",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/mission-action/mission-action",
+			"style": {
+				"navigationBarTitleText": "改善任务",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/home/home",
+			"style": {
+				"navigationBarTitleText": "个人中心",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/role-switching/role-switching",
+			"style": {
+				"navigationBarTitleText": "角色切换",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/suggestionsFeedback/suggestionsFeedback",
+			"style": {
+				"navigationBarTitleText": "建议反馈",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/messages/messages",
+			"style": {
+				"navigationBarTitleText": "消息中心",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/calendar/calendar",
+			"style": {
+				"navigationBarTitleText": "日历",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/todayCheck/todayCheck",
+			"style": {
+				"navigationBarTitleText": "今日查核",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/improve-mission-list/improve-mission-list",
+			"style": {
+				"navigationBarTitleText": "改善列表",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/situationsCenter/situationsCenter",
+			"style": {
+				"navigationBarTitleText": "情境中心",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/situationDetail/situationDetail",
+			"style": {
+				"navigationBarTitleText": "情境详情",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/checkMapList/checkMapList",
+			"style": {
+				"navigationBarTitleText": "查核地图",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/checkList/checkList",
+			"style": {
+				"navigationBarTitleText": "查核列表",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/checkMainPoints/checkMainPoints",
+			"style": {
+				"navigationBarTitleText": "查核要点",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/auditItemDetails/auditItemDetails",
+			"style": {
+				"navigationBarTitleText": "查核项详情",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/legendDetails/legendDetails",
+			"style": {
+				"navigationBarTitleText": "图例详情",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/planList/planList",
+			"style": {
+				"navigationBarTitleText": "计划列表",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/editCheckList/editCheckList",
+			"style": {
+				"navigationBarTitleText": "查核列表",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/allocationPerson/allocationPerson",
+			"style": {
+				"navigationBarTitleText": "指派查核人员",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/mainPointsDetail/mainPointsDetail",
+			"style": {
+				"navigationBarTitleText": "要点详情",
+				"enablePullDownRefresh": false
+			}
+		}
+	],
+	"globalStyle": {
+		"navigationStyle": "custom",
+		// "autoBackButton": true,
+		// "homeButton": true,
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "追踪方法学",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8",
+		"app-plus": {
+			"background": "#efeff4"
+		},
+		"rpxCalcMaxDeviceWidth": 9999,
+		"onReachBottomDistance": 184
+	}
+}

+ 109 - 5
pages/auditItemDetails/auditItemDetails.vue

@@ -52,6 +52,14 @@
 				</view>
 			</view>
 		</view>
+	
+		<view class="bottomMenuGroup">
+			<view class="menuBtn" @click="goToPrevPage">
+				<image class="threeLineMenuIcon" src="/static/threeLineMenu.png" ></image>
+			</view>
+			<view class="prevBtn" @click="switchItem(-1)">上一项</view>
+			<view class="nextBtn" @click="switchItem(1)">下一项</view>
+		</view>
 	</view>
 </template>
 
@@ -71,16 +79,33 @@
 					checkItemName: '',
 					checkResultRequestList: [],
 					checkPointId: ''
-				}
+				},
+				itemBelongGroup:[],
+				itemId:''
 			};
 		},
 		onLoad: function ({id, checkPointId}) {
+			console.log('22');
 			this.checkPointId = checkPointId;
-			this.dispatch('checkTaskDetail', {id}).then((data)=>{
-				if(data) {
-					this.detail = data;
-				}
+			this.itemId = id;
+			this.loadItemDetail(id);
+			//接收来自上个页面所传过来的数据
+			const eventChannel = this.getOpenerEventChannel();
+			eventChannel.on('acceptDataFromOpenerPage', (data)=>{
+			    // console.log({data});
+				this.itemBelongGroup =data.data[0].responseList.map((item,index)=>{
+					    return({
+							index:index,
+							id:item['id'],
+						})
+				});
+				//重新导航进页面,删除缓存并设置最新数据
+				uni.removeStorageSync('itemBelongGroup');
+			    uni.setStorageSync('itemBelongGroup',this.itemBelongGroup);
 			});
+			//手动刷新页面,获取本地缓存
+			const itemBelongGroup = uni.getStorageSync('itemBelongGroup');
+			this.itemBelongGroup = itemBelongGroup;
 		},
 		methods: {
 			getArr(value) {
@@ -94,6 +119,48 @@
 			},
 			dispatch(key, data) {
 				return this.$store.dispatch({type: 'checkList/commActions', key, data});
+			},
+			goToPrevPage(){
+				// uni.navigateBack({
+				//     delta: 1
+				// });
+				window.history.back();
+			},
+			loadItemDetail(id){
+				this.dispatch('checkTaskDetail', {id}).then((data)=>{
+					if(data) {
+						this.detail = data;
+						this.itemId = id;
+					}
+				});
+			},
+			switchItem(num){
+				let current = this.itemBelongGroup.filter(item=>{
+					  return item.id == this.itemId;
+				});
+				if(num<0){
+					if(current[0].index==0){
+						 uni.showToast({
+						     title: '已经没有上一项',
+						     duration: 2000,
+							 icon:'none'
+						 });
+						 return;
+					}
+				}
+				if(num>0){
+					if(current[0].index==this.itemBelongGroup.length-1){
+						 uni.showToast({
+						     title: '已经没有下一项',
+						     duration: 2000,
+							 icon:'none'
+						 });
+						 return;
+					}
+				}
+				let needItemIndex = num>0?current[0].index+1:current[0].index-1;
+				let needItemId = this.itemBelongGroup[needItemIndex].id;
+				this.loadItemDetail(needItemId);	
 			}
 		}
 	}
@@ -209,5 +276,42 @@
 				}
 			}
 		}
+		.bottomMenuGroup {
+			position: fixed;
+			bottom: 0;
+			width: 100%;
+			height: 75rpx;
+			display: flex;
+			flex-direction: row;
+			background: #FFFFFF;
+			border-top:0.62rpx solid #DADEE6;
+			.menuBtn {
+				display: flex;
+				width: 75rpx;
+				height: 75rpx;
+				justify-content: center;
+				align-items: center;
+				border-right: 0.62rpx solid #DADEE6;
+				.threeLineMenuIcon {
+					width: 26.25rpx;
+					height: 21.25rpx;
+				}
+				
+			}
+			.prevBtn {
+				border-right: 0.62rpx solid #DADEE6;
+			}
+			.prevBtn,.nextBtn {
+				display: flex;
+				flex: 1;
+			    justify-content: center;
+				height:75rpx;
+				line-height:75rpx;
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #3377FF;
+			}
+		}
 	}
 </style>

+ 13 - 3
pages/checkMainPoints/checkMainPoints.vue

@@ -92,7 +92,9 @@
 				point: [{checkPointId: 'all', checkPointName: '全部要点'}],
 				checkPointId: 'all',
 				nowPermission: uni.getStorageSync('nowPermission'),
-				active: 0
+				active: 0,
+				checkId:'',
+				deptId:''
 			};
 		},
 		computed: {
@@ -102,8 +104,11 @@
 			},
 		},
 		onLoad: function ({checkId,deptId}) {
+			this.deptId = deptId;
+			this.checkId = checkId;
 			this.dispatch('checkTaskDetailList', {checkId,deptId}).then((data)=>{
 				if(data) {
+					// console.log({data});
 					this.detailList = data;
 					this.copyDetailList = data;
 					data.map(({checkPointId,checkPointName})=>{
@@ -120,7 +125,7 @@
 			childClick(child, checkPointId) {
 				// 查核者,管理员
 				if(this.nowPermission == 1 || this.nowPermission == 3) { 
-					let str = '';
+					let str = '',that = this;
 					if(child.checkResult) {
 						// 跳转到查核项详情
 						str = 'auditItemDetails/auditItemDetails';
@@ -138,7 +143,12 @@
 						}
 					}
 					uni.navigateTo({
-						url: `/pages/${str}?id=${child.id}&checkPointId=${checkPointId}`
+						url: `/pages/${str}?id=${child.id}&checkPointId=${checkPointId}`,
+						success: function(res) {
+							const currentGroup = that.detailList.filter(item=>item.checkPointId == checkPointId);
+						    // 通过eventChannel向被打开页面传送数据
+						    res.eventChannel.emit('acceptDataFromOpenerPage', { data: currentGroup });
+						}
 					});
 				}
 			},

+ 486 - 406
pages/home/home.vue

@@ -1,429 +1,509 @@
-<template>
-	<view class="home-page">
-		<view class="content-info">
-			<view class="top-box">
-				<image class="bgpic" src="/static/images/pcbg.png"></image>
-				<text class="hosname">{{hospName}}</text>
-			</view>
-			<view class="avatar-box">
-				<image class="avatar" src="/static/images/boy-avatar.png"></image>
-			</view>
-			<view class="info-box">
-				<view class="head">
-					<text class="name">
-						{{name}}
-					</text>
-					<!-- <image class="gender" src="/static/images/boy.png"></image> -->
-					<text class="username">{{code}}</text>
-				</view>
-				<!-- <view class="row">
-					<text class="text">心血管内科</text>
-				</view> -->
-				<view class="row">
-					<view class="col">
-						<text class="text">主管:{{depManager}}</text>
-					</view>
-					<view class="col">
-						<text class="text">|</text>
-					</view>
-					<view class="col">
-						<text class="text">所属查核组:{{dep}}</text>
-					</view>
-				</view>
-
-			</view>
-			<view class="function-box">
-				<view class="role-switch" @click="switchRole">
-					<text class="func-text">角色切换</text>
-					<view class="msg-box" v-show="isMsgShow">
-						<text class="msg-text">{{this.totalTodo}}</text>
-					</view>
-					<image class="icon-more" src="/static/images/icon-more.png"></image>
-					<text class="role">{{nowPermissionName}}</text>
+<template>
+	<view class="home-page">
+		<view class="content-info">
+			<view class="top-box">
+				<image class="bgpic" src="/static/images/pcbg.png"></image>
+				<text class="hosname">{{hospName}}</text>
+			</view>
+			<view class="avatar-box">
+				<image class="avatar" src="/static/images/boy-avatar.png"></image>
+			</view>
+			<view class="info-box">
+				<view class="head">
+					<text class="name">
+						{{name}}
+					</text>
+					<!-- <image class="gender" src="/static/images/boy.png"></image> -->
+					<text class="username">{{code}}</text>
+				</view>
+				<!-- <view class="row">
+					<text class="text">心血管内科</text>
+				</view> -->
+				<view class="row">
+					<view class="col">
+						<text class="text">主管:{{depManager}}</text>
+					</view>
+					<view class="col">
+						<text class="text">|</text>
+					</view>
+					<view class="col">
+						<text class="text">所属查核组:{{dep}}</text>
+					</view>
+				</view>
+
+			</view>
+			<view class="function-box">
+				<view class="role-switch" @click="switchRole">
+					<text class="func-text">角色切换</text>
+					<view class="msg-box" v-show="isMsgShow">
+						<text class="msg-text">{{this.totalTodo}}</text>
+					</view>
+					<image class="icon-more" src="/static/images/icon-more.png"></image>
+					<text class="role">{{nowPermissionName}}</text>
 				</view>
 				<!-- 				<view class="sys-setting">
 					<text class="func-text">系统设置</text>
 					<image class="icon-more" src="/static/images/icon-more.png"></image>
-				</view> -->
-			</view>
-		</view>
-		<view class="logout-box" @click="logOut">
-			<text class="logout-text">退出登录</text>
-		</view>
-		<view class="copyright">
-			<text>浙江新医智联信息科技有限公司</text>
-			<text>{{version}}</text>
-		</view>
-		<tm-tabbar :permission="nowPermission" />
-		<tm-modal v-if="showJournal">
+				</view> -->
+				<view class="suggestions-feedback-btn" @click="feedbackFunc">
+					<text class="func-text">建议与反馈</text>
+					<image class="icon-more" src="/static/images/icon-more.png"></image>
+				</view>
+				
+			</view>
+		</view>
+		<view class="logout-box" @click="logOut">
+			<text class="logout-text">退出登录</text>
+		</view>
+		<view class="copyright" @click="showVersionInfo">
+			<text>浙江新医智联信息科技有限公司</text>
+			<text>{{version}}</text>
+		</view>
+		<tm-tabbar :permission="nowPermission" />
+		<tm-modal v-if="showJournal">
+			<view class="journal">
+				<view class="journal-title">
+					<text>{{journalData.logTitle}}</text>
+					<text>{{journalData.logDate}}</text>
+				</view>
+				<scroll-view scroll-y="true" class="journal-content">
+					{{journalData.logContent}}
+				</scroll-view>
+				<button class="journal-ok" @click="journalOk">确定</button>
+			</view>
+		</tm-modal>
+		<tm-modal v-if="ifshowVersionInfo">
 			<view class="journal">
 				<view class="journal-title">
-					<text>{{journalData.logTitle}}</text>
-					<text>{{journalData.logDate}}</text>
+					<text>{{versionData.versionNo}}</text>
+					<text>{{versionData.versionDate}}</text>
 				</view>
 				<scroll-view scroll-y="true" class="journal-content">
-					{{journalData.logContent}}
+					{{versionData.versionContent}}
 				</scroll-view>
-				<button class="journal-ok" @click="journalOk">确定</button>
+				<button class="journal-ok" @click="ifshowVersionInfo = false">确定</button>
 			</view>
-		</tm-modal>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
+		</tm-modal>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
 			return {
-				showJournal: false,
+				ifshowVersionInfo:false,
+				showJournal: false,
 				version: '0.5.3',
-				journalData: {
-					logId: '',
-					logTitle: '',
-					logDate: '',
-					logContent: ''
-				},
-				nowPermission: '', //用户当前第一权限
-				nowPermissionName:'',//当前权限名
-				code:'',//用户名
-				name:'',//名字
-				dep:'',//所属查核组
-				depManager:'',//查核组组长
-				hospName:'',//医院名
-				totalTodo:0,//总待办数
-				pemissionList:[
-					{permission: 1, name: '管理员'},
-					{permission: 2, name: '查核组长'},
-					{permission: 3, name: '查核组员'},
-					{permission: 4, name: '单位负责人'},
-					{permission: 5, name: '改善者'}
-				]
-			}
-		},
-		created: function() {
-			this.$store.dispatch({
-				type: 'home/commActions',
-				payload: {
-					key: 'getuser',
-				}
-			}).then((data) => {
-				if (data) {
-					uni.setStorageSync('permissions', data.permissions);
-					uni.setStorageSync('nowPermission', data.nowPermission);
-					this.code=data.code;
-					this.name=data.name;
-					this.nowPermission=data.nowPermission;
-					this.dep=data.dep;
-					this.depManager=data.depManager;
-					this.hospName=data.hospName;
-					let current=this.pemissionList.find(item => item.permission == data.nowPermission);
-					this.nowPermissionName=current.name;
-					this.totalTodo=data.permissions.reduce(function(total,currentValue){
-						return total+currentValue.todoNum;
-					},0);
-				}
-			});
-			this.$store.dispatch({
-				type: 'home/commActions',
-				payload: {
-					key: 'getVersionLog',
-					data: {versionNo: this.version}
-				}
-			}).then((data) => {
-				if (data) {
-					if(!data.logId) {
-						this.showJournal = false;
-					} else {
-						this.showJournal = true;
-						this.journalData = data;
-					}
-				}
-			});
-		},
-		methods: {
-			logOut() {
-				this.$store.dispatch({
-					type: 'home/commActions',
-					payload: {
-						key: 'logout',
-					}
-				}).then((data)=>{
-					if(data){
-						uni.redirectTo({
-							url: `/pages/login/login?hospSign=${uni.getStorageSync('hospSign')}`
-						});
-					}
-				});
+				versionData: {
+					versionNo: '',
+					versionId: '',
+					versionDate: '',
+					versionContent: ''
+				},
+				journalData: {
+					logId: '',
+					logTitle: '',
+					logDate: '',
+					logContent: ''
+				},
+				nowPermission: '', //用户当前第一权限
+				nowPermissionName: '', //当前权限名
+				code: '', //用户名
+				name: '', //名字
+				dep: '', //所属查核组
+				depManager: '', //查核组组长
+				hospName: '', //医院名
+				totalTodo: 0, //总待办数
+				pemissionList: [{
+						permission: 1,
+						name: '管理员'
+					},
+					{
+						permission: 2,
+						name: '查核组长'
+					},
+					{
+						permission: 3,
+						name: '查核组员'
+					},
+					{
+						permission: 4,
+						name: '单位负责人'
+					},
+					{
+						permission: 5,
+						name: '改善者'
+					}
+				]
+			}
+		},
+		created: function() {
+			this.$store.dispatch({
+				type: 'home/commActions',
+				payload: {
+					key: 'getuser',
+				}
+			}).then((data) => {
+				if (data) {
+					uni.setStorageSync('permissions', data.permissions);
+					uni.setStorageSync('nowPermission', data.nowPermission);
+					this.code = data.code;
+					this.name = data.name;
+					this.nowPermission = data.nowPermission;
+					this.dep = data.dep;
+					this.depManager = data.depManager;
+					this.hospName = data.hospName;
+					let current = this.pemissionList.find(item => item.permission == data.nowPermission);
+					this.nowPermissionName = current.name;
+					this.totalTodo = data.permissions.reduce(function(total, currentValue) {
+						return total + currentValue.todoNum;
+					}, 0);
+				}
+			});
+			this.$store.dispatch({
+				type: 'home/commActions',
+				payload: {
+					key: 'getVersionLog',
+					data: {
+						versionNo: this.version
+					}
+				}
+			}).then((data) => {
+				if (data) {
+					if (!data.logId) {
+						this.showJournal = false;
+					} else {
+						this.showJournal = true;
+						this.journalData = data;
+					}
+				}
+			});
+		},
+		methods: {
+			logOut() {
+				this.$store.dispatch({
+					type: 'home/commActions',
+					payload: {
+						key: 'logout',
+					}
+				}).then((data) => {
+					if (data) {
+						uni.redirectTo({
+							url: `/pages/login/login?hospSign=${uni.getStorageSync('hospSign')}`
+						});
+					}
+				});
+			},
+			switchRole() {
+				uni.navigateTo({
+					url: '/pages/role-switching/role-switching'
+				});
 			},
-			switchRole() {
+			feedbackFunc(){
 				uni.navigateTo({
-					url: '/pages/role-switching/role-switching'
+					url: '/pages/suggestionsFeedback/suggestionsFeedback'
 				});
+			},
+			journalOk() {
+				this.showJournal = false;
+				this.$store.dispatch({
+					type: 'home/commActions',
+					payload: {
+						key: 'hadRead',
+						data: {
+							versionNO: this.version,
+							versionId: this.journalData.logId
+						}
+					}
+				});
 			},
-			journalOk() {
-				this.showJournal = false;
+			showVersionInfo(){
 				this.$store.dispatch({
 					type: 'home/commActions',
 					payload: {
-						key: 'hadRead',
-						data: {versionNO: this.version, versionId: this.journalData.logId}
-					}
-				});
-			}
-		},
-		computed:{
-			isMsgShow(){
-				return this.totalTodo<=0?false:true;
-			}
-		}
-	}
-</script>
-
-<style lang="less">
-	.journal {
-		overflow: hidden;
-		position: absolute;
-		top: 50%;
-		left: 50%;
-		transform: translateX(-50%) translateY(-50%);
-		border-radius: 15rpx;
-		padding: 50rpx;
-		padding-bottom: 75rpx;
-		width: 562.5rpx;
-		// height: 625rpx;
-		font-size: 22.5rpx;
-		line-height: 35rpx;
-		background: #FFFFFF;
-		.journal-title {
-			display: flex;
-			flex-direction: column;
-			text {
-				font-size: 35rpx;
-				line-height: 52.5rpx;
-				&:last-child {
-					font-size: 22.5rpx;
-					line-height: 33.75rpx;
-					color: #666E80;
-				}
-			}
-		}
-		.journal-content {
-			margin: 25rpx 0;
-			max-height: 332.5rpx;
-		}
-		.journal-ok {
-			position: fixed;
-			left: 0;
-			bottom: 0;
-			border-radius: 0;
-			border: 0;
-			width: 100%;
-			height: 75rpx;
-			line-height: 75rpx;
-			font-size: 22.5rpx;
-			color: #fff;
-			background-color: #3377FF;
-		}
-	}
-	.home-page {
-		height: 100%;
-
-		.content-info {
-			height: 596.25rpx;
-			background-color: #FFFFFF;
-
-			.top-box {
-				position: relative;
-				height: 350rpx;
-
-				.bgpic {
-					width: 750rpx;
-					height: 350rpx;
-				}
-
-				.hosname {
-					font-size: 45rpx;
-					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-					font-weight: 400;
-					color: #FFFFFF;
-					position: absolute;
-					left: 50rpx;
-					top: 92.5rpx;
-				}
-			}
-
-			.info-box {
-				width: 700rpx;
-				height: 250rpx;
-				border-radius: 15rpx;
-				background-color: #FFFFFF;
-				position: absolute;
-				left: 25rpx;
-				right: 25rpx;
-				top: 226.25rpx;
-				box-shadow: 0px 10px 30px 0px rgba(0, 13, 51, 0.1);
-
-				.head {
-					margin-left: 37.5rpx;
-					margin-top: 68.75rpx;
-
-					.name {
-						font-size: 35rpx;
-						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-						font-weight: 400;
-						color: #17181A;
-					}
-
-					.gender {
-						width: 25rpx;
-						height: 25rpx;
-						background: linear-gradient(135deg, #4DA6FF 0%, #4D88FF 100%);
-						border-radius: 6.25rpx;
-						margin-left: 15rpx;
-					}
-
-					.username {
-						font-size: 25rpx;
-						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-						font-weight: 400;
-						color: #17181A;
-						margin-left: 55rpx;
-					}
-				}
-
-				.row {
-					margin-left: 37.5rpx;
-					margin-top: 62.5rpx;
-
-					.col {
-						display: inline-block;
-						margin-right: 25rpx;
-					}
-				}
-
-				.text {
-					font-size: 22.5rpx;
-					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-					font-weight: 400;
-					color: #666E80;
-				}
-
-			}
-
-			.avatar-box {
-				width: 125rpx;
-				height: 125rpx;
-				position: absolute;
-				right: 75rpx;
-				top: 187.5rpx;
-				background: #FFFFFF;
-				z-index: 2;
-				border-radius: 50%
-			}
-
-			.avatar {
-				width: 112.5rpx;
-				height: 112.5rpx;
-				margin-left: 6.25rpx;
-				margin-top: 6.25rpx;
-				border-radius: 50%
-			}
-
-			.function-box {
-				position: absolute;
-				top: 496.25rpx;
-				width: 750rpx;
-
-				.role-switch {
-					height: 100rpx;
-					width: 725rpx;
-					margin-left: 25rpx;
-					background: #FFFFFF;
-					border-bottom: 0.62rpx solid #DADEE6;
-
-					.msg-box {
-						width: 50rpx;
-						height: 30rpx;
-						float: left;
-						margin-top: 35rpx;
-						margin-left: 15rpx;
-						position: relative;
-						background: #FF4060;
-						border-radius: 24px;
-						text-align: center;
-
-						.msg-text {
-							font-size: 17.5rpx;
-							font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-							font-weight: 400;
-							color: #FFFFFF;
-							line-height: 30rpx;
+						key: 'getThisVersionInfo',
+						data: {
+							versionNo: this.version,
 						}
 					}
-
-					.role {
-						font-size: 22.5rpx;
-						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
-						font-weight: 400;
-						color: #7A8599;
-						line-height: 100rpx;
-						float: right;
-						margin-right: 25rpx;
-					}
-				}
-
-				// .sys-setting{
-				// 	height: 100rpx;
-				// 	width: 725rpx;
-				// 	margin-left: 25rpx;
-				// 	background: #FFFFFF;
+				}).then(data=>{
+					// console.log({'getThisVersionInfo':data});
+					this.versionData = data;
+					this.ifshowVersionInfo = true;
+				});
+			}
+		},
+		computed: {
+			isMsgShow() {
+				return this.totalTodo <= 0 ? false : true;
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.journal {
+		overflow: hidden;
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translateX(-50%) translateY(-50%);
+		border-radius: 15rpx;
+		padding: 50rpx;
+		padding-bottom: 75rpx;
+		width: 562.5rpx;
+		// height: 625rpx;
+		font-size: 22.5rpx;
+		line-height: 35rpx;
+		background: #FFFFFF;
+
+		.journal-title {
+			display: flex;
+			flex-direction: column;
+
+			text {
+				font-size: 35rpx;
+				line-height: 52.5rpx;
+
+				&:last-child {
+					font-size: 22.5rpx;
+					line-height: 33.75rpx;
+					color: #666E80;
+				}
+			}
+		}
+
+		.journal-content {
+			margin: 25rpx 0;
+			max-height: 332.5rpx;
+		}
+
+		.journal-ok {
+			position: fixed;
+			left: 0;
+			bottom: 0;
+			border-radius: 0;
+			border: 0;
+			width: 100%;
+			height: 75rpx;
+			line-height: 75rpx;
+			font-size: 22.5rpx;
+			color: #fff;
+			background-color: #3377FF;
+		}
+	}
+
+	.home-page {
+		height: 100%;
+
+		.content-info {
+			height: 596.25rpx;
+			background-color: #FFFFFF;
+
+			.top-box {
+				position: relative;
+				height: 350rpx;
+
+				.bgpic {
+					width: 750rpx;
+					height: 350rpx;
+				}
+
+				.hosname {
+					font-size: 45rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #FFFFFF;
+					position: absolute;
+					left: 50rpx;
+					top: 92.5rpx;
+				}
+			}
+
+			.info-box {
+				width: 700rpx;
+				height: 250rpx;
+				border-radius: 15rpx;
+				background-color: #FFFFFF;
+				position: absolute;
+				left: 25rpx;
+				right: 25rpx;
+				top: 226.25rpx;
+				box-shadow: 0px 10px 30px 0px rgba(0, 13, 51, 0.1);
+
+				.head {
+					margin-left: 37.5rpx;
+					margin-top: 68.75rpx;
+
+					.name {
+						font-size: 35rpx;
+						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+						font-weight: 400;
+						color: #17181A;
+					}
+
+					.gender {
+						width: 25rpx;
+						height: 25rpx;
+						background: linear-gradient(135deg, #4DA6FF 0%, #4D88FF 100%);
+						border-radius: 6.25rpx;
+						margin-left: 15rpx;
+					}
+
+					.username {
+						font-size: 25rpx;
+						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+						font-weight: 400;
+						color: #17181A;
+						margin-left: 55rpx;
+					}
+				}
+
+				.row {
+					margin-left: 37.5rpx;
+					margin-top: 62.5rpx;
+
+					.col {
+						display: inline-block;
+						margin-right: 25rpx;
+					}
+				}
+
+				.text {
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #666E80;
+				}
+
+			}
+
+			.avatar-box {
+				width: 125rpx;
+				height: 125rpx;
+				position: absolute;
+				right: 75rpx;
+				top: 187.5rpx;
+				background: #FFFFFF;
+				z-index: 2;
+				border-radius: 50%
+			}
+
+			.avatar {
+				width: 112.5rpx;
+				height: 112.5rpx;
+				margin-left: 6.25rpx;
+				margin-top: 6.25rpx;
+				border-radius: 50%
+			}
+
+			.function-box {
+				position: absolute;
+				top: 496.25rpx;
+				width: 750rpx;
+                background-color: #FFFFFF;
+				.role-switch {
+					height: 100rpx;
+					width: 725rpx;
+					margin-left: 25rpx;
+					background: #FFFFFF;
+					border-bottom: 0.62rpx solid #DADEE6;
+
+					.msg-box {
+						width: 50rpx;
+						height: 30rpx;
+						float: left;
+						margin-top: 35rpx;
+						margin-left: 15rpx;
+						position: relative;
+						background: #FF4060;
+						border-radius: 24px;
+						text-align: center;
+
+						.msg-text {
+							font-size: 17.5rpx;
+							font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+							font-weight: 400;
+							color: #FFFFFF;
+							line-height: 30rpx;
+						}
+					}
+
+					.role {
+						font-size: 22.5rpx;
+						font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+						font-weight: 400;
+						color: #7A8599;
+						line-height: 100rpx;
+						float: right;
+						margin-right: 25rpx;
+					}
+				}
+
+				// .sys-setting{
+				// 	height: 100rpx;
+				// 	width: 725rpx;
+				// 	margin-left: 25rpx;
+				// 	background: #FFFFFF;
 				// }
-				.func-text {
-					font-size: 22.5rpx;
-					font-family: SourceHanSansCN-Medium, SourceHanSansCN;
-					font-weight: 500;
-					color: #292C33;
-					line-height: 100rpx;
-					float: left;
-				}
-
-				.icon-more {
-					width: 12.37rpx;
-					height: 21.21rpx;
-					line-height: 100rpx;
-					float: right;
-					margin-top: 39.37rpx;
-					margin-right: 25rpx;
-				}
-			}
-
-
-		}
-
-		.logout-box {
-			width: 750rpx;
-			height: 100rpx;
-			background-color: #FFFFFF;
-			margin-top: 15rpx;
-
-			.logout-text {
-				font-size: 22.5rpx;
-				font-family: SourceHanSansCN-Medium, SourceHanSansCN;
-				font-weight: 500;
-				color: #292C33;
-				line-height: 100rpx;
-				margin-left: 330rpx;
-			}
-		}
-		.copyright {
-			position: absolute;
-			bottom: 90rpx;
-			left: 0;
-			display: flex;
-			flex-direction: column;
-			justify-content: center;
-			align-items: center;
-			width: 100%;
-			color: #666E80;
-		}
-	}
+				.suggestions-feedback-btn {
+					height: 100rpx;
+					width: 725rpx;
+					margin-left: 25rpx;
+					background: #FFFFFF;
+					// border-bottom: 0.62rpx solid #DADEE6;
+					.func-text {
+						
+					}
+				}
+				.func-text {
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Medium, SourceHanSansCN;
+					font-weight: 500;
+					color: #292C33;
+					line-height: 100rpx;
+					float: left;
+				}
+
+				.icon-more {
+					width: 12.37rpx;
+					height: 21.21rpx;
+					line-height: 100rpx;
+					float: right;
+					margin-top: 39.37rpx;
+					margin-right: 25rpx;
+				}
+			}
+
+
+		}
+
+		.logout-box {
+			width: 750rpx;
+			height: 100rpx;
+			background-color: #FFFFFF;
+			margin-top:112.5rpx;
+
+			.logout-text {
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Medium, SourceHanSansCN;
+				font-weight: 500;
+				color: #292C33;
+				line-height: 100rpx;
+				margin-left: 330rpx;
+			}
+		}
+
+		.copyright {
+			position: absolute;
+			bottom: 90rpx;
+			left: 0;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			width: 100%;
+			color: #666E80;
+		}
+	}
 </style>

+ 5 - 2
pages/home/model.js

@@ -8,7 +8,10 @@ export default {
   actions: {
 		commActions({ commit, state }, { payload }) {
 			// payload = {key,data} // data是请求数据,key是请求接口id
-      return commServer(payload);
-		},
+        return commServer(payload);
+   },
+   // fromFeedbackPop({ commit, state }){
+	  //  console.log('触发')
+   // },
   }
 }

+ 4 - 0
pages/home/server.js

@@ -20,6 +20,10 @@ const requestList = {
 	hadRead:{
 		method: 'POST',
 		url: 'versionInfo/hadRead'
+	},
+	getThisVersionInfo:{
+		method: 'GET',
+		url: 'versionInfo/getThisVersionInfo'
 	}
 };
 export const commServer = ({ key, data }) => {

+ 1 - 0
pages/legendDetails/legendDetails.vue

@@ -55,6 +55,7 @@
 			}
 		},
 		onLoad: function ({checkItemId, checkPointId}) {
+			
 			this.dispatch('getArticle', {checkItemId, checkPointId}).then((data)=>{
 				if(data) {
 					this.rightAnswer = data;

+ 102 - 4
pages/mainPointsDetail/mainPointsDetail.vue

@@ -205,7 +205,14 @@
         + 增加一条记录
       </button>
     </scroll-view>
-    <button type="primary" class="sureDetail" @click="sureDetail" v-if="data.display?data.display:false">完成</button>
+    <!-- <button type="primary" class="sureDetail" @click="sureDetail" v-if="data.display?data.display:false">完成</button> -->
+	<view class="bottomMenuGroup">
+		<view class="menuBtn" @click="goToPrevPage">
+			<image class="threeLineMenuIcon" src="/static/threeLineMenu.png" ></image>
+		</view>
+		<view class="prevBtn" @click="switchItem(1)">下一项</view>
+		<view class="nextBtn" @click="sureDetail" v-if="data.display?data.display:false">完成</view>
+	</view>
   </view>
 </template>
 
@@ -224,20 +231,22 @@ export default {
       resultConfigList: [],
       id: "",
       checkPointId: "",
+	  itemBelongGroup:[],
+	  itemId:''
     };
   },
   mounted() {
-    this.checkTaskDetail();
+    this.checkTaskDetail(this.id);
     this.getPeizhiList();
   },
   methods: {
-    checkTaskDetail() {
+    checkTaskDetail(id) {
       this.$store.dispatch({
           type: "mainPointsDetail/commActions",
           payload: {
             key: "checkTaskDetail",
             data: {
-              id: this.id,
+              id: id,
             },
           },
         }).then((res) => {
@@ -438,10 +447,58 @@ export default {
         url: `/pages/improve-mission-list/improve-mission-list?situationId=${this.data.situationId}`,
       });
     },
+	goToPrevPage(){
+		window.history.back();
+	},
+	switchItem(num){
+		let current = this.itemBelongGroup.filter(item=>{
+			  return item.id == this.id;
+		});
+		if(num<0){
+			if(current[0].index==0){
+				 uni.showToast({
+				     title: '已经没有上一项',
+				     duration: 2000,
+					 icon:'none'
+				 });
+				 return;
+			}
+		}
+		if(num>0){
+			if(current[0].index==this.itemBelongGroup.length-1){
+				 uni.showToast({
+				     title: '已经没有下一项',
+				     duration: 2000,
+					 icon:'none'
+				 });
+				 return;
+			}
+		}
+		let needItemIndex = num>0?current[0].index+1:current[0].index-1;
+		let needItemId = this.itemBelongGroup[needItemIndex].id;
+		this.checkTaskDetail(needItemId);	
+	}
   },
   onLoad({ id, checkPointId }) {
     this.id = id;
     this.checkPointId = checkPointId;
+	//接收来自上个页面所传过来的数据
+	const eventChannel = this.getOpenerEventChannel();
+	eventChannel.on('acceptDataFromOpenerPage', (data)=>{
+	    console.log({data});
+		this.itemBelongGroup =data.data[0].responseList.map((item,index)=>{
+			    return({
+					index:index,
+					id:item['id'],
+				})
+		});
+		//重新导航进页面,删除缓存并设置最新数据
+		uni.removeStorageSync('itemBelongGroup');
+	    uni.setStorageSync('itemBelongGroup',this.itemBelongGroup);
+	});
+	//手动刷新页面,获取本地缓存
+	const itemBelongGroup = uni.getStorageSync('itemBelongGroup');
+	this.itemBelongGroup = itemBelongGroup;
   },
 };
 </script>
@@ -686,5 +743,46 @@ export default {
     position: absolute;
     bottom: 0rpx;
   }
+  .bottomMenuGroup {
+  	position: fixed;
+  	bottom: 0;
+  	width: 100%;
+  	height: 75rpx;
+  	display: flex;
+  	flex-direction: row;
+  	background: #FFFFFF;
+  	border-top:0.62rpx solid #DADEE6;
+  	.menuBtn {
+  		display: flex;
+  		width: 75rpx;
+  		height: 75rpx;
+  		justify-content: center;
+  		align-items: center;
+  		border-right: 0.62rpx solid #DADEE6;
+  		.threeLineMenuIcon {
+  			width: 26.25rpx;
+  			height: 21.25rpx;
+  		}
+  		
+  	}
+	.prevBtn,.nextBtn {
+		display: flex;
+		flex: 1;
+	    justify-content: center;
+		height:75rpx;
+		line-height:75rpx;
+		font-size: 22.5rpx;
+		font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+		font-weight: 400;
+		color: #3377FF;
+	}
+  	.prevBtn {
+  		border-right: 0.62rpx solid #DADEE6;
+  	}
+	.nextBtn{
+		color: #FFFFFF;
+		background: #3377FF;
+	}
+  }
 }
 </style>

+ 5 - 2
pages/model.js

@@ -13,7 +13,9 @@ import planList from './planList/model.js';
 import checkList from "./checkList/model.js";
 import mainPointsDetail from './mainPointsDetail/model.js';
 import editCheckList from './editCheckList/model.js';
-import allocationPerson from './allocationPerson/model.js'
+import allocationPerson from './allocationPerson/model.js';
+import suggestionsFeedback from './suggestionsFeedback/model.js';
+
 
 export default module = {
   login,
@@ -34,5 +36,6 @@ export default module = {
   planList,
   checkList,
   editCheckList,
-  allocationPerson
+  allocationPerson,
+  suggestionsFeedback
 }

+ 14 - 0
pages/suggestionsFeedback/model.js

@@ -0,0 +1,14 @@
+import { commServer } from './server.js';
+
+export default {
+  namespaced: true,
+  state: {
+  },
+  mutations: {},
+  actions: {
+		commActions({ commit, state }, { payload }) {
+			// payload = {key,data} // data是请求数据,key是请求接口id
+      return commServer(payload);
+		},
+  }
+}

+ 17 - 0
pages/suggestionsFeedback/server.js

@@ -0,0 +1,17 @@
+import { creatRequest } from '../../utils/request.js';
+
+const requestList = {
+  //提交反馈表单
+  feedback: {
+    method: 'POST',
+    url: 'feedback/saveFeedback'
+  },
+  getFeedbackTypeList:{
+	method: 'GET',
+	url: 'feedback/getFeedbackType'
+  }
+};
+export const commServer = ({ key, data }) => {
+  let obj = requestList[key];
+  return creatRequest(obj, data);
+}

+ 438 - 0
pages/suggestionsFeedback/suggestionsFeedback.vue

@@ -0,0 +1,438 @@
+<template>
+	<view class="suggestions-feedback">
+		<scroll-view scroll-y="true" class="scroll-Y" >
+		<view class="score">
+			<text class="row-name">* 评分</text>
+			<view class="star-list">
+				<view class="star" v-for="(item,index) in starList" @click="changeStat(index)" :key="index">
+					<image v-if="score>index" class="activedStar" src="/static/activedStar.png" mode="scaleToFill">
+					</image>
+					<image v-if="index>=score" class="unActivedStar" src="/static/unActivedStar.png" mode="scaleToFill">
+					</image>
+				</view>
+			</view>
+		</view>
+		<view class="fallback-type" @click="selectFallbackType">
+			<text class="row-name">* 反馈类型</text>
+			<view class="row-value">
+				<picker @change="bindPickerChange" :value="index" :range="fallbackTypelist">
+					<view class="uni-input">{{fallbackTypelist[index]}}</view>
+				</picker>
+			</view>
+			<image class="icon-more" src="/static/images/icon-more.png"></image>
+		</view>
+		<view class="rich-text">
+			<view class="richTextAreaTopbar">
+				<text class="areaType">* 描述</text>
+				<text class="placeholder" v-if="!ifTextAreaFocus">请输入</text>
+			</view>
+			
+			<textarea class="text-area" @focus="ifTextAreaFocus=true" v-model="decDetail" />
+			<!-- <view class="selectedImgContainer" >
+				<image class="selectedImg" :src="item" v-for="(item,index) in imgList" :key="index"></image>
+			</view> -->
+			<!-- <view class="uploadImgArea" @click="selectImgFunc">
+				<text class="labelName">上传图片</text>
+				<text class="activeArea">点击上传图片</text>
+				<image class="imgIcon" src="/static/img-icon.png"></image>
+			</view> -->
+			
+		</view>
+		<uploadImage @changeFilePaths="uploadImgFunc" :isMultiple="true" :filePaths="imgList"></uploadImage>
+		<view class="bottomForm">
+			<view class="jobTitle">
+				<text class="label">* 您的职位</text><input cursor=10 class="inputArea" type="text" v-model="position" />
+			</view>
+			<view class="jobTitle">
+				<text class="label">* 您的手机号码</text><input class="inputArea" type="text" v-model="phoneNum" />
+			</view>
+		</view>
+		<view class="btn-confirm" @click="commitFeedback">
+			<text class="btn-text">确定</text>
+		</view>
+		</scroll-view>
+		<tm-modal v-if="showModal">
+			<view class="modalContent">
+				<view class="inner">
+					  <image class="normalTipIcon" src="/static/normalTipIcon.png" ></image>
+					  <view class="tipText">
+					  	我们已经收到您的意见和反馈,感谢您对新 医智联的信任与支持,我们将尽快处理并与 您联系
+					  </view>
+					  <view class="comfirmBtn" @click="goback">确定</view>
+				</view>
+			</view>
+		</tm-modal>
+	</view>
+</template>
+
+<script>
+	import uploadImage from '../../components/tm-upload-img/tm-upload-img.vue'
+	export default {
+		data() {
+			return {
+				starList: new Array(5),
+				score: 0,
+				position:'',
+				phoneNum:'',
+				decDetail:'',
+				ifTextAreaFocus:false,
+				fallbackTypelist: [],
+				index: 0,
+				selectedFeedbackType:'',
+				imgList:[],
+				showModal:false
+			};
+		},
+		components:{
+			uploadImage:uploadImage
+		},
+		onLoad(){
+			console.log(window.location.host);
+		},
+		mounted() {
+			this.getAllFeedbackList();
+			
+		},
+		methods: {
+			changeStat(index) {
+				this.score = index+1; //设置星级等级
+			},
+			selectFallbackType() {
+				// uni.navigateTo({
+				// 	url: '/pages/fallbackTypeSelect/fallbackTypeSelect'
+				// });
+			},
+			getAllFeedbackList(){
+				this.$store.dispatch({
+					type: 'suggestionsFeedback/commActions',
+					payload: {
+						key: 'getFeedbackTypeList',
+						data: {
+							
+						}
+					}
+				}).then((data) => {
+					// console.log(data)
+					this.fallbackTypelist = data;
+					this.selectedFeedbackType = data[0];
+				});
+			},
+			uploadImgFunc(param){
+				 if(this.imgList.length<3){
+					 this.imgList.push(param[0]);
+				 }else{
+					 uni.showModal({
+					   title: '错误提示',
+					   content: '最多上传3张',
+					   showCancel: false
+					 });
+				 }
+			},
+			bindPickerChange: function(e) {
+				this.selectedFeedbackType = e.target.value
+			},
+			commitFeedback(){
+				const data = {
+					"score":this.score,                 // 评价分数
+					"feedbackType":this.selectedFeedbackType,   //评价类型
+					"feedbackDesc":this.decDetail,//描述
+					"imgUrl1": this.imgList[0]?this.imgList[0]:'',	  // 图片url1
+					"imgUrl2": this.imgList[1]?this.imgList[1]:'',//
+					"imgUrl3": this.imgList[2]?this.imgList[2]:'',//
+					"position":this.position,			// 职位
+					"phoneNum":this.phoneNum
+				}
+				// console.log({'表单数据':data});
+				let tipAlertStr="";
+				
+				if(this.score==0)tipAlertStr="请完善评分!";
+				if(this.selectedFeedbackType=='')tipAlertStr="请选择反馈类型!";
+				if(this.decDetail.length==0)tipAlertStr="请填写反馈内容!";
+				if(this.position.length==0)tipAlertStr="请填职位信息!";
+				if(this.phoneNum.length==0)tipAlertStr="请填写手机号码!";
+				
+				if(tipAlertStr.length>0){
+					uni.showModal({
+					  title: '错误提示',
+					  content: tipAlertStr,
+					  showCancel: false
+					});
+					return;
+				}
+				
+				this.$store.dispatch({
+					type: 'suggestionsFeedback/commActions',
+					payload: {
+						key: 'feedback',
+						data: {
+							...data
+						}
+					}
+				}).then((data) => {
+					// console.log({'表单提交接口返回':data});
+					if(data){
+						  this.showModal = true;
+					}
+				});
+			},
+			goback(){
+				uni.navigateBack({
+					delta:1
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.suggestions-feedback {
+		position: relative;
+		padding-top: 15rpx;
+		height: 100vh;
+		background: #F5F6FA;
+		.scroll-Y {
+			padding-bottom:81.25rpx;
+		}
+        .modalContent {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			width: 100vw;
+			height: 100vh;
+			.inner {
+				// position: relative;
+				display: flex;
+				flex-direction: column;
+				// justify-content: center;
+				align-items: center;
+				width: 562.5rpx;
+				height: 361.25rpx;
+				margin: 0 auto;
+				top:50%;
+				padding-top: 50rpx;
+				background: #FFFFFF;
+				border-radius: 15rpx;
+				.normalTipIcon {
+					width: 80rpx;
+					height:80rpx;
+					margin-bottom: 28.75rpx;
+				}
+				.tipText {
+					width: 427.5rpx;
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #292C33;
+					line-height: 31.25rpx;
+					margin-bottom: 39.37rpx;
+				}
+				.comfirmBtn {
+					width: 100%;
+					height: 75rpx;
+					line-height: 75rpx;
+					text-align: center;
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #FFFFFF;
+					background: #3377FF;
+				}
+			}
+		}
+		.score {
+			display: flex;
+			flex-direction: row;
+			height: 112.5rpx;
+			justify-content: flex-start;
+			align-items: center;
+			padding: 0 25rpx;
+			background: #FFFFFF;
+
+			.row-name {
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #525866;
+				margin-right: 164.37rpx;
+			}
+
+			.star-list {
+				display: flex;
+				flex-direction: row;
+
+				.star {
+					position: relative;
+					width: 50rpx;
+					height: 50rpx;
+					margin-right: 25rpx;
+
+					.activedStar,
+					.unActivedStar {
+						position: absolute;
+						left: 0;
+						top: 0;
+						width: 50rpx;
+						height: 50rpx;
+					}
+
+					&:last-child {
+						margin-right: 0;
+					}
+				}
+			}
+		}
+
+		.fallback-type {
+			position: relative;
+			display: flex;
+			flex-direction: row;
+			height: 87.5rpx;
+			justify-content: flex-start;
+			align-items: center;
+			padding: 0 25rpx;
+			margin-top: 15rpx;
+			background: #FFFFFF;
+
+			.row-name {
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #525866;
+				margin-right: 119.37rpx;
+			}
+
+			.row-value {
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #292C33;
+			}
+
+			.icon-more {
+				position: absolute;
+				width: 12.37rpx;
+				height: 21.21rpx;
+				right: 33.12rpx;
+			}
+		}
+		.rich-text {
+			margin-top: 15rpx;
+			padding-left: 25rpx;
+			padding-right: 25rpx;
+			background: #FFFFFF;
+			.richTextAreaTopbar {
+			    display: flex;
+				flex-direction: row;
+				height:87.5rpx;
+				padding-top: 32.5rpx;
+				.areaType {
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #525866;
+					margin-right: 164.37rpx;
+				}
+				.placeholder {
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #B8BECC;
+				}
+			}
+			
+			.text-area {
+				width:100%;
+				height:262.5rpx;
+				font-size: 22.5rpx;
+				font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+				font-weight: 400;
+				color: #525866;
+				// border:1px solid red;
+			}
+			// .selectedImgContainer {
+			// 	margin-bottom: 25rpx;
+			// 	.selectedImg {
+			// 		width: 125rpx;
+			// 		height: 125rpx;
+			// 		margin-right: 25rpx;
+			// 		&:last-child {
+			// 			margin-right: 0;
+			// 		}
+			// 	}
+			// }
+			// .uploadImgArea {
+			// 	position: relative;
+			// 	display: flex;
+			// 	flex-direction: row;
+			// 	justify-content: flex-start;
+			// 	align-items: center;
+			// 	height:87.5rpx;
+			// 	border-top:1px solid #DADEE6;
+			// 	.labelName {
+			// 		position: absolute;
+			// 		left:0;
+			// 		font-size: 22.5rpx;
+			// 		font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+			// 		font-weight: 400;
+			// 		color: #525866;
+			// 	}
+			// 	.activeArea {
+			// 		position: absolute;
+			// 		left:225rpx;
+			// 		font-size: 22.5rpx;
+			// 		font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+			// 		font-weight: 400;
+			// 		color: #B8BECC;
+			// 	}
+			// 	.imgIcon {
+			// 		position: absolute;
+			// 		left:663.75rpx;
+			// 		width: 30rpx;
+			// 		height: 30rpx;
+			// 	}
+			// }
+		}
+		.bottomForm {
+			padding-left: 25rpx;
+			margin-top: 15rpx;
+			background-color: #FFFFFF;
+			.jobTitle {
+				display: flex;
+				flex-direction: row;
+				justify-content: flex-start;
+				align-items: center;
+				height:87.5rpx;
+				border-bottom: 1px solid #DADEE6;
+				.label {
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #525866;
+				}
+				.inputArea {
+					text-align: center;
+					font-size: 22.5rpx;
+					font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+					font-weight: 400;
+					color: #292C33;
+				}
+				&:last-child {
+					border:none;
+				}
+			}
+		}
+		.btn-confirm {
+			position: fixed;
+			bottom: 0;
+			width: 100%;
+			height: 75rpx;
+			line-height: 75rpx;
+			text-align: center;
+			font-size: 22.5rpx;
+			font-family: SourceHanSansCN-Normal, SourceHanSansCN;
+			font-weight: 400;
+			color: #FFFFFF;
+			background: #3377FF;
+		}
+	}
+</style>

BIN
static/activedStar.png


BIN
static/normalTipIcon.png


BIN
static/threeLineMenu.png


BIN
static/unActivedStar.png


+ 1 - 0
utils/request.js

@@ -110,6 +110,7 @@ function notifyException(resArr, additional) {
     return false;
   } else if (res.data.code !== 'SUCCESS') {
     const { code, msg } = res.data;
+	console.log(res.data);
     if (code === '410' || code === '401') {
       LoginExpired();
     } else if (code === '403') {

+ 2 - 2
utils/requestUrl.js

@@ -1,8 +1,8 @@
-// export const URL = 'http://192.168.51.80:8801'; // 本地
+export const URL = 'http://192.168.51.80:8801'; // 本地
 // export const URL = 'http://192.168.38.174:8088';
 // export const URL = 'http://192.168.1.45:8088'; //内网
 // export const URL = 'http://s1.nsloop.com:5137';  // 外网
-export const URL = 'http://121.43.139.179:8801';  // 云端服务1
+// export const URL = 'http://121.43.139.179:8801';  // 云端服务1
 // export const URL = 'http://172.18.116.20:8801';  // 云端服务2
 
 

+ 1 - 0
utils/uploadImg.js

@@ -21,6 +21,7 @@ const uploadImage = (params) => {
 					success(res) {
 						// console.log('1122',JSON.parse(res.data));
 						let data = JSON.parse(res.data);
+						// console.log({data});
 						if(data.code == 'SUCCESS'){
 							resolve(data.data)
 						}else{

Деякі файли не було показано, через те що забагато файлів було змінено