<template>
	<view style="background-color: #fff;" v-if="content != null">
		<view
			style="height: 100rpx;display: flex;align-items: center;justify-content: space-around;border-bottom: 1px solid #ceccca;"
			v-if="type==0">
			<!-- <u-tabs :list="list1"  :current="current" @click="click"></u-tabs> -->
			<view class="tab" :class="current==0?'active':''" @click="current = 0">
				待办内容
			</view>
			<view style="border-left: 1px solid #ceccca;height: 80%;">

			</view>
			<view class="tab" :class="current==0?'':'active'" @click="current = 1">
				流转记录
			</view>
		</view>
		<swiper style="background-color:#fff ;" :style="{height:type==0?'calc(100vh - 100rpx)':'100vh'}"
			:current="current" disable-touch>
			<swiper-item>
				<view style="height: 100%;overflow: auto;">
					<u--form labelPosition="left" labelAlign="center" :model="content" ref="uForm"
						:labelStyle="{fontSize:'32rpx'}" labelWidth="120">
						<u-form-item label="信息标题:" borderBottom ref="item1">
							<!-- <u--input v-model="content.title" border="none" readonly></u--input> -->
							<view class="content">
								{{content.title}}
							</view>
						</u-form-item>
						<!-- <u-form-item label="来文单位:" borderBottom ref="item1">
							<view class="content">
								{{content.sender}}
							</view>
						</u-form-item> -->
						<u-form-item label="来文日期:" borderBottom ref="item1">
							<view class="content">
								{{content.createTime}}
							</view>
						</u-form-item>
						<u-form-item label="信息发布栏目:" borderBottom ref="item1">
							<view class="content">
								{{content.columnName}}
							</view>
						</u-form-item>
						<u-form-item label="正文查看:" borderBottom ref="item1">
							<view class="content">
								<u-button type="primary" text="查看" @click="msgshow = true"></u-button>
							</view>
						</u-form-item>
						<view v-if="type==0">
							<u-form-item label="下一节点:" borderBottom ref="item1" v-if="overType==false">
								<uni-data-select v-model="content.jdindex" placeholder="请选择下一节点" :clear="false"
									:localdata="list" @change="change"></uni-data-select>
							</u-form-item>
							<u-form-item label="处理人员:" borderBottom v-if="DeliveryWay==4" ref="item1"
								@click="choosePeo">
								<view :style="{color:content.users==null?'rgb(192, 196, 204)':''}">
									{{content.users==null?'请选择人员': content.userList}}
								</view>
							</u-form-item>
							<u-form-item label="审批意见:" borderBottom ref="item1" v-if="gdType == false">
								<u--textarea v-model="content.reviewMsg" placeholder="请输入审批意见" autoHeight
									border="none"></u--textarea>
							</u-form-item>
							<view v-if="gdType == true">
								<!-- <u-form-item label="密级:" borderBottom ref="item1">
									<uni-data-select v-model="content.levels" placeholder="请选择密级" :clear="false"
										:localdata="gd"></uni-data-select>
								</u-form-item> -->
								<u-form-item label="档案编号:" borderBottom ref="item1">
									<u--input v-model="content.archiveNo" placeholder="请输入档案编号"
										border="none"></u--input>
								</u-form-item>
								<u-form-item label="档案分类:" borderBottom ref="item1" @click="chooseGd">
									<view :style="{color:content.typeId==null?'rgb(192, 196, 204)':''}">
										{{content.typeId==null?'请选择档案分类': content.gdtype}}
									</view>
								</u-form-item>
								<u-form-item label="打印份数:" borderBottom ref="item1">
									<u--input v-model="content.printNum" placeholder="请输入打印份数" border="none"></u--input>
								</u-form-item>
							</view>
							<!-- <view v-if="backType == true">
								<u-form-item label="退回节点:" borderBottom ref="item1">
									<uni-data-select v-model="content.returnToNodeID" placeholder="请选择节点" :clear="false"
										:localdata="backlist"></uni-data-select>
								</u-form-item>
								<u-form-item label="退回意见:" borderBottom ref="item1">
									<u--textarea v-model="content.backMsg" placeholder="请输入退回意见" autoHeight
										border="none"></u--textarea>
								</u-form-item>
							</view> -->
							<view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
								v-if="gdType == false">
								<u-button type="primary" text="提交" @click="submit"></u-button>
							</view>
							<view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
								v-if="gdType == true">
								<u-button type="primary" text="归档" @click="save"></u-button>
							</view>
							<view style="margin-top: 40rpx;padding: 0 20rpx;box-sizing: border-box;"
								v-if="backType == true">
								<u-button type="error" text="退回" @click="show = true"></u-button>
							</view>
						</view>
						<view style="padding: 20rpx;box-sizing: border-box;width: 100%;box-sizing: border-box;" v-else>
							<u-steps :current="100" direction="column" v-if="record != null">
								<view v-for="(v,i) in record" :key="i">
									<view v-if="v.ActionType22 != undefined">
										<u-steps-item :error="v.ActionType==2?true:false"
											v-for="(item,index) in v.ActionType22" :key="index"
											:title='item.NDFromT+"（"+v.ActionTypeText+"）"'>
											<view slot="desc" style="color:#606266;">
												<view style="font-size: 28rpx;">
													收文部门：{{item.NodeData.split("DeptName=")[1]}}
												</view>
												<view style="font-size: 28rpx;">
													处理人：{{item.Exer.split(',')[1]}}
												</view>
												<view style="font-size: 28rpx;">
													处理时间：{{item.RDT}}
												</view>
												<view style="font-size: 28rpx;">
													审核意见：{{item.Msg}}
												</view>
											</view>
										</u-steps-item>
									</view>
									<u-steps-item :error="v.ActionType==2?true:false"
										:title='v.NDFromT+"（"+v.ActionTypeText+"）"' v-else>
										<view slot="desc" style="color: #606266">
											<view style="font-size: 28rpx;">
												收文部门：{{v.NodeData.split("DeptName=")[1]}}
											</view>
											<view style="font-size: 28rpx;">
												处理人：{{v.Exer.split(',')[1]}}
											</view>
											<view style="font-size: 28rpx;">
												处理时间：{{v.RDT}}
											</view>
										</view>
									</u-steps-item>
								</view>
							</u-steps>
						</view>
					</u--form>
				</view>
			</swiper-item>
			<swiper-item>
				<view style="padding: 20rpx;box-sizing: border-box;width: 100%;height: 100%;overflow: auto;">
					<u-steps :current="lzNum-1" direction="column" dot v-if="record != null">
						<view v-for="(v,i) in record" :key="i">
							<u-steps-item :error="v.ActionType==2?true:false"
								:title='v.NDFromT+"（"+v.ActionTypeText+"）"' v-if="v.ActionType==='28'">
								<view slot="desc" style="color: #606266">
									<view style="font-size: 28rpx;">
										处理人：{{v.EmpFromT}}
									</view>
									<view style="font-size: 28rpx;">
										到达时间：{{v.SDT}}
									</view>
								</view>
							</u-steps-item>
							<view v-else-if="v.ActionType22 != undefined">
								<u-steps-item :error="v.ActionType==2?true:false" v-for="(item,index) in v.ActionType22"
									:key="index" :title='item.NDFromT+"（"+v.ActionTypeText+"）"'>
									<view slot="desc" style="color:#606266;">
										<view style="font-size: 28rpx;">
											处理部门：{{item.NodeData.split("DeptName=")[1]}}
										</view>
										<view style="font-size: 28rpx;">
											处理人：{{item.Exer.split(',')[1]}}
										</view>
										<view style="font-size: 28rpx;">
											处理时间：{{item.RDT}}
										</view>
										<view style="font-size: 28rpx;">
											审核意见：{{item.Msg}}
										</view>
									</view>
								</u-steps-item>
							</view>
							<u-steps-item :error="v.ActionType==2?true:false"
								:title='v.NDFromT+"（"+v.ActionTypeText+"）"' v-else>
								<view slot="desc" style="color: #606266">
									<view style="font-size: 28rpx;">
										处理部门：{{v.NodeData.split("DeptName=")[1]}}
									</view>
									<view style="font-size: 28rpx;">
										处理人：{{v.Exer.split(',')[1]}}
									</view>
									<view style="font-size: 28rpx;">
										处理时间：{{v.RDT}}
									</view>
									<view style="font-size: 28rpx;">
										审核意见：{{v.Msg}}
									</view>
								</view>
							</u-steps-item>
						</view>
					</u-steps>

				</view>
			</swiper-item>
		</swiper>
		<u-modal :show="msgshow" title="内容" @confirm="msgshow = false">
			<view class="slot-content">
				<rich-text :nodes="content.content"></rich-text>
			</view>
		</u-modal>
		<u-modal :show="show" title="退回" :closeOnClickOverlay="true" showCancelButton @cancel="close" @close="close"
			@confirm="back">
			<view class="slot-content" style="width: 100%;">
				<u--form labelPosition="left" labelAlign="center" :model="content" ref="uForm1"
					:labelStyle="{fontSize:'32rpx'}" labelWidth="100">
					<u-form-item label="退回节点:" borderBottom ref="item1">
						<uni-data-select v-model="content.returnToNodeID" placeholder="请选择节点" :clear="false"
							:localdata="backlist"></uni-data-select>
					</u-form-item>
					<u-form-item label="退回意见:" borderBottom ref="item1">
						<u--textarea v-model="content.backMsg" placeholder="请输入退回意见" autoHeight
							border="none"></u--textarea>
					</u-form-item>
				</u--form>
			</view>
		</u-modal>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				current: 0,
				content: null,
				statusList: [],
				//流转记录
				record: null,
				//待办已办
				type: 0,
				//节点列表
				list: [],
				//是否选择下发人员
				selectType: 3,
				workid: null,
				flowNo: null,
				id: null,
				//tabs
				list1: [{
						name: '待办内容'
					},
					{
						name: '流转记录'
					}
				],
				DeliveryWay: null,
				gd: null, //密级列表
				gdType: false, //判断是否是归档
				overType: false, //判断是否结束
				//上个页面传过来的参数
				parameter: null,
				msgshow: false,
				//退回状态
				backType: false,
				//退回节点列表
				backlist: [],
				show: false
			}
		},
		onLoad(options) {
			let that = this
			this.getDicts()
			this.getContent(options.workid)
			this.getRecord(options.workid)
			that.parameter = options
			// this.getLmList()
			if (options.nodeName.indexOf('归档') != -1) {
				that.gdType = true
				that.getgd()
			}
			// this.getgd()
			this.type = options.type
			this.workid = options.workid
			this.flowNo = options.flowNo
			uni.setNavigationBarTitle({
				title: options.title
			})

			// if (options.type == 0) {
			// 	setTimeout(() => {
			// 		this.isOver(options)
			// 	}, 500)
			// }

		},
		onShow() {
			uni.$once('query', (query) => {
				if (query.a == 1) {
					this.content.users = getApp().globalData.peoIdList
					this.content.userList = getApp().globalData.peoList
					this.$forceUpdate()
				} else if (query.a == 2) {
					this.content.typeId = getApp().globalData.gdId.split(",")[0]
					this.content.gdtype = getApp().globalData.gdId.split(",")[1]
					this.$forceUpdate()
				}
			})
		},
		methods: {
			click(e) {
				this.current = e.index
			},
			//查询收文详情
			getContent(id) {
				uni.$u.http.get('/oa/article/sel/' + id).then(res => {
					// console.log(res)
					this.content = res.data
					this.content.workid = this.workid
					this.content.reviewMsg = null
					this.getLmList(res.data.columnId)
					if (this.gdType == true) {
						this.content.typeId = null //归档分类
						this.content.levels = null //密级
						this.content.archiveNo = null //档案编号
						this.content.archiveFormNo = null
						this.content.printNum = null //打印份数
						this.content.name = res.data.title //档案名称
						this.content.gdtype = null //分类名称
					}
					if (this.type == 0) {
						this.isOver(this.parameter)
						this.getBackNo(this.parameter.nodeId)
					}
					this.statusList.forEach(item => {
						if (item.dictValue == res.data.emergencyDegree) {
							this.content.status = item.dictLabel
						}
					})
				})
			},
			// 查询字典数据详细
			getDicts() {
				uni.$u.http.get('/system/dict/data/type/urgent_type').then(res => {
					this.statusList = res.data
				})
			},
			//查询归档字典
			getgd() {
				uni.$u.http.get('/system/dict/data/type/archive_levels').then(res => {
					this.gd = res.data.map((item, index) => {
						let obj = {
							value: item.dictCode,
							id: item.dictCode,
							text: item.dictLabel,
						}
						return obj
					})
				})
			},
			//获取栏目列表
			getLmList(id) {
				let that = this
				uni.$u.http.get('/oa/column/list', {
					params: {
						pageSize: 100,
					}
				}).then(res => {
					// console.log(res)
					for (let i in res.rows) {
						if (id == res.rows[i].id) {
							// console.log(res.rows[i].columnName)
							this.content.columnName = res.rows[i].columnName
							// return res.rows[i].columnName
						}
					}
				})
			},
			//查询流转记录
			getRecord(id) {
				uni.$u.http.get('/jflow/restful/getWfGenerWorkList', {
					params: {
						workID: id,
						token: uni.getStorageSync('jtoken')
					}
				}).then(res => {
					this.record = res.trackList
					console.log('record', this.record[0].ActionType22)
					if (this.type == 0) {
						// this.content.jdindex = null
						// this.content.nodeId = null
						// this.content.optionName = null


						// this.content.toNodeId = null

						// this.id = this.list[0].id
						// this.content.jdindex = 0 //下一节点索引
						// this.DeliveryWay = this.list[0].DeliveryWay //下一节点状态
						// this.content.toNodeId = this.list[0].id //下一节点ID
						// this.content.nodeId = this.list[0].id //下一节点ID
						// this.content.optionName = this.list[0].text //节点名称

						//////////////////
						// this.content.userList = null
						// this.content.users = null
						// this.content.reviewMsg = null
					}
				})
			},
			//查询下一步所有节点
			jdList(id, flow) {
				uni.$u.http.get('/jflow/restful/GenerNextStepAllNode', {
					params: {
						workid: id,
						token: uni.getStorageSync('jtoken'),
						flowNo: flow
					}
				}).then(res => {
					this.id = res[0].NodeID
					this.content.jdindex = 0 //下一节点索引
					this.DeliveryWay = res[0].DeliveryWay //下一节点状态
					this.content.toNodeId = res[0].NodeID //下一节点ID
					this.content.nodeId = res[0].NodeID //下一节点ID
					this.content.optionName = res[0].Name //节点名称
					this.list = res.map((item, index) => {
						let obj = {
							value: index,
							id: item.NodeID,
							text: item.Name,
							DeliveryWay: item.DeliveryWay
						}
						return obj
					})
				})
			},
			//节点选择
			change(e) {
				if (e >= 0) {
					this.id = this.list[e].id
					this.DeliveryWay = this.list[e].DeliveryWay
					this.content.toNodeId = this.list[e].id
					this.content.nodeId = this.list[e].id
					this.content.optionName = this.list[e].text
				}

			},
			//选择人员相关
			choosePeo() {
				if (this.id == null) {
					uni.showToast({
						title: "请先选择下一节点",
						icon: "none"
					})
				} else {
					uni.navigateTo({
						url: `/pages/peoChoose/peoChoose?workid=${this.workid}&flowNo=${this.flowNo}&id=${this.id}`,
					})
				}
			},
			//选择归档分类
			chooseGd() {
				uni.navigateTo({
					url: "/pages/file/file"
				})
			},
			//判断是否为最后一步
			isOver(v) {
				uni.$u.http.get("/jflow/restful/judgeNode", {
					params: {
						nodeId: v.nodeId
					}
				}).then(res => {
					// console.log(res)
					if (res.msg == "Y") {
						this.overType = true
					} else {
						this.overType = false
						this.jdList(v.workid, v.flowNo)
					}
				})
			},
			//提交待办
			submit() {
				if (this.id == null) {
					uni.showToast({
						title: "请先选择下一节点",
						icon: "none"
					})
				} else if (this.content.users == null && this.DeliveryWay == 4) {
					uni.showToast({
						title: "请选择人员",
						icon: "none"
					})
				} else if (this.content.reviewMsg == null) {
					uni.showToast({
						title: "请填写审核内容",
						icon: "none"
					})
				} else {
					uni.showLoading({
						title: "提交中...",
						mask: true
					})
					uni.$u.http.post("/offcial/receive/sendFlowToUsers", this.content, {
						header: {
							// 'content-Type': 'multipart/form-data'
							'content-Type': 'application/x-www-form-urlencoded'
						}
					}).then(res => {
						// uni.hideLoading()
						if (res.data.VarAcceptersName != "" && res.data.VarAcceptersName != "结束") {
							uni.showToast({
								title: "已发送到" + res.data.VarToNodeName + "节点，接收人：" + res
									.data.VarAcceptersName,
								icon: "none",
								mask: true,
								duration: 3000
							})
						} else if (res.data.VarAcceptersName == "结束") {
							uni.showToast({
								title: res.data.Message,
								icon: "none",
								mask: true,
								duration: 3000
							})
						} else {
							uni.showToast({
								title: res.data.Message.replace(/[@]/g, ""),
								icon: "none",
								mask: true,
								duration: 3000
							})
						}
						uni.$emit('query', {
							a: 'back'
						})
						setTimeout(() => {
							uni.navigateBack()
						}, 2000)
					}).catch(res => {
						uni.hideLoading()
					})
				}
			},
			//保存归档
			save() {
				// if (this.content.levels == null) {
				// 	uni.showToast({
				// 		title: "请选择密级",
				// 		icon: "none"
				// 	})
				// } else 
				if (this.content.archiveNo == null) {
					uni.showToast({
						title: "请填写档案编号",
						icon: "none"
					})
				} else if (this.content.typeId == null) {
					uni.showToast({
						title: "请选择归档分类",
						icon: "none"
					})
				} else if (this.content.printNum == null) {
					uni.showToast({
						title: "请填写打印份数",
						icon: "none"
					})
				} else {
					this.content.reviewMsg = "同意"
					uni.showLoading({
						title: "提交中...",
						mask: true
					})
					uni.$u.http.post("/offcial/archive/save", this.content).then(res => {
						uni.$u.http.get('/jflow/restful/GenerNextStepAllNode', {
							params: {
								workid: this.parameter.workid,
								token: uni.getStorageSync('jtoken'),
								flowNo: this.parameter.flowNo,
							}
						}).then(qwe => {
							// uni.hideLoading()
							uni.showToast({
								title: "归档成功",
								icon: "none",
								mask: true,
								duration: 2000
							})
							uni.$emit('query', {
								a: 'back'
							})
							setTimeout(() => {
								uni.navigateBack()
							}, 2000)
						})
					}).catch(res => {
						uni.hideLoading()
						uni.showToast({
							title: "请稍后重试",
							icon: "none"
						})
					})
				}
			},
			//查询是否能退回
			getBackNo(id) {
				uni.$u.http.get("/jflow/restful/CurrNodeInfo?currNodeID=" + id).then(res => {
					if (res[0].ReturnRole != 0) {
						this.getBackList()
						this.backType = true
						this.content.returnToNodeID = null
						this.content.backMsg = null
					}
				})
			},
			//获取退回节点列表
			getBackList() {
				uni.$u.http.get("/jflow/restful/getReturnWorkNode", {
					params: {
						workid: this.parameter.workid,
						token: uni.getStorageSync('jtoken')
					}
				}).then(res => {
					this.backlist = res.map((item, index) => {
						let obj = {
							value: item.No,
							id: item.No,
							text: item.Name,
						}
						return obj
					})
				})
			},
			//退回上一节点
			back() {
				if (this.content.returnToNodeID == null) {
					uni.showToast({
						title: "请选择退回节点",
						icon: "none"
					})
				} else if (this.content.backMsg == null) {
					uni.showToast({
						title: "请填写退回意见",
						icon: "none"
					})
				} else {
					uni.showLoading({
						title: "退回中...",
					})
					uni.$u.http.get("/offcial/receive/NodeReturnWork", {
						params: {
							workid: this.parameter.workid,
							returnToNodeID: this.content.returnToNodeID,
							returnMsg: this.content.backMsg
						}
					}).then(res => {
						uni.hideLoading()
						this.close()
						uni.showToast({
							title: res,
							icon: "none",
							duration: 2000
						})
						uni.$emit('query', {
							a: 'back'
						})
						setTimeout(() => {
							uni.navigateBack()
						}, 2000)
					}).catch(error => {
						uni.hideLoading()
						uni.showToast({
							title: "请稍后重试",
							icon: "none"
						})
					})
				}

			},
			//关闭模态框
			close() {
				this.content.returnToNodeID = null
				this.content.backMsg = null
				this.show = false
			}
		}
	}
</script>

<style lang="scss" scoped>
	.content {
		font-size: 32rpx;
	}

	.tab {
		width: 48%;
		height: 100%;
		box-sizing: border-box;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.active {
		color: #2979ff
	}
</style>