xhj před 2 roky
rodič
revize
9e8292c619

+ 57 - 4
card/index/index.css

@@ -85,14 +85,24 @@ page {
 	right: 30rpx;
 	bottom: -40rpx;
 }
+.change-option-text{
+	color: #fff;
+	text-align: center;
+	margin-top: 4rpx;
+	font-size: 22rpx;
+}
 .change {
 	font-size: 24rpx;
 	color: #fff;
 	border-radius: 100%;
 	background-color: #4891EF;
-	width: 80rpx;
-	height: 80rpx;
+	width: 90rpx;
+	height: 90rpx;
 	margin-right: 30rpx;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
 }
 .change:last-child{
 	margin-right: 0;
@@ -101,7 +111,7 @@ page {
 .change image {
 	width: 32rpx;
 	height: 25rpx;
-	margin:auto;
+	margin-top: 4rpx;
 }
 
 .upload {
@@ -815,4 +825,47 @@ page {
 .end .lis.active{color: var(--main);}
 .end .lis.active view.percent{background: #E1FFF4;}
 .vote-can{font-size: 22rpx;color: #999;margin-top: 15rpx;}
-.vote-can text{margin-right: 15rpx;}
+.vote-can text{margin-right: 15rpx;}
+
+
+
+/* 邀请码弹窗 */
+.ceng2{position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0,0,0,.5);z-index: 99;}
+.code-pop{
+	position: fixed;
+	top:50%;
+	left:50%;
+	transform: translate(-50%,-50%);
+	width: 574rpx;
+	background: #FFFFFF;
+	border-radius: 20rpx 20rpx 20rpx 20rpx;
+	z-index: 100;
+}
+.code-text{
+	line-height: 41rpx;
+	color: #151515;
+	font-size: 28rpx;
+	margin: 51rpx 47rpx 50rpx;
+	text-align: center;
+}
+.code-content image{
+	width: 365rpx;
+	height: 365rpx;
+	margin: 50rpx auto 30rpx;
+}
+.code-btn{
+	padding: 25rpx;
+	text-align: center;
+	font-size: 28rpx;
+	color: #2A82FD;
+	border-top: 1px solid #E9E9E9;
+}
+
+.pop-scroll{
+	max-height: 750rpx;
+	overflow: scroll;
+	padding: 30rpx;
+}
+.pop-scroll::-webkit-scrollbar {
+	display: none;
+}

+ 35 - 10
card/index/index.vue

@@ -23,20 +23,23 @@
 					<block v-if="cardInfo.avatar">
 						<image :src="cardInfo.avatar" mode="aspectFill" class="poster"></image>
 						<view class="change-option ddflex">
-							<view v-if="cardId" class="change ddflex" style="right: 140rpx;background-color:#27D699;"
+							<view v-if="cardId" class="change" style="right: 140rpx;background-color:#27D699;"
 								@click="userBehavior(3)">
 								<image v-if="!cardInfo.isThumbs" style="width: 35rpx;height: 32rpx;"
-									src="/card/static/images/dz1.png"></image>
-								<image v-else style="width: 35rpx;height:32rpx;" src="/card/static/images/dz1_h.png">
+									src="/card/static/images/dz1.png" mode="aspectFit"></image>
+								<image v-else style="width: 35rpx;height:32rpx;" src="/card/static/images/dz1_h.png" mode="aspectFit">
 								</image>
+								<view class="change-option-text">点赞</view>
 								<!-- 点赞 -->
 							</view>
-							<view v-if="cardId&&(userInfo.manageSaleNo!=cardInfo.jobNumber)" class="change ddflex" @click="jumpUrl('/card/cardFound/cardFound')">
-								<image src="/card/static/images/change.png"></image>
+							<view v-if="cardId&&(userInfo.manageSaleNo!=cardInfo.jobNumber)" class="change" @click="jumpUrl('/card/cardFound/cardFound')">
+								<image src="/card/static/images/change.png" style="width: 35rpx;height: 32rpx;" mode="aspectFit"></image>
+								<view class="change-option-text">切换</view>
 								<!-- 更换销售员-->
 							</view>
-							<view v-if="cardId&&(!userInfo.manageSaleNo)" style="background-color: #FF7229;" class="change ddflex" @click="bindSale()">
-								<image  style="width: 36rpx;height: 36rpx;" src="/card/static/images/bind.png"></image>
+							<view v-if="cardId&&(!userInfo.manageSaleNo)" style="background-color: #FF7229;" class="change" @click="bindSale()">
+								<image  style="width: 32rpx;height: 32rpx;" src="/card/static/images/bind.png" mode="aspectFit"></image>
+								<view class="change-option-text">绑定</view>
 								<!-- 绑定销售员-->
 							</view>
 						</view>
@@ -75,7 +78,7 @@
 			</view>
 			<view class="btns ddflex" v-if="cardId">
 				<view class="share-ta ddflex fflex" style="background: linear-gradient(80deg, #7EBFF1 0%, #458EEE 100%);"
-					@click="copy(cardInfo.wechat, 1)">
+					@click="isShowCodePop=true">
 					<image src="../../static/pages/images/wx.png"></image>微信联系</view>
 				<view class="share-ta ddflex fflex" style="background: linear-gradient(84deg, #6FE5BC 0%, #27D699 100%);"
 					@click="goPhone()">
@@ -378,6 +381,24 @@
 			</view>
 		</block>
 		
+		
+		<view class="ceng2" v-if="isShowCodePop" @click="isShowCodePop = false" @touchmove.stop.prevent="moveHandle">
+		</view>
+		<view :class="'code-pop ' +(about.greyTheme==1?'grayTheme':'')" v-if="isShowCodePop">
+			<view class="code-content" v-if="cardInfo.wechatCode">
+				<image :src="cardInfo.wechatCode?cardInfo.wechatCode:'/static/images/wxCode.jpg'"
+					show-menu-by-longpress="true"></image>
+				<view style="text-align: center;font-size: 24rpx;color: #999;margin-bottom: 50rpx;">长按识别微信二维码</view>
+			</view>
+			<view class="code-text" v-else>
+				<view>微信号</view>
+				<view>{{cardInfo.wechat}}</view>
+			</view>
+			<view class="code-btn" @click="copy(cardInfo.wechat,1)">
+				复制微信号
+			</view>
+		</view>
+		
 		<serviceContact></serviceContact>
 	</view>
 </template>
@@ -425,7 +446,9 @@ import util from '../../utils/util.js';
 				videoCurrent: null,
 				videoContext: '',
 				
-				userInfo:''
+				userInfo:'',
+				
+				isShowCodePop: false,
 			};
 		},
 		components:{ serviceContact },
@@ -621,10 +644,12 @@ import util from '../../utils/util.js';
 			},
 
 			copy(valueText, type) {
+				let that = this
 				uni.setClipboardData({
 					data: valueText,
-					success: function(res) {
+					success:(res)=> {
 						if (type == 1) {
+							that.isShowCodePop = false
 							req.msg('微信号复制成功');
 						} else if (type == 2) {
 							req.msg('邮箱复制成功');

+ 6 - 1
chat/components/chat/msglist/msglist.vue

@@ -25,7 +25,7 @@
 				<image src="../../../static/chat_dh.png"></image>
 				<view>打电话</view>
 			</view>
-			<view class="li ddflex" @click="jumpUrl('/card/index/index?cardId='+recommendCard.visitingCardDTO.id)">
+			<view class="li ddflex" @click="jumpUrlHome()">
 				<image src="../../../static/chat_wy.png"></image>
 				<view>进微页</view>
 			</view>
@@ -223,6 +223,11 @@
 					url: url
 				})
 			},
+			jumpUrlHome(){
+				uni.switchTab({
+					url:"/pages/index/index"
+				})
+			},
 
 			showWeChatCodePop() {
 				this.$emit("showWeChatCodePop", true, this.recommendCard);

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 19
library/static/html2canvas.min.js


+ 1 - 4
match/activityDetail/activityDetail.vue

@@ -71,7 +71,7 @@
 						<image src="../../static/pages/images/fxico1_1.png"></image>分享
 					</button> -->
 				</view>
-				<view class="btns ddflex" v-if="!isIos">
+				<view class="btns ddflex">
 					<view class="btn" @click="jumpUrl('/match/activity/activity')" v-if="detail.isEnlist">查看报名</view>
 					<block v-else>
 						<view class="btn" @click="showPop()" v-if="detail.state == 2">立即报名</view>
@@ -80,9 +80,6 @@
 						<view class="btn end" v-if="detail.state == 5">活动结束</view>
 					</block>
 				</view>
-				<view class="btns ddflex" v-else>
-					<view class="btn">立即报名</view>
-				</view>
 			</view>
 		</view>
 		<view class="ceng" v-if="popShow" @click="hidePop()"></view>

+ 20 - 11
mine/bindNumber/bindNumber.css

@@ -1,14 +1,17 @@
-page{
+page {
 	background-color: #fff;
 }
-input{
+.input-box{
 	font-size: 32rpx;
-	margin:80rpx 30rpx 97rpx;
-	text-align: center;
+	margin: 80rpx 60rpx 97rpx;
 	padding: 30rpx;
-	border-bottom: 2rpx solid #DEDEDE;;
+	border-bottom: 2rpx solid #DEDEDE;
+}
+input {
+	text-align: left;
 }
-.phone{
+
+.phone {
 	line-height: 67rpx;
 	font-size: 48rpx;
 	font-family: PingFang SC-Bold, PingFang SC;
@@ -16,24 +19,30 @@ input{
 	color: #000000;
 	text-align: center;
 }
-.input-placeholder{
+
+.input-placeholder {
 	font-size: 32rpx;
 	font-family: PingFang SC-Regular, PingFang SC;
 	font-weight: 400;
 	color: #A1A1A1;
 }
-.btn{
-	width: 594rpx;
+
+.btn {
 	height: 84rpx;
 	line-height: 84rpx;
 	background: #27D699;
 	border-radius: 42rpx 42rpx 42rpx 42rpx;
 	opacity: 1;
-	border: 1rpx solid rgba(0,0,0,0);
-	margin: auto;
+	border: 1rpx solid rgba(0, 0, 0, 0);
+	margin: 150rpx 60rpx;
 	font-size: 32rpx;
 	font-family: PingFang SC-Regular, PingFang SC;
 	font-weight: 400;
 	color: #FFFFFF;
 	text-align: center;
+}
+
+.yzm {
+	font-size: 30rpx;
+	color: #333;
 }

+ 46 - 6
mine/bindNumber/bindNumber.vue

@@ -1,9 +1,18 @@
 <template>
-	<view>
-		<view style="margin-top: 300rpx;">
-			<view v-if="userInfo&&userInfo.mobile" class="phone">{{userInfo.mobile.substring(0,3)}}****{{userInfo.mobile.substring(userInfo.mobile.length-4,3)}}</view>
+	<view style="padding-top: 300rpx;">
+		<view v-if="userInfo&&userInfo.mobile" class="phone">{{userInfo.mobile.substring(0,3)}}****{{userInfo.mobile.substring(userInfo.mobile.length-4,3)}}</view>
+		<view v-else class="phone">绑定工号</view>
+		
+		<view class="input-box" style="margin-bottom: 30rpx;">
 			<input v-model="saleNo" placeholder-class="input-placeholder" placeholder="请输入工号"/>
 		</view>
+		
+		<view class="input-box dflex" style="margin-top: 40rpx;">
+			<input v-model="code" type="number" maxlength="6" placeholder="请输入验证码" placeholder-class="input-placeholder"
+				class="flex" />
+			<view class="yzm" @click="getCode()" v-text="sendMsg"></view>
+		</view>
+		
 		<view class="btn" @click="submit">确认绑定</view>
 	</view>
 </template>
@@ -21,7 +30,10 @@ import { setTimeout } from "timers";
 				userInfo:{},
 				systems: {},
 				isTop:0,
-				saleNo:''
+				saleNo:'',
+				code: '', //code
+				sendMsg: '获取验证码',
+				isGetCodeDisabled: false,
 			}
 		},
 		onLoad(options) {
@@ -33,7 +45,7 @@ import { setTimeout } from "timers";
 		methods: {
 			submit(){
 				if(!this.saleNo) req.msg("请输入工号")
-				req.postRequest('/api/user/bindSaleNo',{saleNo:this.saleNo},res=>{
+				req.postRequest('/api/user/bindSaleNo',{saleNo:this.saleNo,yzlCode:this.code},res=>{
 					req.msg("绑定成功")
 					req.getRequest('/api/user/info', {}, suc => {
 						req.setStorage('userInfo', data);
@@ -42,7 +54,35 @@ import { setTimeout } from "timers";
 						uni.navigateBack()
 					},1000)
 				})
-			}
+			},
+			getCode() {
+				if (this.isGetCodeDisabled == true) return false;
+				if (!this.saleNo) {
+					req.msg('请输入工号');
+					return;
+				}
+				req.postRequest(
+					'/api/user/getYzlCode', {
+						saleNo: this.saleNo,
+					},
+					data => {
+						req.msg('验证码获取成功');
+						let time = 60;
+						let interval = setInterval(() => {
+							time--;
+							if (time == 0) {
+								this.isGetCodeDisabled = false;
+								this.sendMsg = '获取验证码';
+								clearInterval(interval);
+							} else {
+								this.isGetCodeDisabled = true;
+								this.sendMsg = time + '秒后再获取';
+							}
+						}, 1000);
+					},
+					true
+				);
+			},
 		},
 		mounted() {
 			const systemInfo = uni.getSystemInfoSync();

+ 13 - 7
mine/userinfo/userinfo.vue

@@ -279,12 +279,15 @@
 					//   this.getInfo()
 					//   app.switchTab('pages/user/user')
 					// })
-					if (isShowLoading) {
-						uni.hideLoading();
-						this.getInfo();
-						app.globalData.switchTab('pages/user/user');
-						isShowLoading = false;
-					}
+					req.getRequest('/api/user/myInfo', {}, data => {
+						req.setStorage('userInfo', data);
+						if (isShowLoading) {
+							uni.hideLoading();
+							this.getInfo();
+							app.globalData.switchTab('pages/user/user');
+							isShowLoading = false;
+						}
+					});
 				});
 			},
 
@@ -299,7 +302,10 @@
 					iv: detail.iv,
 					sessionKey: this.sessionKey
 				}, res => {
-					_ts.getInfo();
+					req.getRequest('/api/user/myInfo', {}, data => {
+						req.setStorage('userInfo', data);
+						this.mobile = data.mobile
+					});
 				});
 			},
 			onEditorReadyB() {

+ 12 - 1
office/team/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view>
 		<view class="top-fixed" :style="'height:' + systems.barHeight + 'rpx;'">
-			<navigator open-type="navigateBack" hover-class="none" class="back ddflex" :style="'top:' + systems.ktxStatusHeight + 'rpx;height:' + systems.navigationHeight + 'rpx;'">
+			<navigator @click="toBack" hover-class="none" class="back ddflex" :style="'top:' + systems.ktxStatusHeight + 'rpx;height:' + systems.navigationHeight + 'rpx;'">
 				<image :src="picUrlss+'lezhan/back_black.png'"></image>
 			</navigator>
 		</view>
@@ -278,6 +278,17 @@
 			};
 		},
 		methods: {
+			toBack(){
+				let pages = getCurrentPages();
+				let prevPage = pages[pages.length - 2];
+				if(prevPage){
+					uni.navigateBack()
+				}else{
+					uni.switchTab({
+						url:"/pages/index/index"
+					})
+				}
+			},
 			getTeamInfo(){
 				req.getRequest(api.user_team_info+this.opt.id,{},data=>{
 					this.teamInfo = data;

+ 31 - 1
pages/index/index.vue

@@ -302,6 +302,9 @@
 				<view :class="'chat-lyl '+(!chatShowText?'chat-lyl2':'')">聊一聊</view>
 			</view>
 		</view>
+		
+		<update-userinfo :update-info="isUpdateInfo" :update-mobile="isUpdateMobile" v-if="isShowUpdate"
+			@closeUpdate="closeUpdate" @updateInfo="updateInfo" @updateMobile="updateMobile"></update-userinfo>
 	</view>
 </template>
 
@@ -413,7 +416,13 @@
 				chatShow: true,
 				chatShowText: true,
 				
-				userInfo:{}
+				userInfo:{},
+				
+				isShowUpdate: false, //是否显示更新信息弹窗
+				isUpdateInfo: false, //更新用户信息
+				isUpdateMobile: false, //绑定手机号
+				
+				firstLoad:true,//第一次加载页面
 			};
 		},
 
@@ -470,7 +479,17 @@
 		async onShow() {
 			await req.silenceLogin(this.query.userId, '');
 			let _ts = this;
+			
 			this.userInfo = req.getStorage('userInfo')
+			
+			
+			if (!this.userInfo.mobile&&this.firstLoad==true) {
+				this.isShowUpdate = true;
+				this.isUpdateMobile = true;
+			}
+			
+			this.firstLoad = false
+			
 			await this.getConfig().then(res => {});
 			await this.getHomeTemplateConfig();
 			uni.setNavigationBarColor({
@@ -1039,6 +1058,17 @@
 				else app.globalData.openPage(url);
 				this.hideAd();
 			},
+			
+			closeUpdate() {
+				this.isShowUpdate = false;
+			},
+			updateInfo(e) {
+				this.isUpdateInfo = e;
+				this.getMy();
+			},
+			updateMobile(e) {
+				this.isUpdateMobile = e;
+			},
 		},
 		mounted() {
 			const systemInfo = uni.getSystemInfoSync();

+ 11 - 0
pages/user/user.vue

@@ -326,6 +326,17 @@
 				this.getAbout();
 				this.getMyCount()
 				this.noLogin = true;
+				
+				console.log("userInfo",userInfo)
+				if(userInfo.avatar && this.isShowUpdate == true && this.isUpdateInfo == true){
+					this.isShowUpdate = false;
+					this.isUpdateInfo = false;
+				}
+				if (userInfo.mobile && this.isUpdateMobile == false) {
+					this.isShowUpdate = false;
+					this.isUpdateMobile = false;
+				}
+				
 			} else {
 				this.noLogin = false;
 			}

binární
static/images/card_bottom.png


binární
static/images/lpal.png


binární
static/images/tbal.png


binární
static/images/xbrm.png


+ 45 - 37
topic/content/content.vue

@@ -1,47 +1,52 @@
 <template>
 	<view v-if="detaile">
-		<view class="title">{{ detaile.title }}</view>
-		<view class="det-sta ddflex">
-			<image style="width: 48rpx;height: 48rpx;margin-right: 10rpx;" :src="config.CONFIG_PROJECT_LOGO"></image>
-			<view class="sitename" @click="toIndex('')">{{config.CONFIG_PROJECT_TITLE}}</view>
-			<view class="time">{{getDateTimeStamp(detaile.time)}}</view>
-		</view>
-		<view class="video" v-if="detaile.resourceUri&&JSON.parse(detaile.resourceUri).uri">
-			<video :src="JSON.parse(detaile.resourceUri).uri" :show-center-play-btn="false" :controls="true" :autoplay="true" id="myVideo" @pause="videoPause" @ended="videoEnded"></video>
-			<view class="video-play ddflex" @click="videoPlay()" v-if="detaile.isShowPlayBtn"><image src="../../static/images/play.png"></image></view>
-		</view>
-		<view class="content">
-			<view class="viewMore">
-				<mp-html :content="detaile.text" :lazy-load="true" @imgtap="choose"></mp-html>
+		<view v-if="detaile&&detaile.contentType!=3">
+			<view class="title">{{ detaile.title }}</view>
+			<view class="det-sta ddflex">
+				<image style="width: 48rpx;height: 48rpx;margin-right: 10rpx;" :src="config.CONFIG_PROJECT_LOGO"></image>
+				<view class="sitename" @click="toIndex('')">{{config.CONFIG_PROJECT_TITLE}}</view>
+				<view class="time">{{getDateTimeStamp(detaile.time)}}</view>
 			</view>
-		</view>
-		<view style="font-size: 24rpx;color: #999999;line-height: 36rpx;padding: 0 30rpx;">
-			本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
-		</view>
-		<view class="operate dflex">
-			<view class="zan dflex">
-				共{{detaile.browse}}次浏览</view>
-			<view class="ddflex">
-				<button style="margin-right: 20rpx !important;" class="share ddflex" hover-class="none" @click="userBehavior()"><image :src="detaile.isThumbs?'/static/images/like_h.png':'/static/images/like.png'"></image>{{detaile.thumbsNumber}}</button>
-				<button class="share ddflex" hover-class="none" open-type="share"><image src="/static/images/share.png"></image>分享</button>
+			<view class="video" v-if="detaile.resourceUri&&JSON.parse(detaile.resourceUri).uri">
+				<video :src="JSON.parse(detaile.resourceUri).uri" :show-center-play-btn="false" :controls="true" :autoplay="true" id="myVideo" @pause="videoPause" @ended="videoEnded"></video>
+				<view class="video-play ddflex" @click="videoPlay()" v-if="detaile.isShowPlayBtn"><image src="../../static/images/play.png"></image></view>
 			</view>
-		</view>
-		<view class="box" v-if="contentList && contentList.length > 0">
-			<view class="tit dflex">为您推荐</view>
-			<view class="rec">
-				<navigator :url="'/topic/content/content?id=' + item.id" hover-class="none" class="li dflex" v-for="(item,index) in contentList" :key="index" v-if="index < 3">
-					<view class="flex">
-						<view class="rec-tit tovers">{{item.title}}</view>
-						<view class="dflex">
-							<!-- <view class="author ddflex"><image src="../../static/pages/images/zbgw.png" mode="aspectFill"></image>欧衡</view> -->
-							<view class="rec-time">{{item.createDate}}</view>
+			<view class="content">
+				<view class="viewMore">
+					<mp-html :content="detaile.text" :lazy-load="true" @imgtap="choose"></mp-html>
+				</view>
+			</view>
+			<view style="font-size: 24rpx;color: #999999;line-height: 36rpx;padding: 0 30rpx;">
+				本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
+			</view>
+			<view class="operate dflex">
+				<view class="zan dflex">
+					共{{detaile.browse}}次浏览</view>
+				<view class="ddflex">
+					<button style="margin-right: 20rpx !important;" class="share ddflex" hover-class="none" @click="userBehavior()"><image :src="detaile.isThumbs?'/static/images/like_h.png':'/static/images/like.png'"></image>{{detaile.thumbsNumber}}</button>
+					<button class="share ddflex" hover-class="none" open-type="share"><image src="/static/images/share.png"></image>分享</button>
+				</view>
+			</view>
+			<view class="box" v-if="contentList && contentList.length > 0">
+				<view class="tit dflex">为您推荐</view>
+				<view class="rec">
+					<navigator :url="'/topic/content/content?id=' + item.id" hover-class="none" class="li dflex" v-for="(item,index) in contentList" :key="index" v-if="index < 3">
+						<view class="flex">
+							<view class="rec-tit tovers">{{item.title}}</view>
+							<view class="dflex">
+								<!-- <view class="author ddflex"><image src="../../static/pages/images/zbgw.png" mode="aspectFill"></image>欧衡</view> -->
+								<view class="rec-time">{{item.createDate}}</view>
+							</view>
 						</view>
-					</view>
-					<image :src="item.pic" mode="aspectFill" class="rec-img"></image>
-				</navigator>
+						<image :src="item.pic" mode="aspectFill" class="rec-img"></image>
+					</navigator>
+				</view>
 			</view>
+			<serviceContact :userId="query.userId?query.userId:''" v-if="userInfo.userType!=1"></serviceContact>
+		</view>
+		<view v-if="detaile&&detaile.contentType==3">
+			<web-view :src="webUrl" v-if="webUrl!==''"></web-view>
 		</view>
-		<serviceContact :userId="query.userId?query.userId:''" v-if="userInfo.userType!=1"></serviceContact>
 	</view>
 </template>
 
@@ -71,6 +76,8 @@ export default {
 			userInfo:{},
 			query:{},
 			id:null,
+			
+			webUrl:''
 		};
 	},
 
@@ -163,6 +170,7 @@ export default {
 						res.productCategory = res.productCategory.split(',')
 					}
 					that.detaile = res;
+					that.webUrl = that.detaile.linkUrl?that.detaile.linkUrl:''
 					let arr = [];
 					if(res.productCategory && res.productCategory.length > 0){
 						for (var i = 0; i < res.productCategory.length; i++) {

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů