zhangyanpeng
2024-08-26 3dfe7d4be26b4b57e9848320caa8697e1f31b8e7
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: []
@@ -41,9 +49,17 @@
                        label:"name",//是下拉选项时设置
                     },
                     {
                        name: "sys_model",
                        name: "modelByPage",
                        dataname: "sys_model",
                        filter: "",
                        filter: "is_detail='F'",
                        isnotoption: false, //true:不是选项
                        code:"id",//是下拉选项时设置
                        label:"name",//是下拉选项时设置
                     },
                     {
                        name: "modelBydetail",
                        dataname: "sys_model",
                        filter: "is_detail='T'",
                        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"},
                  ],
                  
                  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: [],
@@ -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];
@@ -212,17 +236,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 +246,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 +285,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 +295,7 @@
                        else {
                           var formData_ = clone(me.formData);
                           formData_.model_id = ""
                           formData_.page_title = ""
                           formData_.page_title = formData_.title
                           formData_.dataname = ""
                           formData_.buttons = []
                           
@@ -285,10 +307,8 @@
                        }
                        
                     });
                     // 获取页面按键
                     me.getPageButtons(page_id);
                  },
                  getPageButtons(page_id) {
                  getPageButtons(page_id, callback) {
                     var me = this;
                     let param_ = {
                        dataname: "sys_page_button",//获取经销商对应收货地址
@@ -297,20 +317,22 @@
                     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] = {}
                              }
                        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()
                        }
                     });
                  },
@@ -339,21 +361,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 +404,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) {
@@ -392,6 +473,9 @@
                        
                        data_.parent_id = parent_ids
                     }
                     data_.buttons = []
                     data_.detail_model_id = ""
                     this.formData = data_;
                     
                     this.options_buttons = []
@@ -532,6 +616,37 @@
                        },
                        
                        model_id: {
                           buttonarray: {
                              onclick: function(obj) {
                              },
                           },
                           visible: {
                              onchange: function(obj,row,callback) { //下拉展开事件
                                 let param_ = {
                                    dataname: "sys_model",//获取经销商对应收货地址
                                    filter:"is_detail='F'",
                                 }
                                 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 选择");
@@ -652,39 +767,114 @@
                  
                  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,
                        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];
                        }
                     }
                     
                     let param = {
                        dataname: this.dataname,
                        // operator: operator_,
                        data: {},
                     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,
                     }
                     param.data[this.dataname] = entity;
                           entity_data_field.push(field_);
                        }
                     
                     Server.call("root/data/saveEntity", param, function(result) {
                        console.log(result);
                        if (result.success) {
                           if (me.iscommit) {
                              me.iscommit = false;
                        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_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: '提交成功'
                                       message: '保存成功'
                                    });
                                    me.getMenuAll();
                              }); 
                           }
                           else {
@@ -692,10 +882,81 @@
                                 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 = [];
                      */
                     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() {
                        })
                     })
                  },
                  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()
                           }
                        }
                     });
                  },
@@ -704,6 +965,7 @@
                        this.$refs[data.id].style.display = isShow ? '' : 'none';
                     }
                  },
               }
            });
         };