<template>
	<fullscreen :fullscreen.sync="fullscreen" class="container">
		<div class="container-box">
			<toolList @iconCli='iconCli' :tooltit='tooltit'></toolList>
            <div class="search">
                <mySearch :searchList="searchList" @searchInfo="searchInfo"></mySearch>
                <el-button size="medium" type="primary" @click="dialogCheck(3)">添加</el-button>
            </div>
			<div class="tabbox">
				<el-table height="calc(100% - 40px)" class="com-table" ref="multipleTable" :data="tableData"
					tooltip-effect="dark" size="small" border style="width: 100%" v-loading="loading">
					<el-table-column prop="woTitle" label="标题">
					</el-table-column>
                    <el-table-column prop="opName" label="申请人">
					</el-table-column>
					<el-table-column prop="createTime" label="申请时间">
					</el-table-column>
                    <el-table-column prop="extField4" label="申请地市">
					</el-table-column>
                    <el-table-column prop="extField5" label="申请内容">
					</el-table-column>
					<el-table-column label="操作" width="120px" align="center">
						<template slot-scope="scope">
							<el-button size="mini" type="primary" @click="dialogCheck(1,scope.row)">查看</el-button>
							<el-button size="mini" type="danger" v-if="scope.row.sts != 1"
								@click="dialogCheck(2,scope.row)">处理</el-button>
						</template>
					</el-table-column>
				</el-table>
				<el-pagination class="pageBox" @current-change="currchange" layout="prev, pager, next" background
					:total="total">
				</el-pagination>
			</div>
		</div>

		<el-dialog :title="titname" :visible.sync="dialogStatus" width="50%" :destroy-on-close="true"
			:modal-append-to-body="false" :close-on-click-modal="false" :before-close="closedia" :fullscreen="true">
			<div v-loading="loadinged">
				<el-form :model="infolist" ref="infolist" :rules="rules"
					style="height: calc(100vh - 180px);overflow-y: scroll;">
					<div class="info-line">
						<el-form-item prop="woName">
							<span>标题</span>
							<el-input v-model="infolist.woName" placeholder="标题" :disabled="disableStatus">
							</el-input>
						</el-form-item>
                        <el-form-item>
                        	<span>申请地市</span>
                            <el-select :popper-append-to-body="false" v-model="infolist.region" placeholder="申请地市" :disabled="disableStatus">
                                <el-option v-for="item in deptList" :key="item.ou" :label="item.ou"
                                    :value="item.ou">
                                </el-option>
                            </el-select>
                        </el-form-item>
					</div>
					<el-form-item class="info-line online">
						<span>申请内容</span>
						<el-input v-model="infolist.textContent" placeholder="申请内容" type="textarea" :autosize="{ minRows: 4, maxRows: 10}"
							:disabled="disableStatus">
						</el-input>
					</el-form-item>

					<div style="padding:0 20px 0 120px;margin-bottom: 20px;" v-if="disableStatus">
						<uploadDown :datalist="datalist" :dialogStatus="uploadstatus"></uploadDown>
					</div>
					<div style="padding-left: 100px" v-if="!disableStatus">
						<myUpload @uploadBack="uploadBack" :fileInfo="fileInfo" :fileList="fileInfo.fileList">
						</myUpload>
					</div>

					<el-form-item class="info-line online" v-if="vision == '审批'">
						<span>审批说明</span>
						<el-input v-model="remark" placeholder="审批说明" type="textarea" :autosize="{ minRows: 4, maxRows: 10}"
							:disabled="titname == '查看'">
						</el-input>
					</el-form-item>

					<div style="margin-bottom: 20px;padding: 0 20px;" v-if="titname != '添加'">
						<el-table class="com-table" ref="multipleTable" :data="rovaList" tooltip-effect="dark"
							size="small" border style="width: 100%">
							<el-table-column prop="taskId" label="编号">
							</el-table-column>
							<el-table-column prop="taskName" label="环节">
							</el-table-column>
							<el-table-column prop="assigneeName" label="处理人">
							</el-table-column>
							<el-table-column prop="assigneeNo" label="处理人工号">
							</el-table-column>
							<el-table-column prop="opTime" label="处理时间">
							</el-table-column>
							<el-table-column prop="remark" label="备注">
							</el-table-column>
						</el-table>
					</div>
				</el-form>

				<div slot="footer" class="dialog-footer myfooter">
					<el-button v-if="titname != '查看' && vision == '流程发起'" type="primary" @click="checkexa = true">确 定
					</el-button>
                    <el-button v-if="titname != '查看' && vision == '省在线公司确认'" type="primary" @click="dialogCli(2)">确 定
					</el-button>
					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="checkexa = true">通 过
					</el-button>
					<el-button v-if="titname != '查看' && vision == '审批'" type="primary" @click="dialogCli(1)">打 回
					</el-button>
					<el-button v-if="titname == '添加'" type="primary" @click="checkexa = true">确 定</el-button>
					<el-button v-if="titname == '查看'" @click="dialogCli(3)">确 定</el-button>
					<el-button @click="dialogCli(3)">取 消</el-button>
				</div>
			</div>
		</el-dialog>

        <!-- <el-dialog title="选择审批人" :visible.sync="checkexa" width="50%" :destroy-on-close="true"
        	:modal-append-to-body="false" :close-on-click-modal="false">
        	<div>

        		<el-form :model="infolist" ref="infolist" :rules="rules">
        			<el-form-item prop="visiblec" class="info-line online">
        				<span>审批人员</span>
        				<deptTreeOnly class="tree" @treeCheck="treeCheckonly" :defaultList="defaultList"
        					:type="depttype" :closeList="closeList"></deptTreeOnly>
        				<div class="tree treeUser">
        					<p>{{treeListonly.leaderAuditName}}
        						<i v-if="treeListonly.leaderAuditName" @click="deletes()"
        							class="el-icon-error"></i>
        					</p>
        				</div>
        			</el-form-item>
        		</el-form>

        		<div slot="footer" style="text-align: right;padding-bottom: 20px;">
        			<el-button type="primary" @click="dialogCliadd" v-if="!visionchonly">确 定</el-button>
        			<el-button type="primary" @click="dialogCli(2)" v-if="visionchonly">确 定</el-button>
        			<el-button @click="checkexa = false">取 消</el-button>
        		</div>
        	</div>
        </el-dialog> -->
          <el-dialog
        title="选择审批人"
        :visible.sync="checkexa"
        width="100%"
        style="height: 100%"
        :fullscreen="true"
        :destroy-on-close="true"
        :modal-append-to-body="false"
        :close-on-click-modal="false"
      >
        <div style="height: 100%">
          <el-form :model="infolist" ref="infolist" style="height: 100%">
            <el-form-item prop="visiblec" style="height: 100%">
              <!-- <span style="width: 80px">审批人员</span> -->
              <deptTreeOnly
                @treeCheck="treeCheckonly"
                :defaultList="defaultList"
                :type="depttype"
                :closeList="closeList"
              ></deptTreeOnly>
              <div style="text-align: center; margin-top: 30px">
                <!-- <el-button type="primary" @click="checkProcessUser()"
                  >确 定</el-button
                > -->
				<el-button type="primary" @click="checkProcessUser()" v-if="!visionchonly">确 定</el-button>
        		<el-button type="primary" @click="checkProcessUser1()" v-if="visionchonly">确 定</el-button>
                <el-button @click="checkexa = false">取 消</el-button>
              </div>
              
            </el-form-item>
          </el-form>
        </div>
      </el-dialog>

		<myMessage :messTit='messTit' @closeMessage="closeMessage" :centerDialogVisible="centerDialogVisible"
			v-if="centerDialogVisible"></myMessage>
	</fullscreen>

</template>
<script>
	import mySearch from "../../../components/search.vue";
	import myMessage from "../../../components/myMessage.vue"
	import toolList from '../../../components/toolList'
	import myUpload from '../../../components/upload'
	import uploadDown from '../../../components/uploadDown.vue'
    // import deptTreeOnly from "../../../components/deptTreeOnly.vue"
    import deptTreeOnly from "../../../components/newTree.vue";
	export default {
		components: {
			mySearch,
			myMessage,
			toolList,
			myUpload,
			uploadDown,
            deptTreeOnly
		},
		data() {
			const woName = (rule, value, callback) => {
				if (!this.infolist.woName) {
					callback(new Error('不能为空'))
				} else {
					callback()
				}
			}
			const terminal = (rule, value, callback) => {
				if (!this.terminal) {
					callback(new Error('不能为空'))
				} else {
					callback()
				}
			}
			return {
				rules: {
					woName: [{
						required: true,
						trigger: 'blur',
						validator: woName
					}],
					terminal: [{
						required: true,
						trigger: 'change',
						validator: terminal
					}],
				},
                searchList: [
                    {
                        type: 'input',
                        tit: '标题',
                        value: '',
                        width: '32%',
                    },{
                        type: 'sel',
                        tit: '申请地市',
                        value: '',
                        width: '32%',
                        options:[]
                    },{
                        type: 'input',
                        tit: '申请内容',
                        value: '',
                        width: '32%',
                    }
                ],
				tooltit: '不良信息治理白名单',
				fullscreen: false,
				total: 0,
				pageSize: 1,
				tableData: [{}],
				dialogStatus: false,
				disableStatus: false,
				titname: '',
				infolist: {

				},
				userInfo: {},
				params: {},
				centerDialogVisible: false,
				messTit: '',
				delid: '',
				loading: false,
				loadinged: false,
				fileInfo: {
					limit: 5,
					url: '/bpm/api/upload',
					fileList: []
				},
				rovaList: [],
				vision: '',
				datalist: {
					url: '/bpm/api/download',
					type: 1
				},
				uploadstatus: false,
				rovaList: [],
				mydisable: 1,
				opname: '',
				opno: '',
				attList: [],
				options: [],
				// terminal: '741861222376599552',
				terminal: '741967005139509248',
				remark: '',
				visionsts: '1',
                checkexa: false,
                treeListonly: {},
                defaultList: [],
                closeList: false,
                visionchonly: false,
                depttype: 0,
                deptList:[]
			}
		},
		methods: {
			checkProcessUser() {
                let _this = this;
                if (_this.treeListonly.length > 1) {
                    _this.$message({
                    message: "只能选择一个人",
                    type: "error",
                    });
                } else {
                    _this.dialogCliadd();
                }
                },
					checkProcessUser1() {
                let _this = this;
                if (_this.treeListonly.length > 1) {
                    _this.$message({
                    message: "只能选择一个人",
                    type: "error",
                    });
                } else {
                    _this.dialogCli(2);
                }
                },
            deletes() {
            	this.treeListonly = {};
            	this.closeList = !this.closeList;
            },
            treeCheckonly(v) {
            	this.treeListonly = v;
				this.treeListonly.leaderAuditName = v[0].label;
				this.treeListonly.leaderAuditNo = v[0].key;
            },

			closedia() {
				this.infolist = {};
				this.attList = [];
				this.fileInfo.fileList = [];
				this.dialogStatus = false;
				this.checkexa = false;
			},
            //搜索数据
            searchInfo(v) {
                this.params = {};
                v[0] ? this.params.woTitle = v[0] : '';
                v[1] ? this.params.extField4 = v[1] : '';
                v[2] ? this.params.extField5 = v[2] : '';
                this.getList(this.params, this.pageSize);
            },
			//获取列表
			getList(v, n) {
				this.pageSize = n;
				let _this = this;
				this.loading = true;
				v.procName = "不良信息治理白名单";
				this.$http({
					url: "/bpm/api/queryToDoAndFinishTaskList",
					method: "post",
					headers: {
						"Content-Type": "application/json",
						"page": '{"pageNo":"' + n + '","pageSize":"10"}'
					},
					data: v,
				}).then((res) => {
					this.tableData = res.data.data;
					this.total = res.data.totalRecord;
					this.loading = false;
				});
			},
			// 分页
			currchange(v) {
				this.pageSize = v;
				this.getList(this.params, this.pageSize);
			},
			//申请
			dialogCheck(v, n) {
				this.dialogStatus = true;
				let infolist = Object.assign({}, n);
				this.vision = '';
				this.visionsts = '';
				if (v === 1) {
					this.titname = '查看';
					this.disableStatus = true;
				} else if (v === 2) {
					this.titname = '审批';
					this.disableStatus = true;
				} else if (v === 3) {
					this.titname = '添加';
					this.disableStatus = false;
					return
				}
				this.$http({
					url: '/bpm/api/taskInit',
					method: "post",
					headers: {
						"Content-Type": "application/json",
					},
					data: {
						woNo: n.woNo
					},
				}).then((res) => {
					// this.infolist = Object.assign({}, res.data);
					this.terminal = infolist.procId;
					this.opname = res.data.opName;
					this.opno = res.data.opNo;
					this.infolist = JSON.parse(res.data.params.terminalRes);
					this.infolist.procId = infolist.procId;
					this.infolist.procVersion = infolist.procVersion;
					this.remark = infolist.remark;
					this.infolist.stepId = infolist.stepId;
					this.infolist.taskId = infolist.taskId;
					this.infolist.taskName = infolist.taskName;
					this.infolist.opName = infolist.opName;
					this.infolist.opNo = infolist.opNo;
					this.infolist.opTime = infolist.opTime;
					this.infolist.woNo = infolist.woNo;
                    this.visionchonly = true;
					if (res.data.taskList[res.data.taskList.length - 1].taskName == '流程发起') {
						this.vision = '流程发起';
						if(this.titname == '审批'){
							this.disableStatus = false;
						}
                        this.visionchonly = true;
					} else if (res.data.taskList[res.data.taskList.length - 1].taskName == '省在线公司确认') {
						this.vision = '省在线公司确认';
					} else {
						this.vision = '审批';
                        this.visionchonly = true;
					}
					this.datalist.attList = JSON.parse(res.data.params.attList);
					this.attList = [];
					this.fileInfo.fileList = [];
					this.datalist.attList.forEach(item => {
						item.id = item.attchFileId;
						this.fileInfo.fileList.push({
							name: item.fileName,
							url: '',
							id: item.id,
							attchFileId: item.attchFileId,
							fileName: item.fileName
						});
						this.attList.push({
							name: item.fileName,
							url: '',
							id: item.id,
							attchFileId: item.attchFileId,
							fileName: item.fileName
						});
					})
					this.rovaList = res.data.taskList;
					this.uploadstatus = true;
				});
			},
			//审批
			dialogCli(v) {
				this.dialogStatus = false;
				if (v === 3) {
					this.infolist = {};
					this.attList = [];
					this.fileInfo.fileList = [];
                    this.checkexa = false;
					return
				}
				let _this = this;
				this.infolist.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD")
				if (v === 1) {
					let params = {
						dealType: '1',
						dealTypeDesc: '打回',
						procId: this.infolist.procId,
						procVersion: this.infolist.procVersion,
						remark: this.remark,
						stepId: this.infolist.stepId,
						taskId: this.infolist.taskId,
						taskName: this.infolist.taskName,
						opName: this.infolist.opName,
						opNo: this.opno,
						opTime: this.infolist.opTime,
						params: {
							procExeCondiVal: '不同意',
							terminalRes: JSON.stringify(this.infolist),
							assigneeNo: this.opno,
							assigneeName: this.opname,
						},
						woNo: this.infolist.woNo,
					}
					this.submitInfo("/bpm/api/submitTask", params);
				} else if (v === 2) {
					let param = {
						dealType: '0',
						dealTypeDesc: '提交',
						procId: this.infolist.procId,
						procVersion: this.infolist.procVersion,
						remark: this.remark,
						stepId: this.infolist.stepId,
						taskId: this.infolist.taskId,
						taskName: this.infolist.taskName,
						opName: this.infolist.opName,
						opNo: this.opno,
						opTime: this.infolist.opTime,
						params: {
							woType: this.infolist.woType,
							terminalRes: JSON.stringify(this.infolist),
						},
						woNo: this.infolist.woNo,

					}
                    param.params.assigneeNo = this.treeListonly.leaderAuditNo;
                    param.params.assigneeName = this.treeListonly.leaderAuditName;
					if (this.vision == '流程发起') {
						let attList = [];
						for (let i = 0; i < this.attList.length; i++) {
							attList.push({
								id: this.attList[i].id,
								fileCode: this.attList[i].fileCode,
								fileName: this.attList[i].fileName,
								opName: this.attList[i].opName,
								opNo: this.attList[i].opNo,
								opTime: this.attList[i].opTime,
								woNo: this.infolist.woNo,
								attchFileId: this.attList[i].attchFileId,
							});
						}
						param.params.attList = JSON.stringify(attList)
					}
					this.submitInfo("/bpm/api/submitTask", param);
				}
			},
			//添加
			dialogCliadd(v) {
				let _this = this;
				let info = {};
				info.opTime = _this.$formatDate(new Date(), "YYYY-MM-DD");
				info.opNo = this.userInfo.loginNo;
				info.opName = this.userInfo.loginName;
				info.woTitle = this.infolist.woName;

				info.extField4 = this.infolist.region;
				info.extField5 = this.infolist.textContent;

				info.params = {};
				info.params.terminalRes = this.infolist;
				info.procId = this.terminal;
				for (let i = 0; i < this.options.length; i++) {
					if (this.terminal == this.options[i].procId) {
						info.procName = this.options[i].procName;
						info.procVersion = this.options[i].procVersion;
					}
				}
				let attList = [];
				for (let i = 0; i < this.attList.length; i++) {
					attList.push({
						id: this.attList[i].id,
						fileCode: this.attList[i].fileCode,
						fileName: this.attList[i].fileName,
						opName: this.attList[i].opName,
						opNo: this.attList[i].opNo,
						opTime: this.attList[i].opTime,
						woNo: this.infolist.woNo,
						attchFileId: this.attList[i].attchFileId,
					});
				}
                info.params.assigneeNo = this.treeListonly.leaderAuditNo;
                info.params.assigneeName = this.treeListonly.leaderAuditName;
				info.params.attList = JSON.stringify(attList)
				info.params.terminalRes = JSON.stringify(info.params.terminalRes);
				info.params.factoryList = JSON.stringify(info.params.factoryList);

				this.submitInfo("/bpm/api/startProc", info);
			},

			submitInfo(u, v) {
				let _this = this;
				this.$refs.infolist.validate(valid => {
					if (valid) {
						this.$http({
							url: u,
							method: "post",
							headers: {
								"Content-Type": "application/json",
							},
							data: v,
						}).then((res) => {
							if (res.data.result === 1) {
								_this.$message({
									message: res.data.desc,
									type: 'error'
								});
							} else {
								_this.$message({
									message: '成功',
									type: 'success'
								});
								_this.closedia();
								_this.infolist = {};
								_this.attList = [];
								_this.fileInfo.fileList = [];
                                _this.checkexa = false;
								_this.getList(this.params, this.pageSize);
							}

						});
					}
				})
			},
			getStanding() {
				this.$router.push({
					path: '/yStanding',
				});
				this.setabList('运营流程台账', '/yStanding');
			},
			setabList(n, p) {
				let params = {
					children: "",
					name: n,
					rountPath: p,
					target: "_self",
				};
				for (let i = 0; i < this.$store.state.tabList.length; i++) {
					if (this.$store.state.tabList[i].name === params.name) {
						this.$store.state.tabList[i] = params;
					}
				}
				let set = new Set([...this.$store.state.tabList, params]);
				set.add(params);
				this.$store.commit("setDefaultActive", params.rountPath);
				this.$store.commit("setTabList", Array.from(set));
			},
			//流程
			getTermianl() {
				this.$http({
					url: "/bpm/api/queryBpmProcList",
					method: "post",
					headers: {
						"Content-Type": "application/json",
						"page": '{"pageNo":"' + 1 + '","pageSize":"100"}'
					},
					data: {},
				}).then((res) => {
					this.options = res.data.data;
				});
			},
			closeMessage(v) {
				this.centerDialogVisible = false;
				let _this = this;
				if (v === 1) {
					_this.$http({
						url: "/bpm/api/deleteBpmPrePlugin",
						method: "post",
						headers: {
							"Content-Type": "application/json",
						},
						data: {
							id: this.delid
						},
					}).then((res) => {
						if (res.data.result === 1) {
							_this.$message({
								message: res.data.desc,
								type: 'error'
							});
						} else {
							_this.$message({
								message: '删除成功',
								type: 'success'
							});
							_this.getList(this.params, this.pageSize);
						}
					});
				}
			},
			//删除
			delLine(v) {
				this.centerDialogVisible = true;
				this.messTit = '即将删除此条数据, 是否删除?';
				this.delid = v.id;
			},
			//文件返回值
			uploadBack(v) {
				this.attList = v;
			},
			//功能栏
			iconCli(v) {
				if (v === 1) {
					this.getList(this.params, this.pageSize);
				}
				if (v === 2) {
					this.fullscreen = !this.fullscreen
				}
			},
			getUser() {
				this.userInfo = JSON.parse(window.sessionStorage.userInfo);
                this.$http({
                    url: "/sysmgr/csysdept/queryRegionDeptList",
                    method: "post",
                    headers: {
                        "Content-Type": "application/json",
                    },
                    data: {},
                }).then((res) => {
                    this.deptList = res.data[0].children;
                    for (let i = 0; i < this.deptList.length; i++) {
                        this.searchList[1].options.push({dataCode: this.deptList[i].ou,dataName:this.deptList[i].ou})
                    }
                });
			}
		},
		mounted() {
			this.getList({}, 1);
			this.getUser();
			this.getTermianl();
		},
		created() {

		}
	}
</script>
<style scoped lang="scss">
	 ::v-deep .el-dialog .flex-box{
        height: 400px;
    }
	.onetab {
		margin-bottom: 20px;
		padding: 0 20px;
	}

	.titbox {
		div {
			float: right;

			i {
				font-size: 22px;
				margin-left: 20px;
				cursor: pointer;
			}
		}
	}

	.tabbox {
		margin-top: 15px;
	}

	.pageBox {
		text-align: right;
		margin-top: 10px;
	}

	.info-line {
		width: 100%;
		display: block;
		padding-left: 20px;

		div {
			width: 50%;
			display: inline-block;
		}

		span {
			width: 100px;
			display: inline-block;
			text-align: left;

			i {
				color: red;
				display: inline-block;
				padding-right: 5px;
			}
		}

		.el-select,
		.el-input {
			width: calc(100% - 120px);
		}
	}

	.online {
		width: 100%;

		.el-select {
			width: calc(100% - 100px);
		}

		span {
			vertical-align: top;
		}

		.el-textarea {
			width: calc(100% - 120px);
		}

		.tree {
			width: calc(50% - 60px);
			display: inline-block;
			margin-right: 20px;
			height: 300px;
			overflow-y: scroll;

			.el-icon-error {
				float: right;
				font-size: 20px;
				margin-top: 9px;
				cursor: pointer;
			}
		}

		.treeUser {
			margin: 0;
			border: 1px solid #ddd;

			p {
				background: #f4f4f4;
				padding: 0 20px;
				margin-bottom: 5px;
			}
		}

		.treeUserb {
		    width: calc(100% - 100px);
		    border: 1px solid #ddd;
		    background: #f4f4f4;
		    border-radius: 3px;
		    height: auto;
		    overflow: hidden;

		    p {
		        display: inline-block;
		        padding: 0 20px;
		        margin-bottom: 5px;
		    }
		}
	}

	.adv-type {
		margin-top: 20px;
		display: flex;
		justify-content: space-between;
		flex-wrap: wrap;
		// border: 1px solid #ddd;
		border-radius: 5px;
		padding: 20px;
		box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);

		div {
			width: 33%;
			text-align: center;
			height: 80px;
			overflow: hidden;
			min-width: 100px;
			cursor: pointer;
			padding-top: 10px;
			margin: 10px 0;
		}

		div:hover {
			background: #CFE8FC;
			border-radius: 5px;
		}

		span {
			width: 100%;
			display: inline-block;
			height: 40px;

			// line-height: 40px;
			i {
				color: #0074D9;
				font-size: 36px;
			}
		}
	}
</style>
