<!doctype html>
<html>
	<head>
		<meta charset="utf-8"><meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Cache" content="no-cache">
		<title>政策备案</title>
		<script src="../../../js/vue/vue.js"></script>
		<script src="../../../js/vue/element-ui/lib/index.js"></script>
		<script src="../../../js/myelement.js?v=20220425"></script>
		<script src="../../../js/vue/page.js?v=20220425"></script>
		
		<link href="../../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
		<link href="../../../css/myelement.css?v=20220425" rel="stylesheet">
		<link href="../../../css/iconfont.css" rel="stylesheet">
		<link href="../../../css/page.css?v=20220425" rel="stylesheet">
		<link href="//at.alicdn.com/t/font_2374495_13ltsxm2eor.css" rel="stylesheet">
	</head>
	
	<body>
		<div id="vbody">
			<div id="page_root">
				<div class="topbar">
					<span>{{title}}</span>
					<!-- 工具栏 -->
					<div style="float: right; margin-right: 24px;">
						<el-button-group style="margin-left: 3px;">
							<!-- <el-button icon="el-icon-refresh" @click="onRefresh">刷新</el-button> -->
							<!-- <el-button v-if="buttons.append" :disabled="buttons.append.disabled" icon="el-icon-plus" @click="addData">添加</el-button> -->
							<el-button v-if="buttons.edit" :disabled="buttons.edit.disabled" @click="setEditTableData">{{isEditTableData ? '取消编辑' : '在线编辑'}}</el-button>
						</el-button-group>
						<el-button-group style="margin-left: 3px;">
							<!-- <el-button icon="el-icon-refresh" @click="onRefresh">刷新</el-button> -->
							<el-button v-if="buttons.edit" :disabled="!(selectedrow.id && selectedrow.status == 'refuse')" @click="deleteFlow">作废</el-button>
						</el-button-group>
						<el-button-group style="margin-left: 3px;">
							<el-button v-if="buttons.submit" :disabled="!(selectedrow.id && (selectedrow.status == 'input' || selectedrow.status == 'refuse' || !selectedrow.status ))" :loading = "isLoading" @click="flow_Submit">提交</el-button>
							<!-- <el-button v-if="buttons.cancel" :disabled="buttons.cancel.disabled" @click="onCancel()">取消申请</el-button> -->
						</el-button-group>
						
						<el-button-group style="margin-left: 3px;">
							<!-- <el-button v-if="buttons.approve" :disabled="buttons.approve.disabled"  @click="onApprove()">审批</el-button> -->
							<!-- <el-button  @click="approvalData('status')">审批</el-button> -->
							<!-- <el-button @click="onShowApproval()">审批记录</el-button> -->
						</el-button-group>
					</div>
				</div>
				
				<!-- 查询条件 -->
				<div class="topbar-line">
					<div class="query-icon">
						<i class="iconfont icon-query"></i>
					</div>
					<div class="query-bar">
						<h-form-filter ref="form1" 
							:form-attr="filterAttr" 
							:table-fields="filterFields" 
							:form-data="filterObj" 
							:isbuttonquery="true"
							
							v-on:on-formchange="onQuery" 
							v-on:show-popup="showFilterPopup"
							v-on:on-query="onQuery"
							v-on:on-init-query="onInitFilter"
							v-on:on-edit-query="onEditFilter"
							>
						</h-form-filter>
					</div>
				</div>
			
				<div class="versionNo">
					<h-table
						v-if="isRefresh"
						ref="table1"
						:tableloading="tableloading"
						:table-fields="tableFields" 
						:table-data="tableData" 
						:is-edit-table-data="isEditTableData"
						:pagesize="pagesize"
						:pagenum="pagenum"
						:total="total"
						:table-height="tableHeight"
						:is-highlight-row="true"
						v-on:get-data="getData"
						v-on:edit-data="editData"
						v-on:del-data="delData"
						v-on:cell-click="cellClick"
						v-on:row-click="rowClick"
					>
					</h-table>
				</div>
			</div>
			
			<div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 100vh;z-index:9999">
				<div class="spinner">
				  <div class="cube1"></div>
				  <div class="cube2"></div>
				</div>
			</div>
		</div>	
		
		<script type="text/javascript">
			var initlized = false;
			
			new ListVue({
				el: "#vbody",
				data: {
					pageAttr: {
						heightType: "page"
					},
					title: "政策备案",
					
					dataname: "agreementLine",
					tabaleFieldsName: "policyReport_",
					filterFieldsName: "policyReport_",
					operationtype: "",
					orderby:"update_time desc,create_time desc,code desc",
					tableData: [],
					isLoading:false,
					isEditTableData:false,
					
					isRefresh: true,
					formInline: {},
					pagesize: 10,
					pagenum: 1,
					total: 0,
					rowTableDialog: false,
					
					years: "",
					quarter: "",
					selectCellField: {},
					selectCellData: {},
					
					tableFieldsObj: {}
				},
				created() {
					this.pageCode = "A4-1";
					this.getResoures();
				},
				
				mounted() {
					this.initData();
					this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
						hideLoading();
					});
				},
				
				methods:{
					
					initData() {
						if (initlized) { return; }
						initlized = true;
						this.onQuery();
					},
					onServerInitData(data) {
						var me = this.data;
						
						me.tableFields = data.tableFields;
						me.filterFields = data.filterFields;
					
						
						if(me.filterFields.length > 0) {
							for(var i=0; i < me.filterFields.length; i++) {
								let fieldObj_ = me.filterFields[i];
								
								me.filterFieldsObj[fieldObj_.field] = fieldObj_;
							}
						}	
						if(me.tableFields.length > 0) {
							for(var i=0; i < me.tableFields.length; i++) {
								let fieldObj_ = me.tableFields[i];
								
								me.tableFieldsObj[fieldObj_.field] = fieldObj_;
							}
						}
					},
					endQuery() {
						if(!this.tableloading) {
							this.filterFields = this.filterFields.map(e =>{
								e.disabled = false;
							})
						}
					},
					doQuery() {
						let me = this;
						let filter_ = " 1=1 and create_operate_code = '" + localStorage.emp_code + "'";
						
						var isdistributor = window.top.isdistributor;
						var distributorObj = window.top.distributorObj;
						
						let roleList = window.top.userinfo.user.roleList;
						let isadmin = false;
						roleList.map(e=>{
							if(e.code == 'admin') {
								isadmin = true;
							}
						})
						if(isadmin) {
							filter_ = " 1=1";
						}
						else if (isdistributor) {
							filter_ = " customer_code = '" + distributorObj.md_code + "'";
						}
						
						this.filterList = [];
						for(var k in this.filterObj) {
							let k_val = this.filterObj[k];
							let fieldObj_ = this.filterFieldsObj[k];
							
							let type_ = fieldObj_.type;
							let field_ = fieldObj_.field;
							let fieldtype_ = "equal";
							if (fieldObj_.fieldname) {
								field_ = fieldObj_.fieldname
							}
							if (fieldObj_.fieldtype) {
								fieldtype_ = fieldObj_.fieldtype
							}
							if (fieldtype_ == "like" && k_val != "input" ) {
								filter_ += " and " + field_ + " like '%" + k_val +"%'";
							}
							else if (fieldtype_ == "like" && k_val == "input" ) {
								filter_ += " and " + field_ + " is null";
							}
							else {
								filter_ += " and " + field_ + " = '" + k_val +"'";
							}
						}
						me.tableloading = true;
						/* me.$nextTick(()=>{
							me.$refs.form1.$refs.form1.disabled = true
						}) */
						let param_ = {
							isClientMode: false,
							dataname: this.dataname,
							filter: filter_,
							orderby:this.orderby,
							filterList: this.filterList,
							page: {
								no: this.pagenum,
								pagesize: this.pagesize
							},
							//attachmeta: true
						}
						Server.call("root/data/getEntitySet", param_, function(result) {
							console.log(result);
							me.total = 0;
							me.tableData = [];
							if (result && result.data) {
								me.total = result.data.page.recordcount;
								var data_ = result.data.entityset;
								
								me.tableData = data_;
							}
							me.tableloading = false;
							/* me.$nextTick(()=>{
								me.$refs.form1.$refs.form1.disabled = false
							}) */
							me.tableDataAfter();
						});
					},
					onAddData(config) {
						var me = this;
						config.combine({
							totab: true,
							icon: "icon-product",
							text: "新增备案",
							id: "policy_add",
							url: "../agreement/policy/policy_edit.html",
							sceneCode: "add",
							data: {},
						});
						return true;
					},
					onEditData(config, scope) {
						var me = this;
						var row = scope.row;
						
						//1. empty row
						if (!row || !row.id) {
							Root.message({
								type: 'warning',
								message: '请选择要编辑的数据'
							});  
							return false;
						}
						if (row.status == "working") {
							Root.message({
								type: 'warning',
								message: '审批中状态不可编辑'
							});  
							return
						}
						if (row.status == "open") {
							Root.message({
								type: 'warning',
								message: '审批完成状态不可编辑'
							});  
							return
						}
						if (row.status == "close") {
							Root.message({
								type: 'warning',
								message: '作废状态不可删除'
							});  
							return
						}
						
						//3. popup
						config.combine({
							totab: true,
							icon: "icon-product",
							text: "修改备案",
							id: "policy_edit",
							url: "../agreement/policy/policy_edit.html",
							sceneCode: "edit",
							data: row,
							delta: me.dataname,
							
						});
						
						return true;
					},
					deleteFlow() {
						let row = this.selectedrow;
						let me = this;
						if(row.status && row.status == "refuse") {
							let param_ = {
								flowId:row.flow_id,
								businessType:"agreement",
								pass:false,
							}
							Server.call("root/api/dealAct", param_, function(result) {
									console.log(result);
									if(result && result.success) {
										Root.message({
											type: 'success',
											message: '作废成功'
										}); 
										
									}
									me.doQuery();
									me.isLoading = false;
								},function(result) {
								Root.message({
									type: 'warning',
									message: result.message
								}); 
								me.doQuery();
								me.isLoading = false;
							})
						}
					},
					delData(scope) {
						let me = this;
						
						if (this.onDelData) {
							this.onDelData.call(this, scope);
							return
						}
						
						let row = scope.row;
						let index_ = scope.$index;
						let name_ = "该数据";
						
						if (!this.dataname) {
							Root.message({
								type: 'warning',
								message: '该事件需指定数据对象'
							});  
							return
						}
						if (!row.id) {
							Root.message({
								type: 'warning',
								message: '该事件需存在数据ID'
							});  
							return
						}
						if (row.status == "working") {
							Root.message({
								type: 'warning',
								message: '审批中状态不可删除'
							});  
							return
						}
						if (row.status == "open") {
							Root.message({
								type: 'warning',
								message: '审批完成状态不可删除'
							});  
							return
						}
						if (row.status == "refuse") {
							Root.message({
								type: 'warning',
								message: '待修改状态不可删除'
							});  
							return
						}
						if (row.code) {
							name_ = "_" + row.code + "_";
						}
						
						Root.confirm('确定删除' + name_ + '吗?', '删除提示', {
						  confirmButtonText: '删除',
						  cancelButtonText: '取消',
						  type: 'warning'
						}).then(() => {
							let param1 = {
								filter:{
									parent_id: row.id
								},
								
								isClientMode: false,
								dataname: 'agreementRecord',
							}
							Server.call("root/data/deleteEntitySet", param1, function(result) {
								
							});
							
							let param = {
								id: row.id,
								isClientMode: false,
								dataname: this.dataname,
							}
							Server.call("root/data/deleteEntity", param, function(result) {
								console.log(result);
								Root.message({
									type: 'success',
									message: '删除成功!'
								});
								me.doQuery();
							});
						}).catch(() => {
							Root.message({
								type: 'info',
								message: '已取消删除'
							});          
						});
					},
					
					
					onApproveData(config, code) {
						var me = this;
						var row = this.selectedrow;
						
						//1. empty row
						if (!row || !row.id) {
							Root.message({
								type: 'warning',
								message: '请选择要审批的数据'
							});  
							return false;
						}
						if ("working" != row.status) {
							Root.message({
								type: 'warning',
								message: '当前状态不可审批'
							});  
							return false;
						}
						//3. popup
						config.combine({
							
							totab: true,
							icon: "icon-product",
							text: "审批政策",
							id: "sorder_edit",
							url: "../agreement/policy/policy_edit.html",
							sceneCode: "approval",
							data: row,
							delta: me.dataname,
							
						});
						return true;
						
					},	
					
					flow_Submit(){
						var row = this.selectedrow;
						let me = this;
						if (!row || !row.id) {
							Root.message({
								type: 'warning',
								message: '请先选择一条数据'
							});  
							return false;
						}
						
						else if (row.status && row.status!= "input" && !(row.status == "refuse" && row.create_operate_name == window.top.userinfo.employee.name)) {
							Root.message({
								type: 'warning',
								message: '当前状态不可提交'
							});  
							return false;
						}
						
						let param_ = {
							isClientMode: false,
							dataname: "agreementRecord",
						
							filter: "agreement_record.parent_id='"+ row.id + "'",
							
							//attachmeta: true
						}
						me.isLoading = true;
						Server.call("root/data/getEntitySet", param_, function(result) {
							
							if (result && result.data) {
								var data_ = result.data.entityset;
								for (var i = 0; i < data_.length; i++) {
									
									let row = data_[i]
									var start_date = row.start_date;
									var end_date = row.end_date;
									if(end_date < start_date) {
										Root.message({
											type:"warning",
											message:"第"+(i+1)+ "条明细: 开始日期大于结束日期"
										})
										me.isLoading = false;
										return;
									}
									if(!row.cash_type) {
										Root.message({
											type:"warning",
											message:"第"+(i+1)+ "条明细: 请填写兑付时间"
										})
										me.isLoading = false;
										return;
									}
									if(!row.control_type) {
										Root.message({
											type:"warning",
											message:"第"+(i+1)+ "条明细: 请选择控制类型"
										})
										me.isLoading = false;
										return;
									}
									if(!row.tag_price_type) {
										Root.message({
											type:"warning",
											message:"第"+(i+1)+ "条明细: 请选择中标价类型"
										})
										me.isLoading = false;
										return;
									}
									if(!row.business_depart_name || !row.business_depart_code) {
										Root.message({
											type:"warning",
											message:"第"+(i+1)+ "条明细: 请选择业务部门(或部门编码不存在)"
										})
										me.isLoading = false;
										return;
									}
								}
								let param1 = {
									isClientMode: false,
									dataname:"getAgreementRecordMessage",
								}
								param1.filter ="line_id = '" + row.id + "'",
								Server.call("root/data/getEntitySet",param1,function(result11){
									if(result11.success){
										let message = ""
										let messageList = [];
										let tableObj = {}
										for (var i = 0; i < result11.data.entityset.length; i++) {
											let item = result11.data.entityset[i]
											if(item.error_message || item.error_title) {
												item.errorList = [{error_title:item.error_title,error_message:item.error_message}]
												message += "第 "+ (i+1) +" 条,";
											}
											if(tableObj[item.id]) {
												if(item.errorList) {
													if (tableObj[item.id].errorList) {
														tableObj[item.id].errorList.push(item.errorList[0])
													} else{
														tableObj[item.id].errorList = item.errorList;
													}
												}
											}else {
												tableObj[item.id] = item;
											}
										}
										let index = 1;
										for(item in tableObj) {
											if(tableObj[item].errorList)
												messageList.push({title:"第 "+ index +" 条明细错误列表: ",errorList:tableObj[item].errorList})
											index++;
										}
										if(message) {
											Root.message({
												type: 'warning',
												message: '明细数据错误'
											});  
											Root.showPopup({
												url: "../agreement/policy/popup/error_list.html",
												width: 900,
												height: 450,
												data: messageList,
												callback: function(obj, callback) {
													me.isLoading = false;
													if(obj.type == "submit")
														me.submit(row,data_[0].province_code,callback);
													else{
														if (callback) {
															callback();
														}
													}
												}
											});
											/* message = message.substring(0,message.length-1)
											message += "明细数据有错误(可在编辑页面点击明细数据查看详情)"
											Root.confirm(message + ',确定直接提交吗?', '提示', {
											  confirmButtonText: '确定',
											  cancelButtonText: '取消',
											  type: 'warning'
											}).then(() => {
												me.submit(row,data_[0].province_code);
											}).catch(() => {
												me.isLoading = false;
												Root.message({
													type: 'info',
													message: '已取消'
												});          
											}); */
										}else {
											me.submit(row,data_[0].province_code);
										}
									}else{
										me.isLoading = false;
										Root.message({
											type: 'warning',
											message: result11.message
										}); 
									}
								})
								
							}
						});
					},
					submit(row,province_code,callback){
						let me = this;
						let param_customer = {
							dataname:"checkAgreementRecordInternationPart",
							parentId:row.id
						}
						Server.call("root/data/procedure", param_customer, function(result) {
							if(result && result.success) {
								if(result.data.data) {
									let internationPart_ = false;
									if(result.data.data > 0) {
										internationPart_ = true;
									}
									let param = {
										businessId:row.id,
										businessType:"agreement",
										variableMap:{
											province:province_code,
											internationPart:internationPart_
										},
									}
									if(row.status && row.status == "refuse") {
										let param_ = {
											flowId:row.flow_id,
											businessType:"agreement",
											pass:true,
											variableMap:{ 
												province:province_code,
												internationPart:internationPart_
											}
										}
										Server.call("root/api/dealAct", param_, function(result) {
												console.log(result);
												if(result && result.success) {
													Root.message({
														type: 'success',
														message: '提交成功'
													}); 
													
												}
												if (callback) {
													callback();
												}
												me.onQuery();
												me.isLoading = false;
											},function(result) {
											Root.message({
												type: 'warning',
												message: result.message
											}); 
											me.onQuery();
											me.isLoading = false;
										})
									}else{
										Server.call("root/api/startAct", param, function(result) {
											if (result.success){
												
												var formData_ = me.selectedrow;
												var paramObj = {};
												for (var k in formData_) {
													paramObj[k] = formData_[k];
												}
												if(result.data.data && result.data.data.activitiId)
													paramObj.flow_id = result.data.data.activitiId;
												else {
													Root.message({
														type: 'warning',
														message: '提交失败,无流程返回'
													}); 
													if (callback) {
														callback();
													}
													me.isLoading = false;
													return;
												}
												var param_ = paramObj;
												
												Server.call("root/data/updateEntity/" + "agreementLine", param_, function(result) {
													console.log(result);
													Root.message({
														type: 'success',
														message: '提交成功'
													}); 
													if (callback) {
														callback();
													}
													me.isLoading = false;
												});
												me.onQuery();
											}else{
												me.isLoading = false;
												Root.message({
													type: 'warning',
													message: result.message
												}); 
											}
										}) 
									}
								}else {
									Root.message({
										type: 'warning',
										message: "无有效商业信息"
									});
									me.isLoading = false;
								}
							}else {
								Root.message({
									type: 'warning',
									message: "查询商业信息失败"
								});
								me.isLoading = false;
							}
							},function(result) {
								Root.message({
									type: 'warning',
									message: result.message
								});
								me.isLoading = false;
						})
						
					},
					onCellClick(config, obj) {
						let me = this;
						var clickContext = this.selectCellField.clickContext;
						if(this.selectCellField.field == "status"){
							clickContext.url = "";
							if(obj.row.flow_id){
								clickContext.url = "../approval/ApprovalList.html";
								let title = ""
								if(obj.row.b_trans_type == "end") {
									title = "终止流程"
								}else if(obj.row.b_trans_type == "trans") {
									title = "变更流程"
								}else{
									title = "新增流程"
								}
								clickContext.delta = {
									flow_id: obj.row.flow_id,
									title:title
								}
								clickContext.width = "75vw";
								clickContext.height = "65vh";
								clickContext.hide_close = true;
							}
						}
						if (clickContext && clickContext.type == "popup" && clickContext.url != "") {
							config.combine({
								url: clickContext.url,
								hide_close: clickContext.hide_close,
								sceneCode: clickContext.sceneCode,
								data: obj.row,
								delta: clickContext.delta ? clickContext.delta : {},
								width: clickContext.width,
								height: clickContext.height,
							})
						}
						else {
							return false;
						}
						
						return true;
					},
					onShowApproval() {
						var me = this;
						var row = this.selectedrow;
						
						if (!row || !row.id) {
							Root.message({
								type: 'warning',
								message: '请先选择一条数据'
							});  
							return false;
						}
						else {
							let param = {
								isClientMode: false,
								flowId:row.flow_id
							}
							
							Server.call("root/order/getHistoryTask/", param, function(result) {
								console.log(result);
								if (result && result.data) {
									
									Root.popupParames = {
										width: "900px",
										height:"700px",
										url: "../approval/ApprovalList.html",
										data: result.data,
									}; 
									// GET /act/historyNode/{flowId}
									// "../approval/ApprovalList.html",
									Root.popupParames.disabled = true;
									Root.showPopup(Root.popupParames);
								}
								
							}); 
							
						}
					},
				}
			});
		</script>
	</body>
</html>