<template>
	<view>
		<u-time-line>
			<u-time-line-item nodeTop="2" class="u-p-b-20" v-for="item,index in list" :key="index">
				<template v-slot:node>
					<view class="u-node" :style="{ background: getTimeLineTagColor(item.type) }"></view>
				</template>
				<template v-slot:content>
					<view class="u-font-24 content">
						<view class="start" v-if="item.type == '0'">
							<view class="u-m-b-20 u-p-l-8 log-title u-flex">
								<text>创建</text>
								<text>{{item.creatorTime ? $u.timeFormat(item.creatorTime, 'yyyy-mm-dd hh:MM:ss'):''}}</text>
							</view>
							<view class="u-flex avatar-box" style="background-color: #F5F5F5;">
								<u-avatar :src="baseURL + item.headIcon" size="mini" mode="circle"
									class="avatar"></u-avatar>
								<text class="u-m-l-8">{{item.creatorUserName}}</text>
							</view>
						</view>
						<view class="avatar-block" v-else>
							<view class="u-m-b-20 u-p-l-8 u-flex log-title">
								<text>编辑</text>
								<text>{{item.creatorTime ? $u.timeFormat(item.creatorTime, 'yyyy-mm-dd hh:MM:ss'):''}}</text>
							</view>
							<view class="u-flex avatar-box ">
								<view class="u-flex">
									<u-avatar :src="baseURL + item.headIcon" size="mini" mode="circle"
										class="avatar"></u-avatar>
									<text class="u-m-l-8">{{item.creatorUserName}}</text>
								</view>
								<view>
									<text class="u-m-l-8">{{`有`}}</text>
									<text class="u-m-l-8" style="color: red;">{{item.dataLog.length}}</text>
									<text class="u-m-l-8">处更改</text>
								</view>
							</view>
							<view class="dataLog-child">
								<view class="dataLog-item" v-for="child,i in item.dataLog" :key="i">
									<!-- 子表 -->
									<view class="child-line" v-if="child.jnpfKey === 'table'">
										<view class="field-child">
											<text class="table-name">{{child.fieldName}}：</text>
											<view class="u-flex table-detail">
												<text>已修改</text>
												<view class="u-m-l-20 approver-list-r u-flex" @click="openChild(child)">
													<view class="txt">详情</view>
													<text class="icon-ym icon-ym-right"></text>
												</view>
											</view>
										</view>
									</view>
									<!-- 主表 -->
									<view class="ordinary-field" v-else>
										<view class="u-m-b-10 left">{{child.fieldName}}：</view>
										<view class="right">
											<view class="val" v-if="child.nameModified">
												<text style="color: #efbd47;">已修改</text>
											</view>
											<view class="val" v-else>
												<template v-if="child.jnpfKey === 'sign'">
													<view v-if="child.oldData !== child.newData">
														<text v-if="child.oldData" class="u-m-r-8 txt line-through"
															@click="previewImage(child.oldData)">
															旧签名
														</text>
														<text v-if="child.newData">
															<text>修改为</text>
															<text class="u-m-l-8 txt"
																@click="previewImage(child.newData)">
																新签名
															</text>
														</text>
													</view>
													<text v-if="child.oldData === child.newData"
														@click="previewImage(child.oldData)">签名</text>
												</template>
												<template v-else-if="child.jnpfKey === 'signature'">
													<view v-if="child.oldData !== child.newData">
														<text v-if="child.oldData" class="u-m-r-8 txt line-through"
															@click="previewImage(child.oldData)">
															旧签章
														</text>
														<text v-if="child.newData">
															<text>修改为</text>
															<text class="u-m-l-8 txt"
																@click="previewImage(child.newData)">
																新签章
															</text>
														</text>
													</view>
													<text v-if="child.oldData === child.newData"
														@click="previewImage(child.oldData)">签章</text>
												</template>
												<template v-else>
													<text v-if="child.oldData !== child.newData">
														<text class="line-through">{{child.oldData}}</text>
														<text class="u-m-l-16 u-m-r-16"
															v-if="!child.oldData || child.newData ">修改为</text>
														<text>{{child.newData}}</text>
													</text>
													<text v-if="child.oldData === child.newData">未修改</text>
												</template>
											</view>
										</view>
									</view>
								</view>
							</view>
						</view>
					</view>
				</template>
			</u-time-line-item>
		</u-time-line>
	</view>
	<uni-popup ref="flowStepPopup" background-color="#fff" border-radius="8rpx 8rpx 0 0" :is-mask-click="false">
		<view class="timeLine-popup-content u-flex-col">
			<view class="u-flex head-title notice-warp">
				<text class="text">修改详情</text>
				<text class="text icon-ym icon-ym-fail" @click="popupClose"></text>
			</view>
			<view class="table-content">
				<view class="table-content-inner" v-for="(item,index) in chidData">
					<view class="table-content-title">
						{{item.jnpf_type == '0' ? '新增' : item.jnpf_type == '2' ? '删除' : '编辑'}}
					</view>
					<view class="table-field u-flex-col">
						<view class="u-flex table-field-item" v-for="(field,i) in item.chidField" :key="i"
							:style="{backgroundColor:item.jnpf_type == '0'?'#defee9':item.jnpf_type == '2'?'#ffd2d2':''}">
							<view class="label">{{field.label}}</view>
							<!-- 显示已修改，未修改 -->
							<view class="val" v-if="field.nameModified">
								<text v-if="field.oldData !== field.newData" style="color: #efbd47;"
									:class="item.jnpf_type == '2' ? 'line-through' : ''">已修改</text>
								<text v-if="field.oldData === field.newData"
									:class="item.jnpf_type == '2' ? 'line-through' : ''">{{item.jnpf_type == 0 ? '' : '未修改'}}</text>
							</view>
							<view class="val" v-else>
								<!-- 签名，电子签章 -->
								<template v-if="field.jnpfKey === 'sign'">
									<view v-if="field.oldData !== field.newData" class="val">
										<text v-if="field.oldData" class="u-m-r-8 txt"
											:class="item.jnpf_type == '2' || item.jnpf_type == '1' ? 'line-through' : ''"
											@click="previewImage(field.oldData)">
											旧签名
										</text>
										<template class="" v-if="item.jnpf_type != 2">
											<text v-if="field.newData && field.oldData">修改为</text>
											<text class="u-m-l-8 txt" @click="previewImage(field.newData)">
												新签名
											</text>
										</template>
									</view>
									<text @click="previewImage(field.oldData)" class="txt"
										v-if="field.oldData === field.newData">{{item.jnpf_type == 0 ||(!field.oldData && !field.newData)? '' : '签名'}}</text>
								</template>
								<template v-else-if="field.jnpfKey === 'signature'">
									<view v-if="field.oldData !== field.newData" class="val">
										<text v-if="field.oldData" class="u-m-r-8 txt txt-left"
											:class="item.jnpf_type == '2' || item.jnpf_type == '1'  ? 'line-through' : ''"
											@click="previewImage(field.oldData)">
											旧签章
										</text>
										<template class="" v-if="item.jnpf_type != 2">
											<text v-if="field.newData && field.oldData">修改为</text>
											<text class="u-m-l-8 txt text-right" @click="previewImage(field.newData)">
												新签章
											</text>
										</template>
									</view>
									<text @click="previewImage(field.oldData)" class="txt"
										v-if="field.oldData === field.newData">{{item.jnpf_type == 0 ||(!field.oldData && !field.newData) ? '' : '签章'}}</text>
								</template>
								<!-- 签名，电子签章end -->
								<template v-else>
									<view class="u-flex modify-box" v-if="field.oldData !== field.newData ">
										<view class="modify modify-left"
											:style="{'text-align':item.jnpf_type == '2'? 'end' : 'center'}"
											:class=" item.jnpf_type == '2' || item.jnpf_type == '1'   ? 'line-through' : ''"
											v-if="field.oldData">
											{{field.oldData}}
										</view>
										<view v-if="field.newData && field.oldData" class="modify-center">修改为
										</view>
										<view class="modify modify-right"
											:style="{'text-align': item.jnpf_type == '0'? 'end' : 'center'}"
											:class="item.jnpf_type == '2' ? 'line-through' : ''" v-if="field.newData">
											{{field.newData}}
										</view>
									</view>
									<view v-if="field.oldData === field.newData" class="modify-else"
										:class="item.jnpf_type == '2' ? 'line-through' : ''">
										{{field.oldData}}
									</view>
								</template>
							</view>
						</view>
					</view>
				</view>
			</view>
		</view>
	</uni-popup>
</template>
<script>
	import {
		recordList
	} from '@/api/workFlow/flowBefore'
	import jnpf from '@/utils/jnpf'
	import {
		useDefineSetting
	} from '@/utils/useDefineSetting';
	export default {
		props: {
			dataLogList: {
				type: Array,
				default: () => []
			}
		},
		data() {
			return {
				useDefine: useDefineSetting(),
				recordList: [],
				chidData: [],
				chidField: [],
				childItem: {}
			}
		},
		computed: {
			baseURL() {
				return this.define.baseURL
			},
			list() {
				let dataLogList = JSON.parse(JSON.stringify(this.dataLogList))
				if (dataLogList.length) {
					let dataLogData = dataLogList.map(o => ({
						...o,
						dataLog: JSON.parse(o.dataLog)
					}))
					return dataLogData
				}
			}
		},
		methods: {
			previewImage(url) {
				// #ifndef MP
				uni.previewImage({
					urls: [jnpf.getAuthImgUrl(url)]
				});
				// #endif
			},
			openChild(child) {
				this.childItem = child || {}
				let chidData = this.childItem.chidData || [];
				let chidField = this.childItem.chidField || [];
				let data = chidData.map(o => {
					let item = {
						jnpf_type: o.jnpf_type,
						chidField: []
					};
					chidField.forEach(chid => {
						if (o.hasOwnProperty(chid.prop)) {
							let val = o[chid.prop]
							if (chid.jnpfKey === "calculate" && !chid.prop) return
							let newData = {
								...chid,
								newData: val,
								oldData: o[`jnpf_old_${chid.prop}`] ? o[`jnpf_old_${chid.prop}`] : ''
							};
							item.chidField.push(newData);
						} else {
							item.chidField.push({
								...chid,
								newData: '',
								oldData: ''
							});
						}
					});
					return item;
				});
				this.chidData = data
				this.$nextTick(() => {
					this.$refs.flowStepPopup.open('bottom')
				})
			},
			getTimeLineTagColor(status) {
				return status == 0 ? '#08AF28' : '#0177FF';
			},
			popupClose() {
				this.$refs.flowStepPopup.close()
			}
		}
	}
