<template>
	<view>
		<fileCard :gwId="gwId"></fileCard>
		<view class="office_main">
			<view class="office_title">
				<uni-section v-if="isoffice" titleColor="#36a7f3" class="mb-10" title="办公室拟办" type="line"></uni-section>
				<uni-section v-if="isleader" titleColor="#36a7f3" class="mb-10" title="领导批示" type="line"></uni-section>
				<uni-section v-if="isundertake" titleColor="#36a7f3" class="mb-10" title="承办科室"
					type="line"></uni-section>
			</view>
			<view class="office_info">
				<u--form v-if="isoffice" :model="auditForm" labelWidth="130px" class="u-form default_title"
					labelPosition="left" ref="auditForm">
					<u-form-item v-if="one" label="办公室拟办" borderBottom prop="content">
						<u--textarea v-model="auditForm.content" placeholder=""></u--textarea>
					</u-form-item>
					<u-form-item label="转发领导" borderBottom prop="nextLeadUser">
						<jp-picker v-model="auditForm.nextLeadUser" placeholder="请选择转发领导" :range="leaderList"
							rangeKey="name" rangeValue="loginName"></jp-picker>
					</u-form-item>
					<u-form-item v-if="!one" label="科室承办" borderBottom prop="nextDepUser">
						<office-user-select v-model="auditForm.nextDepUser" placeholder="请选择科室承办"
							title="科室承办"></office-user-select>
					</u-form-item>
					<u-form-item v-if="one" label="备注" borderBottom prop="remark">
						<u--input v-model="auditForm.remark" placeholder="请输入备注" border="none"></u--input>
					</u-form-item>
					<!-- <u-form-item v-if="show" label="签字" borderBottom prop="signfj">
						<signInput ref="sign" canvasId="twoDrowCanvas" canvasIds="twoRotateCanvas" :header="header"
							:action="action" @signToUrl="signToUrl">
						</signInput>
					</u-form-item> -->
					<view class="submit_btn flex ">
						<u-button v-if="isAll" @click="formSubmit" type="success" text="归档"></u-button>
						<!-- <u-button v-if="!show && one" :disabled="!auditForm.nextLeadUser!=''" type="primary" text="确认签字"
							@click="show = true"></u-button> -->
						<u-button v-if="one && !loading" type="primary" :disabled="auditForm.nextLeadUser==''"
							text="确认签字" @click="doSubmit"></u-button>
						<u-button v-if="!one && !loading" type="primary" text="提交" @click="doSubmit"></u-button>
						<u-button v-if="loading" :loading="loading" type="primary" text="加载中"></u-button>
					</view>
				</u--form>
				<u--form v-if="isleader" :model="auditForm" labelWidth="130px" class="u-form default_title"
					labelPosition="left" ref="auditForm">
					<u-form-item label="领导批示" borderBottom prop="content">
						<u--textarea v-model="auditForm.content" placeholder=""></u--textarea>
					</u-form-item>
					<!-- <u-form-item v-if="show" label="签字" borderBottom prop="signfj">
						<signInput ref="sign" canvasId="twoDrowCanvas" canvasIds="twoRotateCanvas" :header="header"
							:action="action" @signToUrl="signToUrl">
						</signInput>
					</u-form-item> -->
					<view class="submit_btn flex ">
						<!-- <u-button v-if="!show" type="primary" text="确认签字" @click="show = true"></u-button> -->
						<u-button v-if="!loading" type="primary" text="确认签字" @click="doSubmit"></u-button>
						<u-button v-if="loading" :loading="loading" type="primary" text="加载中"></u-button>
					</view>
				</u--form>
				<u--form v-if="isundertake" :model="auditForm" labelWidth="130px" class="u-form default_title"
					labelPosition="left" ref="auditForm">
					<u-form-item label="承办科室" borderBottom prop="content">
						<u--textarea v-model="auditForm.content" placeholder=""></u--textarea>
					</u-form-item>
					<!-- <u-form-item v-if="show" label="签字" borderBottom prop="signfj">
						<signInput ref="sign" canvasId="twoDrowCanvas" canvasIds="twoRotateCanvas" :header="header"
							:action="action" @signToUrl="signToUrl">
						</signInput>
					</u-form-item> -->
					<view class="submit_btn flex ">
						<!-- <u-button v-if="!show" type="primary" text="确认签字" @click="show = true"></u-button> -->
						<u-button v-if="loading" :loading="loading" type="primary" text="加载中"></u-button>
						<u-button v-if="!loading" type="primary" text="确认签字" @click="doSubmit"></u-button>
					</view>
				</u--form>
			</view>
		</view>
		<u-toast ref="uToast"></u-toast>
		<u-overlay :show="loading">
			<view class="warp">
				<view class="rect"><u-button plain loading loadingText="加载中"></u-button></view>
			</view>
		</u-overlay>
	</view>

</template>

