<!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>表单模板6</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_department",
						title: "员工管理",
						tree_title: "部门列表",
						treeTxtFormatter: "{name}",
						isTreeReadonly: true,
						

						dataname_p: "md_employee",
						pagesize_p: 10,
						pagenum_p: 1,
						total_p: 0,
						tableData_p: [],
						tableFields_p: [],
						isRefresh_p: true,
						tableHeight_p: 100,
						
						tablefieldClick: {},
						filtersobj:{},  
						setSelectedRowId: null,
						currentnodekey: "",
						authorize_category_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;
							this.onQuery(function(result, callback) {//查询后的回调,用于获取字段的
								me.initTreeData.map(r=>{
									if (r.org_id && r.org_id.indexOf('.') != -1 ){  //判断数字字符串里是否含有小数点
										r.org_id = parseInt(r.org_id)			//数字字符串取整
										r.org_id = r.org_id.toString();
									}
									if (r.id && r.id.indexOf('.') != -1 ){
										r.id = parseInt(r.id)
										r.id = r.id.toString();
										
									}
								})		
								let initTreeData_ = ArrayToTree(clone(me.initTreeData), "name", "parent_id");
								me.treeData = initTreeData_;
								
								if (callback) {
									callback();
								}
								
								me.getTableMeta();//获取table字段
								if(me.treeData[0]) {
									const leafNode = me.findLeafNode(me.treeData[0]);
									let objInit = {
										data: leafNode,
										node: {},
										el: {},
									};
									me.currentnodekey = leafNode.id;
									me.onNodeClick(objInit);
								}
							});
						},

						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 authorize_category_ids = "";

							if (data.type_code && data.type_code == "Org") {  //判断为公司
								authorize_category_ids = "org_id='" + data.id + "'"
							}
							else {
								authorize_category_ids = "bu_id='" + data.id + "'"
							}
							
							// this.filterObjBydefault.category_name = val
							this.selectedrow = data;
							this.setSelectedRowId = null;//Brooke
							this.filterObj = {};
							this.filtersobj = {};
							this.pagenum_p = 1;
							
							this.authorize_category_ids = authorize_category_ids;
							this.getDataByNode();

						},
						onParentNodeClick(obj) {
							var me = this;
							console.log(obj);
							var data = obj.data, node = obj.node, el = obj.el;
							var library_ids = "";
							if (data.children && data.children.length) {
								data.children.map(f=>{
									if (f.children && f.children.length) {
										me.onParentNodeClick(f)
									}
									else {
										library_ids = "parent_id='" + data.id + "'"
										this.library_ids = library_ids;
										me.getParentDataByNode()
									}
									
								})
							}
							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();
						// },
						getParentDataByNode() {
							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.authorize_category_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) {//待完善,获取父节点下所有子节点的table数据
								if (result && result.data && result.data.entityset) {
									var data_ = result.data.entityset;
									var tableData_p_ = data_;
									var total_p = result.data.page.recordcount;
								}
								else {
									me.total_p = 0;
								}
							})
						},
						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.authorize_category_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 tableFields_ = [];
									
									metas.map(f=>{
										f.isshow = "T";

										tableFields_.push(clone(f));
									})
									if (!me.tableFields_p || (me.tableFields_p && me.tableFields_p.length == 0)) {
										me.tableFields_p = clone(tableFields_);
					
									}
								}
								//字段数组转字段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.filterFieldsObj = clone(filterFieldsObj_);
						},

						tableFieldClick() {
							var me = this;
						
							//表格字段事件设置
							this.tablefieldClick = {
								material_code: {//字段事件设置
									val: {//有值时的点击事件
										notclick_val: "",//不可点击的值,1、是数组["11","22"];2、以“;”分隔的字符串"111;222"
										notclick_bindfield: [],//当该字段值等于指定字段值时不可点击["filterfield": "111"]
										onclick: function(obj) {//数据值点击事件
											var config = {
												totab: false, //true: 以Tab导航的方式打开
												width: "1100px",
												height: "520px",
												icon: "icon-product",
												text: "授权范围" + (obj.row.material_code ? "-" + obj.row.material_code : ""),
												id: "popup_sku_relation" + obj.row.id,//totab: true时需设置,用于判断是否已打开此页面
												url: "module/md/page/product/page/popup_sku_relation.html",
												data: obj.row,
												delta: "",
												filter: "product_id='"+obj.row.id+"'",
												sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse",
												callback: function(obj, callback) {
													if (callback) {
														callback();
													}
												}
											};
											me.doPopupByPublic(config);
										},
									},	
								},
							};
						},
						
						tableDataAfter_p() {  //标识1:设置表格高度:给容器设置高度,这样当里面元素溢出后才会有滚轮
							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;
							
						},

						getRow(obj) {
							this.setSelectedRowId = clone(obj.row.id);
						},
						
						setRuleValue() {   //标识2:下单倍数
							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) {
									if (callback) {
										callback();
									}
								}
							};
							me.doPopupByPublic(config);
						},

					
						onInitFilter: function() {
							this.filterObj = {};
							this.filterQuery();  //标识二:此处未知
						},

						onDownload() {
							let me = this;
							var filter_ = "code is not null and code <> '' and " + me.authorize_category_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"
								ref="table_p"
								:table-fields="tableFields_p" 
								:table-data="tableData_p" 
								:pagesize="pagesize_p"
								:pagenum="pagenum_p"
								:total="total_p"
								:table-height="tableHeight_p - 172"
								:is-highlight-row="true"
								:table-field-click="tablefieldClick"
								:filtersobj="filtersobj"
								
								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>