zhangyanpeng
2024-08-27 a8961c1d00c17a5aa2658884df9479ed6fba94c3
module/config/page/sys_menu_edit.html
@@ -22,7 +22,15 @@
                  isTreeReadonly: false,
                  
                  form_dataname: "sys_menu",
                  // formAttr: {},
                  formAttr: {
                     istitle: false,
                     title: "表单名称",
                     columnnumber: 3,
                     labelwidth: "80px",
                     labelposition: "left",//"left",// right//top
                     size: "mini",
                     border: "0px solid #c6c6c600"
                  },
                  formFields: [],
                  formData: {
                     parent_id: []
@@ -35,15 +43,23 @@
                     {
                        name: "sys_menunotpage",
                        dataname: "sys_menu",
                        filter: " page_id is null",
                        filter: " page_id is null ",
                        isnotoption: false, //true:不是选项
                        code:"id",//是下拉选项时设置
                        label:"name",//是下拉选项时设置
                     },
                     {
                        name: "sys_model",
                        name: "modelByPage",
                        dataname: "sys_model",
                        filter: "",
                        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",//是下拉选项时设置
@@ -53,8 +69,10 @@
                  options_menutree: [],
                  options_menumap: {},
                  options_model: [],
                  options_model_detail: [],
                  options_buttons: [],
                  pagebuttonmap: {},
                  modelbuttonmap: {},
                  
                  pagesize_p: 10,
                  pagenum_p: 1,
@@ -70,40 +88,41 @@
                     {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: "页面配置"},
                     {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", labelchinese: "字段", width: "130", isfixed: "left", align: "left"},
                     {isshow: "T", field: "labelchinese", labelchinese: "中文名称",inputtype: "input", width: "130", isfixed: "left"},
                     {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: "isfilter", 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: "isminwidth", labelchinese: "是否最小宽度",inputtype: "ischeckbox", width: "100"},
                     {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: "formatpattern", labelchinese: "格式化参数",inputtype: "input", 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: "tablegroupname", labelchinese: "表头分组名",inputtype: "input"},
                     {isshow: "T", field: "table_group_name", labelchinese: "表头分组名",inputtype: "input", width: "150"},
                     
                  ],
                  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: "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: "inputtype", labelchinese: "输入类型", inputtype: "select", optionsgroup: "inputType", width: "150"},
                     {isshow: "T", field: "optionsgroup", labelchinese: "选项字典", inputtype: "select", optionsgroup: "dictionary"},
                     {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: "required", labelchinese: "是否必填",inputtype: "ischeckbox"},
                     {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: "formatpattern", labelchinese: "格式化参数",inputtype: "input", width: "150"},
                     {isshow: "T", field: "format_pattern", labelchinese: "格式化参数",inputtype: "input", width: "150"},
                     {isshow: "F", field: "last_update_time", labelchinese: "更新时间"},
                     {isshow: "T", field: "group_name", labelchinese: "表头分组名"},
                     {isshow: "T", field: "form_group_name", labelchinese: "字段分组名",inputtype: "input", width: "150"},
                  ],
                  tableFields: [],
                  tableData: [],
@@ -115,7 +134,7 @@
               },
               created() {
                  let clientHeight = document.documentElement.clientHeight;
                  this.tableHeight = clientHeight - 250 - 32;
                  this.tableHeight = clientHeight - 250 - 32 - 10;
                  
               },
               
@@ -135,11 +154,14 @@
                           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);
                        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();
                     });
@@ -174,7 +196,9 @@
                        var row = me.treeData[0];
                        // me.$refs.table1.setCurrentRow(row)
                        me.selectNodeData = clone(row);
                        me.formData = row;
                        let row_ = clone(row);
                        row_.buttons = []
                        me.formData = row_;
                        me.isRefresh = false;
                        me.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                           me.defaultexpandedkeys = [me.formData.id];