<script>
	import fileCard from "./fileCard.vue"
	import BASE_URL from '@/config.js'
	import moment from "moment"
	import signInput from "@/components/am-sign-input/am-sign-input.vue"
	import officeUserSelect from "@/components/office-user-select/office-user-select.vue"
	import userService from "@/api/sys/userService"
	import gwFlowService from '@/api/circulation/gwFlowService.js'
	import gwCirculationCard2Service from '@/api/circulation/gwCirculationCard2.js'
	import * as $auth from "@/common/auth.js"
	export default {
		onLoad(option) {
			this.gwId = option.id
			gwFlowService.queryByGwId(this.gwId).then(data => {
				if (data.length > 1) this.one = false
				if (this.one) {
					this.roleId = "1770353074553331713"
				} else {
					this.roleId = "1773547256256622594"
				}
				userService.leaderList(this.roleId).then(data => {
					this.leaderList = data
					if (this.one) this.auditForm.nextLeadUser = data[0].loginName
					if (!this.auditForm.content) this.auditForm.content = '已阅'
				})
				let user = $auth.getUserInfo()
				let role = $auth.getUserInfo().roleNames
				let gw = data.filter(item => {
					return item.nextUser == user.id && item.state == 1
				})
				let down = data.filter(item => item.state == 0)
				if (gw.length > 0) {
					this.auditForm = gw[0]
					if (gw[0].which == '3') this.isAll = true
					if (!this.auditForm.content) this.auditForm.content = '已阅'
				}
				if (role == '办公室主任') {
					this.isoffice = true
					if (gw.length == 0) {
						let gw1 = data.filter(item => {
							return item.which == 0
						})
						gw1.sort((a, b) => b.createTime.localeCompare(a.createTime) || b.createTime.localeCompare(a
							.createTime));
						this.auditForm = gw1[0]
						if (!this.auditForm.content) this.auditForm.content = '已阅'
					}
				}
				if (role == '局领导' && gw.length > 0) this.isleader = true
				if (role == '分管领导' && gw.length > 0) this.isleader = true
				if (role == '科室负责人' && gw.length > 0) this.isundertake = true

			})
		},
		components: {
			fileCard,
			signInput,
			officeUserSelect
		},
		data() {
			return {
				loading: false,
				isAll: false,
				show: false,
				one: true,
				action: this.BASE_URL + '/gwfile/upload?uploadPath=sign', //上传服务器的地址
				header: {
					"token": $auth.getUserToken()
				}, //图片上传携带头部信息
				auditForm: {
					id: '',
					gwId: '',
					content: '已阅',
					signfj: '',
					createTruename: '',
					nextTruename: '',
					nextUser: '',
					which: '0',
					state: '0',

					next: '',
					nextLeadUser: '',
					nextDepUser: '',
					remark: '',
				},
				gwForm: {},
				gwId: "",
				isoffice: false,
				isleader: false,
				isundertake: false,
				leaderList: [],
				tablePage: {
					total: 0,
					currentPage: 1,
					pageSize: 1000,
					orders: [{
						column: "a.create_time",
						asc: false
					}],
				},
				searchForm: {

					// loginName: "",
					// name: "",
					// companyDTO: {
					// 	id: "",
					// },
					// officeDTO: {
					// 	id: "",
					// },
				},
				roleId: ""
			}
		},
		methods: {
			showToast(params) {
				this.loading = false
				this.$refs.uToast.show({
					...params,
					complete() {
						params.url && uni.redirectTo({
							url: params.url
						})
					}
				})
			},
			/**
			 * @param {Object} e
			 * 签名完成回调
			 */
			signToUrl(e) {

				this.auditForm.signfj = e.data
				if (e.error_code && e.error_code === '201') {
					uni.showToast({
						title: e.msg,
						icon: 'none'
					})
					return
				}
			},
			// 提交表单
			doSubmit() {
				let inputForm = this.auditForm;
				this.loading = true
				if (this.isoffice) inputForm.next = '1'
				inputForm.state = "0"
				inputForm.gwId = this.gwId
				const date = moment().format('YYYY-MM-DD HH:mm:ss');
				inputForm.updateTime = date

				gwFlowService.save(inputForm).then(data => {
					let param = {
						type: 'success',
						message: data,
						iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/success.png',

					}
					this.showToast(param);
					setTimeout(() => {
						uni.$emit('refresh', {
							type: 1
						})
						// 先获取页面栈
						let pages = getCurrentPages();
						// 当前页面的前一个页面
						let prevPage = pages[pages.length - 2];
						// 如果 prevPage 存在，则重定向到上一页
						if (prevPage) {
							// 重定向到上一页
							uni.redirectTo({
								url: `/${prevPage.route}?type=1` // 注意此处可能需要加上参数保留
							});
						}
						// 关闭当前页面
						uni.navigateBack();
					}, 500)
				}).catch(() => {
					let param = {
						type: 'error',
						message: data,
						iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/error.png',
					}
					this.showToast(param);
				})
			},
			// 归档
			formSubmit() {
				this.loading = true
				let inputForm = Object.assign({}, this.auditForm);;
				inputForm.state = '0'
				inputForm.next = "0"
				gwFlowService.save(inputForm).then(data1 => {
					let param = {
						type: 'success',
						message: "已归档",
						iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/success.png',
					}
					this.showToast(param);
					setTimeout(() => {
						uni.$emit('refresh', {
							type: 3
						})
						// 先获取页面栈
						let pages = getCurrentPages();
						// 当前页面的前一个页面
						let prevPage = pages[pages.length - 2];
						// 如果 prevPage 存在，则重定向到上一页
						if (prevPage) {
							// 重定向到上一页
							uni.redirectTo({
								url: `/${prevPage.route}` // 注意此处可能需要加上参数保留
							});
						}
						// 关闭当前页面
						uni.navigateBack();
					}, 500)
				})

			}
		}
	}
</script>

<style>
	.warp {
		display: flex;
		align-items: center;
		justify-content: center;
		height: 100%;
	}

	.office_main {
		width: 100%;
		margin: 5px 0;
		padding: 0 20px;
		background-color: #fefefe;
	}

	.office_main .office_title {
		width: 100%;
		border-bottom: 1px solid #eee;
	}

	.submit_btn {
		background-color: #fefefe;
		bottom: 10px;
		box-shadow: none;
		padding: 20px 0;
	}

	.submit_btn button {
		height: 40px;
		width: 40%;
		border-radius: 30px;
	}
</style>