| | |
| | | |
| | | |
| | | config = { |
| | | jscssversion: "2024081902", //.js/.css文件的版本号,去除前端缓存的一种机制 |
| | | jscssversion: "2024082502", //.js/.css文件的版本号,去除前端缓存的一种机制 |
| | | isupgrading: false, //是否升级中 |
| | | appName: "TPP", |
| | | title: "营销一体化运营平台", |
| | |
| | | ' :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>'+ |
| | |
| | | //id: uuid_short(), |
| | | // code: createCode("BA"), |
| | | }, |
| | | formData: {}, |
| | | formData: { |
| | | title: "", |
| | | }, |
| | | |
| | | dataRequest: [ |
| | | { |
| | |
| | | |
| | | pageid: "", // 新页面id |
| | | parent_menuobj: {}, // 父级菜单 |
| | | |
| | | isAddMenu: false, // 仅添加一个菜单 |
| | | treeoptions: [] |
| | | }, |
| | | created() { |
| | | this.popupParames = clone(Root.popupParames); |
| | |
| | | // } |
| | | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | } |
| | | 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(角色类型Org/Business/Sales/Customer/Admin)、target_id(销售岗位ID/DMS开户ID)、company_id、bu_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_); |
| | | |
| | |
| | | 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" |
| | | }; |
| | | |
| | |
| | | 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) { |
| | |
| | | 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", |
| | |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | |
| | | } |
| | | }); |
New file |
| | |
| | | <!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: "", // 新页面id |
| | | 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; |
| | | //预加载数据后给哪些字段设置options或formatterjson |
| | | 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(角色类型Org/Business/Sales/Customer/Admin)、target_id(销售岗位ID/DMS开户ID)、company_id、bu_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: 以Tab导航的方式打开 |
| | | 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: 以Tab导航的方式打开 |
| | | 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> |
| | | /* 在vue.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> |
New file |
| | |
| | | <!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; |
| | | //预加载数据后给哪些字段设置options或formatterjson |
| | | 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) { |
| | | //遍历树数据,将根节点的page_id设置为id |
| | | 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(); |
| | | } |
| | | }, |
| | | |
| | | //拿到所有的父节点id |
| | | 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: 以Tab导航的方式打开 |
| | | 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: 以Tab导航的方式打开 |
| | | 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: 以Tab导航的方式打开 |
| | | 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: 以Tab导航的方式打开 |
| | | 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> |
| | | /* 在vue.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> |
New file |
| | |
| | | <!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; |
| | | //预加载数据后给哪些字段设置options或formatterjson |
| | | |
| | | 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> |
| | | /* 在vue.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> |
New file |
| | |
| | | <!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; |
| | | //预加载数据后给哪些字段设置options或formatterjson |
| | | 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_); |
| | | |
| | | //字段数组转字段obj,目的为了筛选时获取字段属性 |
| | | 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: 以Tab导航的方式打开 |
| | | 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> |
| | |
| | | <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> |
| | | |
| | |
| | | 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_); |
| | | }) |
| | | }); |