@@ -187,12 +211,14 @@
                  menuToPageTree(oldmenus) {
                     var me = this;
                     oldmenus.map(om=>{
                        if (om.id && om.open_type && om.open_type == "arrange") {
                        if (om.id && om.open_type && om.open_type == "arrange" && om.page_id) {
                           om.isnot_nodeadd = true; // 节点不可新增
                        }
                        else if (om.id && !om.page_id) {
                        else if (om.id && !om.page_id ) {
                           // om.isnot_nodeadd = true; // 节点不可新增
                           om.isnot_nodeedit = true; // 节点不可改
                           // om.isnot_nodeedit = true; // 节点不可改
                           om.ishnodeadd = true;
                           om.isnot_nodedel = true; // 节点不可删
                        }
                        else {
@@ -212,17 +238,6 @@
                     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") {
@@ -233,27 +248,36 @@
                           // 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));
                     })
                     // if (!me.formFields || (me.formFields && me.formFields.length == 0)) {
                     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_.page_title = pagemodel.title
                           formData_.detail_model_id = pagemodel.detail_model_id
                           formData_.page_title = pagemodel.title ? pagemodel.title : formData_.title
                           formData_.dataname = pagemodel.dataname
                           formData_.buttons = []
                           
                           me.formData = clone(formData_);
                           me.scene_type = pagemodel.sys_model__scene_type;
@@ -263,7 +287,7 @@
                              me.getPageMeta();
                           });
                           if (formData_.dataname) {
                              me.getTableData(formData_.dataname, pagemodel.sys_model__scene_type);
                              me.getTableData(formData_.dataname, me.scene_type);
                           }
                           else {
                              me.tableFields = [];
@@ -273,7 +297,7 @@
                        else {
                           var formData_ = clone(me.formData);
                           formData_.model_id = ""
                           formData_.page_title = ""
                           formData_.page_title = formData_.title
                           formData_.dataname = ""
                           formData_.buttons = []
                           
@@ -285,10 +309,8 @@
                        }
                        
                     });
                     // 获取页面按键
                     me.getPageButtons(page_id);
                  },
                  getPageButtons(page_id) {
                  getPageButtons(page_id, callback) {
                     var me = this;
                     let param_ = {
                        dataname: "sys_page_button",//获取经销商对应收货地址
@@ -297,20 +319,22 @@
                     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=>{
                              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_);
                        }
                        me.pagebuttonmap = clone(pagebuttonmap);
                        var formData_ = clone(me.formData)
                        formData_.buttons = pagebuttons
                        me.formData = clone(formData_);
                        if (callback) {
                           callback()
                        }
                     });
                  },
@@ -339,21 +363,23 @@
                     }
                     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(dataname, scene_type) {
                  getTableData_mate(dataname, scene_type) {
                     var me = this;
                     var interface_ = "getEntitySet"
                     if (scene_type == "table") {
@@ -380,6 +406,63 @@
                        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) {
@@ -390,8 +473,11 @@
                        var parent_ids_ = [];
                        var parent_ids = this.getParents(data_.parent_id, this.options_menumap, parent_ids_);
                        
                        data_.parent_id = parent_ids
                        data_.parent_id = parent_ids_
                     }
                     data_.buttons = []
                     data_.detail_model_id = ""
                     this.formData = data_;
                     
                     this.options_buttons = []
@@ -423,13 +509,28 @@
                        width: "900px",
                        height: "340px",
                        icon: "icon-product",
                        text: "菜单新增",
                        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();
@@ -451,6 +552,19 @@
                        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();
@@ -531,7 +645,67 @@
                           },
                        },
                        
                        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 选择");
@@ -634,13 +808,26 @@
                        width: "900px",
                        height: "340px",
                        icon: "icon-product",
                        text: "菜单新增",
                        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();
@@ -652,50 +839,234 @@
                  
                  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];
                     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 {
                              entity[r] = null;
                              let id = this.pagebuttonmap[entity_.page_id][b_code];
                              entity_page_button_del.push(id)
                           }
                        }
                        else if (entity_[r] || entity_[r] ==  "" || entity_[r] == false || entity_[r] == 0) {
                           entity[r] = entity_[r];
                        }
                     }
                     
                     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: this.dataname,
                        // operator: operator_,
                        dataname: dataname,
                        data: {},
                     }
                     param.data[this.dataname] = entity;
                     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 (me.iscommit) {
                              me.iscommit = false;
                              Root.message({
                                 type: 'success',
                                 message: '提交成功'
                              });
                           }
                           else {
                              Root.message({
                                 type: 'success',
                                 message: '保存成功'
                              });
                           if (callback) {
                              callback()
                           }
                        }
                        me.getMenuAll();
                     });
                  },
                  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("刷新页面");
                           }
                        }
                     });
                  },
@@ -704,6 +1075,7 @@
                        this.$refs[data.id].style.display = isShow ? '' : 'none';
                     }
                  },
               }
            });
         };
@@ -721,6 +1093,11 @@
             overflow: hidden;
             position: relative;
             padding-left: 20px;
         }
         .h_form_group {
            height: 32px;
            line-height: 32px;
            margin-top: 5px !important;
         }
      </style>
      
@@ -768,12 +1145,12 @@
                        <!-- 工具栏 -->
                        <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 @click="saveRowTable":icon="buttonsconfig.save.icon" :disabled="!formData.page_id">{{buttonsconfig.save.name}}</el-button>
                           </el-button-group>
                        </div>
                     </div>
                        
                     <div style="margin: 16px;">
                     <div style="margin: 0 10px;">
                        <h-form
                           ref="form1"
                           :form-attr="formAttr"
@@ -784,7 +1161,7 @@
                        </h-form>
                        
                        <h-table
                           v-if="isRefresh && tableFields.length"
                           v-if="isRefresh && tableFields.length && formData.page_id"
                           ref="table1"
                           :table-fields="tableFields" 
                           :table-data="tableData"