From 9253a1b75603488a1a50b4198170e20051ea5ae2 Mon Sep 17 00:00:00 2001 From: zhangyanpeng <bob.zhang@highdatas.com> Date: 星期日, 25 八月 2024 20:18:15 +0800 Subject: [PATCH] 调整 --- module/config/page/sys_menu_edit.html | 823 ++++++++++++++++++++++++ js/myelement.js | 4 module/model/model_iframe.html | 172 +++++ module/config/page/sys_menu_add.html | 85 ++ module/config/page/sys_menu_add_report.html | 465 +++++++++++++ module/model/page/table_simple.html | 426 ++++++++++++ module/system/page/main.html | 22 module/tool/page/popup_iconfont.html | 2 js/config.js | 2 9 files changed, 1,973 insertions(+), 28 deletions(-) diff --git a/js/config.js b/js/config.js index a0bc394..2631beb 100644 --- a/js/config.js +++ b/js/config.js @@ -14,7 +14,7 @@ config = { - jscssversion: "2024081902", //.js/.css鏂囦欢鐨勭増鏈彿锛屽幓闄ゅ墠绔紦瀛樼殑涓�绉嶆満鍒� + jscssversion: "2024082502", //.js/.css鏂囦欢鐨勭増鏈彿锛屽幓闄ゅ墠绔紦瀛樼殑涓�绉嶆満鍒� isupgrading: false, //鏄惁鍗囩骇涓� appName: "TPP", title: "钀ラ攢涓�浣撳寲杩愯惀骞冲彴", diff --git a/js/myelement.js b/js/myelement.js index a7f1ae4..8c64137 100644 --- a/js/myelement.js +++ b/js/myelement.js @@ -5550,9 +5550,9 @@ ' :disabled = "typeof (fieldObj.disabled) != \'undefined\' ? fieldObj.disabled : (disabled ? true : false)" '+ ' :value="formData[fieldObj.field] && formData[fieldObj.field].length == fieldObj.options.length ? true : false" @change="handleCheckAllChange($event, fieldObj, formData)">鍏ㄩ��</el-checkbox>'+ - '<el-checkbox-group v-model="formData[fieldObj.field]" class="h_form_checkboxgroup" '+ + '<el-checkbox-group v-model="formData[fieldObj.field]" class="h_form_checkboxgroup aaa" '+ ' :disabled = "typeof (fieldObj.disabled) != \'undefined\' ? fieldObj.disabled : (disabled ? true : false)" @change="formchange($event, fieldObj)"> '+ - '<el-checkbox v-for="(o, k) in fieldObj.options" :key="k" :label="o.code"><div :style="{width: fieldObj.valuewidth ? fieldObj.valuewidth : \'100%\'}">{{o.value}}</div></el-checkbox> '+ + '<el-checkbox v-for="(o, k) in fieldObj.options" :key="\'f_checkboxobj\' + k" :label="o.code"><div :style="{width: fieldObj.valuewidth ? fieldObj.valuewidth : \'100%\'}">{{o.value}}</div></el-checkbox> '+ '</el-checkbox-group> '+ '</div>'+ '<div v-else>'+ diff --git a/module/config/page/sys_menu_add.html b/module/config/page/sys_menu_add.html index 4b66a50..62289c6 100644 --- a/module/config/page/sys_menu_add.html +++ b/module/config/page/sys_menu_add.html @@ -32,7 +32,9 @@ //id: uuid_short(), // code: createCode("BA"), }, - formData: {}, + formData: { + title: "", + }, dataRequest: [ { @@ -63,6 +65,9 @@ pageid: "", // 鏂伴〉闈d parent_menuobj: {}, // 鐖剁骇鑿滃崟 + + isAddMenu: false, // 浠呮坊鍔犱竴涓彍鍗� + treeoptions: [] }, created() { this.popupParames = clone(Root.popupParames); @@ -72,13 +77,41 @@ // } if (this.popupParames.data) { - this.parent_menuobj = this.popupParames.data; if (this.popupParames.sceneCode) { - if (this.popupParames.sceneCode == 'add') { - this.pageid = createCode("R_"); + if (this.popupParames.sceneCode == 'addmenu') { + this.isAddMenu = true; + this.parent_menuobj = this.popupParames.data; + if (this.parent_menuobj && this.parent_menuobj.id) { + this.formData.parent_id = this.parent_menuobj.id + } + } + else if (this.popupParames.sceneCode == 'add') { + this.parent_menuobj = this.popupParames.data; + this.pageid = createCode("M_P"); this.formData.parent_id = this.popupParames.data.id; - } else if (this.popupParames.sceneCode == 'edit') { + } + else if (this.popupParames.sceneCode == 'edit') { this.pageid = this.popupParames.data.page_id; + + this.parent_menuobj = { + id: this.popupParames.data.parent_id, + type_code: this.popupParames.data.type_code + }; + if (this.popupParames.data.url && this.popupParames.data.url.indexOf("viewlet=") > 0) { + var url_ = this.popupParames.data.url.split("viewlet=") + var url_parame_ = url_[1].split("&") + + if (url_parame_[1] && url_parame_[1] == "op=write") { + this.popupParames.data.reporttype = "write" + } + else if (url_parame_[1] && url_parame_[1] == "op=view") { + this.popupParames.data.reporttype = "view" + } + else { + this.popupParames.data.reporttype = "" + } + this.popupParames.data.url = url_parame_[0] + } this.formData = clone(this.popupParames.data); } } @@ -157,8 +190,13 @@ } formFields_.push(clone(f)); }) - var page_url = {isshow: "T", field: "url", name: "璺緞", type: "input", required: true} - formFields_.push(clone(page_url)); + // if (!me.isAddMenu) { + // var page_url = {isshow: "T", field: "url", name: "璺緞", type: "input", required: true, placeholder: "濡傦細patch_report/DMS_index_mysql.frm", appendix: "鎶ヨ〃涓殑鍙傛暟鍖呭惈actor锛堣鑹茬被鍨婳rg/Business/Sales/Customer/Admin锛夈�乼arget_id锛堥攢鍞矖浣岻D/DMS寮�鎴稩D锛夈�乧ompany_id銆乥u_id", isvalexplain_br: true} + // var page_reporttype = {isshow: "T", field: "reporttype", name: "绫诲瀷", type: "radio", options: [{code: "", value: "棰勮"}, {code: "write", value: "濉姤"},{code: "view", value: "鍒嗘瀽"}]} + // formFields_.push(clone(page_url)); + // formFields_.push(clone(page_reporttype)); + // } + if (!me.formFields || (me.formFields && me.formFields.length == 0)) { me.formFields = clone(formFields_); @@ -269,11 +307,12 @@ var me = this; if (this.pageid) { var entity_ = clone(this.formData); + var entity = { id: this.pageid, code: this.pageid, title: entity_.title, - url: "module/report/page/report_iframe.html?viewlet=" + entity_.url, + url: entity_.url ? entity_.url : "module/model/model_iframe.html", is_active: "T" }; @@ -298,12 +337,13 @@ var me = this; var entity_ = clone(this.formData); var entity = { - parent_id: this.parent_menuobj.id, - type_code: this.parent_menuobj.type_code, - page_id: this.pageid, + parent_id: this.parent_menuobj.id || null, + type_code: this.parent_menuobj.type_code || "Z", + open_type: "arrange", + page_id: this.pageid || null, title: entity_.title, icon: entity_.icon, - order_no: this.parent_menuobj.children.length + 1, + order_no: entity_.order_no ? entity_.order_no : (this.parent_menuobj.children ? this.parent_menuobj.children.length + 1 : 1), }; if (entity_.id) { @@ -317,6 +357,26 @@ param.data[this.dataname] = entity; Server.call("root/data/saveEntity", param, function(result) { console.log(result); + if (me.pageid) { + me.onRefreshCacheByPageId(me.pageid); + } + else { + Root.message({ + type: 'success', + message: '淇濆瓨鎴愬姛' + }); + me.saveAfter(); + } + }); + }, + + // 鍒锋柊缂撳瓨 + onRefreshCacheByPageId(PageId) { + var me = this; + let param_ = { + page_id: PageId + } + Server.call("root/system/reloadMenuByPage", param_, function(result) { if (result.success) { let param_ = { dataname: "sys_menu", @@ -334,7 +394,6 @@ } }); }, - } }); diff --git a/module/config/page/sys_menu_add_report.html b/module/config/page/sys_menu_add_report.html new file mode 100644 index 0000000..664da66 --- /dev/null +++ b/module/config/page/sys_menu_add_report.html @@ -0,0 +1,465 @@ +<!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 FormVue({ + el: "#vbody", + data: { + dataname: "sys_menu", + title: "鏂板鑿滃崟", + formAttr: { + istitle: false, + title: "", + columnnumber: 1, + labelwidth: "70px", + labelposition: "left", + size: "medium", + border: "10px solid #c6c6c600" + }, + + formFields: [], + newformData: { + //id: uuid_short(), + // code: createCode("BA"), + }, + formData: { + title: "", + }, + + dataRequest: [ + { + name: "sys_menunotpage", + dataname: "sys_menu", + filter: " page_id is null", + isnotoption: false, //true:涓嶆槸閫夐」 + code:"id",//鏄笅鎷夐�夐」鏃惰缃� + label:"name",//鏄笅鎷夐�夐」鏃惰缃� + }, + + ], + dataRequestObj: {}, + options_menumap: {}, + options_menutree: [], + + //鎸夐敭鏉冮檺璁剧疆 + isedit: false,//鎻愪氦鍓嶇紪杈戯紝淇濆瓨/鎻愪氦 + isrefuseedit: false,//鎷掔粷鍚庣紪杈戯紝淇濆瓨/鍐嶆鎻愪氦 + isapproval: false,//瀹℃壒锛屽悓鎰�/鎷掔粷/杞姙/閫�鍥� + iscommit: false,//鎻愪氦鏍囪 + + //寮圭獥鍙傛暟 + popupParames: {}, + //瀛楁璁剧疆 + tablefieldClick: {}, + formfieldClick: {}, + + pageid: "", // 鏂伴〉闈d + parent_menuobj: {}, // 鐖剁骇鑿滃崟 + + isAddMenu: false, // 浠呮坊鍔犱竴涓彍鍗� + treeoptions: [] + }, + 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.data) { + if (this.popupParames.sceneCode) { + if (this.popupParames.sceneCode == 'addmenu') { + this.isAddMenu = true; + this.parent_menuobj = this.popupParames.data; + if (this.parent_menuobj && this.parent_menuobj.id) { + this.formData.parent_id = this.parent_menuobj.id + } + } + else if (this.popupParames.sceneCode == 'add') { + this.parent_menuobj = this.popupParames.data; + this.pageid = createCode("R_"); + this.formData.parent_id = this.popupParames.data.id; + } + else if (this.popupParames.sceneCode == 'edit') { + this.pageid = this.popupParames.data.page_id; + + this.parent_menuobj = { + id: this.popupParames.data.parent_id, + type_code: this.popupParames.data.type_code + }; + if (this.popupParames.data.url && this.popupParames.data.url.indexOf("viewlet=") > 0) { + var url_ = this.popupParames.data.url.split("viewlet=") + var url_parame_ = url_[1].split("&") + + if (url_parame_[1] && url_parame_[1] == "op=write") { + this.popupParames.data.reporttype = "write" + } + else if (url_parame_[1] && url_parame_[1] == "op=view") { + this.popupParames.data.reporttype = "view" + } + else { + this.popupParames.data.reporttype = "" + } + this.popupParames.data.url = url_parame_[0] + } + this.formData = clone(this.popupParames.data); + } + } + } + }, + + mounted() { + var me = this; + //棰勫姞杞芥暟鎹� + if (this.dataRequest && this.dataRequest.length) { + var result = {}; + this.loadRequestData(this.dataRequest, result, function(data) { + me.dataRequestObj = data; + //棰勫姞杞芥暟鎹悗缁欏摢浜涘瓧娈佃缃畂ptions鎴杅ormatterjson + var sys_menunotpage_ = clone(data.sys_menunotpage); + sys_menunotpage_.map(m=>{ + me.options_menumap[m.id] = m; + }) + var sys_menunotpagetree = ArrayToTree(clone(sys_menunotpage_), "title", "parent_id"); + me.options_menutree = clone(sys_menunotpagetree); + + me.initData(); + }); + } + else { + this.initData(); + } + + }, + + 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; + var id_ = null; + if (this.formData.id) { + id_ = this.formData.id; + } + this.getRowDataById(id_, function(result) { //鏌ヨ鍚庣殑鍥炶皟锛岀敤浜庤幏鍙栧瓧娈电殑 + if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) { + var metas = clone(result.meta[me.dataname].fields); + var formFields_ = []; + + metas.map(f=>{ + f.isshow = "T"; + if (f.field == "parent_id") { + // f.notshowalllevels = true; + f.props = {value: "id", label: "title", checkStrictly: true}; + f.options = me.options_menutree; + } + formFields_.push(clone(f)); + }) + if (!me.isAddMenu) { + var page_url = {isshow: "T", field: "url", name: "璺緞", type: "input", required: true, placeholder: "濡傦細patch_report/DMS_index_mysql.frm", appendix: "鎶ヨ〃涓殑鍙傛暟鍖呭惈actor锛堣鑹茬被鍨婳rg/Business/Sales/Customer/Admin锛夈�乼arget_id锛堥攢鍞矖浣岻D/DMS寮�鎴稩D锛夈�乧ompany_id銆乥u_id", isvalexplain_br: true} + var page_reporttype = {isshow: "T", field: "reporttype", name: "绫诲瀷", type: "radio", options: [{code: "", value: "棰勮"}, {code: "write", value: "濉姤"},{code: "view", value: "鍒嗘瀽"}]} + formFields_.push(clone(page_url)); + formFields_.push(clone(page_reporttype)); + } + + if (!me.formFields || (me.formFields && me.formFields.length == 0)) { + me.formFields = clone(formFields_); + + //璁剧疆瀛楁浜嬩欢 + me.tableFieldClick(); + + // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + me.$nextTick(() => { + hideLoading(); + + //閲嶆柊璁剧疆寮圭獥瀹介珮 + me.$nextTick(function(){ + let w_ = me.$refs.popup_body.offsetWidth + "px"; + w_ = "900px"; + let h_ = me.$refs.popup_body.offsetHeight + "px"; + Root.setPopupWH(w_, h_); + }) + }); + } + } + + }) + }, + + tableFieldClick() { + var me = this; + //琛ㄥ崟瀛楁浜嬩欢璁剧疆 + this.formfieldClick = { + icon: { + popup: { + onclick: function(obj) {//寮圭獥鐐瑰嚮浜嬩欢 + //鎵撳紑 + me.open_iconlist() + } + }, + }, + page_id: { + popup: { + onclick: function(obj) {//寮圭獥鐐瑰嚮浜嬩欢 + //鎵撳紑 + me.open_pagelist() + } + }, + }, + }; + }, + + open_iconlist() { + var me = this; + var config = { + totab: false, //true: 浠ab瀵艰埅鐨勬柟寮忔墦寮� + width: "900px", + height: "900px", + icon: "icon-product", + text: "鍥炬爣閫夋嫨寮圭獥", + id: "popup_iconfont",//totab: true鏃堕渶璁剧疆锛岀敤浜庡垽鏂槸鍚﹀凡鎵撳紑姝ら〉闈� + url: "module/tool/page/popup_iconfont.html", + data: {}, + delta: {pageobj: me.selectTabObj}, + sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + let formData_ = clone(me.formData); + formData_.icon = obj.icon; + me.formData = formData_; + + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + + open_pagelist() { + var me = this; + var config = { + totab: false, //true: 浠ab瀵艰埅鐨勬柟寮忔墦寮� + width: "900px", + height: "900px", + icon: "icon-product", + text: "瀵瑰簲椤甸潰淇℃伅", + id: "popup_page",//totab: true鏃堕渶璁剧疆锛岀敤浜庡垽鏂槸鍚﹀凡鎵撳紑姝ら〉闈� + url: "module/config/page/popup_page.html", + data: {}, + delta: {}, + sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + let formData_ = clone(me.formData); + formData_.page_id = obj.row.id; + me.formData = formData_; + + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + + //鎻愪氦 + submitRowTable() { + this.iscommit = true; + this.saveRowTable(); + }, + + // 淇濆瓨椤甸潰 + saveRowTable() { + var me = this; + if (this.pageid) { + var entity_ = clone(this.formData); + + if (entity_.reporttype && entity_.reporttype == "write") { + entity_.url += "&op=write" + } + else if (entity_.reporttype && entity_.reporttype == "view") { + entity_.url += "&op=view" + } + + var entity = { + id: this.pageid, + code: this.pageid, + title: entity_.title, + url: "module/report/page/report_iframe.html?viewlet=" + entity_.url, + is_active: "T" + }; + + let param = { + dataname: "sys_page", + data: {}, + } + param.data["sys_page"] = entity; + Server.call("root/data/saveEntity", param, function(result) { + console.log(result); + if (result.success) { + me.doSaveRowTable(); + } + }) + } + else { + this.doSaveRowTable() + } + }, + //淇濆瓨鑿滃崟 + doSaveRowTable() { + var me = this; + var entity_ = clone(this.formData); + var entity = { + parent_id: this.parent_menuobj.id || null, + type_code: this.parent_menuobj.type_code || "Z", + page_id: this.pageid || null, + title: entity_.title, + icon: entity_.icon, + order_no: entity_.order_no ? entity_.order_no : (this.parent_menuobj.children ? this.parent_menuobj.children.length + 1 : 1), + }; + + if (entity_.id) { + entity.id = entity_.id + } + + let param = { + dataname: this.dataname, + data: {}, + } + param.data[this.dataname] = entity; + Server.call("root/data/saveEntity", param, function(result) { + console.log(result); + if (me.pageid) { + me.onRefreshCacheByPageId(me.pageid); + } + else { + Root.message({ + type: 'success', + message: '淇濆瓨鎴愬姛' + }); + me.saveAfter(); + } + }); + }, + + // 鍒锋柊缂撳瓨 + onRefreshCacheByPageId(PageId) { + var me = this; + let param_ = { + page_id: PageId + } + Server.call("root/system/reloadMenuByPage", param_, function(result) { + if (result.success) { + let param_ = { + dataname: "sys_menu", + filter: "page_id is null", + } + Server.call("root/data/getEntitySet", param_, function(result2){ + let agm_category_ = ArrayToTree(clone(result2.data.entityset), "title", "parent_id"); + me.options_menutree = agm_category_; + Root.message({ + type: 'success', + message: '淇濆瓨鎴愬姛' + }); + me.saveAfter(); + }); + } + }); + }, + + } + }); + }; + + loadJsCss(function () { + initVue(); + }); + </script> + <style> + /* 鍦╲ue.js涓� v-cloak 杩欎釜鎸囦护鏄槻姝㈤〉闈㈠姞杞芥椂鍑虹幇 vuejs 鐨勫彉閲忓悕鑰岃璁$殑 */ + [v-cloak] { + display: none !important; + } + </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> {{title}}</span> + </div> + </div> + <div style="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> + </div> + </div> + <div class="el-dialog__footer"> + <el-button size="small" type="default" @click="closeDialog">鍙� 娑�</el-button> + <el-button size="small" type="primary" @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button> + <!-- <el-button size="small" v-if="isedit" type="success" @click="submitRowTable":icon="buttonsconfig.submit.icon">{{buttonsconfig.submit.name}}</el-button> --> + <!-- <el-button size="small" v-if="isrefuseedit" type="success" @click="">鍐嶆鎻愪氦</el-button> + + <el-button size="small" v-if="isapproval" type="primary" @click="">閫� 杩�</el-button> + <el-button size="small" v-if="isapproval" type="success" @click="">鎷� 缁�</el-button> + <el-button size="small" v-if="isapproval" type="primary" @click="">杞� 鍔�</el-button> + <el-button size="small" v-if="isapproval" type="success" @click="">閫� 鍥�</el-button> --> + </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> diff --git a/module/config/page/sys_menu_edit.html b/module/config/page/sys_menu_edit.html new file mode 100644 index 0000000..72bbaf7 --- /dev/null +++ b/module/config/page/sys_menu_edit.html @@ -0,0 +1,823 @@ +<!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 TreeVue({ + el: "#vbody", + data: { + dataname: "sys_menu", + title: "鑿滃崟绠$悊", + tree_title: "鑿滃崟绠$悊", + treeTxtFormatter: "{title}", + isTreeReadonly: false, + + form_dataname: "sys_menu", + // formAttr: {}, + formFields: [], + formData: { + parent_id: [] + }, + formfieldClick: {}, + defaultexpandedkeys: [], + currentnodekey: "", + + dataRequest: [ + { + name: "sys_menunotpage", + dataname: "sys_menu", + filter: " page_id is null", + isnotoption: false, //true:涓嶆槸閫夐」 + code:"id",//鏄笅鎷夐�夐」鏃惰缃� + label:"name",//鏄笅鎷夐�夐」鏃惰缃� + }, + { + name: "sys_model", + dataname: "sys_model", + filter: "", + isnotoption: false, //true:涓嶆槸閫夐」 + code:"id",//鏄笅鎷夐�夐」鏃惰缃� + label:"name",//鏄笅鎷夐�夐」鏃惰缃� + }, + ], + dataRequestObj: {}, + options_menutree: [], + options_menumap: {}, + options_model: [], + options_buttons: [], + pagebuttonmap: {}, + + pagesize_p: 10, + pagenum_p: 1, + total_p: 0, + tableData_p: [], + isRefresh_p: true, + tableHeight_p: 100, + + selectNodeData: {}, + page_metas: [ + {isshow: "T", field: "parent_id", labelchinese: "鑿滃崟璺緞", inputtype: "cascader", optionsgroup: "", group_name: "鑿滃崟淇℃伅"}, + {isshow: "T", field: "title", labelchinese: "鑿滃崟鍚嶇О", inputtype: "", optionsgroup: "", group_name: "鑿滃崟淇℃伅"}, + {isshow: "T", field: "icon", labelchinese: "鑿滃崟鍥炬爣", inputtype: "popup", optionsgroup: "", group_name: "鑿滃崟淇℃伅"}, + {isshow: "T", field: "url", labelchinese: "鍦板潃", inputtype: "", optionsgroup: "", group_name: "鑿滃崟淇℃伅"}, + + {isshow: "T", field: "model_id", labelchinese: "妯″瀷閫夋嫨", inputtype: "select", optionsgroup: "", colspan: 2, group_name: "椤甸潰閰嶇疆"}, + {isshow: "T", field: "page_title", labelchinese: "椤甸潰鏍囬", inputtype: "", optionsgroup: "", group_name: "椤甸潰閰嶇疆"}, + {isshow: "T", field: "dataname", labelchinese: "鏁版嵁瀵硅薄", inputtype: "", optionsgroup: "", group_name: "椤甸潰閰嶇疆"}, + {isshow: "T", field: "buttons", labelchinese: "閫夋嫨鍔熻兘", inputtype: "checkboxobj", optionsgroup: "", group_name: "椤甸潰閰嶇疆"}, + ], + + tableFields_table: [ + {isshow: "T", field: "field", labelchinese: "瀛楁", width: "130", isfixed: "left", align: "left"}, + {isshow: "T", field: "labelchinese", labelchinese: "涓枃鍚嶇О",inputtype: "input", width: "130", isfixed: "left"}, + {isshow: "T", field: "is_list", labelchinese: "鏄惁鏄剧ず",inputtype: "ischeckbox"}, + {isshow: "T", field: "isfilter", labelchinese: "鏄惁鏌ヨ",inputtype: "ischeckbox"}, + {isshow: "T", field: "list_order_no", labelchinese: "椤哄簭",inputtype: "number"}, + {isshow: "T", field: "width", labelchinese: "瀹藉害",inputtype: "input"}, + {isshow: "T", field: "isminwidth", labelchinese: "鏄惁鏈�灏忓搴�",inputtype: "ischeckbox", width: "100"}, + {isshow: "T", field: "formatter", labelchinese: "鏍煎紡鍖�",inputtype: "select", optionsgroup: "formatterEvent", width: "150"}, + {isshow: "T", field: "formatpattern", labelchinese: "鏍煎紡鍖栧弬鏁�",inputtype: "input", width: "150"}, + {isshow: "T", field: "align", labelchinese: "瀵归綈鏂瑰紡",inputtype: "select", optionsgroup: "dataAlign", width: "150"}, + {isshow: "F", field: "last_update_time", labelchinese: "鏇存柊鏃堕棿"}, + {isshow: "T", field: "tablegroupname", labelchinese: "琛ㄥご鍒嗙粍鍚�",inputtype: "input"}, + + ], + tableFields_form: [ + {isshow: "T", field: "field", labelchinese: "瀛楁", width: "130", isfixed: "left", align: "left"}, + {isshow: "T", field: "labelchinese", labelchinese: "涓枃鍚嶇О",inputtype: "input", width: "130", isfixed: "left"}, + {isshow: "T", field: "is_form", labelchinese: "鏄惁鏄剧ず", inputtype: "ischeckbox"}, + {isshow: "T", field: "inputtype", labelchinese: "杈撳叆绫诲瀷", inputtype: "select", optionsgroup: "inputType", width: "150"}, + {isshow: "T", field: "optionsgroup", labelchinese: "閫夐」瀛楀吀", inputtype: "select", optionsgroup: "dictionary"}, + {isshow: "T", field: "list_order_no", labelchinese: "椤哄簭",inputtype: "number"}, + {isshow: "T", field: "required", labelchinese: "鏄惁蹇呭~",inputtype: "ischeckbox"}, + {isshow: "T", field: "colspan", labelchinese: "鍚堝苟鍒楁暟",inputtype: "input"}, + {isshow: "T", field: "formatter", labelchinese: "鏍煎紡鍖�",inputtype: "select", optionsgroup: "formatterEvent", width: "150"}, + {isshow: "T", field: "formatpattern", labelchinese: "鏍煎紡鍖栧弬鏁�",inputtype: "input", width: "150"}, + {isshow: "F", field: "last_update_time", labelchinese: "鏇存柊鏃堕棿"}, + {isshow: "T", field: "group_name", labelchinese: "琛ㄥご鍒嗙粍鍚�"}, + ], + tableFields: [], + tableData: [], + tableHeight: 500, + tablefieldClick: {}, + tablebuttonClick: [], + tableloading: false, + scene_type: "" + }, + created() { + let clientHeight = document.documentElement.clientHeight; + this.tableHeight = clientHeight - 250 - 32; + + }, + + mounted() { + var me = this; + //棰勫姞杞芥暟鎹� + if (this.dataRequest.length) { + var result = {}; + this.loadRequestData(this.dataRequest, result, function(data) { + me.dataRequestObj = data; + //棰勫姞杞芥暟鎹悗缁欏摢浜涘瓧娈佃缃畂ptions鎴杅ormatterjson + if (me.dataRequestObj.sys_menunotpage) { + var sys_menunotpage_ = clone(me.dataRequestObj.sys_menunotpage); + sys_menunotpage_.map(m=>{ + me.options_menumap[m.id] = m; + }) + var sys_menunotpagetree = ArrayToTree(clone(sys_menunotpage_), "title", "parent_id"); + me.options_menutree = clone(sys_menunotpagetree); + } + if (me.dataRequestObj.sys_model) { + var sys_model_ = clone(me.dataRequestObj.sys_model); + me.options_model = clone(sys_model_); + } + + + me.initData(); + }); + } + else { + this.initData(); + } + this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + hideLoading(); + this.treeHeight = document.documentElement.clientHeight - 20; + }); + }, + + methods:{ + initData() { + var me = this; + this.getMenuAll(); + this.getPageMeta(); + }, + + //鎷垮埌宸﹁竟鏍� + getMenuAll() { + var me = this; + var param_ = {} + me.treeData = []; + Server.call("root/client/getMenuTreeAll", param_, function(result) { + //閬嶅巻鏍戞暟鎹紝灏嗘牴鑺傜偣鐨刾age_id璁剧疆涓篿d + var menus_tree = clone(result.data.menus); + // var menus_tree2 = clone(result.data.menus); + me.menuToPageTree(menus_tree); + me.treeData = clone(menus_tree); + var row = me.treeData[0]; + // me.$refs.table1.setCurrentRow(row) + me.selectNodeData = clone(row); + me.formData = row; + me.isRefresh = false; + me.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + me.defaultexpandedkeys = [me.formData.id]; + me.currentnodekey = me.formData.id; + me.isRefresh = true + }); + }) + }, + + menuToPageTree(oldmenus) { + var me = this; + oldmenus.map(om=>{ + if (om.id && om.open_type && om.open_type == "arrange") { + om.isnot_nodeadd = true; // 鑺傜偣涓嶅彲鏂板 + } + else if (om.id && !om.page_id) { + // om.isnot_nodeadd = true; // 鑺傜偣涓嶅彲鏂板 + om.isnot_nodeedit = true; // 鑺傜偣涓嶅彲鏀� + om.isnot_nodedel = true; // 鑺傜偣涓嶅彲鍒� + } + else { + om.isnotnode_edit = true; // 鑺傜偣涓嶅彲澧炲垹鏀� + } + if (om.children) { + me.menuToPageTree(om.children); + } + else if (om.menu_id) { + om.id = om.menu_id + } + }) + }, + + //鎷垮埌鍙宠竟鐨勫瓧娈� + getPageMeta() { + var me = this; + var metas = clone(me.page_metas); + var formFields_ = []; + /* + page_metas: [ + {isshow: "T", field: "title", labelchinese: "鑿滃崟鍚嶇О", inputtype: "", optionsgroup: "", group_name: "鑿滃崟淇℃伅"}, + {isshow: "T", field: "url", labelchinese: "璺緞", inputtype: "", optionsgroup: "", group_name: "鑿滃崟淇℃伅"}, + + {isshow: "T", field: "model_id", labelchinese: "妯″瀷閫夋嫨", inputtype: "select", optionsgroup: "", colspan: 2, group_name: "椤甸潰閰嶇疆"}, + {isshow: "T", field: "page_title", labelchinese: "椤甸潰鏍囬", inputtype: "", optionsgroup: "", group_name: "椤甸潰閰嶇疆"}, + {isshow: "T", field: "dataname", labelchinese: "鏁版嵁瀵硅薄", inputtype: "", optionsgroup: "", group_name: "椤甸潰閰嶇疆"}, + {isshow: "T", field: "buttons", labelchinese: "閫夋嫨鍔熻兘", inputtype: "checkbox", optionsgroup: "", group_name: "椤甸潰閰嶇疆"}, + ] + */ + metas.map(f=>{ + f.isshow = "T"; + if (f.field == "parent_id") { + f.props = {value: "id", label: "title", checkStrictly: true}; + f.options = me.options_menutree; + } + if (f.field == "model_id") { + // f.props = {value: "id", label: "title", checkStrictly: true}; + f.options = me.options_model; + } + if (f.field == "buttons") { + f.options = clone(me.options_buttons); + } + + formFields_.push(clone(f)); + }) + // if (!me.formFields || (me.formFields && me.formFields.length == 0)) { + me.formFields = clone(formFields_); + // } + me.formFieldClick(); + }, + getPageData(page_id) { + var me = this; + // 鑾峰彇椤甸潰瀵瑰簲妯″瀷 + this.getPageData_model(page_id, function(pagemodel) { + if (pagemodel && pagemodel.model_id) { + var formData_ = clone(me.formData); + formData_.model_id = pagemodel.model_id + formData_.page_title = pagemodel.title + formData_.dataname = pagemodel.dataname + formData_.buttons = [] + + me.formData = clone(formData_); + me.scene_type = pagemodel.sys_model__scene_type; + // 鑾峰彇椤甸潰dataname瀵瑰簲瀛楁 + me.getModelButtons(formData_.model_id, function(modelbuttons){ + me.options_buttons = clone(modelbuttons) + me.getPageMeta(); + }); + if (formData_.dataname) { + me.getTableData(formData_.dataname, pagemodel.sys_model__scene_type); + } + else { + me.tableFields = []; + me.tableData = []; + } + } + else { + var formData_ = clone(me.formData); + formData_.model_id = "" + formData_.page_title = "" + formData_.dataname = "" + formData_.buttons = [] + + me.formData = clone(formData_); + me.options_buttons = [] + me.getPageMeta(); + me.tableFields = []; + me.tableData = []; + } + + }); + // 鑾峰彇椤甸潰鎸夐敭 + me.getPageButtons(page_id); + }, + getPageButtons(page_id) { + var me = this; + let param_ = { + dataname: "sys_page_button",//鑾峰彇缁忛攢鍟嗗搴旀敹璐у湴鍧� + filter:"sys_page_button.page_id='" + page_id + "'", + } + Server.call("root/data/getEntitySet", param_, function(result) { + var pagebuttons = [] + var pagebuttonmap = {} + if (result && result.data && result.data.entityset && result.data.entityset.length) { + result.data.entityset.map(r=>{ + if (!pagebuttonmap[page_id]) { + pagebuttonmap[page_id] = {} + } + pagebuttonmap[page_id][r.code] = r.id; + + pagebuttons.push(r.code) + }) + + me.pagebuttonmap = clone(pagebuttonmap); + var formData_ = clone(me.formData) + formData_.buttons = pagebuttons + me.formData = clone(formData_); + } + }); + }, + + getPageData_model(page_id, callback) { + var me = this; + let param_ = { + dataname: "sys_page_model",//鑾峰彇缁忛攢鍟嗗搴旀敹璐у湴鍧� + filter:"sys_page_model.page_id='" + page_id + "'", + } + Server.call("root/data/getEntitySet", param_, function(result) { + var pagemodel = {} + if (result && result.data && result.data.entityset && result.data.entityset.length) { + pagemodel = result.data.entityset[0] + } + + callback(pagemodel); + }); + }, + + getModelButtons(model_id, callback) { + var me = this; + let param_ = { + dataname: "sys_model_parameter",//鑾峰彇缁忛攢鍟嗗搴旀敹璐у湴鍧� + filter:"model_id='" + model_id + "' and parameter_type='button'", + } + Server.call("root/data/getEntitySet", param_, function(result) { + var modelbuttons = [] + if (result && result.data && result.data.entityset && result.data.entityset.length) { + result.data.entityset.map(r=>{ + let b_ = { + code: r.parameter_code, + value: r.parameter_name, + } + modelbuttons.push(b_) + }) + } + + callback(modelbuttons); + }); + }, + + getTableData(dataname, scene_type) { + var me = this; + var interface_ = "getEntitySet" + if (scene_type == "table") { + interface_ = "getEntitySet" + this.tableFields = clone(this.tableFields_table) + } + else { + interface_ = "getEntity" + this.tableFields = clone(this.tableFields_form) + } + + let param_ = { + attachMeta: true, + dataname: dataname,//鑾峰彇缁忛攢鍟嗗搴旀敹璐у湴鍧� + filter: "1<>1", + } + this.tableloading = true; + Server.call("root/data/" + interface_, param_, function(result) { + me.tableloading = false; + var tableData = []; + if (result.meta[dataname] && result.meta[dataname].fields) { + tableData = result.meta[dataname].fields + } + me.tableData = clone(tableData) + }); + }, + + //鑺傜偣鐐瑰嚮锛岀粰鍙宠竟璧嬪�� + onNodeClick(obj) { + var data = obj.data, node = obj.node, el = obj.el; + var data_ = clone(data); + this.selectNodeData = clone(data); + if (data_.parent_id) { + var parent_ids_ = []; + var parent_ids = this.getParents(data_.parent_id, this.options_menumap, parent_ids_); + + data_.parent_id = parent_ids + } + this.formData = data_; + + this.options_buttons = [] + if (data_.open_type == "arrange" && this.selectNodeData.page_id) { + this.getPageData(this.selectNodeData.page_id); + } + else { + this.getPageMeta(); + } + }, + + //鎷垮埌鎵�鏈夌殑鐖惰妭鐐筰d + getParents(id, treemap, list) { + list.unshift(id); + if (treemap[id].parent_id) { + this.getParents(treemap[id].parent_id, treemap, list) + } + else { + return list; + } + }, + + //鏂板鑺傜偣 + onAddNode(obj) { + var data = obj.data, node = obj.node; + let me = this; + var config = { + totab: false, //true: 浠ab瀵艰埅鐨勬柟寮忔墦寮� + width: "900px", + height: "340px", + icon: "icon-product", + text: "鑿滃崟鏂板", + id: "sys_menu_add",//totab: true鏃堕渶璁剧疆锛岀敤浜庡垽鏂槸鍚﹀凡鎵撳紑姝ら〉闈� + url: "module/config/page/sys_menu_add.html", + data: data, + delta: {}, + sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + me.getMenuAll(); + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + + //缂栬緫鑺傜偣 + onEditNode(obj) { + var data = obj.data, node = obj.node; + var me = this; + Root.showPopup({ + url: "module/config/page/sys_menu_add.html", + width: "900px", + height: "340px", + text: "鑿滃崟缂栬緫", + data: data, + sceneCode: "edit", + callback: function(options_obj, callback) { + me.getMenuAll(); + if (callback) { + callback(); + } + } + }); + }, + + //鍒犻櫎鑺傜偣 + onDelNode(obj) { + var data = obj.data, node = obj.node; + let me = this; + Root.confirm('纭畾鍒犻櫎-' + data.title + '-鍚楋紵', '鍒犻櫎鎻愮ず', { + confirmButtonText: '鍒犻櫎', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + me.dodeldata(data, node, "sys_menu"); + }).catch(() => { + Root.message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + dodeldata(row, node, tablename) { + var me = this; + 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); + + let param_ = { + dataname: "sys_menu", + filter: "page_id is null", + } + Server.call("root/data/getEntitySet", param_, function(result2){ + let agm_category_ = ArrayToTree(clone(result2.data.entityset), "title", "parent_id"); + me.treeData = agm_category_; + me.getMenuAll(); + Root.message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + }); + } + }); + } + }, + + formFieldClick() { + var me = this; + //琛ㄥ崟瀛楁浜嬩欢璁剧疆 + this.formfieldClick = { + icon: { + popup: { + onclick: function(obj) {//寮圭獥鐐瑰嚮浜嬩欢 + //鎵撳紑 + me.open_iconlist() + } + }, + }, + page_id: { + popup: { + onclick: function(obj) {//寮圭獥鐐瑰嚮浜嬩欢 + //鎵撳紑 + me.open_pagelist() + } + }, + }, + + model_id: { + select: { + onchange: function(obj,refreshCallback) {//涓嬫媺灞曞紑浜嬩欢 + console.log("model_id 閫夋嫨"); + var value = obj.selectoption.value; + me.scene_type = obj.selectoption.scene_type; + var formData_ = clone(me.formData); + + me.formData = clone(formData_); + if (me.formData.model_id) { + me.getModelButtons(me.formData.model_id, function(modelbuttons){ + me.options_buttons = clone(modelbuttons) + me.getPageMeta(); + }); + if (me.formData.dataname && me.scene_type) { + me.getTableData(me.formData.dataname, me.scene_type); + } + } + else { + me.options_buttons = [] + me.getPageMeta(); + } + + }, + } + }, + dataname: { + input: { + onchange: function(obj,refreshCallback) {//涓嬫媺灞曞紑浜嬩欢 + if (me.formData.dataname && me.scene_type) { + me.getTableData(me.formData.dataname, me.scene_type); + } + else { + me.tableFields = []; + me.tableData = []; + } + }, + } + } + }; + }, + + open_iconlist() { + var me = this; + var config = { + totab: false, //true: 浠ab瀵艰埅鐨勬柟寮忔墦寮� + width: "900px", + height: "900px", + icon: "icon-product", + text: "鍥炬爣", + id: "popup_iconfont",//totab: true鏃堕渶璁剧疆锛岀敤浜庡垽鏂槸鍚﹀凡鎵撳紑姝ら〉闈� + url: "module/tool/page/popup_iconfont.html", + data: {}, + delta: {pageobj: me.selectTabObj}, + sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + let formData_ = clone(me.formData); + formData_.icon = obj.icon; + me.formData = formData_; + + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + + open_pagelist() { + var me = this; + var config = { + totab: false, //true: 浠ab瀵艰埅鐨勬柟寮忔墦寮� + width: "900px", + height: "900px", + icon: "icon-product", + text: "椤甸潰璇︽儏", + id: "popup_page",//totab: true鏃堕渶璁剧疆锛岀敤浜庡垽鏂槸鍚﹀凡鎵撳紑姝ら〉闈� + url: "module/config/page/popup_page.html", + data: {}, + delta: {}, + sceneCode: "add",//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + let formData_ = clone(me.formData); + formData_.page_id = obj.row.id; + me.formData = formData_; + + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + + //鏂板鑿滃崟锛屾病鎳傚拰鏂板鑺傜偣鏈変粈涔堝尯鍒� + onAddData() { + var data = clone(this.selectNodeData); + var me = this; + var config = { + totab: false, //true: 浠ab瀵艰埅鐨勬柟寮忔墦寮� + width: "900px", + height: "340px", + icon: "icon-product", + text: "鑿滃崟鏂板", + id: "sys_menu_add",//totab: true鏃堕渶璁剧疆锛岀敤浜庡垽鏂槸鍚﹀凡鎵撳紑姝ら〉闈� + url: "module/config/page/sys_menu_add.html", + data: data, + delta: {}, + sceneCode: "addmenu",//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + me.getMenuAll(); + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + + saveRowTable() { + var me = this; + var operator_ = "save";//淇濆瓨 + + var entity_ = clone(this.formData); + var entity = {}; + for (var r in entity_) { + if (r == "parent_id") { + if (entity_[r] && entity_[r].length) { + entity[r] = entity_[r][entity_[r].length - 1]; + } + else { + entity[r] = null; + } + } + else if (entity_[r] || entity_[r] == "" || entity_[r] == false || entity_[r] == 0) { + entity[r] = entity_[r]; + } + } + + let param = { + dataname: this.dataname, + // operator: operator_, + data: {}, + } + param.data[this.dataname] = entity; + + Server.call("root/data/saveEntity", param, function(result) { + console.log(result); + if (result.success) { + if (me.iscommit) { + me.iscommit = false; + Root.message({ + type: 'success', + message: '鎻愪氦鎴愬姛' + }); + } + else { + Root.message({ + type: 'success', + message: '淇濆瓨鎴愬姛' + }); + } + } + + me.getMenuAll(); + }); + }, + + node_isShow(data, isShow) { + if (this.$refs[data.id]) { + this.$refs[data.id].style.display = isShow ? '' : 'none'; + } + }, + } + }); + }; + + loadJsCss(function () { + initVue(); + }); + </script> + <style> + /* 鍦╲ue.js涓� v-cloak 杩欎釜鎸囦护鏄槻姝㈤〉闈㈠姞杞芥椂鍑虹幇 vuejs 鐨勫彉閲忓悕鑰岃璁$殑 */ + [v-cloak] { + display: none !important; + } + .el-tabs__nav-scroll { + overflow: hidden; + position: relative; + padding-left: 20px; + } + </style> + + </head> + + <body style="margin: 0px; position: absolute; top: 0px; bottom: 0px; width: 100%;"> + <div v-cloak id="vbody" style="height: 100%; width: 100%;"> + <div id="page_root" style="height: 100%; width: 100%;"> + <div class="h_dialog__body" style="height: 100%; width: 100%;"> + <div :style="{position: 'absolute', top: '10px', left: '10px', width: '320px', height: treeHeight + 'px', 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 style="float: right; margin-right: 18px"> + <el-button-group style="margin-left: 3px"> + <el-button @click="addData">娣诲姞鑿滃崟</el-button> + </el-button-group> + </div> + + </div> + <div :style="{padding: '10px 0', height: treeHeight - 60 + 'px', overflow: 'auto'}"> + <h-tree + v-if="isRefresh" + :tree-data="treeData" + :tree-txt-formatter="treeTxtFormatter" + :is-readonly="isTreeReadonly" + :default-expanded-keys="defaultexpandedkeys" + :currentnodekey="currentnodekey" + :default-expand-all="false" + + @node-click="onNodeClick" + @add-node="onAddNode" + @edit-node="onEditNode" + @del-node="onDelNode" + > + </h-tree> + </div> + </div> + <div :style="{position: 'absolute', top: '10px', left: '340px', right: '10px', height: treeHeight + 'px', border: '1px solid #ccc'}"> + <div> + <div style="height: 32px;line-height: 32px;border-bottom: 1px solid #ccc ;"> + <span style="font-size: 14px;margin-left: 20px;">椤甸潰璇︽儏</span> + + <!-- 宸ュ叿鏍� --> + <div style="float: right; margin-right: 18px"> + <el-button-group style="margin-left: 3px"> + <el-button @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button> + </el-button-group> + </div> + </div> + + <div style="margin: 16px;"> + <h-form + ref="form1" + :form-attr="formAttr" + :table-fields="formFields" + :form-data="formData" + :table-field-click="formfieldClick" + > + </h-form> + + <h-table + v-if="isRefresh && tableFields.length" + ref="table1" + :table-fields="tableFields" + :table-data="tableData" + :table-height="tableHeight" + :table-field-click="tablefieldClick" + :table-buttons-click="tablebuttonClick" + :is-highlight-row="true" + :tableloading="tableloading" + :is-pagination="false" + :is-within-edit-table-data="true" + + :isshowtool="false" + :isfilterfield="false" + :istablebuttons="false" + :isbasicfilterfields="false" + :isdraggableorder="false" + > + </h-table> + </div> + + </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> diff --git a/module/model/model_iframe.html b/module/model/model_iframe.html new file mode 100644 index 0000000..8a5ba66 --- /dev/null +++ b/module/model/model_iframe.html @@ -0,0 +1,172 @@ +<!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 vue_ = null; + var pageVue = null; + function loadJsCss(callback) { + var jscss_urls = []; + window.top.initJsCss(document, jscss_urls, callback); + }; + + function initVue() { + vue_ = new FormVue({ + el: "#vbody", + data: { + title: "妯″瀷瀹瑰櫒", + iframe_url: "", + reporturl: "", + + dataRequest: [ + { + name: "sys_model", + dataname: "sys_model", + filter: "", + isnotoption: false, //true:涓嶆槸閫夐」 + code:"id",//鏄笅鎷夐�夐」鏃惰缃� + label:"url",//鏄笅鎷夐�夐」鏃惰缃� + }, + ], + dataRequestObj: {}, + + sys_model_map: {}, + sys_page_model: {}, + + }, + created() { + if (window.top.tab.selected.option.page_id) { + let page_id = window.top.tab.selected.option.page_id; + var sys_page_model = { + name: "sys_page_model", // 椤甸潰瀵瑰簲鐨勬ā鍨� + dataname: "sys_page_model", + // url: "root/data/getEntitySet", + // paramsobj: {dataname: "sys_page_model", filter:"sys_page_model.page_id='" + page_id + "'"}, + isnotoption: true, //true:涓嶆槸閫夐」 + filter: "sys_page_model.page_id='" + page_id + "'" + } + this.dataRequest.push(sys_page_model); + } + }, + + mounted() { + var me = this; + if (this.dataRequest && this.dataRequest.length) { + var result = {}; + this.loadRequestData(this.dataRequest, result, function(data) { + me.dataRequestObj = data; + //棰勫姞杞芥暟鎹悗缁欏摢浜涘瓧娈佃缃畂ptions鎴杅ormatterjson + + if (me.dataRequestObj.sys_model) { + me.sys_model_map = me.dataRequestObj.sys_model.map.sys_model; + } + if (me.dataRequestObj.sys_page_model) { + me.sys_page_model = me.dataRequestObj.sys_page_model[0]; + } + + me.initData(); + + // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + me.$nextTick(() => { + hideLoading(); + }); + }); + } + else { + // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + this.$nextTick(() => { + hideLoading(); + me.initData(); + }); + } + + }, + + methods:{ + initData() { + if (this.sys_page_model.sys_model__url.substring(0, 18) == "module/model/page/") { + this.iframe_url = "./page/" + this.sys_page_model.sys_model__url.substring(18); + } + else { + this.iframe_url = this.sys_page_model.sys_model__url + } + }, + + getReportToken() { + var me = this; + + var param_ = ""; + if (window.top.vue.userinfo.currentactor.actor_type == "Customer") { // 缁忛攢鍟� + param_ = "&actor=" + window.top.vue.userinfo.currentactor.actor_type + "&accountId=" + window.top.vue.userinfo.currentactor.target_id + } + else if (window.top.vue.userinfo.currentactor.actor_type == "Sales") { // 閿�鍞� + param_ = "&actor=" + window.top.vue.userinfo.currentactor.actor_type + "&positionID=" + window.top.vue.userinfo.currentactor.target_id + "&level=" + window.top.vue.userinfo.position_level_field + } + else if (window.top.vue.userinfo.currentactor.actor_type == "Business" || window.top.vue.userinfo.currentactor.actor_type == "Org") { // 鍟嗗姟銆佽繍钀� + param_ = "&actor=" + window.top.vue.userinfo.currentactor.actor_type //+ "&positionID=" + window.top.vue.userinfo.currentactor.target_id + } + else if (window.top.vue.userinfo.currentactor.actor_type == "Admin") { // Admin + param_ = "&actor=" + window.top.vue.userinfo.currentactor.actor_type + } + if (param_) { + this.reporturl += param_ + } + else { + this.$message({ + message: '璇ヨ鑹叉病鏈夋姤琛ㄩ〉闈㈡潈闄�', + type: 'warning' + }); + return; + } + + var param = { + type: "get", + } + Server.call("rootreport/login/cross/domain?fine_username="+window.top.config.report_user.name+"&fine_password="+window.top.config.report_user.password+"&validity=-2", param, function(result) { + // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + me.$nextTick(() => { + hideLoading(); + }); + me.iframe_url = window.top.config.url_root + "rootreport/view/form?" + me.reporturl; + me.iframe_url = me.sys_page_model.sys_model__url + // me.iframe_url = window.top.config.url_report + "/view/form?" + me.reporturl; + }); + } + } + }); + }; + + loadJsCss(function () { + initVue(); + }); + </script> + + <style> + /* 鍦╲ue.js涓� v-cloak 杩欎釜鎸囦护鏄槻姝㈤〉闈㈠姞杞芥椂鍑虹幇 vuejs 鐨勫彉閲忓悕鑰岃璁$殑 */ + [v-cloak] { + display: none !important; + } + </style> + </head> + + <body style="position: absolute; top: 0; bottom: 0; left: 0; right: 0;"> + <div v-cloak id="vbody"> + <div id="page_root"> + <div>aaa</div> + <div style="position: absolute; top: 0px; bottom: 5px; left: 0; right: 0;"> + <iframe :src="iframe_url" style="width: 100%; height: 100%;" frameborder="0"></iframe> + </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> diff --git a/module/model/page/table_simple.html b/module/model/page/table_simple.html new file mode 100644 index 0000000..3065d34 --- /dev/null +++ b/module/model/page/table_simple.html @@ -0,0 +1,426 @@ + <!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 ListVue({ + el: "#vbody", + data: { + dataname: "", + title: "绠�鍗曞垪琛ㄦā鍨�", + orderby: "", + filterfieldClick: {}, + tablefieldClick: {}, + formfieldClick: {}, + + dataRequest: [], + dataRequestObj:{}, + + filterFields: [], + tableFields: [], + cbuttons_r: {}, // 鏉冮檺鎸夐敭 + ctabs_r: {}, + + isbasicfilterfields: true, // 瀛樺湪鏌ヨ + }, + created() { + if (window.top.tab.selected.option.page_id) { + let page_id = window.top.tab.selected.option.page_id; + var sys_page_model = { + name: "sys_page_model", // 椤甸潰瀵瑰簲鐨勬ā鍨� + dataname: "sys_page_model", + // url: "root/data/getEntitySet", + // paramsobj: {dataname: "sys_page_model", filter:"sys_page_model.page_id='" + page_id + "'"}, + isnotoption: true, //true:涓嶆槸閫夐」 + filter: "sys_page_model.page_id='" + page_id + "'" + } + this.dataRequest.push(sys_page_model); + } + }, + mounted() { + var me = this; + if (window.top.tab.selected.option.page_id) { + this.title = window.top.tab.selected.option.menutitle + getPageByPageId(window.top.tab.selected.option.page_id, function(result){ + me.cbuttons_r = result.buttons_r; + //棰勫姞杞芥暟鎹� + if (me.dataRequest && me.dataRequest.length) { + var result = {}; + me.loadRequestData(me.dataRequest, result, function(data) { + me.dataRequestObj = data; + //棰勫姞杞芥暟鎹悗缁欏摢浜涘瓧娈佃缃畂ptions鎴杅ormatterjson + if (me.dataRequestObj.sys_page_model) { + var sys_page_model = me.dataRequestObj.sys_page_model[0]; + me.dataname = sys_page_model.dataname + me.title = sys_page_model.title + } + me.initData(); + }); + } + else { + me.initData(); + } + + me.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂� + hideLoading(); + }); + }) + } + }, + methods:{ + initData() { + var me = this; + + this.onQuery(function(result, callback) {//鏌ヨ鍚庣殑鍥炶皟锛岀敤浜庤幏鍙栧瓧娈电殑 + if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) { + var metas = clone(result.meta[me.dataname].fields); + var filterFields_ = []; + var tableFields_ = []; + + metas.map(f=>{ + f.isshow = "T"; + + if (f.isfilter) { + filterFields_.push(clone(f)); + } + else { + var filter_f = clone(f); + filter_f.isshow = "F"; + filterFields_.push(filter_f); + } + + tableFields_.push(clone(f)); + }) + if (!me.filterFields || (me.filterFields && me.filterFields.length == 0)) { + me.filterFields = clone(filterFields_); + me.tableFields = clone(tableFields_); + + //瀛楁鏁扮粍杞瓧娈祇bj锛岀洰鐨勪负浜嗙瓫閫夋椂鑾峰彇瀛楁灞炴�� + me.fieldsToFieldsObj(); + + //璁剧疆瀛楁浜嬩欢 + me.tableFieldClick(); + } + } + + if (callback) { + callback(); + } + }); + }, + + tableFieldClick() { + var me = this; + //琛ㄦ牸瀛楁浜嬩欢璁剧疆 + this.tablefieldClick = { + state_name: {//鐘舵�� + val: {//鏈夊�兼椂鐨勭偣鍑讳簨浠� + notclick_val: ["鑽夌","褰曞叆"],//涓嶅彲鐐瑰嚮鐨勫��,1銆佹槸鏁扮粍["11","22"]锛�2銆佷互鈥�;鈥濆垎闅旂殑瀛楃涓�"111;222" + notclick_bindfield: [], + onclick: function(obj) { + var config = { + totab: false, + width: "1100px", + height: "520px", + icon: "icon-product", + text: "娴佺▼姝ラ", + id: "popup_workflow_step_user" + obj.row.id, + url: "module/tool/page/popup_workflow_step_user.html?v=2023020703", + data: obj.row, + delta: {},//{machine_code: "Org_Account_Open"}, + sceneCode: "browse",//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + }, + }, + code: {//瀛楁浜嬩欢璁剧疆 + val: {//鏈夊�兼椂鐨勭偣鍑讳簨浠� + notclick_val: "",//涓嶅彲鐐瑰嚮鐨勫��,1銆佹槸鏁扮粍["11","22"]锛�2銆佷互鈥�;鈥濆垎闅旂殑瀛楃涓�"111;222" + notclick_bindfield: [],//褰撹瀛楁鍊肩瓑浜庢寚瀹氬瓧娈靛�兼椂涓嶅彲鐐瑰嚮["filterfield": "111"] + onclick: function(obj) {//鏁版嵁鍊肩偣鍑讳簨浠� + var sceneCode_ = "browse"; + //濡傛灉鏄垱寤轰汉涓旀槸褰曞叆鐘舵�佹垨閫�鍥炵姸鎬佸垯鏄紪杈戠姸鎬� + if (obj.row.creator_id == window.top.vue.userinfo.id && (obj.row.state_code == "Input" || obj.row.state_code == "input" || obj.row.state_code == "Rejected")) { + sceneCode_ = "edit"; + } + me.editData(sceneCode_, obj.row); + }, + }, + }, + }; + + this.tablebuttonclick = [ + { // 璇︽儏 + isbuttonshow: me.cbuttons_r.FormDetail ? me.cbuttons_r.FormDetail : false, type: "primary", + code: "formdetail", isselected: true, classname:"", + onclick: function(obj) { + me.editData("browse", obj.selectedList[0]) + } + }, + { // 鏂板 + isbuttonshow: me.cbuttons_r.Add ? me.cbuttons_r.Add : false,type:"primary", + code: "add",isselected: false,classname: "", + onclick: function(obj) { + me.editData("add", {}) + } + }, + { // 缂栬緫 + isbuttonshow: me.cbuttons_r.Edit ? me.cbuttons_r.Edit : false,type:"primary", + code: "edit",isselected: true,classname: "", + disabled: function(selectRowList) { + var bo_ = true; + if (selectRowList[0] && (!selectRowList[0].state_code || (selectRowList[0].state_code && selectRowList[0].state_code == 'Input'))) { + bo_ = false; + } + return bo_ + }, + onclick: function(obj) { + me.editData('edit', obj.selectedList[0]) + } + }, + { // 鍒犻櫎 + isbuttonshow: me.cbuttons_r.Delete ? me.cbuttons_r.Delete : false, type: "danger", + code: "delete", isselected: true, classname:"", + disabled: function(selectRowList) { + var bo_ = true ; + if (selectRowList[0] && (!selectRowList[0].state_code || (selectRowList[0].state_code && selectRowList[0].state_code == 'Input'))) { + bo_ = false + } + return bo_; + }, + onclick: function(obj) { + me.delData(obj, obj.selectedList[0]) + } + } + ] + }, + + rowClick(obj) { + var me = this; + me.selectedrow = obj.row; + }, + + editData(sceneCode, row) { + var me = this; + var config = { + totab: true, //true: 浠ab瀵艰埅鐨勬柟寮忔墦寮� + width: "900px", + height: "500px", + icon: "icon-product", + text: me.title + "璇︽儏", + id: "form_simple" + sceneCode + row.id,//totab: true鏃堕渶璁剧疆锛岀敤浜庡垽鏂槸鍚﹀凡鎵撳紑姝ら〉闈� + url: "module/model/page/form_simple.html", + dataname: me.dataname, + data: row, + delta: {}, + sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse", + callback: function(obj, callback) { + me.onQuery(); + if (callback) { + callback(); + } + } + }; + me.doPopupByPublic(config); + }, + delData(obj, row) { + let me = this; + let name_ = "璇ユ暟鎹�"; + + if (!row.id) { + Root.message({ + type: 'warning', + message: '璇烽�夋嫨鍒犻櫎鏁版嵁' + }); + return + } + if (row.name) { + name_ = "銆�" + row.name + "銆�"; + } + + Root.confirm('纭畾鍒犻櫎' + name_ + '鍚楋紵', '鍒犻櫎鎻愮ず', { + confirmButtonText: '鍒犻櫎', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + let param = { + id: row.id, + dataname: me.dataname, + } + Server.call("root/data/deleteEntity", param, function(result) { + Root.message({ + type: 'success', + message: '鍒犻櫎鎴愬姛!' + }); + me.onQuery(); + }); + }).catch(() => { + Root.message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + DownloadTemplate() { + var pathurl = ""; + if (this.selectTabObj.code == "amt_detail") { + pathurl = "template/1.瀵煎叆妯℃澘/鎶樻墸鏄庣粏瀵煎叆-鎶樻墸.xlsx"; + } + else if (this.selectTabObj.code == "qty_detail") { + pathurl = "template/1.瀵煎叆妯℃澘/鎶樻墸鏄庣粏瀵煎叆-涔拌禒 .xlsx"; + } + handleDownload(pathurl); + }, + + onPopupByUploadFile() { + var me = this; + var ioname_ = "" + if (this.selectTabObj.code == 'amt_detail') { + ioname_ = "import_rebate_amt"; + } + else if (this.selectTabObj.code == "qty_detail") { + ioname_ = "import_rebate_qty"; + } + var delta_ = { + filetypelist: [], + isToDB: true, + dataname: this.selectTabObj.dataname, + tableFields: this.selectTabObj.tableFields, + otherSave: "salesBizLogic/saveDealerTargetByImport", + } + var config = { + totab: false, + width: "500px", + icon: "icon-product", + text: "鏁版嵁鏂囦欢涓婁紶", + id: "popup_uploadFileToDB", + url: "module/tool/page/popup_uploadFileToDB.html", + data: { + uploadType: "dealertarget", + tempTable: "temp_target_dealer", + operate_type: "dealertarget", + userid: me.userid, + ioname:ioname_, + // position_id: me.position_id, + }, + delta: delta_, + callback: function(obj, callback) { + me.$message({ + showClose: true, + message: '涓婁紶鎴愬姛锛�', + type: 'success' + }); + me.onQuery(); + if (callback) { + callback(); + } + } + }; + this.doPopupByPublic(config); + }, + onDownload() { + let me = this; + var ioname = ""; + var sign = ""; + var filename = '鎶樻墸鏄庣粏瀵煎嚭' + String(new Date().getTime()); + var filter_ = "1 = 1"; + filter_ = this.getFilterData(filter_); + if (me.selectTabObj.code == "qty_detail") { + ioname = "export_rebate_qty_detail" + sign = "rebate_qty_detail" + filename = '涔拌禒鏄庣粏瀵煎嚭' + String(new Date().getTime()); + } + else if (me.selectTabObj.code == "amt_detail") { + ioname = "export_rebate_amt_detail" + sign = "rebate_amt_detail" + } + let param = { + sign: sign, + filename: filename, + filter: filter_, + ioname:ioname, + orderby: "", + token: Root.getToken() + } + window.top.vue.textdownloadForm(param); + }, + } + }); + }; + loadJsCss(function () { + initVue(); + }); + </script> + </head> + + <body style="margin: 0px;" > + <div v-cloak id="vbody"> + <div id="page_root"> + <div class="topbar"> + <span :class="page_title == 'right' ? 'h_page_title_right' : 'h_page_title_left'"><span class="h_page_title_txt">{{title}}</span></span> + + <div :class="page_title == 'right' ? 'h_page_button_left' : 'h_page_button_right'"> + <el-button-group style="margin-left: 3px"> + <el-button v-show="cbuttons_r.Import" @click="DownloadTemplate">妯℃澘涓嬭浇</el-button> + <el-button v-show="cbuttons_r.Import" @click="onPopupByUploadFile":icon="buttonsconfig.import.icon">{{buttonsconfig.import.name}}</el-button> + <el-button v-show="cbuttons_r.Export" @click="onDownload" :icon="buttonsconfig.export.icon">{{buttonsconfig.export.name}}</el-button> + </el-button-group> + </div> + </div> + + <div class="h_dialog__body"> + <h-table + v-if="isRefresh" + ref="table1" + :table-fields="tableFields" + :table-data="tableData" + :table-field-click="tablefieldClick" + :pagesize="pagesize" + :pagenum="pagenum" + :total="total" + :table-height="tableHeight" + :is-highlight-row="true" + :isdraggableorder="cbuttons_r.Set" + :table-buttons-click="tablebuttonclick" + :filtersobj="filterObj" + :isbasicfilterfields="isbasicfilterfields" + :basicfilterfieldslength="5" + + v-on:get-data="getData" + v-on:row-click="rowClick" + v-on:order-fields="orderTableFields" + > + </h-table> + </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> + + <style> + [v-cloak] { + display: none !important; + } + </style> + </body> +</html> diff --git a/module/system/page/main.html b/module/system/page/main.html index 5d29588..08db079 100644 --- a/module/system/page/main.html +++ b/module/system/page/main.html @@ -6,28 +6,28 @@ <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-control" content="no-cache"> <meta http-equiv="Cache" content="no-cache"> - <title>缁堢鎺ㄥ箍骞冲彴</title> - <link href="../css/main.css?v=2024081902" rel="stylesheet"> - <link href="../../../css/control.css?v=2024081902" rel="stylesheet"> - <link href="../../../css/page.css?v=2024081902" rel="stylesheet"> - <link href="../../../css/icon/iconfont.css?v=2024081902" rel="stylesheet"> + <title>钀ラ攢涓�浣撳寲杩愯惀骞冲彴</title> + <link href="../css/main.css?v=2024082502" rel="stylesheet"> + <link href="../../../css/control.css?v=2024082502" rel="stylesheet"> + <link href="../../../css/page.css?v=2024082502" rel="stylesheet"> + <link href="../../../css/icon/iconfont.css?v=2024082502" rel="stylesheet"> <link href="../../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet"> <link href="../../../img/org/head.png" rel="shortcut icon" type="image/x-icon"> - <link href="../../../css/myelement.css?v=2024081902" rel="stylesheet"> + <link href="../../../css/myelement.css?v=2024082502" rel="stylesheet"> <script src="../../../js/jquery-3.5.1.min.js"></script> <script src="../../../js/vue/vue.js"></script> - <script src="../../../js/config.js?v=2024081902"></script> + <script src="../../../js/config.js?v=2024082502"></script> <script src="../../../data/data.js"></script> <script src="../../../js/vue/elementDefault.js"></script> <script src="../../../js/vue/element-ui/lib/index.js"></script> <script src="../../../js/Sortable.js"></script> - <script src="../../../js/vue/page.js?v=2024081902"></script> - <script src="../../../js/foundation.js?v=2024081902"></script> - <script src="../../../js/control.js?v=2024081902"></script> + <script src="../../../js/vue/page.js?v=2024082502"></script> + <script src="../../../js/foundation.js?v=2024082502"></script> + <script src="../../../js/control.js?v=2024082502"></script> <script src="../../../js/loadJsCss.js"></script> - <script src="../../../js/myelement.js?v=2024081902"></script> + <script src="../../../js/myelement.js?v=2024082502"></script> </head> diff --git a/module/tool/page/popup_iconfont.html b/module/tool/page/popup_iconfont.html index 82dbee4..c5a4e83 100644 --- a/module/tool/page/popup_iconfont.html +++ b/module/tool/page/popup_iconfont.html @@ -38,7 +38,7 @@ this.$nextTick(function(){ //let w_ = this.$refs.popup_body.offsetWidth + "px"; let w_ = "900px"; - let h_ = this.$refs.popup_body.offsetHeight + "px"; + let h_ = (this.$refs.popup_body.offsetHeight + 10) + "px"; Root.setPopupWH(w_, h_); }) }); -- Gitblit v1.8.0