<!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 type="text/javascript">
			var pageVue = null;
			function loadJsCss(callback) {
				var jscss_urls = [];
				window.top.initJsCss(document, jscss_urls, callback);
			};
			
			function initVue() {
				new BasicsVue({
					el: "#vbody",
					data: {
						//dataname:  "agm_record", 
						form_dataname: "agm_category",
						table_dataname: "",
						dataRequest: [
							{
								name: "agm_category",
								//url: "root/front/getOneDictionary",
								//paramsobj: { code: "OrgType", },
								isnotoption: false, //true:不是选项
								code:"id",//是下拉选项时设置
								label:"name",//是下拉选项时设置
								filter: " parent_id is null"
							},
							
							{
							 name: "agmrecord_field",
							 dataname: "agm_field",
							 //url: "root/front/getOneDictionary",
							 //paramsobj: { code: "OrgType", },
							 filter: " table_name='agm_record'",
							 isnotoption: false, //true:不是选项
							 code:"id",//是下拉选项时设置
							 label:"field_name",//是下拉选项时设置
							},
							
						],
						
						title: "协议类型新增",
						formAttr: {
							istitle: false,
							title: "协议类型新增",
							columnnumber: 2,
							labelwidth: "110px",
							labelposition: "left",// right
							size: "medium",
							border: "0px solid #c6c6c600"
						},
						formFields: [
							{isshow: "T", field: "creator_name", name: "创建人", type: "span", notvalunit: true},
							{isshow: "T", field: "create_time", name: "创建时间", type: "span", notvalunit: true},
							{isshow: "T", field: "parent_id", name: "所属类型", type: "select", isrefresh: true,
								options: [], props:{value: "id", label: "name"}, notvalunit: true,
							},
							{isshow: "T", field: "name", name: "类型名称", notvalunit: true},
							//{isshow: "T", field: "fieldlist", name: "备案字段配置", type: "checkboxobj", options: [], colspan: 3},
						],
						newRowDefault: {
							//id: uuid_short(),
							code: createCode("BA"),
							versionno: "1",
							create_time: createDatetime(),
							creator_name: window.top.vue.userinfo.name,
							//fieldlist: []
						},
						formData: {},
						isWithinEditTableData: false,
						notdisabled: true,
						Approval: false,
						
						isCommit: false,
						treeoptions: [],
						
						tableFields1: [
							{isshow: "T", field: "field_name", name: "备案基础字段"},
						],
						tableFields2: [
							{isshow: "T", field: "field_name", name: "备案明细产品及金额字段"},
						],
						tableFields3: [
							{isshow: "T", field: "field_name", name: "备案明细终端字段"},
						],
						tableHeight: 300,
						tableData1: [],
						tableData2: [],
						tableData3: [],
						agmFieldsObj: {},
						isCommit: false,
						
						selectionList: [],
						selectionList_detail: [],
						//字段设置
						tablefieldClick: {},
						formfieldClick: {},
					},
					created() {
						this.popupParames = clone(Root.popupParames);
						this.title = this.popupParames.title || this.popupParames.text;
						
						if (this.popupParames.data) {
							this.formData = clone(this.popupParames.data);
						}
						
						if (this.popupParames.sceneCode) {
							if (this.popupParames.sceneCode == "browse") {
								this.formAttr.disabled = true;
								this.isWithinEditTableData = false;
								this.notdisabled = false;
								this.Approval = false;
							}
							else if (this.popupParames.sceneCode == "add") {
								if (this.newRowDefault) {
									let formData_ = clone(this.formData);
									
									for (var k in this.newRowDefault) {
										formData_[k] = this.newRowDefault[k];
									}
									this.formData = formData_;
								}
							}
							else if (this.popupParames.sceneCode == "edit") {
								let formData_ = clone(this.formData);
								
								
							}
						}
					},
					
					mounted() {
						var me = this;
						//预加载数据
						if (this.dataRequest.length) {
							var result = {};
							this.loadRequestData(this.dataRequest, result, function(data) {
								me.dataRequestObj = data;
								//预加载数据后给哪些字段设置options或formatterjson
								me.tableData1 = clone(data.agmrecord_field);
								// me.tableData2 = clone(data.agmrecorddetail_field);
								// me.tableData3 = clone(data.agmrecorddetail_terminal_field);
								var fieldlist_options = [];
								me.tableData1.map(r=>{
									var option_ = {
										code: r.id,
										name: r.field_name
									}
									fieldlist_options.push(option_);
									
									me.agmFieldsObj[r.id] = r;
								})
								// me.tableData2.map(r=>{
								// 	me.agmFieldsObj[r.id] = r;
								// })
								// me.tableData3.map(r=>{
								// 	me.agmFieldsObj[r.id] = r;
								// })
								var formFields_ = clone(me.formFields);
								formFields_.map(f=>{
									if (f.field == "parent_id") {
										//me.$set(f.options, me.dataRequestObj.agm_category)
										f.options = me.dataRequestObj.agm_category
									}
									else if (f.field == "fieldlist") {
										f.options = fieldlist_options
									}
									
								})
								me.formFields = clone(formFields_);
								
								me.initData();
							});
						}
						else {
							this.initData();
						}
						
						this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
							hideLoading();
							
							//重新设置弹窗宽高
							this.$nextTick(function(){
								//let w_ = this.$refs.popup_body.offsetWidth + "px";
								let w_ = "900px";
								let h_ = this.$refs.popup_body.offsetHeight + "px";
								Root.setPopupWH(w_, h_);
							})
						});
					},
					
					methods:{
						closeDialog() {
							var me = this;
							if (me.popupParames.totab){
								Root.tab.removeItem(Root.tab.selected);
								Root.tab.open(me.popupParames.parentOption, false); 
							}
							else {
								Root.hidePopup();
							}
						},
						saveAfter() {//调回调的关闭
							var me = this;
							if(this.popupParames.callback) {
								let obj = {
									options: this.treeoptions
								}
								this.popupParames.callback(obj, function() {
									me.closeDialog();
								});
							}
							else {
								me.closeDialog();
							}
						},
						
						initData() {
							let me = this
							let filter_table = "";
							//设置字段事件
                            me.tableFieldClick();
						},

						tableFieldClick() {
							var me = this;
							//表单字段事件设置
							this.formfieldClick = {
								parent_id: {//植入日期
									select: {
										onchange: function(obj) {//植入日期要早于上报日期
											console.log("testest", obj);
											if (obj.selectoption) {
												if (obj.selectoption.code_rule) {
													me.$set(me.formData, "code_rule", obj.selectoption.code_rule);
												}
												if (obj.selectoption.code_rule) {
													me.$set(me.formData, "method_name", obj.selectoption.method_name);
												}
												if (obj.selectoption.code_rule) {
													me.$set(me.formData, "sql_content", obj.selectoption.sql_content);
												}
											}
										}
									}
								},
							};
						},
						
						submitRowTable() {
							this.isCommit = true;
							this.saveRowTable();
						},
						
						saveRowTable() {
							var me = this;
							
							var operator_ = "save";//保存
							
							if(me.isCommit) {
								operator_ = "commit";//提交
							}
							
							var entity_ = clone(this.formData);
							var entity = {};
							for (var r in entity_) {
								if (entity_[r] || entity_[r] == "" || entity_[r] == false || entity_[r] == 0) {
									entity[r] = entity_[r];
								}
							}
							
							var table_entityset = [];
							
							if (this.formData.fieldlist) {
								this.formData.fieldlist.map(id=>{
									var entity_d = {
										category_name: this.formData.name,
										field_id: id,
										field: this.agmFieldsObj[id].field,
										field_name: this.agmFieldsObj[id].field_name,
										table_name: this.agmFieldsObj[id].table_name
									}
									this.formData.id
									
									table_entityset.push(entity_d);
								})
							}
							
							// this.selectionList_detail.map(id=>{
							// 	var entity_ = {
							// 		category_name: this.formData.name,
							// 		field_id: id,
							// 		field: this.agmFieldsObj[id].field,
							// 		field_name: this.agmFieldsObj[id].field_name,
							// 		table_name: this.agmFieldsObj[id].table_name
							// 	}
							// 	table_entityset.push(entity_);
							// })
							// this.selectionList_terminal_detail.map(id=>{
							// 	var entity_ = {
							// 		category_name: this.formData.name,
							// 		field_id: id,
							// 		field: this.agmFieldsObj[id].field,
							// 		field_name: this.agmFieldsObj[id].field_name,
							// 		table_name: this.agmFieldsObj[id].table_name
							// 	}
							// 	table_entityset.push(entity_);
							// })
							
							let param = {
								
								dataname: this.form_dataname,
								// operator: operator_,
								data: {},
							}
							
							param.data[this.form_dataname] = entity;
							//param.data[this.table_dataname] = table_entityset;
							
							Server.call("root/data/saveEntity", param, function(result) {
								console.log(result);
								if (result.success) {
									if(me.isCommit){
										me.isCommit = false;
										let param_ = {
											
											dataname: "agm_category",
											filter: "1=1",
										}
										Server.call("root/data/getEntitySet", param_, function(result2){
											let agm_category_ = ArrayToTree(clone(result2.data.entityset), "name", "parent_id");
											// agm_category_.unshift({
											// 	id:"cascaderbyadd",
											// 	label: "cascaderbyadd",
											// 	name: "cascaderbyadd",
											// 	parent_id: null
											// })
											me.treeoptions = agm_category_;
											
											Root.message({
												type: 'success',
												message: '提交成功'
											}); 
											me.saveAfter();
										});
									}
									else {
										let param_ = {
											
											dataname: "agm_category",
											filter: "1=1",
										}
										Server.call("root/data/getEntitySet", param_, function(result2){
											let agm_category_ = ArrayToTree(clone(result2.data.entityset), "name", "parent_id");
											// agm_category_.unshift({
											// 	id:"cascaderbyadd",
											// 	label: "cascaderbyadd",
											// 	name: "cascaderbyadd",
											// 	parent_id: null
											// })
											me.treeoptions = agm_category_;
											Root.message({
												type: 'success',
												message: '保存成功'
											}); 
											me.saveAfter();
										});
									}
								}
								
							});
						},
						
						// visibleChange(obj, rowdata, callback) {
						// 	let me = this;
						// 	let row = obj;
						// 	let field = obj.field;
						// 	let options_ = [];
							
						// 	if(field == "parent_id") {
						// 		var filter_ = " parent_id is null ";
								
						// 		let val = row[field];
						// 		let param_ = {
						// 			
						// 			dataname: "agm_category",
						// 			filter: filter_,
						// 		}
						// 		Server.call("root/data/getEntitySet", param_, function(result){
						// 			options_ = result.data.entityset;
						// 			options_.map(o=>{
						// 				o.label = o.name;
						// 			})
						// 			console.log(options_);
						// 			//obj.options = options_;
						// 			callback({options: clone(options_)});
									
						// 		});
						// 	}
						// },
						
						selectOptionOperate(obj) {
							let me = this;
							if (obj.type == "add") {
								if (obj.fieldobj.field == "type_code") {
									
									
									/* Root.showPopup({
										url: "../md/customer/popup/customer_list.html",
										width: 800,
										height: 550,
										data: this.oldObj,
										dataname: "customer",
										callback: function(obj, callback) {
											let formData_ = clone(me.formData);
											formData_.customer_name = obj.row.md_description;
											formData_.customer_code = obj.row.md_code;
											formData_.customer_id = obj.row.id;
											formData_.province_name = obj.row.province;
											
											me.formData = formData_;
											if (callback) {
												callback();
											}
										}
									}); */
								}
							}
							
						},
						
						formChange(obj) {
							let me = this;
							if (obj.fieldobj.field == "type_code") {
								obj.data.type_name = clone(obj.selectoption.label);
							}
							
						},
						
						selectChange(obj) {
							let me = this;
							if (obj.fieldobj.field == "parent_id" && obj.selectoption) {
								//obj.data.type_name = clone(obj.selectoption.label);
							}
							
						},
						
						showPopup(obj) {
							let me = this;
							this.selectFormField = obj.obj;
							if (this.selectFormField.field == "customer_name") {
								
								Root.showPopup({
									url: "../md/customer/popup/customer_list.html",
									width: 800,
									height: 550,
									data: this.oldObj,
									dataname: "customer",
									callback: function(obj, callback) {
										let formData_ = clone(me.formData);
										formData_.customer_name = obj.row.md_description;
										formData_.customer_code = obj.row.md_code;
										formData_.customer_id = obj.row.id;
										// formData_.province_name = obj.row.province;
										
										me.formData = formData_;
										if (callback) {
											callback();
										}
									}
								});
							}
							if (this.selectFormField.field == "delivery_part_name") {
								Root.showPopup({
									url: "../org/company/popup/managesubject_list.html",
									width: 800,
									height: 550,
									dataname:"getDelivery_part_name",
									type :"managesubjectname",
									callback: function(obj, callback) {
										let formData_ = clone(me.formData);
										formData_.delivery_part_name = obj.row.delivery_part_name;
										formData_.delivery_part_code = obj.row.delivery_part_code;
										me.formData = formData_;
										if (callback) {
											callback();
										}
									}
								});
							}
							if (this.selectFormField.field == "product_name") {
								Root.showPopup({
									url: "../md/product/popup/sku_list.html",
									width: 800,
									height: 550,
									callback: function(obj, callback) {
										let formData_ = clone(me.formData);
										
										formData_.product_id = obj.row.id;
										formData_.product_code = obj.row.md_code;
										formData_.product_name = obj.row.md_description;
										//formData_.spec = obj.row.pack_specification;
										
										me.formData = formData_;
										if (callback) {
											callback();
										}
									}
								});
							}
						},
						
						handleSelectionChange(selection) {
							this.selectionList = [];
							if (selection.length > 0) {
								selection.map(sr=>{
									this.selectionList.push(sr.id);
								})
							}
						},
						
						handleSelectionChange_detail(selection) {
							this.selectionList_detail = [];
							if (selection.length > 0) {
								selection.map(sr=>{
									this.selectionList_detail.push(sr.id);
								})
							}
						},
						handleSelectionChange_terminaldetail(selection) {
							this.selectionList_terminal_detail = [];
							if (selection.length > 0) {
								selection.map(sr=>{
									this.selectionList_terminal_detail.push(sr.id);
								})
							}
						},
						
					}
				});
			};
			
			loadJsCss(function () {
				initVue();
			});
		</script>
		<style>
			/*  在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
			[v-cloak] {
				display: none !important;
			}
			
			
			/* .h_form_checkboxgroup .el-checkbox {
				width: 120px;
			} */
		</style>
		
	</head>
	
	<body style="margin: 0px;">
		<div v-cloak id="vbody">
			<div id="page_root">
				<div ref="popup_body" style="padding: 0 20px;">
					<div class="popup_el-dialog__header">
						<div class="dialog-title">
						  <i class="iconfont icon-customermanagement"></i>
						  <!-- <span> {{formAttr.title}} </span> -->
						</div>
					</div>	
					<div style="height: 350px; overflow-y: auto;">
						<div class="el-dialog__body">
							<h-form
								ref="form1"
								:form-attr="formAttr"
								:table-fields="formFields"
								:form-data="formData"
								:table-field-click="formfieldClick"
							>
							</h-form>
							<!-- 
							v-on:form-change="formChange"
							v-on:select-change="selectChange"
							v-on:show-popup="showPopup"
							v-on:select-option-operate="selectOptionOperate"
							v-on:visible-change="visibleChange" -->
						</div>
						<!-- <div class="" style="padding-left: 20px;">
							<div style="width: 30%;float: left;">
								<h-table
									ref="table1"
									:table-fields="tableFields1" 
									:table-data="tableData1" 
									:table-height="tableHeight"
									:is-selection="true"
									:is-pagination="false"
									
									v-on:selection-change="handleSelectionChange"
								>
								</h-table>
							</div>
							<div style="width: 30%;float: left;margin-left: 5%;">
								<h-table
									ref="table2"
									:table-fields="tableFields2" 
									:table-data="tableData2" 
									:table-height="tableHeight"
									:is-selection="true"
									:is-pagination="false"
									
									v-on:selection-change="handleSelectionChange_detail"
								>
								</h-table>
							</div>
							
							<div style="width: 30%;float: right;">
								<h-table
									ref="table3"
									:table-fields="tableFields3" 
									:table-data="tableData3" 
									:table-height="tableHeight"
									:is-selection="true"
									:is-pagination="false"
									
									v-on:selection-change="handleSelectionChange_terminaldetail"
								>
								</h-table>
							</div>
							
						</div> -->
						
					</div>
					<div class="el-dialog__footer">
						<el-button size="small" type="default" size="small" @click="closeDialog">取 消</el-button>
						<el-button size="small" v-if="notdisabled" type="primary" @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button>
						<!-- <el-button v-if="notdisabled" type="success" @click="submitRowTable":icon="buttonsconfig.submit.icon">{{buttonsconfig.submit.name}}</el-button> -->
					</div>
				</div>
			</div>
			
			<div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;">
				<div class="spinner">
				  <div class="cube1"></div>
				  <div class="cube2"></div>
				</div>
			</div>
		</div>	
		
	</body>
</html>