<!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>