<!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 = [
					{id: "css_m1", type: "css", url: "root/css/tree.css"},
				];
				window.top.initJsCss(document, jscss_urls, callback);
			};
			
			function initVue() {
				new TreeVue({
					el: "#vbody",
					data: {
						dataname: "md_library",
						title: "产品资料库管理",
						tree_title: "资料库列表",
						treeTxtFormatter: "{name}",
						isTreeReadonly: true,
						
						dataname_p: "md_library_detail",
						pagesize_p: 10,
						pagenum_p: 1,
						total_p: 0,
						tableData_p: [],
						tableFields_p: [],
						isRefresh_p: true,
						tableHeight_p: 100,
						
						tablefieldClick: {},
						tablebuttonClick: [],
						
						setSelectedRowId: null,

						//filter
						filterObj: {},
						filterAttr: {
							columnnumber: 3,
							labelwidth: "100px",
							labelposition: "right",
							size: "medium",
							border: "3px solid #c6c6c600"
						},
						filterFields: [],
						filterfieldClick: {},
						currentnodekey: "",
						library_ids: "1<>1",
						cbuttons_r: {},
					},
					created() {
						
					},
					
					mounted() {
						var me = this;
						if (window.top.tab.selected.option.page_id) {
							// this.page_id = window.top.tab.selected.option.page_id;
							getPageByPageId(window.top.tab.selected.option.page_id, function(result){
								me.cbuttons_r = result.buttons_r;
								
								//获取数据
								me.initData();
								me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
									hideLoading();
								});
							})
						}
					},
					
					methods:{
						initData() {
							var me = this;
							me.tableButtonClick();//标识2
							this.onQuery(function(result, callback) {//查询后的回调,用于获取字段的
								let initTreeData_ = ArrayToTree(clone(me.initTreeData), "name", "parent_id");
								me.treeData = initTreeData_;
								
								if (callback) {
									callback();
								}
								

								//待完善
								// if(me.treeData[0].children[0].children[0]) {
								// 	let objInit = {
								// 		data: clone(me.treeData[0].children[0].children[0]),
								// 		node: {},
								// 		el: {},
								// 	};
								// 	me.onNodeClick(objInit);
								// }

								//Brooke
								// console.log(me.treeData);
								// if(me.treeData[0]) {
								// 	let objInit = me.findNodeInit(me.treeData[0]);
								// 	console.log(objInit);
								// }

								//GPT3.5
								// const deepestNode = me.findDeepestNode(me.treeData[0]);
								// console.log(deepestNode);

								if(me.treeData[0]) {
									const leafNode = me.findLeafNode(me.treeData[0]);
									let objInit = {
										data: leafNode,
										node: {},
										el: {},
									};
									me.currentnodekey = leafNode.id;
									me.onNodeClick(objInit);
								}
								me.getTableMeta();

							});
						},

						//Brooke
						// findNodeInit(arr) {
						// 	var me = this;
						// 	if(!arr.children || arr.children.length === 0) {
						// 		return arr;
						// 	} else {
						// 		let child = arr.children[0];
						// 		const nodeInit = findNodeInit(child);
						// 		if(nodeInit) {
						// 			return nodeInit;
						// 		} esle
						// 	}
						// },

						//GPT3.5
						// findDeepestNode(node) {
						// 	if (!node.children || node.children.length === 0) {
						// 		return node;
						// 	}
						// 	let deepestChild = node.children[0];
						// 	for (let i = 1; i < node.children.length; i++) {
						// 		const child = node.children[i];
						// 		const deepestGrandchild = this.findDeepestNode(child);
						// 		if (deepestGrandchild.depth > deepestChild.depth) {
						// 		deepestChild = deepestGrandchild;
						// 		}
						// 	}
						// 	return deepestChild;
						// },

						findLeafNode(node) {
							if (!node.children || node.children.length === 0) {
								return node;
							}
							for (let i = 0; i < node.children.length; i++) {
								const child = node.children[i];
								const leafNode = this.findLeafNode(child);
								if (leafNode) {
									return leafNode;
								}
							}
							return null;
						},
						
						onAddNode(obj) {
							var data = obj.data, node = obj.node;
							let me = this;
							var config = {
								totab: false, //true: 以Tab导航的方式打开
								width: "500px",
								height: "300px",
								icon: "icon-product",
								text: "产品类型信息",
								id: "product_type_edit",//totab: true时需设置,用于判断是否已打开此页面
								url: "module/md/page/product/page/product_type_edit.html",
								data: {},
								delta: {},
								sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse",
								callback: function(obj, callback) {
									me.type_treedata = obj.options
									if (callback) {
										callback();
									}
								}
							};
							me.doPopupByPublic(config);
						},
						
						onEditNode(obj) {
							var data = obj.data, node = obj.node;
							var me = this;
							Root.showPopup({
								url: "module/md/page/product/page/product_type_edit.html",
								width: 800,
								height: 230,
								data: data,
								sceneCode: "edit",
								callback: function(options_obj, callback) {
									me.type_treedata = options_obj.options
									if (callback) {
										callback();
									}
								}
							});
						},
						
						onDelNode(obj) {
							var data = obj.data, node = obj.node;
							let me = this;
							Root.confirm('确定删除-' + data.name + '-吗?', '删除提示', {
							  confirmButtonText: '删除',
							  cancelButtonText: '取消',
							  type: 'warning'
							}).then(() => {
								me.dodeldata(data, node, "agm_category");
							}).catch(() => {
								Root.message({
									type: 'info',
									message: '已取消删除'
								});
							});
						},
						
						dodeldata(row, node, tablename) {
							if (row.id) {
								let param = {
									
									dataname: tablename,
									id: row.id
								}
								
								Server.call("root/data/deleteEntity", param, function(result) {
									console.log(result);
									if (result && result.data) {
										const parent = node.parent;
										const children = parent.data.children || parent.data;
										const index = children.findIndex(d => d.id === row.id);
										children.splice(index, 1);
										
										Root.message({
											type: 'success',
											message: '删除成功!'
										});
									}
								});
							}
						},
						
						node_isShow(data, isShow) {
							if (this.$refs[data.id]) {
								this.$refs[data.id].style.display = isShow ? '' : 'none';
							}
						},
						
						onNodeClick(obj) {
							console.log(obj);
							var data = obj.data, node = obj.node, el = obj.el;
							var library_ids = "";
							if (data.children && data.children.length) {
								
								library_ids = "parent_id='" + data.id + "'"
							}
							else {
								library_ids = "parent_id='" + data.id + "'"
							}
							
							// this.filterObjBydefault.category_name = val
							this.selectedrow = data;
							this.setSelectedRowId = null;//Brooke
							this.filterObj = {};
							this.pagenum_p = 1;
							
							this.library_ids = library_ids;
							this.getDataByNode();

						},

						
						// onNodeClick(data, node, el) {
						// 	var val = data.name;
						// 	if (data.children && data.children.length) {
						// 		val = "";
						// 		data.children.map(r=>{
						// 			if (val == "") {
						// 				val = r.name;
						// 			}
						// 			else {
						// 				val += "','" + r.name;
						// 			}
						// 		})
						// 	}
							
						// 	// this.filterObjBydefault.category_name = val
						// 	this.selectedrow = data;
						// 	this.pagenum_p = 1;
						// 	this.getDataByNode();
						// },
						
						getDataByNode() {
							var me = this;
							if (!me.selectedrow.id) {
								return
							}
							
							var filter_ = "";
							
							// filter_ = " product_line_name like '" + this.selectedrow.name + "' or authorize_category_name like '" + this.selectedrow.name + "'"
							//filter_ = " code is not null and code <> '' and (authorize_category_id = '" + me.selectedrow.type_id + "' or authorize_category_name like '" + me.selectedrow.name + "')"
							
							filter_ =  this.library_ids;
							var param_ = {
								dataname: me.dataname_p,
								filter: filter_,
								orderby: "name",
								page: {
									pageno: me.pagenum_p,
									pagesize: me.pagesize_p
								},
							}
							
							Server.call("root/data/getEntitySet", param_, function(result) {
								if (result && result.data && result.data.entityset) {
									var data_ = result.data.entityset;
									me.tableData_p = data_;
									me.total_p = result.data.page.recordcount;
								}
								else {
									me.total_p = 0;
								}
							})
						},
						
						getTableMeta() {
							var me = this;
							var param_ = {
								dataname: this.dataname_p,
								filter: "1<>1",
								attachMeta: true,
							}
							Server.call("root/data/getEntitySet", param_, function(result) {
								if (result.meta && result.meta[me.dataname_p] && result.meta[me.dataname_p].fields) {
									var metas = clone(result.meta[me.dataname_p].fields);
									var filterFields_ = [];
									var tableFields_ = [];
									
									metas.map(f=>{
										f.isshow = "T";
										//filter
										if (f.isfilter) {
											filterFields_.push(clone(f));
										}
										else {
											var filter_f = clone(f);
											filter_f.isshow = "F";
											filterFields_.push(filter_f);
										}
										
										if(f.field == "parent_id") {
											f.isshow = "F";
										}

										tableFields_.push(clone(f));
									})
									if (!me.tableFields_p || (me.tableFields_p && me.tableFields_p.length == 0)) {
										me.tableFields_p = clone(tableFields_);
										me.filterFields = clone(filterFields_);

										var filterObj_ = getDataByFields(me.filterObj, me.filterFields);
										me.filterObj = clone(filterObj_);
									}
								}
								//字段数组转字段obj,目的为了筛选时获取字段属性
								me.fieldsToFieldsObj();

								me.tableFieldClick();
								me.tableDataAfter_p();
							})
						},

						fieldsToFieldsObj() {
							//字段转换
							var formFieldsObj_ = {};
							var tableFieldsObj_ = {};
							this.formFieldsObj_ = {};
							this.tableFieldsObj = {};
							var filterFieldsObj_ = {};
							this.filterFieldsObj = {};

							
							this.formFields.map(f=>{
								if (f.inputtypefilter) {
									f.type = f.inputtypefilter;
								}
								formFieldsObj_[f.field] = f;
							});
							
							this.formFieldsObj = clone(formFieldsObj_);
							
							if (this.tableFields && this.tableFields.length) {
								var tableFields_ = TreeToArray(this.tableFields, "field");
								tableFields_.map(f=>{
									tableFieldsObj_[f.field] = f;
								});
								
								this.tableFieldsObj = clone(tableFieldsObj_);
							}
							

							this.filterFields.map(f=>{
								if (f.inputtype == "date") {
									f.type = "daterange";
									f.filteroperator = "inScopeInclude";
								}
								if (f.inputtypefilter) {
									f.type = f.inputtypefilter;
								}
								filterFieldsObj_[f.field] = f;
							});
							
							this.filterFieldsObj = clone(filterFieldsObj_);
						},
						
						// 设置表格工具栏按键事件
						tableButtonClick() {
							var me = this;
							var tablebuttonClick = [];
							tablebuttonClick = [
								{
									isbuttonshow: true,type:"primary",
									code: "add",isselected: false,classname: "",
									onclick: function(obj) {
										var sceneCode = "add"
										me.onAddData(obj,sceneCode)
									}
								},
								{
									// name: "详情", // type: "primary", // icon: "el-icon-edit",
									isbuttonshow: true,
									code: "formdetail", isselected: true, classname: "",
									onclick: function(obj) {
										// obj.selectedList
										// me.openCustomerUser('browse', obj.selectedList[0]);
										var sceneCode = "browse";
										var row = obj.selectedList[0]
										me.onAddData(row,sceneCode)

									}
								},
								{
									isbuttonshow: true,type: "danger",
									code: "repeal",isselected: true,classname: "",
									disabled: function(selectRowList) {
										var bo_ = true;
										if (selectRowList[0] && selectRowList[0].state_code == 'Open') {
											bo_ = false;
										}
										return bo_
									},
									onclick: function(obj) {
										me.cancelConfirm()
									}
								}
							]
							
							this.tablebuttonClick = tablebuttonClick;
						},

						tableFieldClick() {
							var me = this;
						
							//表格字段事件设置
							this.tablefieldClick = {
							}
						},
						
						//新增模板
						onAddData(obj,sceneCode) {
							var me = this;
							var type = "";
							var delta_ = {
								nodeKey: this.selectedrow.id,
							}
							if (this.selectedrow.name) {
								type = this.selectedrow.name
							}
							var config = {
								totab: false,
								icon: "icon-product",
								text: "新增资料" + type,
								id: "material_list_edit"+sceneCode+this.selectedrow.id+obj?obj.id:"",//totab: true时需设置,用于判断是否已打开此页面
								url: "module/material/page/material_list_edit.html",
								data: obj?obj:{},	
								delta: delta_,
								sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
								callback: function(obj, callback) {
									console.log(me.treeData)
									me.getDataByNode()
									console.log(me.treeData)
									if (callback) {
										callback();
									}
								}
							};
							me.doPopupByPublic(config);
						},
						
						showFileImgByFileId(obj, filenamefield, fileidfield, filedataname) {
							let me = this;
							var file_name = obj.row[filenamefield];
							var file_id = obj.row[fileidfield];
							if(file_id) {
								var fileid = file_id;
								let fileName = clone(file_name);
								let index1 = fileName.lastIndexOf(".");
								let index2 = fileName.length;
								let suffix = fileName.substring(index1, index2).toLowerCase(); //后缀名
								if (suffix == ".png" || suffix == ".jpg" || suffix == ".pdf") {
									var row = {
										fileid: fileid,
										filename: fileName,
										dataname: dataname
									}
						
									var config = {
										totab: false,
										width: "1000px",
										height: 800,
										icon: "icon-product",
										text: "附件预览",
										id: "pdf_" + fileid,
										url: "module/tool/page/popup_file_pdf.html",
										data: row,
										delta: {},
										callback: function(obj, callback) {
											if (callback) {
												callback();
											}
										}
									};
									this.doPopupByPublic(config);
								}
								else {//只可下载,不可预览
									// handleDownloadUrl(fileid,false);
									handleDownload(fileid, dataname);
								}
							}
						},
						
						tableDataAfter_p() {
							var me = this;
							if (this.tableFields_p.length > 0){
								this.isRefresh_p = false;
								this.$nextTick(function(){
									this.isRefresh_p = true;
									this.$nextTick(function(){
										var el_list = [];
										me.tableHeight_p = me.treeHeight;
									})
								})
							}
						},
						
						onQueryAfter() {
							this.pagenum_p = 1;
							this.tableData_p = [];
							this.total_p = 0;
						},
						
						getData_p(page) {
							this.pagesize_p = page.pagesize;
							this.pagenum_p = page.pagenum;
							if (page.filtersobj) { //  && Object.keys(page.filtersobj).length
								this.filterObj = page.filtersobj;
							}
							this.filterQuery();
						},

						getRow(obj) {
							this.setSelectedRowId = clone(obj.row.id);
						},
						
						setRuleValue() {
							let me = this;
							let obj ={
								row: {
									id: me.setSelectedRowId,
								},
							} 

							var config = {
								totab: false, //true: 以Tab导航的方式打开
								width: "600px",
								height: "500px",
								icon: "icon-product",
								text: "为 " + obj.row.id + " 设置下单倍数",
								id: "popup_setRuleValue",//totab: true时需设置,用于判断是否已打开此页面
								url: "module/md/page/product/page/popup_setRuleValue.html",
								data: obj.row,
								delta: "",
								// filter: "id = '3018004'",
								sceneCode: "edit",//"refuseedit",//"approval", //"add"//"browse",
								callback: function(obj, callback) {
									me.filterQuery();
									if (callback) {
										callback();
									}
								}
							};
							me.doPopupByPublic(config);
						},

						filterQuery() {
							var me = this;
							// var filter_ = " code is not null and code <> '' and (authorize_category_id = '" + me.selectedrow.type_id + "' or authorize_category_name like '" + me.selectedrow.name + "')"
							var filter_ = " id is not null and id <> '' and " + me.library_ids;
							
							filter_ = me.getFilterData(filter_, me.filterObj, me.filterFieldsObj, true);
							console.log(filter_);

							var param_ = {
								dataname: me.dataname_p,
								filter: filter_,
								orderby: "name",
								page: {
									pageno: me.pagenum_p,
									pagesize: me.pagesize_p
								},
							}
							
							Server.call("root/data/getEntitySet", param_, function(result) {
								if (result && result.data && result.data.entityset) {
									var data_ = result.data.entityset;
									me.tableData_p = data_;
									me.total_p = result.data.page.recordcount;
								}
								else {
									me.total_p = 0;
								}
							})
						},

						onInitFilter: function() {
							this.filterObj = {};
							this.filterQuery();
						},

						onDownload() {
							let me = this;
							var filter_ = "code is not null and code <> '' and " + me.library_ids;
							filter_ = this.getFilterData(filter_, me.filterObj, me.filterFieldsObj);
							
							let param = {
								dataname: 'md_product_sql',
								filename: '产品信息导出' + String(new Date().getTime()),
								categoryfilter: filter_,
								orderby: "update_time desc",
								token: Root.getToken()
							}

							textdownloadForm(param);
						},
					}
				});
			};
			
			loadJsCss(function () {
				initVue();
			});
		</script>
		<style>
			/*  在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
			[v-cloak] {
				display: none !important;
			}
			.el-tabs__nav-scroll {
			    overflow: hidden;
			    position: relative;
			    padding-left: 20px;
			}
			.nodeLabel {
			    max-width: 220px !important;
			}
		</style>
		
	</head>
	
	<body style="margin: 0px;">
		<div v-cloak id="vbody">
			<div id="page_root">
				<div class="topbar">
					<span>{{title}}</span>
					<div style="float: right; margin-right: 10px">
						<el-button @click="onDownload":icon="buttonsconfig.export.icon">{{buttonsconfig.export.name}}</el-button>
					</div>
				</div>
				
				<div class="h_dialog__body">
					<div :style="{position: 'absolute', left: '10px', width: '320px', top: '40px', bottom: '10px', border: '1px solid #ccc'}">
						<div style="height: 32px;line-height: 32px;border-bottom: 1px solid #ccc ;">
							<span style="font-size: 14px;margin-left: 20px;">{{tree_title}}</span>
						</div>
						<div :style="{padding: '10px 0', height: treeHeight - 55 + 'px', overflow: 'auto'}">
							<h-tree
							v-if="isRefresh"
							:tree-data="treeData"
							:tree-txt-formatter="treeTxtFormatter"
							:currentnodekey="currentnodekey"
							:is-readonly="isTreeReadonly"
							
							@node-click="onNodeClick"
							@add-node="onAddNode"
							@edit-node="onEditNode"
							@del-node="onDelNode"
							>
							</h-tree>
							
							<!-- <el-tree ref="hierTree" class="filter-tree" node-key="id" :indent="24" 
							 default-expand-all
							 highlight-current 
							 :data="treeData" 
							 show-checkbox
							 :expand-on-click-node="true" 
							 @node-click="onNodeClick"
							 >
								<span class="custom-tree-node z_menu_tree" slot-scope="{ node, data, itm }"
								 @mouseenter="node_isShow(data, true)"
								 @mouseleave="node_isShow(data, false)"
								>
									<span>
										<div class="nodeLabel nodeLabel_l" style="height: 32px; line-height: 32px;">
										</div>
										<div class="nodeLabel z_left_menu_tree_txt">
											<i v-if="!node.isLeaf" :class="!node.expanded ? 'el-icon-plus':'el-icon-minus'" style="font-size: 10px; margin-right: 10px; border: 1px solid #a7a9a9; color: #a7a9a9;"></i>
										</div>
										<div class="nodeLabel z_left_menu_tree_txt">
											<span>{{ data.name }}</span>
											<el-badge :ref="'dadgeid_' + data.id" v-show="data.isBadge ? true : false" is-dot class="item">
											</el-badge>
										</div>
									</span>
									<span>
										<div :ref="data.id" v-show="false" class="nodeLabel" style="width: 128px;max-width: 128px;">
											<el-button v-if="!data.parent_id" type="text" 
											@click.stop="addNode(data,node)" class="z_node_button" icon="el-icon-circle-plus-outline">
											</el-button>
											<el-button type="text" 
											@click.stop="editNode(data,node)" class="z_node_button" icon="el-icon-edit">
											</el-button>
											<el-button v-if="!(data.children && data.children.length)" type="text" 
											@click.stop="delNode(data,node)" class="z_node_button" icon="el-icon-delete">
											</el-button>
										</div>
										
										<div class="nodeLabel" style="margin-right: 30px;">
											<span v-if="!node.isLeaf">{{data.children.length}}</span>
										</div>
									</span>
								</span>
							</el-tree> -->
						</div>
					</div>
					<div :style="{position: 'absolute', left: '340px', right: '10px', top: '40px', bottom: '10px', border: '1px solid #ccc'}">
						<div>
							<div style="height: 32px; border-bottom: 1px solid #aaa;">
								<div class="table_title" style="float: left;">
									<span>资料内容</span>
								</div>
								<div style=" text-align: right; ">
									<el-button v-show="cbuttons_r.RuleValue" :disabled="!(setSelectedRowId)" @click="setRuleValue" >设置下单倍数</el-button>
								</div>
							</div>

							<h-table
								v-if="isRefresh_p && tableFields_p.length"
								ref="table_p"
								:table-fields="tableFields_p" 
								:table-data="tableData_p" 
								:pagesize="pagesize_p"
								:pagenum="pagenum_p"
								:total="total_p"
								:table-height="tableHeight_p - 132"
								:is-highlight-row="true"
								:table-field-click="tablefieldClick"
								:table-buttons-click="tablebuttonClick"
								
								v-on:get-data="getData_p"
								v-on:row-click="getRow"
							>
							</h-table>
							
						</div>
					</div>
					
				</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>
		
	</body>
</html>