</script>

<style lang="scss">
	.line-through {
		text-decoration: line-through;
	}

	.modify-else {
		overflow: hidden;
		word-break: break-all;
		text-overflow: ellipsis;
	}

	.timeLine-popup-content {
		height: 1200rpx;
		overflow-y: scroll;

		.head-title {
			justify-content: space-between;
			color: #333333;
			padding: 0 20rpx;
			/* #ifdef APP */
			// padding: 20rpx 0;
			/* #endif */
			height: 80rpx;
		}

		.notice-warp {
			top: -2rpx;
			height: 80rpx;
			// border-bottom: 1rpx solid #ececec;
		}

		.table-content {
			padding: 0 20rpx;
			margin-top: 80rpx;

			.table-content-inner {
				margin-bottom: 40rpx;

				.table-content-title {
					min-height: 80rpx;
					background-color: #f5f5f5;
					padding: 16rpx 20rpx;
					border-radius: 8rpx 8rpx 0 0;
					color: #303133;
				}

				.table-field {
					.table-field-item {
						min-height: 80rpx;
						padding: 16rpx 20rpx;
						justify-content: space-between;
						align-items: center;
						border-bottom: 1rpx solid #ececec;
						color: #606266;

						&:last-child {
							border-radius: 0rpx 0rpx 8rpx 8rpx;
						}

						.label {
							flex: 0.3;
						}

						.val {
							font-size: 24rpx;
							text-align: right;
							flex: 0.7;

							.txt {
								color: #4aa8ff;
							}

							.modify-box {
								justify-content: flex-end;

								.modify {
									padding: 8rpx;
									border-radius: 8rpx;
									color: #606266;
								}

								.modify-center {
									width: 100rpx;
									text-align: center;
								}

								.modify-right {
									width: 200rpx;
									word-wrap: break-word;
									background-color: #defee9;
									text-align: center;
								}

								.modify-left {
									width: 200rpx;
									word-wrap: break-word;
									background-color: #ffd2d2;
									text-align: center;
								}
							}
						}
					}
				}
			}
		}
	}

	.u-node {
		width: 20rpx;
		height: 20rpx;
		border-radius: 50%;
	}

	.content {
		.start {
			.log-title {
				justify-content: space-between;
			}

			// box-shadow: 0 6rpx 12rpx rgba(2, 7, 28, 0.16);
			.avatar-box {
				padding: 20rpx;
			}
		}

		.avatar-block {
			.log-title {
				justify-content: space-between;
			}

			border-radius: 8rpx;
			// box-shadow: 0 6rpx 12rpx rgba(2, 7, 28, 0.16);

			.avatar-box {
				justify-content: space-between;
				background-color: #F5F5F5;
				border-bottom: 1rpx solid #ececec;
				padding: 20rpx;
			}

			.dataLog-child {
				background-color: #F5F5F5;
				// padding: 0 20rpx;

				.dataLog-item {
					padding: 20rpx;

					&:last-child {
						border-bottom: none;
					}

					.ordinary-field {
						align-items: flex-start;

						.left {
							flex: 0.2;
						}

						.right {
							flex: 0.8;

							.val {
								font-size: 24rpx;
								flex: 0.8;

								.txt {
									color: #4aa8ff;
								}
							}
						}
					}

					.child-line {
						.field-child {
							justify-content: space-between;

							.table-detail {
								justify-content: space-between;
							}

							.approver-list-r {
								height: 46rpx;

								.txt {
									height: 36rpx;
								}
							}
						}
					}
				}
			}
		}
	}
</style>