xieyunhui 3 år sedan
förälder
incheckning
79f07e821d

+ 5 - 2
components/tm-tabbar/tm-tabbar.vue

@@ -90,9 +90,12 @@
 			// 路由跳转
 			navigateTo(pagePath){
         this.currentPagePath = pagePath;
-				uni.redirectTo({
-				  url: `/${pagePath}`
+				uni.reLaunch({
+				   url: `/${pagePath}`
 				});
+				// uni.redirectTo({
+				//   url: `/${pagePath}`
+				// });
 				// uni.navigateTo({
 				//   url: `/${pagePath}`
 				// });

+ 171 - 161
components/tm-upload-img/tm-upload-img.vue

@@ -1,164 +1,174 @@
-<template>
-	<view class="tm-upload-img">
-		<view class="row" @click="uploadPicture">
-			<view class="label-view">
-				<text>{{ label }}</text>
-			</view>
-			<text class="placeholder" v-show="filePaths.length === 0">点击上传图片</text>
-			<image class="img-icon" src="/static/img-icon.png"></image>
-		</view>
-		<!-- 预览图片 -->
-		<view class="img-preview">
-			<view class="img-item" v-for="(src, i) in filePaths" :key="i">
-				<image class="imgItem" :src="src"></image>
-				<image
-				  class="del-close"
-				  src="/static/del-close.png"
-          v-if="!disabled"
-					@click="delImg(i)" />
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * 图片上传(支持单张图片上传 和 多张图片上传)
-	 * 芦荟
-	 * 2021.2.3
-	 * props:属性说明看tm-radio-gruop.vue
-	 */
-
-  import uploadImage from "../../utils/uploadImg.js";
-	export default {
-	  props: {
-			// 上传的图片路径列表
-			filePaths: {
-				type: Array,
-				default: () => {
-          return []
-        }
-			},
-			// 是否多选	(默认单选)
-      isMultiple: {
-				type: Boolean,
-				default: false
-      },
-      // 是否禁用
-      disabled: {
-        type: Boolean,
-        default: false
-      },
-      label: {
-        type: String,
-        default: '上传图片'
-      },
-      // 下标(多个动态的图片上传组件, 遍历的下标)
-      pickIndex: {
-        type: Number,
-        default: 0
-      }
+<template>
+	<view class="tm-upload-img">
+		<view class="row" @click="uploadPicture">
+			<view class="label-view">
+				<text>{{ label }}</text>
+			</view>
+			<text class="placeholder" v-show="filePaths.length === 0">点击上传图片</text>
+			<image class="img-icon" src="/static/img-icon.png"></image>
+		</view>
+		<!-- 预览图片 -->
+		<view class="img-preview">
+			<view class="img-item" v-for="(src, i) in filePaths" :key="i">
+				<image class="imgItem" :src="src"></image>
+				<image class="del-close" src="/static/del-close.png" v-if="!disabled" @click="delImg(i)" />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	/**
+	 * 图片上传(支持单张图片上传 和 多张图片上传)
+	 * 芦荟
+	 * 2021.2.3
+	 * props:属性说明看tm-radio-gruop.vue
+	 */
+
+	import uploadImage from "../../utils/uploadImg.js";
+	export default {
+		props: {
+			// 上传的图片路径列表
+			filePaths: {
+				type: Array,
+				default: () => {
+					return []
+				}
+			},
+			// 是否多选	(默认单选)
+			isMultiple: {
+				type: Boolean,
+				default: false
+			},
+			// 是否禁用
+			disabled: {
+				type: Boolean,
+				default: false
+			},
+			label: {
+				type: String,
+				default: '上传图片'
+			},
+			// 下标(多个动态的图片上传组件, 遍历的下标)
+			pickIndex: {
+				type: Number,
+				default: 0
+			}
 		},
-		methods: {
-			// 上传图片
-			uploadPicture() {
-        if(this.disabled) return;
-				uni.chooseImage({
-					count: this.isMultiple ? 9 : 1, // 是否多选
-					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
-					// sourceType: ['camera'], //从相册选择,默认时可以选择从相机和相册中选取
-					success: res1 => {
-					console.log({res1});
-            uploadImage(res1).then(fileList => {
-              if(this.isMultiple){
-                this.$emit('changeFilePaths', [...this.filePaths, ...fileList], this.pickIndex);
-              }else {
-                this.$emit('changeFilePaths', fileList, this.pickIndex);
-              }
-				  	})
-					},
-					error: e => {
-						console.log('选择图片失败', e);
-					}
-				});
-			},
-			// 删除图片
+		mounted() {
+			
+		},
+		methods: {
+			// 上传图片
+			uploadPicture() {
+				if (this.disabled) return;
+				uni.chooseImage({
+					count: this.isMultiple ? 9 : 1, // 是否多选
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					// sourceType: ['camera'], //从相册选择,默认时可以选择从相机和相册中选取
+					success: res1 => {
+						uploadImage(res1).then(fileList => {
+							if (this.isMultiple) {
+									this.$emit('changeFilePaths',{
+										  files:[...this.filePaths, ...fileList],
+										  index:this.pickIndex
+									});
+							} else {
+								this.$emit('changeFilePaths',{
+									  files:fileList,
+									  index:this.pickIndex
+								});
+							}
+						})
+					},
+					error: e => {
+						console.log('选择图片失败', e);
+					}
+				});
+			},
+			// 删除图片
 			delImg(i) {
-				this.$emit('changeFilePaths', this.filePaths.filter((item, index) => index != i), this.pickIndex);
-			}
-		}
-	}
-</script>
-
-<style lang="less">
-	.tm-upload-img {
-		background-color: #fff;
-		padding-left: 25rpx;
-
-		.row {
-			position: relative;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			// flex: 1;
-			padding-right: 25rpx;
-
-			.label-view {
-				width: 175rpx;
-				line-height: 22.5rpx;
-				padding: 31.25rpx 0;
-
-				text {
-					font-size: 22.5rpx;
-					color: #666F80;
-				}
-			}
-
-			.placeholder {
-				position: absolute;
-				top: 31.25rpx;
-				left: 175rpx;
-				font-size: 22.5rpx;
-				color: #B8BECC;
-			}
-
-			.img-icon {
-				width: 30rpx;
-				height: 25rpx;
-			}
-		}
-
-		.img-preview {
-			display: flex;
-			flex-wrap: wrap;
-            img {
-				opacity: 1 !important;
-			}
-			.img-item {
-				position: relative;
-				margin-right: 25rpx;
-				margin-bottom: 25rpx;
-				width: 300rpx;
-        height: 225rpx;
-
-				>image {
-					width: 300rpx;
-					height: 225rpx;
-					opacity: 1;
-				}
-
-                .imgItem>img {
-					opacity: 1;
-				}
-				.del-close {
-					position: absolute;
-					top: -12.5rpx;
-					right: -12.5rpx;
-					width: 37.5rpx;
-					height: 37.5rpx;
-				}
-			}
-		}
-	}
-
+				const currentIndex = this.pickIndex;
+				this.$emit('changeFilePaths',{
+					  files:this.filePaths.filter((item, index) => index != i),
+					  index:currentIndex
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.tm-upload-img {
+		background-color: #fff;
+		padding-left: 25rpx;
+
+		.row {
+			position: relative;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			// flex: 1;
+			padding-right: 25rpx;
+
+			.label-view {
+				width: 175rpx;
+				line-height: 22.5rpx;
+				padding: 31.25rpx 0;
+
+				text {
+					font-size: 22.5rpx;
+					color: #666F80;
+				}
+			}
+
+			.placeholder {
+				position: absolute;
+				top: 31.25rpx;
+				left: 175rpx;
+				font-size: 22.5rpx;
+				color: #B8BECC;
+			}
+
+			.img-icon {
+				width: 30rpx;
+				height: 25rpx;
+			}
+		}
+
+		.img-preview {
+			display: flex;
+			flex-wrap: wrap;
+
+			img {
+				opacity: 1 !important;
+			}
+
+			.img-item {
+				position: relative;
+				margin-right: 25rpx;
+				margin-bottom: 25rpx;
+				width: 300rpx;
+				height: 225rpx;
+
+				>image {
+					width: 300rpx;
+					height: 225rpx;
+					opacity: 1;
+				}
+
+				.imgItem>img {
+					opacity: 1;
+				}
+
+				.del-close {
+					position: absolute;
+					top: -12.5rpx;
+					right: -12.5rpx;
+					width: 37.5rpx;
+					height: 37.5rpx;
+				}
+			}
+		}
+	}
 </style>

+ 1 - 1
manifest.json

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

+ 11 - 2
pages/checkMainPoints/checkMainPoints.vue

@@ -207,7 +207,7 @@
 				}],
 				checkPointId: 'all',
 				nowPermission: uni.getStorageSync('nowPermission'),
-				active: 0,
+				active: 0,  //筛选tab下标
 				checkId: '',
 				deptId: '',
 				currentScrollHeight: 0,
@@ -263,8 +263,12 @@
 			this.$store.commit('checkList/comChangeState', { //刷新前一页数据
 				key: 'ifReloadPageData',
 				data: true
+			});
+			
+			this.$store.commit('todayCheck/comChangeState', { //刷新todayCheck页面计划
+				key: 'isReloadPageData',
+				data: true
 			});
-			// return true;
 		},
 		onLoad: function({
 			checkId,
@@ -305,6 +309,11 @@
 			this.$store.commit('checkMainPoints/comChangeState', {
 				key: 'ifReloadPageData',
 				data: false
+			});
+			
+			this.$store.commit('todayCheck/comChangeState', { //刷新todayCheck页面计划
+				key: 'isReloadPageData',
+				data: true
 			});
 		},
 		methods: {

+ 2 - 2
pages/creatingSituations/creatingSituations.vue

@@ -182,7 +182,7 @@
 			    this.$store.commit('creatingSituations/comChangeState',{key:'situationPreview',data:{...this.situationPreview,situationType:type}});
 			},
 			templateTypeChanged(type,item){
-				console.log({type,name})
+				// console.log({type,item});
 				this.$store.commit('creatingSituations/comChangeState',{key:'situationPreview',data:{...this.situationPreview,pageTemplateId:type,templateName:item.name}});
 			},
 			save: function() {
@@ -242,7 +242,7 @@
 					depType,
 					showNotApplicable:showNotApplicable,
 					subtotal:showCountNum,
-					situationType:situationType,
+					situationType:situationType, 
 					pageTemplateId:pageTemplateId,
 					filterCondition: optionsHandle(options, conditionIds),
 					checkGroup: checkGroup(this.checkRent),

+ 1 - 1
pages/home/home.vue

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

+ 11 - 3
pages/login/login.vue

@@ -15,7 +15,7 @@
 		<tm-modal v-if="showInputModal" @click="clickModalhandle">
 			<view class="checkItemResultModal">
 				 <view class="modalContent">
-				 	  <view class="modalBar">开发者模式</view>
+				 	  <view class="modalBar">{{`开发者模式(v${version})`}}</view>
 					  <input class="keyInutArea" type="text" v-model="appHospSign" @input='setHospSign' placeholder="请输入hospSign" />
 					  <image @click="openScanner" class="scanBtn" src="../../static/scancodeIcon.png" mode=""></image>
 					  <view>{{deviceInfo}}</view>
@@ -33,11 +33,12 @@
 		data() {
 			return {
 				index:0,
-				appHospSign:'8CJYqxlGIdLEIwaG',//app端更新hospSign
+				appHospSign:'tYAoFaa20yCAgaiy',//app端更新hospSign
 				showInputModal:false,
 				hospSign: '', // 医院标识
 				username: '', // 用户名
 				password: '', // 密码
+				version:'',
 				rolList: [
 					{permission: 1, name: '管理员', pagePath: 'pages/situationsCenter/situationsCenter'}, // targetIndexs:targetList种对应的下标
 					{permission: 2, name: '查核组长',pagePath: 'pages/situationsCenter/situationsCenter'},
@@ -51,7 +52,7 @@
 		computed:{
 			isInput:function(){
 				return (this.username.length>0&&this.password.length>0)?true:false
-			}
+			},
 		},
 		onLoad({ hospSign }){
 			  
@@ -62,7 +63,14 @@
 					 this.appHospSign = hospSignFromLocal;
 				 }
 				 this.deviceInfo = uni.getSystemInfoSync();
+				 //获取版本号
+				 plus.runtime.getProperty(plus.runtime.appid,(inf)=>{
+				 	this.version = inf.version;
+				 });
+				 
 			  // #endif
+
+			  
 			  
 		},
 		methods: {

+ 131 - 91
pages/mainPointsDetail/mainPointsDetail.vue

@@ -95,10 +95,10 @@
 						</view>
 					</view>
 					<view class="inputScore">
-						<text class="label">本项扣分</text>
-						<!-- 	<text class="label">{{deductPoint}}</text> -->
-						<input class="value" @input="onInputScore" type="number" v-model="inputScore"
-							:placeholder="deductPoint+''" placeholder-class="placeholder" />
+						<text class="label">本项扣分</text>
+						<view class="textValue" v-if="!ifInputScore" @click='changeToInputScore'>{{deductPoint}}</view>
+						<input class="value" v-if="ifInputScore" @input="onInputScore" focus='true' auto-blur='true'  @blur='inputOnBlur' type="number" v-model="inputScore"
+						  placeholder-class="placeholder" />
 					</view>
 				</view>
 			</view>
@@ -117,14 +117,14 @@
 									<image class="plusIcon" src="../../static/icon-add.png" mode=""></image>
 									<text class="threePoint">缺陷</text>
 								</view>
-								<!-- <text v-if="checkItemResultList.length>0" class="threePoint" @click="openSelectModal(i)">⋮</text> -->
 							</view>
 							<text class="clear" @click="clearResult(true,i)">清空</text>
 							<textarea maxlength="300" class="seeTextarea" value="" placeholder="请输入"
-								:value="item.talkResult" @blur="changeTextarea($event, i)"></textarea>
+								v-model="item.talkResult" @blur="changeTextarea($event, i)"></textarea>
 						</view>
 						<view class="talkImg" @click="imgClick(i)">
-							<tm-upload-img label="上传图片" :filePaths="item.filePath" :isMultiple="true"
+							<tm-upload-img label="上传图片" :filePaths="item.filePath" :isMultiple="true"
+							    :pickIndex = "i"
 								@changeFilePaths="changeFilePaths2" />
 						</view>
 					</view>
@@ -140,7 +140,7 @@
 						</view>
 					</view>
 					<text class="clear" @click="clearResult(false)">清空</text>
-					<textarea maxlength="300" class="seeTextarea" placeholder="请输入" :value="recordList[0].seeResult"
+					<textarea maxlength="300" class="seeTextarea" placeholder="请输入" v-model="recordList[0].seeResult"
 						@blur="changeTextarea2"></textarea>
 				</view>
 				<view class="seeImg">
@@ -168,9 +168,8 @@
 	import {
 		_goBackFresh
 	} from '../../utils/compatible.js';
-	// import ldSelect from '@/components/ld-select/ld-select.vue'
+
 	export default {
-		// components:{ldSelect},
 		data() {
 			return {
 				value: '',
@@ -194,12 +193,12 @@
 				checkPointId: "",
 				itemBelongGroup: [],
 				itemId: '',
-				currentEditTextAreaIndex: '',
+				currentEditTextAreaIndex:-1, //当前编辑的查核结果下标
 				checkItemResultList: [], //查核结果说明下拉列表
 				checkedSelectResultList: [], //下拉结果选中集合
 				checkedSelectResultListIds: [],
 				currentSelect: '',
-				checkItemScore: null, //查核选中的分数
+				checkItemScore:0, //查核选中的分数
 				checkItemValue: null, //查核选中的分数占比
 				checkConfiglist: [], //查核情况可配置列表
 				totalScore: 0, //总分
@@ -213,7 +212,8 @@
 				multiSelectScore: [],
 				deductPoint: 0, //本次扣分
 				currentCheckedTab: null, //当前选中的查核tab
-				moreDeduction:false,
+				moreDeduction:false,  //缺陷项是否多选
+				ifInputScore:false,  //是否手动干预分值
 			};
 		},
 		onShow() {
@@ -223,14 +223,23 @@
 			this.checkedResponsibleData = responsibleList.checkedResponsibleList;
 			this.checkedResponsibleList = responsibleList.checkedResponsibleList.map(item => item.main);
 		},
-		computed: {},
+		computed: {
+		},
 		watch: {
 			checkedResponsibleList: function() {
 				const {
 					responsibleList
 				} = this.$store.state;
-				// console.log({responsibleList});
 				return responsibleList.checkedResponsibleList.map(item => item.main);
+			},
+			selectedScore:function(newVal,oldVal){
+				  this.scoreCounter()
+			},
+			checkItemScore:function(newVal){
+				  this.scoreCounter()
+			},
+			deductPoint:function(newVal,oldVal){
+				   this.currentScore = this.totalScore - newVal
 			}
 		},
 		mounted() {
@@ -244,29 +253,52 @@
 				data: true
 			});
 		},
-		methods: {
+		methods: {
+			scoreCounter(){
+				if(this.inputScore){
+					this.deductPoint = Number(this.inputScore) + this.selectedScore
+				}else{
+					this.deductPoint = this.selectedScore + this.checkItemScore
+				}
+			},
+			changeToInputScore(){
+				this.ifInputScore = true;
+			},
+			inputOnBlur(){
+				this.ifInputScore = false;
+				// this.inputScore = null;
+			},
+			onInputScore(e) {
+				this.deductPoint = e.target.value;
+			},
 			//查核结果清空操作
 			clearResult(ifMulti, index) {
 				if (ifMulti) {
-					//多个查核结果组件时
-					this.talkList[index].talkResult = '';
-					this.multiSelectScore[index] = 0;
-					this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
-
+					//多个查核结果组件时	
+					this.talkList[index].talkResult = '';
+					if(this.multiSelectScore[index]){
+						    this.selectedScore = this.selectedScore - this.multiSelectScore[index];
+					}
 					this.checkedSelectResultListIds.splice(index, 1, []);
 					this.checkedSelectResultList.splice(index, 1, []);
-					this.checkedSelectResultListData.splice(index, 1, []);
-
-				} else {
+					this.checkedSelectResultListData.splice(index, 1, []);
+					this.multiSelectScore[index] = 0;
+					this.currentEditTextAreaIndex = -1;
+					
+                    
+				} else {
+					
 					this.recordList[0].seeResult = '';
-					this.selectedScore = 0;
 					this.checkedSelectResultListIds = [];
 					this.checkedSelectResultList = [];
-					this.checkedSelectResultListData = [];
-				}
+					this.checkedSelectResultListData = [];
+					this.selectedScore = 0;
+				}
+				
 			},
 			clickModalhandle() {
-				this.showSelectModal = false;
+				this.showSelectModal = false;
+				this.currentEditTextAreaIndex = -1;
 			},
 			openSelectModal(index) {
 				if (index >= 0) {
@@ -276,22 +308,14 @@
 			},
 			//跳转选择当事人
 			toSelectResponsible() {
-				// console.log(this.deptId);
 				uni.navigateTo({
 					url: `/pages/responsibleList/responsibleList?deptId=${this.deptId}&checkId=${this.id}`,
-					// animationType: 'pop-in',
-					// animationDuration: 200
 				});
 			},
-			onInputScore(e) {
-				this.inputScore = e.target.value;
-				this.currentScore = this.totalScore - e.target.value;
-			},
 			selectResultHandle(item) {
 
 				if (this.data.checkModelName == '访谈') {
 					const currentIndex = this.currentEditTextAreaIndex;
-					
 					if(!this.moreDeduction){
 						 //缺陷项单选
 						 this.checkedSelectResultListIds.splice(currentIndex, 1,[item.id]);
@@ -312,8 +336,6 @@
 						tempArr.splice(tempArr.indexOf(item.resultName), 1);
 						tempArrData.splice(tempArrData.indexOf(item.id), 1);
 
-						// console.log({tempIdsArr});
-
 						this.checkedSelectResultListIds.splice(currentIndex, 1, tempIdsArr);
 						this.checkedSelectResultList.splice(currentIndex, 1, tempArr);
 						this.checkedSelectResultListData.splice(currentIndex, 1, tempArrData);
@@ -332,7 +354,6 @@
 						this.checkedSelectResultListIds.splice(currentIndex, 1, tempIdsArr);
 						this.checkedSelectResultList.splice(currentIndex, 1, tempArr);
 						this.checkedSelectResultListData.splice(currentIndex, 1, tempArrData);
-						// console.log(this.checkedSelectResultListIds[currentIndex],`index:${currentIndex}`);
 					}
 				} else {
 					if(!this.moreDeduction){
@@ -342,14 +363,14 @@
 						 this.checkedSelectResultListData = [item];
 						 return ;
 					} 
-					//缺陷项多选
+					// 缺陷项多选
 					if (this.checkedSelectResultListIds.includes(item.id)) {
-						const tempIdsArr = JSON.parse(JSON.stringify(this.checkedSelectResultListIds));
-						const tempArr = JSON.parse(JSON.stringify(this.checkedSelectResultList));
-						const tempArrData = JSON.parse(JSON.stringify(this.checkedSelectResultListData));
+						const tempIdsArr = this.checkedSelectResultListIds;
+						const tempArr = this.checkedSelectResultList;
+						const tempArrData = this.checkedSelectResultListData;
 						tempIdsArr.splice(tempIdsArr.indexOf(item.id), 1);
 						tempArr.splice(tempArr.indexOf(item.resultName), 1);
-						tempArrData.splice(tempArrData.indexOf(item.id), 1);
+						tempArrData.splice(tempArrData.findIndex(t=>t.id == item.id), 1);
 						this.checkedSelectResultListIds = tempIdsArr;
 						this.checkedSelectResultList = tempArr;
 						this.checkedSelectResultListData = tempArrData;
@@ -363,7 +384,8 @@
 			commitSelectResult() {
 
 				const _commitFunc = () => {
-					if (this.data.checkModelName == '访谈') {
+					if (this.data.checkModelName == '访谈') {
+	
 						const tempArr = this.checkedSelectResultListData[this.currentEditTextAreaIndex].map(item =>
 							item.percentScore);
 						const tempScore = tempArr.reduce((prev, cur) => {
@@ -373,26 +395,16 @@
 						this.talkList[this.currentEditTextAreaIndex].talkResult = this.checkedSelectResultList[this
 							.currentEditTextAreaIndex].join(',');
 						this.multiSelectScore[this.currentEditTextAreaIndex] = tempScore;
-						this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
-
-						if (!this.inputScore) {
-							this.deductPoint = this.checkItemScore + this.selectedScore;
-							this.currentScore = this.totalScore - this.deductPoint;
-						}
-
-
-					} else {
+						this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
+						
+					} else {
+				
 						const tempArr = this.checkedSelectResultListData.map(item => item.percentScore);
 						const tempScore = tempArr.reduce((prev, cur) => {
 							return prev + cur;
 						}, 0);
 						this.recordList[0].seeResult = this.checkedSelectResultList.join(',');
 						this.selectedScore = tempScore;
-
-						if (this.inputScore) {
-							this.deductPoint = this.checkItemScore + this.selectedScore;
-							this.currentScore = this.totalScore - this.deductPoint;
-						}
 					}
 				}
 				_commitFunc();
@@ -407,7 +419,11 @@
 							id: id,
 						},
 					},
-				}).then((res) => {
+				}).then((res) => {
+				    uni.$once('未在查核规定时间内', function (data) {
+						  uni.navigateBack();
+					});
+					
 					this.id = id;
 					this.deptId = res.deptId;
 					//再次编辑回显
@@ -416,8 +432,8 @@
 						.split(',') : [];
 					this.Index = res.checkResult;
 					this.totalScore = res.totalScore;
-					this.deductPoint = res.deductPoint;
 					this.currentScore = res.score;
+					this.deductPoint = res.deductPoint;
 					this.moreDeduction = res.moreDeduction;
 					if (res.checkResultRequestList && res.checkResultRequestList.length > 0) {
 						if (res.checkModelName == '访谈') {
@@ -425,7 +441,6 @@
 								const arr = item.checkResultDescribe.split(',');
 								const tempResult = this.checkItemResultList.filter(v => arr.includes(v
 									.resultName));
-								// console.log({tempResult});
 
 								if (!Array.isArray(this.checkedSelectResultListIds[currentIndex])) this
 									.checkedSelectResultListIds[currentIndex] = [];
@@ -438,7 +453,7 @@
 									tempResult.map(item => item.id));
 								const tempArr = this.checkedSelectResultList[currentIndex].concat(
 									tempResult.map(item => item.resultName));
-								// const tempArrData = this.checkedSelectResultListData[currentIndex].concat(tempResult.map(item=>item));
+								
 
 								this.checkedSelectResultListIds.splice(currentIndex, 1, tempIdsArr);
 								this.checkedSelectResultList.splice(currentIndex, 1, tempArr);
@@ -457,11 +472,10 @@
 								}
 							});
 							//设置回显分数
-							this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
+							// this.selectedScore = this.multiSelectScore.reduce((prev, cur) => (prev + cur), 0);
 
 						} else {
-							//       console.log('非访谈');
-							// console.log(res.checkResultRequestList[0]);
+
 							const arr = res.checkResultRequestList[0].checkResultDescribe.split(',');
 							const tempResult = this.checkItemResultList.filter(v => arr.includes(v.resultName));
 							const tempIds = tempResult.map(item => item.id);
@@ -472,7 +486,7 @@
 							this.checkedSelectResultList = res.checkResultRequestList[0].checkResultDescribe.split(
 								',');
 							this.checkedSelectResultListData = tempResult;
-							this.selectedScore = tempScore;
+							// this.selectedScore = tempScore;
 
 						}
 					}
@@ -494,7 +508,6 @@
 					}
 
 					if (res) {
-						// console.log({res});
 						this.data = res;
 						if (res && res.lastResult == "不适用") {
 							// this.lastIndex = 1;
@@ -532,15 +545,22 @@
 				this.checkItemScore = parsedData.itemGetScore;
 				this.checkItemValue = parsedData.value;
 				this.calScore = parsedData.calScore;
-				if (!this.inputScore) {
-					this.deductPoint = parsedData.itemGetScore;
-					this.currentScore = this.totalScore - parsedData.itemGetScore;
+				if (!this.inputScore) {   //没有手输调整过的才可以修改
+					this.checkItemScore = parsedData.itemGetScore; 
 				}
 
-			},
-			changeFilePaths(filePaths, index) {
+			},
+			/**
+			 * @param {{
+				 files
+				 index,
+			 }} fileInfo
+			 files:文件集合
+			 index:当前编辑的下标
+			 */
+			changeFilePaths({files, index}) {
 				let _recordList = [...this.recordList];
-				_recordList[index].filePath = filePaths;
+				_recordList[index].filePath = files;
 				this.filePath = _recordList[0].filePath;
 			},
 			insert() {
@@ -555,17 +575,29 @@
 			},
 			del(index) {
 				let list = [...this.talkList];
-				let list2 = [];
+				let list2 = [];
+			    //清空该项数据
+				this.clearResult(true,index);
+				
 				for (let i = 0; i < list.length; i++) {
 					if (i != index) {
 						list2.push(list[i]);
 					}
 				}
 				this.talkList = list2;
-			},
-			changeFilePaths2(filePaths, index) {
+			},
+			/**
+			 * @param {{
+				 files
+				 index,
+			 }} fileInfo
+			 files:文件集合
+			 index:当前编辑的下标
+			 */
+			changeFilePaths2(fileInfo) {
+				const {files,index} = fileInfo;
 				for (let j = 0; j < this.talkList.length; j++) {
-					this.talkList[this.editIndex].filePath = filePaths;
+					this.talkList[index].filePath = files;
 				}
 			},
 			changeTextarea(e, i) {
@@ -593,8 +625,8 @@
 								   		value: this.checkItemValue,
 								   		situationType: this.situationType,
 								   		calScore: this.calScore,
-								   		score: Number(this.currentScore),
-								   		deductPoint: Number(this.inputScore ? this.inputScore : this.deductPoint),
+								   		score: this.currentScore,
+								   		deductPoint: this.deductPoint,
 								   	};
 								   					     
 								   					     
@@ -638,8 +670,7 @@
 								   		params.checkResultRequestList = list;
 								   	}
 								   	const checkConfiglist = JSON.parse(JSON.stringify(this.checkConfiglist));
-								   	// console.log({params});
-								   	// return;
+								
 								   	this.$store.dispatch({
 								   		type: "mainPointsDetail/commActions",
 								   		payload: {
@@ -649,17 +680,19 @@
 								   			},
 								   		},
 								   	}).then((res) => {
-								   		// console.log({'res':res,'checkConfiglist':checkConfiglist});
 								   		if (res) {
 								   			resolve(true);
+											// console.log({checkConfiglist,params});
 								   			for (let i = 0; i < checkConfiglist.length; i++) {
+
 								   				if (
 								   					checkConfiglist[i].attr == params.checkResult &&
 								   					(checkConfiglist[i].resultType == 2 ||
 								   						checkConfiglist[i].resultType == 3)
 								   				) {
+													//当主要缺失和次要缺失时发起改善任务
 								   					console.log('开始提交改善前准备');
-								   					     
+								   				
 								   					let param = {
 								   						situationId: this.data.situationId,
 								   						situationName: this.data.situationName,
@@ -769,16 +802,15 @@
 								showCancel: false
 							});
 						}
-						// this.improvingTaskList = data.improvingTaskResponses || [];
-						// this.completeTaskList = data.improveCompleteResponses || [];
 					}
 				});
 			
 
 			},
-			clearForm(index) {
+			clearForm(index) {
+				//清除上一项的查核信息
 				this.Index = '';
-				this.deductPoint = 0;
+				// this.deductPoint = 0;
 				this.currentScore = 0;
 				this.inputScore = 0;
 				if (this.data.checkModelName == '访谈') {
@@ -855,7 +887,6 @@
 						data: checkItemId
 					}
 				}).then(data => {
-					// console.log({data});
 					this.checkConfiglist = data
 				})
 			},
@@ -1173,8 +1204,8 @@
 							font-weight: 400;
 							color: #525866;
 							margin-right: 105rpx;
-						}
-
+						}
+					
 						.value {
 							flex: 0.9;
 							font-size: 22.5rpx;
@@ -1235,6 +1266,15 @@
 							color: #3377FF;
 						}
 					}
+				}
+				
+				.textValue {
+					display: flex;
+					flex-direction: row;
+					justify-content: flex-start;
+					align-items: center;
+					width: 70%;
+					height: 100%;
 				}
 
 				.inputScore {

+ 191 - 200
pages/mission-action/components/assign-mission.vue

@@ -1,201 +1,192 @@
-<template>
-	<view class="assign-mission">
-		<scroll-view class="scroll-y" scroll-y="true">
-			<tm-radio-group
-			  :list="desicionList"
-				label="改善工具"
-				:defaultValue='desicion'
-				@change="changeDesicion"
-		  />
-		  <view class="switch-box">
-			  <text class="label">需要审核改善方案</text>
-			  <switch
-          :checked="needApproveFlag"
-          style="transform:scale(1.5)"
-          @change="switchChange" />
-		  </view>
-		  <tm-radio-group
-			  :list="empDeptList"
-			  :setting="{value: 'empId',name: 'empName'}"
-             :defaultValue='desPersopn.empId'
-			  @change="changeDesPersopn"
-		  />
-		</scroll-view>
-		<view class="fixed-buttom-btn" @click="sure">
-			<text class="btn-text">确定</text>
-		</view>
-	</view>
-</template>
-
-<script>
-	// 指派改善任务
-	export default {
-    props: {
-      // 是否禁用
-      disabled: {
-        type: Boolean,
-        default: false
-      },
-      // 详情回显的数据
-      values: {
-        type: Object,
-        default: () => {
-          return {}
-        }
-      },
-      // 按钮信息 (包过请求的key)
-      btnInfo: {
-        type: Object,
-        default: () => {
-          return {}
-        }
-      },
-      // 任务详情
-      missionDetails: {
-        type: Object,
-        default: () => {
-          return {}
-        }
-      }
-    },
-		data() {
-			return {
-        // 选中改善方案
-        desicion: 0,
-        // 改善方案列表(0 改善方案 目前只有pdca)
-				desicionList: [{ value: 0, name: 'PDCA' }],
-        // 是否需要审核改善方案
-        needApproveFlag: false,
-        // 人员列表
-        empDeptList: [],
-        // 更改指派人
-        desPersopn: {}
-			}
-		},
-		created() {
-			uni.setNavigationBarTitle({
-				title: '指派改善任务'
-      });
-      this.getEmpDeptTree();
-		},
-		methods: {
-      // 更改改善方案
-			changeDesicion(selectVal, selectData, i) {
-				this.desicion = selectVal;
-      },
-      switchChange(e) {
-		if(this.missionDetails.improveEmpId){
-			this.needApproveFlag = e.target.value;
-		}else{
-			uni.showModal({
-			    title: '提示',
-			    content: '请先选择改善人',
-				showCancel:false,
-				success: function (res) {
-				        if (res.confirm) {
-							this.needApproveFlag=false;
-				            console.log('用户点击确定');
-				        }
-				}
-			});
-		}
-      },
-       // 更改指派人
-			changeDesPersopn(selectVal, selectData, i) {
-				this.desPersopn = selectData;
-      },
-      // 确定
-      sure() {
-        let requestParams = {};
-        this.btnInfo.params && this.btnInfo.params.map(item => {
-          if(item.valueKey){
-            requestParams[item.paramsKey] = (
-              item.isOutvalueKey
-              ? this.missionDetails
-              : this.btnInfo
-            )[item.valueKey];
-          }else if(item.value){
-            requestParams[item.paramsKey] = item.value;
-          }else {
-            switch(item.paramsKey){
-              case 'desicion':
-                requestParams[item.paramsKey] = this.desicion;
-                break;
-              case 'receiveEmpId':
-                requestParams[item.paramsKey] = this.desPersopn.empId;
-                break;
-              case 'receiveEmpName':
-                requestParams[item.paramsKey] = this.desPersopn.empName;
-                break;
-              case 'needApproveFlag':
-                requestParams[item.paramsKey] = this.needApproveFlag;
-                break;
-              default:
-                requestParams[item.paramsKey] = '';
-                break;
-            }
-          }
-        });
-        this.$emit('comRequest', requestParams);
-      },
-      // 查询部门人员树
-			getEmpDeptTree() {
-				this.$store.dispatch({
-					type: 'mission/commActions',
-					payload: {
-            key: "getEmpDeptTree",
-            data: {
-              deptId: this.missionDetails.deptId // 单位id
-            }
-					}
-				}).then(data => {
-					if(data) {
-            let _empDeptList = [];
-            data && data[0] && data[0].responseList.map(item => {
-              if(item.deptManage == 1) { // 是否部门负责人 1是 0 否
-                _empDeptList.push({
-                  ...item,
-                  empName: '单位负责人' + item.empName
-                });
-              }else {
-                _empDeptList.push(item);
-              }
-            })
-			let _empDeptList2 =[];
-			 _empDeptList.map((item)=>{
-				if(item.isImprove){
-					_empDeptList2.push(item)
-				}
-			})
-            this.empDeptList = _empDeptList2;
-					}
-				});
-			}
-		}
-	}
-</script>
-
-<style lang="less">
-	.assign-mission {
-		height: 100%;
-
-		.scroll-y {
-			height: calc(100% - 87.5rpx);
-
-			.switch-box {
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				margin: 15rpx 0;
-				height: 87.5rpx;
-				background-color: #fff;
-				padding: 0 25rpx;
-
-				.label {
-					font-size: 22.5rpx;
-					color: #292C33;
-				}
-			}
-		}
-	}
+<template>
+	<view class="assign-mission">
+		<scroll-view class="scroll-y" scroll-y="true">
+			<tm-radio-group :list="desicionList" label="改善工具" :defaultValue='desicion' @change="changeDesicion" />
+			<view class="switch-box">
+				<text class="label">需要审核改善方案</text>
+				<switch :checked="needApproveFlag" style="transform:scale(1.5)" @change="switchChange" />
+			</view>
+			<tm-radio-group :list="empDeptList" :setting="{value: 'empId',name: 'empName'}"
+				:defaultValue='desPersopn.empId' @change="changeDesPersopn" />
+		</scroll-view>
+		<view class="fixed-buttom-btn" @click="sure">
+			<text class="btn-text">确定</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	// 指派改善任务
+	export default {
+		props: {
+			// 是否禁用
+			disabled: {
+				type: Boolean,
+				default: false
+			},
+			// 详情回显的数据
+			values: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			},
+			// 按钮信息 (包过请求的key)
+			btnInfo: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			},
+			// 任务详情
+			missionDetails: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			}
+		},
+		data() {
+			return {
+				// 选中改善方案
+				desicion: 0,
+				// 改善方案列表(0 改善方案 目前只有pdca)
+				desicionList: [{
+					value: 0,
+					name: 'PDCA'
+				}],
+				// 是否需要审核改善方案
+				needApproveFlag: false,
+				// 人员列表
+				empDeptList: [],
+				// 更改指派人
+				desPersopn: {}
+			}
+		},
+		created() {
+			uni.setNavigationBarTitle({
+				title: '指派改善任务'
+			});
+			this.getEmpDeptTree();
+		},
+		methods: {
+			// 更改改善方案
+			changeDesicion(selectVal, selectData, i) {
+				this.desicion = selectVal;
+			},
+			switchChange(e) {
+				if (this.missionDetails.improveEmpId) {
+					this.needApproveFlag = e.target.value;
+				} else {
+					uni.showModal({
+						title: '提示',
+						content: '请先选择改善人',
+						showCancel: false,
+						success: function(res) {
+							if (res.confirm) {
+								this.needApproveFlag = false;
+								console.log('用户点击确定');
+							}
+						}
+					});
+				}
+			},
+			// 更改指派人
+			changeDesPersopn(selectVal, selectData, i) {
+				this.desPersopn = selectData;
+			},
+			// 确定
+			sure() {
+				let requestParams = {};
+				this.btnInfo.params && this.btnInfo.params.map(item => {
+					if (item.valueKey) {
+						requestParams[item.paramsKey] = (
+							item.isOutvalueKey ?
+							this.missionDetails :
+							this.btnInfo
+						)[item.valueKey];
+					} else if (item.value) {
+						requestParams[item.paramsKey] = item.value;
+					} else {
+						switch (item.paramsKey) {
+							case 'desicion':
+								requestParams[item.paramsKey] = this.desicion;
+								break;
+							case 'receiveEmpId':
+								requestParams[item.paramsKey] = this.desPersopn.empId;
+								break;
+							case 'receiveEmpName':
+								requestParams[item.paramsKey] = this.desPersopn.empName;
+								break;
+							case 'needApproveFlag':
+								requestParams[item.paramsKey] = this.needApproveFlag;
+								break;
+							default:
+								requestParams[item.paramsKey] = '';
+								break;
+						}
+					}
+				});
+				this.$emit('comRequest', requestParams);
+			},
+			// 查询部门人员树
+			getEmpDeptTree() {
+				this.$store.dispatch({
+					type: 'mission/commActions',
+					payload: {
+						key: "getEmpDeptTree",
+						data: {
+							deptId: this.missionDetails.deptId // 单位id
+						}
+					}
+				}).then(data => {
+					if (data) {
+						let _empDeptList = [];
+						data && data[0] && data[0].responseList.map(item => {
+							if (item.deptManage == 1) { // 是否部门负责人 1是 0 否
+								_empDeptList.push({
+									...item,
+									empName: '单位负责人' + item.empName
+								});
+							} else {
+								_empDeptList.push(item);
+							}
+						})
+						let _empDeptList2 = [];
+						_empDeptList.map((item) => {
+							if (item.isImprove) {
+								_empDeptList2.push(item)
+							}
+						})
+						this.empDeptList = _empDeptList2;
+					}
+				});
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.assign-mission {
+		height: 100%;
+
+		.scroll-y {
+			height: calc(100% - 87.5rpx);
+
+			.switch-box {
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				margin: 15rpx 0;
+				height: 87.5rpx;
+				background-color: #fff;
+				padding: 0 25rpx;
+
+				.label {
+					font-size: 22.5rpx;
+					color: #292C33;
+				}
+			}
+		}
+	}
 </style>

+ 232 - 230
pages/mission-action/components/pdca-components/do-and-check.vue

@@ -1,231 +1,233 @@
-<template>
-	<view class="com-plan-content">
-		<view class="title">
-			<text>
-        {{ type === 'do' ? '执行过程记录(Do)' :  '改善确认(Check)'}}
-      </text>
-		</view>
-		<template v-for="(item, i) in recordList">
-			<view class="item-view" :key="type + i">
-				<view class="top-action">
-					<text>改善确认({{ i + 1 }})</text>
-					<text class="blue-text"
-            v-if="!disabled"
-            @click="delRecord(i)" >
-            删除
-          </text>
-				</view>
-				<view class="main">
-					<view class="row">
-						<view class="label-view">
-							<text>过程记录</text>
-						</view>
-						<view class="content">
-							<textarea class="textarea"
-						    :key="type"
-							  placeholder="请输入"
-								placeholder-style="color: #B8BECC"
-								:maxlength="500"
-								auto-height
-                :value="item.record"
-                :disabled="disabled"
-                @input="changeRecord($event, i)"
-							/>
-						</view>
-					</view>
-					<view class="row row-heigth">
-						<view class="label-view">
-							<text>计划日期</text>
-						</view>
-						<view class="time-pick">
-							<date-time-picker
-                :height="140"
-                :pickIndex="i"
-                :defaultValue="item.date"
-                :disabled="disabled"
-                @change="changeDateTime" />
-						</view>
-					</view>
-          <template v-if="showUploadImg">
-            <tm-upload-img
-              label="改善效果"
-						  :filePaths="item.filePath"
-              :disabled="disabled"
-              @changeFilePaths="changeFilePaths"
-					  />
-          </template>
-				</view>
-			</view>
-		</template>
-		<view class="add-btn" @click="addRecord" v-if="!disabled">
-			<text class="blue-text">
-			  <text class="big">+</text>
-			  增加一条记录
-			</text>
-		</view>
-	</view>
-</template>
-
-<script>
-  // 执行过程记录(Do)和 改善确认(Check)
-	export default {
-		props: {
-      // 多行文本框标题
-			type: {
-        type: String,
-        default: 'do'
-			},
-      // 是否展示上传图片行
-			showUploadImg: {
-        type: Boolean,
-        default: false
-      },
-      // 是否禁用
-      disabled: {
-        type: Boolean,
-        default: false
-      },
-      // 控制记录列表数组
-      recordList: {
-        type: Array,
-        default: () => {
-          return [{record: '', date: '', filePath: [] }]
-        }
-      },
-    },
-		methods: {
-      // 过程记录变化
-      changeRecord(e, index) {
-        let _recordList = [...this.recordList];
-        _recordList[index].record = e.target.value;
-         this.$emit('changeRecordList', _recordList);
-      },
-      // 日期时间改变
-      changeDateTime(dateObj, pickType, index) {
-        let _recordList = [...this.recordList];
-        _recordList[index].date = dateObj.f4;
-        this.$emit('changeRecordList', _recordList);
-      },
-      // 改善效果改变
-      changeFilePaths(filePaths, index) {
-        let _recordList = [...this.recordList];
-        _recordList[index].filePath = filePaths;
-        this.$emit('changeRecordList', _recordList);
-      },
-      // 新增一条记录
-			addRecord() {
-        this.$emit('changeRecordList', [...this.recordList, {record: '', date: '', filePath: [] }]);
-      },
-      // 删除记录
-      delRecord(index) {
-         this.$emit('changeRecordList', this.recordList.filter((item, i) => i != index));
-      }
-    }
-	}
-</script>
-
-<style lang="less">
-	.com-plan-content {
-		height: 100%;
-		padding-top: 35rpx;
-
-		.title {
-			line-height: 35rpx;
-			padding: 0 25rpx;
-
-			text {
-				font-size: 35rpx;
-				color: #292C33;
-			}
-		}
-
-		.blue-text {
-			font-size: 23.75rpx;
-			color: #3377FF !important;
-
-			.big {
-				font-size: 28.75rpx;
-			}
-		}
-
-		.item-view {
-
-			.top-action {
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				margin-top: 25rpx;
-				margin-bottom: 15rpx;
-				height: 22.5rpx;
-				padding: 0 25rpx;
-
-				text {
-					font-size: 22.5rpx;
-					color: #666F80;
-				}
-			}
-
-			.main {
-				background-color: #fff;
-
-				.row {
-					display: flex;
-					border-bottom: 0.62rpx solid #DADEE6;
-					padding-left: 25rpx;
-
-					.label-view {
-						width: 175rpx;
-						line-height: 22.5rpx;
-						padding: 31.25rpx 0;
-
-						>text {
-							font-size: 22.5rpx;
-							color: #666F80;
-						}
-					}
-
-					.content {
-						flex: 1;
-						padding: 25rpx 0;
-
-						.textarea {
-							width: 100%;
-							min-height: 200rpx;
-							padding: 0 25rpx;
-							line-height: 38rpx;
-							font-size: 22.5rpx;
-							color: #525866;
-							box-sizing: border-box;
-						}
-
-						>text {
-							font-size: 22.5rpx;
-							color: #B8BECC;
-						}
-          }
-
-          .time-pick {
-            flex: 1;
-          }
-				}
-
-				.row-heigth {
-
-					.label-view {
-						line-height: 22.5rpx;
-						padding: 31.25rpx 0;
-					}
-				}
-			}
-		}
-
-		.add-btn {
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			height: 75rpx;
-			background-color: #fff;
-			border-top: 0.62rpx solid #DADEE6;
-		}
-	}
+<template>
+	<view class="com-plan-content">
+		<view class="title">
+			<text>
+				{{ type === 'do' ? '执行过程记录(Do)' :  '改善确认(Check)'}}
+			</text>
+		</view>
+		<template v-for="(item, i) in recordList">
+			<view class="item-view" :key="type + i">
+				<view class="top-action">
+					<text>改善确认({{ i + 1 }})</text>
+					<text class="blue-text" v-if="!disabled" @click="delRecord(i)">
+						删除
+					</text>
+				</view>
+				<view class="main">
+					<view class="row">
+						<view class="label-view">
+							<text>过程记录</text>
+						</view>
+						<view class="content">
+							<textarea class="textarea" :key="type" placeholder="请输入" placeholder-style="color: #B8BECC"
+								:maxlength="500" auto-height :value="item.record" :disabled="disabled"
+								@input="changeRecord($event, i)" />
+						</view>
+					</view>
+					<view class="row row-heigth">
+						<view class="label-view">
+							<text>计划日期</text>
+						</view>
+						<view class="time-pick">
+							<date-time-picker :height="140" :pickIndex="i" :defaultValue="item.date"
+								:disabled="disabled" @change="changeDateTime" />
+						</view>
+					</view>
+					<template v-if="showUploadImg">
+						<tm-upload-img label="改善效果" :filePaths="item.filePath" :disabled="disabled"
+							@changeFilePaths="changeFilePaths" />
+					</template>
+				</view>
+			</view>
+		</template>
+		<view class="add-btn" @click="addRecord" v-if="!disabled">
+			<text class="blue-text">
+				<text class="big">+</text>
+				增加一条记录
+			</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	// 执行过程记录(Do)和 改善确认(Check)
+	export default {
+		props: {
+			// 多行文本框标题
+			type: {
+				type: String,
+				default: 'do'
+			},
+			// 是否展示上传图片行
+			showUploadImg: {
+				type: Boolean,
+				default: false
+			},
+			// 是否禁用
+			disabled: {
+				type: Boolean,
+				default: false
+			},
+			// 控制记录列表数组
+			recordList: {
+				type: Array,
+				default: () => {
+					return [{
+						record: '',
+						date: '',
+						filePath: []
+					}]
+				}
+			},
+		},
+		methods: {
+			// 过程记录变化
+			changeRecord(e, index) {
+				let _recordList = [...this.recordList];
+				_recordList[index].record = e.target.value;
+				this.$emit('changeRecordList', _recordList);
+			},
+			// 日期时间改变
+			changeDateTime(dateObj, pickType, index) {
+				let _recordList = [...this.recordList];
+				_recordList[index].date = dateObj.f4;
+				this.$emit('changeRecordList', _recordList);
+			},
+			// 改善效果改变
+			/**
+			 * @param {{
+				 files
+				 index,
+			 }} fileInfo
+			 files:文件集合
+			 index:当前编辑的下标
+			 */
+			changeFilePaths({
+				files,
+				index
+			}) {
+				let _recordList = [...this.recordList];
+				_recordList[index].filePath = files;
+				this.$emit('changeRecordList', _recordList);
+			},
+			// 新增一条记录
+			addRecord() {
+				this.$emit('changeRecordList', [...this.recordList, {
+					record: '',
+					date: '',
+					filePath: []
+				}]);
+			},
+			// 删除记录
+			delRecord(index) {
+				this.$emit('changeRecordList', this.recordList.filter((item, i) => i != index));
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	.com-plan-content {
+		height: 100%;
+		padding-top: 35rpx;
+
+		.title {
+			line-height: 35rpx;
+			padding: 0 25rpx;
+
+			text {
+				font-size: 35rpx;
+				color: #292C33;
+			}
+		}
+
+		.blue-text {
+			font-size: 23.75rpx;
+			color: #3377FF !important;
+
+			.big {
+				font-size: 28.75rpx;
+			}
+		}
+
+		.item-view {
+
+			.top-action {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				margin-top: 25rpx;
+				margin-bottom: 15rpx;
+				height: 22.5rpx;
+				padding: 0 25rpx;
+
+				text {
+					font-size: 22.5rpx;
+					color: #666F80;
+				}
+			}
+
+			.main {
+				background-color: #fff;
+
+				.row {
+					display: flex;
+					border-bottom: 0.62rpx solid #DADEE6;
+					padding-left: 25rpx;
+
+					.label-view {
+						width: 175rpx;
+						line-height: 22.5rpx;
+						padding: 31.25rpx 0;
+
+						>text {
+							font-size: 22.5rpx;
+							color: #666F80;
+						}
+					}
+
+					.content {
+						flex: 1;
+						padding: 25rpx 0;
+
+						.textarea {
+							width: 100%;
+							min-height: 200rpx;
+							padding: 0 25rpx;
+							line-height: 38rpx;
+							font-size: 22.5rpx;
+							color: #525866;
+							box-sizing: border-box;
+						}
+
+						>text {
+							font-size: 22.5rpx;
+							color: #B8BECC;
+						}
+					}
+
+					.time-pick {
+						flex: 1;
+					}
+				}
+
+				.row-heigth {
+
+					.label-view {
+						line-height: 22.5rpx;
+						padding: 31.25rpx 0;
+					}
+				}
+			}
+		}
+
+		.add-btn {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 75rpx;
+			background-color: #fff;
+			border-top: 0.62rpx solid #DADEE6;
+		}
+	}
 </style>

+ 11 - 3
pages/mission-action/components/write-back.vue

@@ -74,9 +74,17 @@
 				uni.navigateBack({
 				    delta: 1
 				});
-			},
-			changeFilePaths(filePath) {
-				this.filePath = filePath;
+			},
+			/**
+			 * @param {{
+				 files
+				 index,
+			 }} fileInfo
+			 files:文件集合
+			 index:当前编辑的下标
+			 */
+			changeFilePaths({files}) {
+				this.filePath = files;
 			},
 			sure() {
 				let requestParams = {};

+ 3 - 2
pages/mission-action/mission-action.vue

@@ -66,13 +66,14 @@
 			details,
 			ifSetImproveEmp
 		}) {
-			console.log('details',JSON.parse(details));
+			
 			this.getComponentInfo(details ? JSON.parse(details) : {});
 			this.ifSetImproveEmp = ifSetImproveEmp;
 		},
 		methods: {
 			// 获取组件信息
-			getComponentInfo(details) {
+			getComponentInfo(details) {
+				console.log({details});
 				const {
 					nextPermission,
 					nextPermissionName,

+ 0 - 1
pages/resetInfo/resetInfo.vue

@@ -35,7 +35,6 @@
 </template>
 
 <script>
-	// import uploadImage from '../../components/tm-upload-img/tm-upload-img.vue'
 	import encryption from "../../utils/crypto.js";
 	export default {
 		data() {

+ 11 - 19
pages/suggestionsFeedback/suggestionsFeedback.vue

@@ -28,25 +28,9 @@
 			</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>
@@ -112,14 +96,22 @@
 						}
 					}
 				}).then((data) => {
-					console.log(data)
 					this.fallbackTypelist = data;
 					this.selectedFeedbackType = data[0];
 				});
 			},
-			uploadImgFunc(param){
+			
+			/**
+			 * @param {{
+				 files
+				 index,
+			 }} fileInfo
+			 files:文件集合
+			 index:当前编辑的下标
+			 */
+			uploadImgFunc({files}){
 				 if(this.imgList.length<3){
-					 this.imgList.push(param[0]);
+					 this.imgList = files;
 				 }else{
 					 uni.showModal({
 					   title: '错误提示',

+ 6 - 1
pages/todayCheck/model.js

@@ -3,8 +3,13 @@ import { commServer } from './server.js';
 export default {
   namespaced: true,
   state: {
+	isReloadPageData:false,//是否刷新当前页数据
+  },
+  mutations: {
+	  comChangeState(state, {key, data}) {
+	  	state[key] = data;
+	  },
   },
-  mutations: {},
   actions: {
 		commActions({ commit, state }, { payload }) {
 			// payload = {key,data} // data是请求数据,key是请求接口id

+ 252 - 226
pages/todayCheck/todayCheck.vue

@@ -1,227 +1,253 @@
-<template>
-  <view class="todayCheckPage">
-    <view class="content" v-for="item in list">
-      <view class="contTitle">
-        <text class="contTitleLeft">{{ item.situationName }}</text>
-        <text class="contTitleRight">{{ item.checkPlan }}</text>
-      </view>
-      <view class="contCon">
-        <view
-          v-for="items in item.planDepListReps"
-          class="conEveryCon"
-          @click="goToPonitDetails(items)"
-        >
-          <view class="title">
-            <view class="name">{{ items.deptName }}</view>
-            <view class="buMen">
-              <image
-                src="../../static/icon-map-dis.png"
-                mode=""
-                class="img"
-              ></image>
-              <view class="keshi">{{ items.deptClassName }}</view>
-            </view>
-          </view>
-          <view class="status">
-            <image
-              :src="
-                items.completeDes == '已完成'
-                  ? '../../static/top-img.png'
-                  : items.completeDes == '查核中'
-                  ? '../../static/hight-bg.png'
-                  : '../../static/disabled-bg.png'
-              "
-              mode=""
-              class="bgImg"
-            ></image>
-            <text class="statusType">{{ items.completeDes }}</text>
-          </view>
-          <view class="points">{{ items.decs }}</view>
-          <view class="pointsGK">要点概括:{{ items.checkPointNames }}</view>
-          <view>
-            <view class="checkName">{{ items.empName }}</view>
-            <view class="checkTime"
-              >{{ items.startDate }}~{{ items.endDate }}</view
-            >
-          </view>
-        </view>
-      </view>
-    </view>
-		<tm-no-data v-if="list.length === 0"
-			:textArr="['暂时没有内容可以展示哦', '请返回上一页面或尝试刷新页面']" />
-  </view>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      list: [],
-      date: "",
-    };
-  },
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    getList() {
-      this.$store
-        .dispatch({
-          type: "todayCheck/commActions",
-          payload: {
-            key: "specificCheckTaskList",
-            data: {
-              specificDate: this.date,
-            },
-          },
-        })
-        .then((res) => {
-          if (res) {
-            this.list = res;
-          }
-        });
-    },
-    goToPonitDetails(data) {
-      // console.log(data)
-      uni.navigateTo({
-        url: `/pages/checkMainPoints/checkMainPoints?checkId=${data.checkId}&deptId=${data.deptId}&situationType=${data.situationType}`,
-      });
-    },
-  },
-  onLoad({ date }) {
-    this.date = date;
-  },
-};
-</script>
-
-<style lang="less">
-.todayCheckPage {
-  padding: 0rpx 25rpx;
-  height: 100%;
-  width: 100%;
-  .content {
-    width: 100%;
-    .contTitle {
-      font-size: 22.5rpx;
-      color: #666f80;
-      height: 22.5rpx;
-      line-height: 22.5rpx;
-      margin: 25rpx 0rpx 15rpx;
-      .contTitleLeft {
-        display: inline-block;
-        width: 60%;
-        text-align: left;
-      }
-      .contTitleRight {
-        display: inline-block;
-        width: 40%;
-        text-align: right;
-      }
-    }
-    .contCon {
-      .conEveryCon {
-        margin-bottom: 25rpx;
-        padding: 25rpx 25rpx 0rpx;
-        background-color: #fff;
-        height: 225rpx;
-        border-radius: 5rpx;
-        position: relative;
-        .title {
-          margin-bottom: 10rpx;
-          color: #292c33;
-          // vertical-align: top;
-          .name {
-            height: 35rpx;
-            display: inline-block;
-            font-size: 35rpx;
-            font-weight: 400;
-          }
-          .buMen {
-            margin-left: 20rpx;
-            display: inline-block;
-            // width: 117.5rpx;
-            height: 35rpx;
-            background-color: #edf2fa;
-            border-radius: 17.5rpx;
-            line-height: 82.5rpx;
-            vertical-align: top;
-            .img {
-              vertical-align: top;
-              width: 35rpx;
-              height: 35rpx;
-            }
-            .keshi {
-              margin-left: 10rpx;
-              margin-right: 20rpx;
-              display: inline-block;
-              vertical-align: top;
-              font-size: 17.5rpx;
-              line-height: 35rpx;
-            }
-          }
-        }
-        .status {
-          width: 100rpx;
-          height: 35rpx;
-          position: absolute;
-          top: 0rpx;
-          right: 0rpx;
-          .bgImg {
-            width: 100rpx;
-            height: 35rpx;
-          }
-          .statusType {
-            width: 100%;
-            position: absolute;
-            top: 8.75rpx;
-            right: 0rpx;
-            font-size: 17.5rpx;
-            line-height: 17.5rpx;
-            color: #fff;
-            text-align: center;
-          }
-        }
-        .points {
-          font-size: 20rpx;
-          color: #292c33;
-          line-height: 50rpx;
-          font-weight: bold;
-        }
-        .pointsGK {
-					overflow: hidden;
-          padding-bottom: 25rpx;
-          border-bottom: 0.62rpx solid #dadee6;
-          font-size: 20rpx;
-					white-space: nowrap;
-					text-overflow: ellipsis;
-          color: #666f80;
-        }
-        .checkName {
-          // padding-top: 20.62rpx;
-          // width: 22%;
-          display: inline-block;
-          color: #666e80;
-          text-align: left;
-          line-height: 17.5rpx;
-          font-size: 17.5rpx;
-          position: absolute;
-          left: 25rpx;
-          bottom: 21.25rpx;
-        }
-        .checkTime {
-          // padding-top: 20.62rpx;
-          // width: 78%;
-          display: inline-block;
-          color: #666e80;
-          text-align: right;
-          line-height: 17.5rpx;
-          font-size: 17.5rpx;
-          position: absolute;
-          right: 25rpx;
-          bottom: 21.25rpx;
-        }
-      }
-    }
-  }
-}
+<template>
+	<view class="todayCheckPage">
+		<view class="content" v-for="item in list">
+			<view class="contTitle">
+				<text class="contTitleLeft">{{ item.situationName }}</text>
+				<text class="contTitleRight">{{ item.checkPlan }}</text>
+			</view>
+			<view class="contCon">
+				<view v-for="items in item.planDepListReps" class="conEveryCon" @click="goToPonitDetails(items)">
+					<view class="title">
+						<view class="name">{{ items.deptName }}</view>
+						<view class="buMen">
+							<image src="../../static/icon-map-dis.png" mode="" class="img"></image>
+							<view class="keshi">{{ items.deptClassName }}</view>
+						</view>
+					</view>
+					<view class="status">
+						<image :src="
+                items.completeDes == '已完成'
+                  ? '../../static/top-img.png'
+                  : items.completeDes == '查核中'
+                  ? '../../static/hight-bg.png'
+                  : '../../static/disabled-bg.png'
+              " mode="" class="bgImg"></image>
+						<text class="statusType">{{ items.completeDes }}</text>
+					</view>
+					<view class="points">{{ items.decs }}</view>
+					<view class="pointsGK">要点概括:{{ items.checkPointNames }}</view>
+					<view>
+						<view class="checkName">{{ items.empName }}</view>
+						<view class="checkTime">{{ items.startDate }}~{{ items.endDate }}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<tm-no-data v-if="list.length === 0" :textArr="['暂时没有内容可以展示哦', '请返回上一页面或尝试刷新页面']" />
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex';
+
+	export default {
+		data() {
+			return {
+				list: [],
+				date: "",
+			};
+		},
+		computed:{
+			...mapState({
+				isReloadPageData: state => state.todayCheck.isReloadPageData,
+			}),
+		},
+		watch: {
+            isReloadPageData(newVal,oldVal){
+				  console.log({newVal,oldVal});
+				  if(newVal){
+					  //刷新页面
+					  this.getList();
+				  }
+			}
+		},
+		mounted() {
+			this.getList();
+		},
+		methods: {
+			getList() {
+				this.$store
+					.dispatch({
+						type: "todayCheck/commActions",
+						payload: {
+							key: "specificCheckTaskList",
+							data: {
+								specificDate: this.date,
+							},
+						},
+					})
+					.then((res) => {
+						this.$store.commit('todayCheck/comChangeState', { //已获取数据时
+							key: 'isReloadPageData',
+							data: false
+						});
+						if (res) {
+							this.list = res;
+						}
+					});
+			},
+			goToPonitDetails(data) {
+				// console.log(data)
+				uni.navigateTo({
+					url: `/pages/checkMainPoints/checkMainPoints?checkId=${data.checkId}&deptId=${data.deptId}&situationType=${data.situationType}`,
+				});
+			},
+		},
+		onLoad({
+			date
+		}) {
+			this.date = date;
+		},
+	};
+</script>
+
+<style lang="less">
+	.todayCheckPage {
+		padding: 0rpx 25rpx;
+		height: 100%;
+		width: 100%;
+
+		.content {
+			width: 100%;
+
+			.contTitle {
+				font-size: 22.5rpx;
+				color: #666f80;
+				height: 22.5rpx;
+				line-height: 22.5rpx;
+				margin: 25rpx 0rpx 15rpx;
+
+				.contTitleLeft {
+					display: inline-block;
+					width: 60%;
+					text-align: left;
+				}
+
+				.contTitleRight {
+					display: inline-block;
+					width: 40%;
+					text-align: right;
+				}
+			}
+
+			.contCon {
+				.conEveryCon {
+					margin-bottom: 25rpx;
+					padding: 25rpx 25rpx 0rpx;
+					background-color: #fff;
+					height: 225rpx;
+					border-radius: 5rpx;
+					position: relative;
+
+					.title {
+						margin-bottom: 10rpx;
+						color: #292c33;
+
+						// vertical-align: top;
+						.name {
+							height: 35rpx;
+							display: inline-block;
+							font-size: 35rpx;
+							font-weight: 400;
+						}
+
+						.buMen {
+							margin-left: 20rpx;
+							display: inline-block;
+							// width: 117.5rpx;
+							height: 35rpx;
+							background-color: #edf2fa;
+							border-radius: 17.5rpx;
+							line-height: 82.5rpx;
+							vertical-align: top;
+
+							.img {
+								vertical-align: top;
+								width: 35rpx;
+								height: 35rpx;
+							}
+
+							.keshi {
+								margin-left: 10rpx;
+								margin-right: 20rpx;
+								display: inline-block;
+								vertical-align: top;
+								font-size: 17.5rpx;
+								line-height: 35rpx;
+							}
+						}
+					}
+
+					.status {
+						width: 100rpx;
+						height: 35rpx;
+						position: absolute;
+						top: 0rpx;
+						right: 0rpx;
+
+						.bgImg {
+							width: 100rpx;
+							height: 35rpx;
+						}
+
+						.statusType {
+							width: 100%;
+							position: absolute;
+							top: 8.75rpx;
+							right: 0rpx;
+							font-size: 17.5rpx;
+							line-height: 17.5rpx;
+							color: #fff;
+							text-align: center;
+						}
+					}
+
+					.points {
+						font-size: 20rpx;
+						color: #292c33;
+						line-height: 50rpx;
+						font-weight: bold;
+					}
+
+					.pointsGK {
+						overflow: hidden;
+						padding-bottom: 25rpx;
+						border-bottom: 0.62rpx solid #dadee6;
+						font-size: 20rpx;
+						white-space: nowrap;
+						text-overflow: ellipsis;
+						color: #666f80;
+					}
+
+					.checkName {
+						// padding-top: 20.62rpx;
+						// width: 22%;
+						display: inline-block;
+						color: #666e80;
+						text-align: left;
+						line-height: 17.5rpx;
+						font-size: 17.5rpx;
+						position: absolute;
+						left: 25rpx;
+						bottom: 21.25rpx;
+					}
+
+					.checkTime {
+						// padding-top: 20.62rpx;
+						// width: 78%;
+						display: inline-block;
+						color: #666e80;
+						text-align: right;
+						line-height: 17.5rpx;
+						font-size: 17.5rpx;
+						position: absolute;
+						right: 25rpx;
+						bottom: 21.25rpx;
+					}
+				}
+			}
+		}
+	}
 </style>

+ 23 - 3
utils/request.js

@@ -48,7 +48,6 @@ function request(url, options, additional) {
   openCloseLoading(additional, true);
   // 模拟token,做登录的同学将这行代码移到登录成功函数中.
 
-  // uni.setStorageSync('token', 'gfkZlq36bBPefzvIoukl5exPJ5/jkil2gi9fNPTABSk=');
   const token = uni.getStorageSync('token');
   return uni.request({
     url: `${BASE_URL}${url}`,
@@ -108,14 +107,26 @@ function LoginExpired(msg) {
   });
 }
 
+//广播弹窗关闭
+function dispatchEventGloal(type){
+	// console.log({type,uni});
+	uni.$emit(type,{});
+}
+
 function notifyException(resArr, additional) {
+  console.log({resArr});
   openCloseLoading(additional, false);
   const [error, res] = resArr;
   if (error) {
     uni.showModal({
       title: '错误提示',
       content: JSON.stringify(error),
-      showCancel: false
+      showCancel: false,
+	  success: function (res) {
+	          if (res.confirm) {
+	              dispatchEventGloal(JSON.stringify(error));
+	          }
+	  }
     });
     console.error(`请求错误: ${error.errMsg}`);
     return false;
@@ -124,10 +135,19 @@ function notifyException(resArr, additional) {
     if (code === '410' || code === '401'||code === '403') {
       LoginExpired(msg);
     } else {
+		// uni.showToast({
+		//     title: '标题',
+		//     duration: 2000
+		// });
       uni.showModal({
         title: '错误提示',
         content: msg,
-        showCancel: false
+        showCancel: false,
+		success: function (res) {
+		        if (res.confirm) {
+		             dispatchEventGloal(msg);
+		        }
+		},
       });
     }
     console.error(`错误信息: ${msg}`);