zhangyanpeng
2024-08-26 3dfe7d4be26b4b57e9848320caa8697e1f31b8e7
调整
3个文件已修改
1个文件已添加
876 ■■■■■ 已修改文件
module/config/page/sys_menu_edit.html 410 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/model/model_iframe.html 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/model/page/popup_form_simple.html 434 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
module/model/page/table_simple.html 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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';
                            }
                        },
                    }
                });
            };
module/model/model_iframe.html
@@ -86,8 +86,11 @@
                    
                    methods:{
                        initData() {
                            if (this.sys_page_model.sys_model__url.substring(0, 18) == "module/model/page/") {
                                this.iframe_url = "./page/" + this.sys_page_model.sys_model__url.substring(18);
                            // if (this.sys_page_model.sys_model__url.substring(0, 18) == "module/model/page/") {
                            //     this.iframe_url = "./page/" + this.sys_page_model.sys_model__url.substring(18);
                            // }
                            if(this.sys_page_model.sys_model__url.substring(0, 7) == "module/") {
                                this.iframe_url = window.top.config.url_page + this.sys_page_model.sys_model__url;
                            }
                            else {
                                this.iframe_url = this.sys_page_model.sys_model__url
@@ -154,7 +157,6 @@
    <body style="position: absolute; top: 0; bottom: 0; left: 0; right: 0;">
        <div v-cloak id="vbody">
            <div id="page_root">
                <div>aaa</div>
                <div style="position: absolute; top: 0px; bottom: 5px; left: 0; right: 0;">
                    <iframe :src="iframe_url" style="width: 100%; height: 100%;" frameborder="0"></iframe>
                </div>
module/model/page/popup_form_simple.html
New file
@@ -0,0 +1,434 @@
<!doctype html>
<html>
    <head>
        <meta charset="utf-8"><meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Cache" content="no-cache">
        <title>简单详情模型</title>
        <script type="text/javascript">
            var pageVue = null;
            function loadJsCss(callback) {
                var jscss_urls = [];
                window.top.initJsCss(document, jscss_urls, callback);
            };
            function initVue() {
                new FormVue({
                    el: "#vbody",
                    data: {
                        dataname: "",
                        title: "简单详情模型",
                        dataRequest: [],
                        formAttr: {
                            istitle: false,
                            title: "表单名称",
                            columnnumber: 2,
                            labelwidth: "100px",
                            labelposition: "left",//"left",// right//top
                            size: "mini",
                            border: "10px solid #c6c6c600",
                            borderleft: "0px"
                        },
                        formFields: [],
                        newformData: {},
                        formData: {},
                        //按键权限设置
                        isedit: false,//提交前编辑,保存/提交
                        isrefuseedit: false,//拒绝后编辑,保存/再次提交
                        isapproval: false,//审批,同意/拒绝/转办/退回
                        iscommit: false,//提交标记
                        //弹窗参数
                        popupParames: {},
                        //字段设置
                        tablefieldClick: {},
                        formfieldClick: {},
                        dheight: null,
                        //审批相关变量
                        reasonvisible:false,//审批通过或拒绝填写原因
                        approveremark: '',//填写理由
                        passOrRefuse:false,
                        loading_pass: false,
                    },
                    created() {
                        this.popupParames = clone(Root.popupParames);
                        this.title = this.popupParames.title || this.popupParames.text
                        if (this.popupParames.data) {
                            this.formData = clone(this.popupParames.data);
                        }
                        if (this.popupParames.dataname) {
                            this.dataname = clone(this.popupParames.dataname);
                        }
                        if (this.popupParames.delta && this.popupParames.delta.dataname) {
                            this.dataname = clone(this.popupParames.delta.dataname);
                        }
                        if (this.popupParames.sceneCode) {
                            if (this.popupParames.sceneCode == "add") {//新增
                                var newEntity_ = {
                                    name: "newEntity",
                                    url: "root/data/newEntity",
                                    paramsobj: {dataname: this.dataname},
                                    isnotoption: true, //true:不是选项
                                }
                                this.dataRequest.push(newEntity_);
                                for (var k in this.popupParames.data) {
                                    this.newformData[k] = this.popupParames.data[k]
                                }
                                this.isedit = true;
                            }
                            else if (this.popupParames.sceneCode == "browse") { //只读
                                this.formAttr.disabled = true;
                            }
                            else if (this.popupParames.sceneCode == "edit") {//编辑
                                this.isedit = true;
                            }
                            else if (this.popupParames.sceneCode == "approval") {//审批
                                this.formAttr.disabled = true;
                                this.isapproval = true;
                            }
                        }
                    },
                    mounted() {
                        var me = this;
                        var title_h = 0;
                        if (me.popupParames.totab) {
                            title_h = 42;
                        }
                        me.dheight = document.documentElement.clientHeight - 50 - title_h;
                        //预加载数据
                        if (this.dataRequest && this.dataRequest.length) {
                            var result = {};
                            this.loadRequestData(this.dataRequest, result, function(data) {
                                me.dataRequestObj = data;
                                //预加载数据后给哪些字段设置options或formatterjson
                                if (me.dataRequestObj.newEntity) {
                                    var formData = clone(me.dataRequestObj.newEntity.data[me.dataname]);
                                    if (me.newformData) {
                                        let formData_ = clone(formData);
                                        for (var k in me.newformData) {
                                            if (!formData_[k]) {
                                                formData_[k] = me.newformData[k];
                                            }
                                        }
                                        me.formData = formData_;
                                    }
                                }
                                me.initData();
                            });
                        }
                        else {
                            this.initData();
                        }
                        // 以服务的方式调用的 Loading 需要异步关闭
                        this.$nextTick(() => {
                            hideLoading();
                        });
                    },
                    methods:{
                        //关闭弹窗
                        closeDialog() {
                            var me = this;
                            if (me.popupParames.totab){
                                Root.tab.removeItem(Root.tab.selected);
                                Root.tab.open(me.popupParames.parentOption, false);
                            }
                            else {
                                Root.hidePopup();
                            }
                        },
                        //关闭前调回调
                        saveAfter() {
                            var me = this;
                            if(this.popupParames.callback) {
                                let obj = {
                                    row: this.formData
                                }
                                this.popupParames.callback(obj, function() {
                                    me.closeDialog();
                                });
                            }
                            else {
                                me.closeDialog();
                            }
                        },
                        initData() {
                            let me = this;
                            var id_ = null;
                            if (this.formData.id) {
                                id_ = this.formData.id;
                            }
                            this.getRowDataById(id_, function(result) {//查询后的回调,用于获取字段的
                                if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) {
                                    var metas = clone(result.meta[me.dataname].fields);
                                    var formFields_ = [];
                                    var formData_ = me.rowData[me.dataname] ? me.rowData[me.dataname] : clone(me.formData);
                                    me.formData = clone(formData_)
                                    metas.map(f=>{
                                        f.isshow = "T";
                                        formFields_.push(clone(f));
                                    })
                                    if (!me.formFields || (me.formFields && me.formFields.length == 0)) {
                                        me.formFields = clone(formFields_);
                                        //字段数组转字段obj,目的为了筛选时获取字段属性
                                        me.fieldsToFieldsObj();
                                        //设置字段事件
                                        me.tableFieldClick();
                                    }
                                }
                            })
                        },
                        tableFieldClick() {
                            var me = this;
                            //表单字段事件设置
                            this.formfieldClick = {
                            };
                        },
                        //生效
                        openRowTable() {
                            var me = this;
                            var bo_ = this.$refs.form1.checkForm();
                            if (!bo_) {
                                bo_ = false;
                                Root.message({
                                    type: 'error',
                                    message: '请填写必填项'
                                });
                                return
                            }
                            me.formData.state_code = "Open"
                            me.formData.state_name = "生效"
                            // this.iscommit = true;
                            this.saveRowTable();
                        },
                        //保存
                        saveRowTable() {
                            var me = this;
                            var operator_ = "saveEntity";//保存
                            if(me.iscommit) {
                                operator_ = "commit";//提交
                            }
                            var entity_ = clone(this.formData);
                            var entity = {};
                            var product_ = [];
                            for (var r in entity_) {
                                if (entity_[r] || entity_[r] == "" || entity_[r] == false || entity_[r] == 0) {
                                    entity[r] = entity_[r];
                                }
                            }
                            let param = {
                                dataname: me.dataname,
                                data: {},
                            }
                            if (me.formData.id) {
                                param.id = me.formData.id
                            }
                            param.data[this.dataname] = entity;
                            Server.call("root/data/saveEntity", param, function(result) {
                                console.log(result);
                                if (result.success) {
                                    if(me.iscommit){
                                        me.iscommit = false;
                                        Root.message({
                                            type: 'success',
                                            message: '提交成功'
                                        });
                                        me.saveAfter();
                                    }
                                    else {
                                        Root.message({
                                            type: 'success',
                                            message: '保存成功'
                                        });
                                        me.saveAfter();
                                    }
                                }
                            });
                        },
                        // 通过或拒绝
                        onShowApproval(passOrRefuse) {
                            this.approveremark = "";
                            this.reasonvisible = true;//审批备注填写弹窗
                            this.passOrRefuse = passOrRefuse;// commit下一个状态;approve通过;gohome;//拒绝 goback;//回退
                        },
                        saveReason() {
                            this.loading_pass = true;
                            if(this.passOrRefuse == "commit" || this.passOrRefuse == "approve"){
                                this.doApproval();
                            }
                            else{
                                if(this.approveremark != ""){
                                    this.doApproval();
                                }
                                else{
                                    Root.message({
                                        type: 'warning',
                                        message: '请填写原因'
                                    });
                                    this.loading_pass = false;
                                }
                            }
                        },
                        doApproval(bo) {
                            var me = this;
                            this.doRunApproval()
                        },
                        doRunApproval() {
                            var me = this;
                            let param = {
                                dataname: me.dataname,
                                id: me.formData.id,
                                remark: this.approveremark
                            }
                            Server.call("root/data/" + this.passOrRefuse, param, function(result) {
                                me.loading_pass = false;
                                console.log(result);
                                if (me.passOrRefuse == "commit" || me.passOrRefuse == "approve") {
                                    Root.message({
                                        type: 'success',
                                        message: '审批成功'
                                    });
                                }
                                else if (me.passOrRefuse == "goback") {
                                    Root.message({
                                        type: 'success',
                                        message: '已退回'
                                    });
                                }
                                else if (me.passOrRefuse == "gohome") {
                                    Root.message({
                                        type: 'success',
                                        message: '已拒绝'
                                    });
                                }
                                me.saveAfter();
                            }, function(errorresult) {
                                console.log("错误信息", errorresult);
                                me.loading_pass = false;
                                if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
                                    if (errorresult.messages.list) {
                                        var config = {
                                            totab: false,
                                            // width: "1200px",
                                            // height: 800,
                                            icon: "icon-product",
                                            text: "错误信息",
                                            url: "module/tool/page/popup_error_messages.html",
                                            data: {},
                                            delta: errorresult.messages.list,
                                            callback: function(obj, callback) {
                                                if (callback) {
                                                    callback();
                                                }
                                            }
                                        };
                                        me.doPopupByPublic(config);
                                    }
                                }
                                else {
                                    Root.message({
                                        type: 'error',
                                        message: '审批失败'
                                    });
                                }
                            });
                        },
                    }
                });
            };
            loadJsCss(function () {
                initVue();
            });
        </script>
        <style>
            /*  在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
            [v-cloak] {
                display: none !important;
            }
        </style>
    </head>
    <body style="margin: 0px;">
        <div v-cloak id="vbody">
            <div id="page_root">
                <div ref="popup_body" style="padding: 0 20px;">
                    <div v-if="popupParames.totab" class="el-dialog__header">
                        <div class="dialog-title">
                          <i class="iconfont icon-customermanagement"></i>
                          <span> {{title}}</span>
                        </div>
                    </div>
                    <div :style="{height: dheight + 'px', 'overflow-y': 'auto'}">
                        <div class="el-dialog__body">
                            <h-form
                                ref="form1"
                                :form-attr="formAttr"
                                :table-fields="formFields"
                                :form-data="formData"
                                :table-field-click="formfieldClick"
                            >
                            </h-form>
                        </div>
                    </div>
                    <el-dialog title="填写原因" :visible.sync="reasonvisible" height="50%">
                        <el-input
                        type="textarea"
                        :autosize="{ minRows: 2, maxRows: 10}"
                        placeholder="请输入原因"
                        v-model="approveremark">
                        </el-input>
                        <div slot="footer" class="dialog-footer" >
                        <el-button type="default" @click="reasonvisible = false">取 消</el-button>
                        <el-button type="primary" :loading="loading_pass" @click="saveReason">确 定</el-button>
                        </div>
                    </el-dialog>
                    <div class="el-dialog__footer">
                        <el-button-group style="margin-right: 80px;" >
                            <el-button  size="small" v-if="isapproval" type="warning" plain @click="onShowApproval('gohome')">退回到申请人</el-button>
                            <el-button  size="small" v-if="isapproval" type="danger" plain @click="onShowApproval('goback')">退回到上一步</el-button>
                        </el-button-group>
                        <el-button size="small" type="default" @click="closeDialog">取 消</el-button>
                        <el-button size="small" v-if="isedit || isrefuseedit" type="primary" :loading="loading_save" @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button>
                        <el-button size="small" v-if="isedit && !formData.agreement_id" type="success" :loading="loading_submit" @click="openRowTable":icon="buttonsconfig.open.icon">{{buttonsconfig.open.name}}</el-button>
                        <el-button size="small" v-if="isapproval" type="success" @click="onShowApproval('approve')">通 过</el-button>
                    </div>
                </div>
            </div>
        </div>
        <div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;">
            <div class="spinner">
              <div class="cube1"></div>
              <div class="cube2"></div>
            </div>
        </div>
    </body>
</html>
module/model/page/table_simple.html
@@ -21,7 +21,16 @@
                        tablefieldClick: {},
                        formfieldClick: {},
                        dataRequest: [],
                        dataRequest: [
                            {
                                name: "sys_model",
                                dataname: "sys_model",
                                filter: "",
                                isnotoption: false, //true:不是选项
                                code:"id",//是下拉选项时设置
                                label:"url",//是下拉选项时设置
                            },
                        ],
                        dataRequestObj:{},
                        filterFields: [],
@@ -30,6 +39,8 @@
                        ctabs_r: {},
                        
                        isbasicfilterfields: true, // 存在查询
                        detail_model_id: "",
                        sys_model_map: {}
                    },
                    created() {
                        if (window.top.tab.selected.option.page_id) {
@@ -57,10 +68,15 @@
                                    me.loadRequestData(me.dataRequest, result, function(data) {
                                        me.dataRequestObj = data;
                                        //预加载数据后给哪些字段设置options或formatterjson
                                        if (me.dataRequestObj.sys_model) {
                                            me.sys_model_map = me.dataRequestObj.sys_model.map.sys_model;
                                        }
                                        if (me.dataRequestObj.sys_page_model) {
                                            var sys_page_model = me.dataRequestObj.sys_page_model[0];
                                            me.dataname = sys_page_model.dataname
                                            me.title = sys_page_model.title
                                            me.detail_model_id = sys_page_model.detail_model_id
                                        }
                                        me.initData();
                                    });
@@ -222,11 +238,11 @@
                                height: "500px",
                                icon: "icon-product",
                                text: me.title + "详情",
                                id: "form_simple" + sceneCode + row.id,//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/model/page/form_simple.html",
                                id: "popup_form_simple" + sceneCode + row.id,//totab: true时需设置,用于判断是否已打开此页面
                                url: "module/model/page/popup_form_simple.html",
                                dataname: me.dataname,
                                data: row,
                                delta: {},
                                delta: {dataname: me.dataname},
                                sceneCode: sceneCode,//"refuseedit",//"approval", //"add"//"browse",
                                callback: function(obj, callback) {
                                    me.onQuery();