<!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: {
|
istitle: false,
|
title: "表单名称",
|
columnnumber: 3,
|
labelwidth: "80px",
|
labelposition: "left",//"left",// right//top
|
size: "mini",
|
border: "0px solid #c6c6c600"
|
},
|
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: "modelByPage",
|
dataname: "sys_model",
|
filter: "open_type='page'",
|
isnotoption: false, //true:不是选项
|
code:"id",//是下拉选项时设置
|
label:"name",//是下拉选项时设置
|
},
|
{
|
name: "modelBydetail",
|
dataname: "sys_model",
|
filter: "open_type in ('popup','tab')",
|
isnotoption: false, //true:不是选项
|
code:"id",//是下拉选项时设置
|
label:"name",//是下拉选项时设置
|
},
|
],
|
dataRequestObj: {},
|
options_menutree: [],
|
options_menumap: {},
|
options_model: [],
|
options_model_detail: [],
|
options_buttons: [],
|
pagebuttonmap: {},
|
modelbuttonmap: {},
|
|
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: "page_title", labelchinese: "页面标题", inputtype: "", optionsgroup: "", group_name: "页面配置"},
|
{isshow: "T", field: "model_id", labelchinese: "模型选择", inputtype: "select", optionsgroup: "", colspan: 1, group_name: "页面配置", buttonarrayname: [{type: "", buttonname:"模型维护", icon: "", code:"showfile", classname: "form_showfile"}]},
|
{isshow: "T", field: "dataname", labelchinese: "数据对象", inputtype: "", optionsgroup: "", group_name: "页面配置", buttonarrayname: [{type: "", buttonname:"对象维护", icon: "", code:"showfile", classname: "form_showfile"}]},
|
{isshow: "T", field: "buttons", labelchinese: "功能选择", inputtype: "checkboxobj", optionsgroup: "", colspan: 2, group_name: "页面配置"},
|
{isshow: "T", field: "detail_model_id", labelchinese: "详情模型选择", inputtype: "select", optionsgroup: "", colspan: 2, group_name: "页面配置", labelwidth: "120", visiblefilterrule: "buttons:Add、Edit、FormDetail", buttonarrayname: [{type: "", buttonname:"详情模型维护", icon: "", code:"detail_model", classname: "form_showfile"},{type: "", buttonname:"详情页配置", icon: "", code:"popup_detail_model", classname: ""}]},
|
],
|
|
tableFields_table: [
|
{isshow: "T", field: "field_name", labelchinese: "字段", width: "130", isfixed: "left", align: "left"},
|
{isshow: "T", field: "label_chinese", labelchinese: "中文名称",inputtype: "input", width: "130", isfixed: "left"},
|
{isshow: "T", field: "is_list", labelchinese: "是否显示",inputtype: "ischeckbox"},
|
{isshow: "T", field: "is_filter", labelchinese: "是否查询",inputtype: "ischeckbox"},
|
{isshow: "T", field: "list_order_no", labelchinese: "顺序",inputtype: "number"},
|
{isshow: "T", field: "width", labelchinese: "宽度",inputtype: "input"},
|
{isshow: "T", field: "is_min_width", labelchinese: "是否最小宽度",inputtype: "ischeckbox", width: "100"},
|
{isshow: "T", field: "formatter", labelchinese: "格式化",inputtype: "select", optionsgroup: "formatterEvent", width: "150"},
|
{isshow: "T", field: "format_pattern", 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: "table_group_name", labelchinese: "表头分组名",inputtype: "input", width: "150"},
|
|
],
|
tableFields_form: [
|
{isshow: "T", field: "field_name", labelchinese: "字段", width: "130", isfixed: "left", align: "left"},
|
{isshow: "T", field: "label_chinese", labelchinese: "中文名称",inputtype: "input", width: "130", isfixed: "left"},
|
{isshow: "T", field: "is_form", labelchinese: "是否显示", inputtype: "ischeckbox"},
|
{isshow: "T", field: "input_type", labelchinese: "输入类型", inputtype: "select", optionsgroup: "inputType", width: "150"},
|
{isshow: "T", field: "options_key", labelchinese: "选项字典", inputtype: "select", optionsgroup: "dictionary"},
|
{isshow: "T", field: "list_order_no", labelchinese: "顺序",inputtype: "number"},
|
{isshow: "T", field: "is_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: "format_pattern", labelchinese: "格式化参数",inputtype: "input", width: "150"},
|
{isshow: "F", field: "last_update_time", labelchinese: "更新时间"},
|
{isshow: "T", field: "form_group_name", labelchinese: "字段分组名",inputtype: "input", width: "150"},
|
],
|
tableFields: [],
|
tableData: [],
|
tableHeight: 500,
|
tablefieldClick: {},
|
tablebuttonClick: [],
|
tableloading: false,
|
scene_type: ""
|
},
|
created() {
|
let clientHeight = document.documentElement.clientHeight;
|
this.tableHeight = clientHeight - 250 - 32 - 10;
|
|
},
|
|
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.modelByPage) {
|
var sys_model_ = clone(me.dataRequestObj.modelByPage);
|
me.options_model = clone(sys_model_);
|
}
|
if (me.dataRequestObj.modelBydetail) {
|
var sys_model_ = clone(me.dataRequestObj.modelBydetail);
|
me.options_model_detail = 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);
|
let row_ = clone(row);
|
row_.buttons = []
|
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.page_id) {
|
om.isnot_nodeadd = true; // 节点不可新增
|
}
|
else if (om.id && !om.page_id ) {
|
// om.isnot_nodeadd = true; // 节点不可新增
|
// om.isnot_nodeedit = true; // 节点不可改
|
om.ishnodeadd = 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_ = [];
|
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 == "detail_model_id") {
|
f.options = me.options_model_detail;
|
}
|
if (f.field == "buttons") {
|
f.options = clone(me.options_buttons);
|
}
|
|
formFields_.push(clone(f));
|
})
|
me.formFields = clone(formFields_);
|
me.formFieldClick();
|
},
|
getPageData(page_id) {
|
var me = this;
|
// 获取页面按键
|
this.getPageButtons(page_id, function() {
|
me.doGetPageData(page_id);
|
});
|
},
|
doGetPageData(page_id) {
|
var me = this;
|
// 获取页面对应模型
|
this.getPageData_model(page_id, function(pagemodel) {
|
if (pagemodel && pagemodel.model_id) {
|
var formData_ = clone(me.formData);
|
formData_.page_model_id = pagemodel.id
|
formData_.model_id = pagemodel.model_id
|
formData_.detail_model_id = pagemodel.detail_model_id
|
formData_.page_title = pagemodel.title ? pagemodel.title : formData_.title
|
formData_.dataname = pagemodel.dataname
|
|
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, me.scene_type);
|
}
|
else {
|
me.tableFields = [];
|
me.tableData = [];
|
}
|
}
|
else {
|
var formData_ = clone(me.formData);
|
formData_.model_id = ""
|
formData_.page_title = formData_.title
|
formData_.dataname = ""
|
formData_.buttons = []
|
|
me.formData = clone(formData_);
|
me.options_buttons = []
|
me.getPageMeta();
|
me.tableFields = [];
|
me.tableData = [];
|
}
|
|
});
|
},
|
getPageButtons(page_id, callback) {
|
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 (!pagebuttonmap[page_id]) {
|
pagebuttonmap[page_id] = {}
|
}
|
if (result && result.data && result.data.entityset && result.data.entityset.length) {
|
result.data.entityset.map(r=>{
|
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_);
|
|
if (callback) {
|
callback()
|
}
|
});
|
},
|
|
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 = []
|
var modelbuttonmap = {};
|
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,
|
}
|
modelbuttonmap[b_.code] = b_.value
|
modelbuttons.push(b_)
|
})
|
}
|
me.modelbuttonmap = clone(modelbuttonmap);
|
callback(modelbuttons);
|
});
|
},
|
|
getTableData_mate(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)
|
});
|
},
|
getTableData(dataname, scene_type) {
|
var me = this;
|
if (scene_type == "table") {
|
interface_ = "getEntitySet"
|
this.tableFields = clone(this.tableFields_table)
|
}
|
else {
|
interface_ = "getEntity"
|
this.tableFields = clone(this.tableFields_form)
|
}
|
|
this.tableloading = true;
|
let param_p = {
|
dataname: "sys_data_property",//获取经销商对应收货地址
|
filter: "dataname='" + dataname + "'",
|
orderby: "is_list desc, list_order_no"
|
}
|
Server.call("root/data/getEntitySet", param_p, function(result_p) {
|
let param_f = {
|
dataname: "sys_data_field",//获取经销商对应收货地址
|
filter: "dataname='" + dataname + "'",
|
}
|
Server.call("root/data/getEntitySet", param_f, function(result_f) {
|
let table_p = []
|
let table_f_map = {}
|
if (result_p && result_p.data && result_p.data.entityset) {
|
table_p = result_p.data.entityset;
|
}
|
if (result_f && result_f.data && result_f.data.entityset) {
|
let table_f = result_f.data.entityset;
|
table_f.map(tf=> {
|
table_f_map[tf.field_name] = tf
|
})
|
}
|
table_p.map(tp=>{
|
if (table_f_map[tp.field_name]) {
|
let tf_ = table_f_map[tp.field_name];
|
|
tp.field_id = tf_.id;
|
tp.input_type = tf_.input_type;
|
tp.options_key = tf_.options_key;
|
tp.formatter = tf_.formatter;
|
tp.format_pattern = tf_.format_pattern;
|
tp.align = tf_.align;
|
tp.label_chinese = tp.label_chinese ? tp.label_chinese : tf_.label_chinese;
|
tp.label_english = tp.label_english ? tp.label_english : tf_.label_english;
|
}
|
else {
|
tp.label_chinese = tp.label_chinese ? tp.label_chinese : tp.field_name;
|
tp.label_english = tp.label_english ? tp.label_english : tp.field_name;
|
}
|
})
|
me.tableloading = false;
|
me.tableData = clone(table_p)
|
})
|
});
|
},
|
|
//节点点击,给右边赋值
|
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_
|
}
|
data_.buttons = []
|
data_.detail_model_id = ""
|
|
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.options_menutree = clone(obj.treeoptions)
|
var sys_menunotpage_ = clone(obj.listoptions);
|
me.options_menumap = {}
|
sys_menunotpage_.map(m=>{
|
me.options_menumap[m.id] = m;
|
})
|
|
var formFields_ = clone(me.formFields)
|
formFields_.map(f=>{
|
if(f.field == "parent_id") {
|
f.options = (me.options_menutree)
|
}
|
})
|
me.formFields = clone(formFields_)
|
|
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.options_menutree = clone(obj.treeoptions)
|
var sys_menunotpage_ = clone(obj.listoptions);
|
me.options_menumap = {}
|
sys_menunotpage_.map(m=>{
|
me.options_menumap[m.id] = m;
|
})
|
var formFields_ = clone(me.formFields)
|
formFields_.map(f=>{
|
if(f.field == "parent_id") {
|
f.options = (me.options_menutree)
|
}
|
})
|
me.formFields = clone(formFields_)
|
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()
|
}
|
},
|
},
|
|
detail_model_id: {
|
buttonarray: {
|
onclick: function(obj) {
|
if (obj.buttonobj.code == "popup_detail_model") {
|
let sceneCode = "add"
|
var config = {
|
totab: false, //true: 以Tab导航的方式打开
|
width: "900px",
|
height: "500px",
|
icon: "icon-product",
|
text: "编辑页配置",
|
id: "popup_tablefield_edit" + sceneCode,//totab: true时需设置,用于判断是否已打开此页面
|
url: "module/config/page/popup/popup_tablefield_edit.html",
|
dataname: me.dataname,
|
data: {},
|
delta: {dataname: me.dataname, tabledata: me.tableData, tablefields: me.tableFields_form},
|
sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
|
callback: function(obj, callback) {
|
me.tableData = clone(obj.tableData)
|
if (callback) {
|
callback();
|
}
|
}
|
};
|
me.doPopupByPublic(config);
|
}
|
},
|
},
|
},
|
model_id: {
|
buttonarray: {
|
onclick: function(obj) {
|
|
},
|
},
|
visible: {
|
onchange: function(obj,row,callback) { //下拉展开事件
|
let param_ = {
|
dataname: "sys_model",//获取经销商对应收货地址
|
filter:"open_type='page'",
|
}
|
Server.call("root/data/getEntitySet", param_, function(result) {
|
if (result && result.data && result.data.entityset) {
|
var options_ = []
|
result.data.entityset.map(r=>{
|
var option_ = clone(r);
|
option_.code = r.id;
|
option_.value = r.name;
|
options_.push(option_)
|
})
|
var formFields_ = clone(me.formFields)
|
formFields_.map(f=>{
|
if(f.field == "model_id") {
|
f.options = options_
|
}
|
})
|
me.formFields = clone(formFields_)
|
}
|
});
|
}
|
},
|
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.options_menutree = clone(obj.treeoptions)
|
var sys_menunotpage_ = clone(obj.listoptions);
|
me.options_menumap = {}
|
sys_menunotpage_.map(m=>{
|
me.options_menumap[m.id] = m;
|
})
|
var formFields_ = clone(me.formFields)
|
formFields_.map(f=>{
|
if(f.field == "parent_id") {
|
f.options = (me.options_menutree)
|
}
|
})
|
me.formFields = clone(formFields_)
|
me.getMenuAll();
|
if (callback) {
|
callback();
|
}
|
}
|
};
|
me.doPopupByPublic(config);
|
},
|
|
saveRowTable() {
|
var me = this;
|
var entity_ = clone(this.formData);
|
var entity_menu = {
|
id: entity_.id,
|
parent_id: entity_.parent_id[entity_.parent_id.length - 1],
|
icon: entity_.icon,
|
title: entity_.title
|
};
|
var entity_page = {
|
id: entity_.page_id,
|
url: entity_.url,
|
};
|
var entity_page_model = {
|
id: entity_.page_model_id ? entity_.page_model_id : null,
|
page_id: entity_.page_id,
|
model_id: entity_.model_id,
|
title: entity_.page_title,
|
dataname: entity_.dataname,
|
detail_model_id: entity_.detail_model_id
|
};
|
|
var entity_page_button_add = [];
|
var entity_page_button_del = [];
|
if (entity_.buttons && entity_.buttons.length) {
|
entity_.buttons.map(b=>{
|
if (me.pagebuttonmap[entity_.page_id] && !me.pagebuttonmap[entity_.page_id][b]) {
|
let page_button_ = {
|
page_id: entity_.page_id,
|
code: b,
|
title: me.modelbuttonmap[b],
|
is_active: "T"
|
}
|
entity_page_button_add.push(page_button_)
|
}
|
else if(!me.pagebuttonmap[entity_.page_id]) {
|
let page_button_ = {
|
page_id: entity_.page_id,
|
code: b,
|
title: me.modelbuttonmap[b],
|
is_active: "T"
|
}
|
entity_page_button_add.push(page_button_)
|
}
|
})
|
}
|
if(this.pagebuttonmap[entity_.page_id]) {
|
for (var b_code in this.pagebuttonmap[entity_.page_id]) {
|
if (entity_.buttons && entity_.buttons.includes(b_code)) {
|
|
}
|
else {
|
let id = this.pagebuttonmap[entity_.page_id][b_code];
|
entity_page_button_del.push(id)
|
}
|
}
|
}
|
|
var entity_data_field = [];
|
var entity_data_property = [];
|
var datetime_ = dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss")
|
this.tableData.map(r=>{
|
if (r.field_id) {
|
var field_ = {
|
id: r.field_id ? r.field_id : null,
|
formatter: r.formatter ? r.formatter : null,
|
format_pattern: r.format_pattern ? r.format_pattern : null,
|
align: r.align ? r.align : null,
|
last_update_time: datetime_,
|
input_type: r.input_type ? r.input_type : null,
|
options_key: r.options_key ? r.options_key : null,
|
}
|
entity_data_field.push(field_);
|
}
|
|
var property_ = {
|
id: r.id ? r.id : null,
|
last_update_time: datetime_,
|
label_chinese: r.label_chinese,
|
is_list: r.is_list ? r.is_list : false,
|
is_form: r.is_form ? r.is_form : false,
|
is_filter: r.is_filter ? r.is_filter : false,
|
list_order_no: r.list_order_no ? r.list_order_no : 0,
|
form_order_no: r.form_order_no ? r.form_order_no : 0,
|
width: r.width ? r.width : 100,
|
is_min_width: r.is_min_width ? r.is_min_width : false,
|
table_group_name: r.table_group_name ? r.table_group_name : null,
|
form_group_name: r.form_group_name ? r.form_group_name : null,
|
is_required: r.is_required ? r.is_required : false,
|
colspan: r.colspan ? r.colspan : null,
|
}
|
|
entity_data_property.push(property_);
|
})
|
|
|
/*
|
sys_menu
|
sys_page
|
sys_page_model
|
*/
|
this.saveData("sys_menu", entity_menu, function() {
|
me.saveData("sys_page", entity_page, function() {
|
me.onRefreshCacheByPageId(entity_page.id, function(){
|
if (entity_page_model.model_id) {
|
me.saveData("sys_page_model", entity_page_model, function() {
|
Root.message({
|
type: 'success',
|
message: '保存成功'
|
});
|
me.getMenuAll();
|
});
|
}
|
else {
|
Root.message({
|
type: 'success',
|
message: '保存成功'
|
});
|
me.getMenuAll();
|
}
|
})
|
});
|
});
|
|
/*
|
sys_page_button
|
sys_data_field
|
sys_data_property
|
var entity_page_button_add = [];
|
var entity_page_button_del = [];
|
var entity_data_field = [];
|
var entity_data_property = [];
|
*/
|
me.saveButtonAdd(entity_page_button_add, function() {
|
me.saveButtonDel(entity_page_button_del, function() {
|
me.onRefreshCacheByPageId(entity_page.id);
|
})
|
})
|
// entity_page_button_add.map(ba=>{
|
// me.saveData("sys_page_button", ba, function() {
|
// })
|
// })
|
entity_data_field.map(df=>{
|
me.saveData("sys_data_field", df, function() {
|
})
|
})
|
entity_data_property.map(dp=>{
|
me.saveData("sys_data_property", dp, function() {
|
})
|
})
|
|
// entity_page_button_del.map(bd=>{
|
// me.delData("sys_page_button", bd, function() {
|
// })
|
// })
|
},
|
|
saveButtonAdd(list, callback) {
|
var me = this;
|
if (list.length) {
|
let buttonadd_ = list[0];
|
me.saveData("sys_page_button", buttonadd_, function() {
|
console.log("新增按键");
|
list.remove(buttonadd_)
|
me.saveButtonAdd(list, callback)
|
})
|
}
|
else {
|
callback()
|
}
|
},
|
saveButtonDel(list, callback) {
|
var me = this;
|
if (list.length) {
|
let buttonadd_ = list[0];
|
me.delData("sys_page_button", buttonadd_, function() {
|
console.log("删除按键");
|
list.remove(buttonadd_)
|
me.saveButtonDel(list, callback)
|
})
|
}
|
else {
|
callback()
|
}
|
},
|
|
saveData(dataname, data, callback) {
|
var me = this;
|
let param = {
|
dataname: dataname,
|
data: {},
|
}
|
param.data[dataname] = data;
|
if (data.id) {
|
param.id = data.id
|
}
|
Server.call("root/data/saveEntity", param, function(result) {
|
console.log(result);
|
if (result.success) {
|
if (callback) {
|
callback()
|
}
|
}
|
});
|
},
|
|
delData(dataname, id) {
|
let param = {
|
id: id,
|
dataname: dataname,
|
}
|
Server.call("root/data/deleteEntity", param, function(result) {
|
});
|
},
|
|
// 刷新缓存
|
onRefreshCacheByPageId(PageId, callback) {
|
var me = this;
|
let param_ = {
|
page_id: PageId
|
}
|
Server.call("root/system/reloadMenuByPage", param_, function(result) {
|
if (result.success) {
|
if (callback) {
|
callback()
|
}
|
else {
|
console.log("刷新页面");
|
}
|
}
|
});
|
},
|
|
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;
|
}
|
.h_form_group {
|
height: 32px;
|
line-height: 32px;
|
margin-top: 5px !important;
|
}
|
</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" :disabled="!formData.page_id">{{buttonsconfig.save.name}}</el-button>
|
</el-button-group>
|
</div>
|
</div>
|
|
<div style="margin: 0 10px;">
|
<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 && formData.page_id"
|
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>
|