cyy
2025-03-01 303d480e7569a0c0a476b462e843ea76658faac5
5601 modify form smallwmd
1个文件已删除
1个文件已添加
5个文件已修改
7422 ■■■■■ 已修改文件
api/data.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3018.vue 1416 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/5601.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/form/form.vue 3548 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/form/index.vue 2231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/data.js
@@ -111,6 +111,24 @@
        data,
    })
}
/**
 *api/dataobj/update
 *  更新数据对象
 * @param {*}
 * @returns
 */
export const updateDataObj = (data) => {
    const app = getApp()
    var url = app.globalData.mobox3ApiUrl.data + 'api/dataobj/update?sessionid=' + app.globalData.sessionId
    return http.request({
        method: "POST",
        header: {},
        url,
        data,
    })
}
/**
 *api/dataobj/Delete
 * 删除数据对象
@@ -132,4 +150,37 @@
        url,
        data,
    })
}
/**
 * api/dataobj/getinfo?sessionid=SESSION_ID
 * 得到数据对象信息
 * @param {*} param0
 */
export const dataObjInfo = (data) => {
    const {
        class_id,
        class_name,
        obj_id,
        attrs,
        get_info_type,
        check_compose
    } = data
    const app = getApp()
    var url = app.globalData.mobox3ApiUrl.data + 'api/dataobj/GetInfo?sessionid=' + app.globalData.sessionId
    return http.request({
        method: "POST",
        header: {},
        url,
        data: {
            class_id,
            class_name,
            obj_id,
            attrs,
            get_info_type,
            check_compose
        },
    })
}
manifest.json
@@ -2,8 +2,8 @@
    "name" : "MoboxPDA",
    "appid" : "__UNI__56D451E",
    "description" : "",
    "versionName" : "1.1.41",
    "versionCode" : 1141,
    "versionName" : "1.1.42",
    "versionCode" : 1142,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
pages.json
@@ -92,6 +92,14 @@
                "enablePullDownRefresh": false
            }
        },
        {
            "path" : "pages/modal/form/index",
            "style" :
            {
                "navigationBarTitleText":"%sys.add2%",
                "enablePullDownRefresh": false
            }
        },
        // {
        //     "path": "pages/modal/small-wnd/index",
        //     "style": {
pages/modal/3018.vue
@@ -257,9 +257,9 @@
        </view>
        <view class="v-bottom"><button type="default" @tap="cancel"
                class="btn_cancel">{{translateSys('cancel')}}</button>
            <button type="default" @tap="sava" class="btn_add">{{title}}</button>
        <view class="v-bottom"><button type="primary" @tap="ok" class="btn_add">{{title}}</button>
            <button type="default" @tap="cancel" class="btn_cancel">{{translateSys('cancel')}}</button>
        </view>
        <!-- 普通弹窗 top bottom center left right -->
        <view>
@@ -328,6 +328,8 @@
        data() {
            return {
                title: this.translateSys('add2'),
                editMode: false,
                objAttr: {},
                param: {},
                type: '',
                classAttrList: [],
@@ -371,6 +373,9 @@
            if (options.type) {
                this.$data.type = options.type;
            }
            this.editMode = options.editMode ? true : false;
            if (options.objAttr)
                this.objAttr = JSON.parse(options.objAttr);
            console.log(param);
            if (!param.EditDlgMode) {
                uni.showModal({
@@ -474,10 +479,13 @@
                    return res?.dict_item_list || []
                } catch (ex) {
                    // console.log(ex);
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('error') + " 1.3",
                        content: ex.errMsg,
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                    });
@@ -489,268 +497,336 @@
                try {
                    var $this = this;
                    var gridstyleInfo = {
                        class_id: $this.$data.param.clsid,
                        class_id: $this.param.clsid,
                        ui_style_type: 2,
                        ui_style_name: $this.$data.param.Edit_dlg.Name
                        ui_style_name: $this.param.Edit_dlg.Name
                    };
                    const result = await getUIStyleInfo(dataInfo)
                    const result = await getUIStyleInfo(gridstyleInfo)
                    var styledef = Base64.decode(result.style_def);
                    result.style_def = JSON.parse(styledef);
                    $this.$data.classGridStyle = result
                    $this.viewParam();
                } catch (ex) {
                    // console.log(ex);
                    console.log(ex)
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('error') + " 1.4",
                        content: ex.errMsg,
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                    });
                }
            },
            viewParam() { //将mobox3小写参数转换为mobox2大写参数
                var class_gridStyle = {
                    ID: this.$data.classGridStyle.id,
                    Name: this.$data.classGridStyle.name,
                    Type: this.$data.classGridStyle.type,
                    IsDefault: this.$data.classGridStyle.is_defaul,
                    StyleDef: this.$data.classGridStyle.style_def,
                };
                this.$data.classGridStyle = class_gridStyle;
                var class_attrList = [];
                this.$data.classAttrList.forEach(data => {
                    var attrs = [];
                    if (data.attr_list) {
                        data.attr_list.forEach(attr => {
                            var dictitems = [];
                            if (attr.dictitem) {
                                attr.dictitem.forEach(dict => {
                                    dictitems.push({
                                        ID: dict.id,
                                        Name: dict.name,
                                        Note: dict.note,
                                        Order: dict.order,
                                        ImgUrl: null,
                                        Code: dict.code,
                                        HasSub: null,
                                        ParentID: null,
                                        ParentName: null,
                                        Lvl: dict.lvl,
                                        IsDefault: dict.is_default,
                                        Value: dict.value,
                                        CN_G_ID: dict.id,
                                        CN_G_DICT_ID: null,
                                        CN_S_NAME: dict.name,
                                        CN_S_NOTE: dict.note,
                                        CN_N_ORDER: dict.order,
                                        CN_S_IMG_URL: null,
                                        CN_S_CODE: dict.code,
                                        CN_C_HAS_SUB: null,
                                        CN_G_PARENT_ITEM_ID: null,
                                        CN_G_PARENT_ITEM_NAME: null,
                                        CN_N_LVL: dict.lvl,
                                        CN_C_IS_DEFAULT: dict.is_default,
                                        CN_S_VALUE: dict.value
                                    });
                                });
                            }
                            attrs.push({
                                ID: attr.id,
                                Name: attr.name,
                                Type: attr.type,
                                Size: attr.size,
                                NotEmpty: attr.not_empty,
                                DefValue: attr.def_value,
                                Order: attr.order,
                                DictName: attr.dict_name,
                                DictID: attr.dict_id,
                                CodeDefName: attr.code_def_name,
                                CodeDefID: attr.code_def_id,
                                RelClsID: null,
                                RelCls: attr.ref_cls,
                                Width: attr.width,
                                Height: attr.height,
                                CtrlStyle: attr.ctrl_style,
                                HasAce: attr.has_ace,
                                CanShow: attr.can_show,
                                CanQuery: attr.can_query,
                                ReadOnly: attr.read_only,
                                IsKey: attr.is_key,
                                IsFixed: attr.is_fixed,
                                DispName: attr.disp_name,
                                LuaAttr: attr.lua_attr,
                                Desc: attr.desc,
                                ActionDef: attr.action_def ? Base64.decode(attr
                                    .action_def) : '',
                                Multilingual: attr.multilingual,
                                RefCondition: attr.ref_condition,
                                GroupName: data.group,
                                Value: null,
                                dictitem: dictitems
                            });
                        });
                    }
                    class_attrList.push({
                        Name: data.group,
                        Order: data.order,
                        HasAce: data.has_ace,
                        BkColor: data.bk_color,
                        ImgFontStyle: data.img_font_style,
                        Attr: attrs
            async loadFormData(objAttr) {
                let formData
                if (this.param.objid) {
                    let info = await dataObjInfo({
                        class_id: this.param.clsid,
                        obj_id: this.param.objid,
                    });
                });
                this.$data.classAttrList = class_attrList;
                // console.log(this.$data.classGridStyle);
                // console.log(this.$data.classAttrList);
                this.class_attr_init();
            },
            class_attr_init() {
                var attrlist = this.$data.classGridStyle.StyleDef.show_style
                var newattrlist = [];
                if (this.$data.classAttrList.length > 0) {
                    formData = {};
                    formData["id"] = info.id;
                    formData["state"] = info.state;
                    info.attr_list.forEach(({
                        name,
                        value
                    }) => {
                        formData[name] = value;
                    });
                } else if (objAttr) {
                    formData = {};
                    Object.keys(objAttr).forEach((attr) => {
                        let value = objAttr[attr];
                        formData[attr] = value;
                    });
                }
                //传入参数值
                if (formData) {
                    var attrlist = this.$data.classAttrList;
                    for (var i = 0; i < attrlist.length; i++) {
                        var open = attrlist[i].open;
                        var name = attrlist[i].attrgroup_name;
                        var attrs = attrlist[i].attrs;
                        for (var s = 0; s < this.$data.classAttrList.length; s++) {
                            var clsattr = this.$data.classAttrList[s];
                            // if (name == clsattr.Name) {
                            var attr = [];
                            for (var j = 0; j < attrs.length; j++) {
                                for (var l = 0; l < clsattr.Attr.length; l++) {
                                    var ca = clsattr.Attr[l];
                                    if (attrs[j].attr == ca.Name) {
                                        ca.action = attrs[j].action;
                                        ca.edit = attrs[j].edit;
                                        ca.notempty = attrs[j].notempty;
                                        ca.ext_button = attrs[j].ext_button;
                                        ca.button_img = attrs[j].button_img;
                                        ca.button_tooltip = attrs[j].button_tooltip;
                                        ca.before_click_button = attrs[j].before_click_button;
                                        ca.button_callback = attrs[j].button_callback;
                                        ca.hidden = attrs[j].hidden;
                                        ca.select = attrs[j].select == undefined ? false : attrs[j].select;
                                        ca.Value = "";
                                        if (ca.dictitem.length > 0) {
                                            if (ca.select == true)
                                                ca.Value = []; //ca.dictitem[0].CN_S_NAME;
                                            else
                                                ca.Value = this.translateSys(
                                                    "select"); //ca.dictitem[0].CN_S_NAME;
                                            var dictitemlist = [];
                                            for (var d = 0; d < ca.dictitem.length; d++) {
                                                ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;
                                                ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;
                                                ca.dictitem[d].attr = ca.Name;
                                                if (ca.dictitem[d].CN_C_IS_DEFAULT == '1')
                                                    ca.Value = ca.dictitem[d].CN_S_NAME;
                                            }
                                        }
                                        if (utils.classUtils.attrTypeIsDateTime(ca.Type)) {
                                            var nowDate = new Date();
                                            var date = {
                                                year: nowDate.getFullYear(),
                                                month: nowDate.getMonth() + 1,
                                                day: nowDate.getDate()
                                            }
                                            ca.Value = date.year + '-' + (date.month >= 10 ? date.month :
                                                '0' +
                                                date
                                                .month) + '-' + (date.day >= 10 ? date.day : '0' + date
                                                .day);
                                        }
                                        if (utils.classUtils.attrTypeIsObjRefMulti(ca.Type)) {
                                            ca.RelClsList = ca.RelCls;
                                            ca.Value = this.translateSys('please');
                                        }
                                        if (utils.classUtils.attrTypeIsRegion(ca.Type))
                                            ca.Value = this.translateSys("select");
                                        if (utils.classUtils.attrTypeIsBool(ca.Type))
                                            ca.Value = false;
                        var attr = attrlist[i].Attr;
                        for (var j = 0; j < attr.length; j++) {
                            var ar = attr[j];
                            ar.Value = formData[ar.Name] || ""
                        }
                    }
                    this.$data.classAttrList = attrlist;
                }
            },
            async viewParam() { //将mobox3小写参数转换为mobox2大写参数
                try {
                    var class_gridStyle = {
                        ID: this.$data.classGridStyle.id,
                        Name: this.$data.classGridStyle.name,
                        Type: this.$data.classGridStyle.type,
                        IsDefault: this.$data.classGridStyle.is_defaul,
                        StyleDef: this.$data.classGridStyle.style_def,
                    };
                    this.$data.classGridStyle = class_gridStyle;
                    var class_attrList = [];
                    this.$data.classAttrList.forEach(data => {
                        var attrs = [];
                        if (data.attr_list) {
                            data.attr_list.forEach(attr => {
                                var dictitems = [];
                                if (attr.dictitem) {
                                    attr.dictitem.forEach(dict => {
                                        dictitems.push({
                                            ID: dict.id,
                                            Name: dict.name,
                                            Note: dict.note,
                                            Order: dict.order,
                                            ImgUrl: null,
                                            Code: dict.code,
                                            HasSub: null,
                                            ParentID: null,
                                            ParentName: null,
                                            Lvl: dict.lvl,
                                            IsDefault: dict.is_default,
                                            Value: dict.value,
                                            CN_G_ID: dict.id,
                                            CN_G_DICT_ID: null,
                                            CN_S_NAME: dict.name,
                                            CN_S_NOTE: dict.note,
                                            CN_N_ORDER: dict.order,
                                            CN_S_IMG_URL: null,
                                            CN_S_CODE: dict.code,
                                            CN_C_HAS_SUB: null,
                                            CN_G_PARENT_ITEM_ID: null,
                                            CN_G_PARENT_ITEM_NAME: null,
                                            CN_N_LVL: dict.lvl,
                                            CN_C_IS_DEFAULT: dict.is_default,
                                            CN_S_VALUE: dict.value
                                        });
                                    });
                                }
                                attrs.push({
                                    ID: attr.id,
                                    Name: attr.name,
                                    Type: attr.type,
                                    Size: attr.size,
                                    NotEmpty: attr.not_empty,
                                    DefValue: attr.def_value,
                                    Order: attr.order,
                                    DictName: attr.dict_name,
                                    DictID: attr.dict_id,
                                    CodeDefName: attr.code_def_name,
                                    CodeDefID: attr.code_def_id,
                                    RelClsID: null,
                                    RelCls: attr.ref_cls,
                                    Width: attr.width,
                                    Height: attr.height,
                                    CtrlStyle: attr.ctrl_style,
                                    HasAce: attr.has_ace,
                                    CanShow: attr.can_show,
                                    CanQuery: attr.can_query,
                                    ReadOnly: attr.read_only,
                                    IsKey: attr.is_key,
                                    IsFixed: attr.is_fixed,
                                    DispName: attr.disp_name,
                                    LuaAttr: attr.lua_attr,
                                    Desc: attr.desc,
                                    ActionDef: attr.action_def ? Base64.decode(attr
                                        .action_def) : '',
                                    Multilingual: attr.multilingual,
                                    RefCondition: attr.ref_condition,
                                    GroupName: data.group,
                                    Value: null,
                                    dictitem: dictitems
                                });
                            });
                        }
                        class_attrList.push({
                            Name: data.group,
                            Order: data.order,
                            HasAce: data.has_ace,
                            BkColor: data.bk_color,
                            ImgFontStyle: data.img_font_style,
                            Attr: attrs
                        });
                    });
                    this.$data.classAttrList = class_attrList;
                    // console.log(this.$data.classGridStyle);
                    // console.log(this.$data.classAttrList);
                                        attr.push(ca);
                    await this.class_attr_init();
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys("error"),
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                }
            },
            async class_attr_init() {
                try {
                    var attrlist = this.$data.classGridStyle.StyleDef.show_style
                    var newattrlist = [];
                    if (this.$data.classAttrList.length > 0) {
                        for (var i = 0; i < attrlist.length; i++) {
                            var open = attrlist[i].open;
                            var name = attrlist[i].attrgroup_name;
                            var attrs = attrlist[i].attrs;
                            for (var s = 0; s < this.$data.classAttrList.length; s++) {
                                var clsattr = this.$data.classAttrList[s];
                                // if (name == clsattr.Name) {
                                var attr = [];
                                for (var j = 0; j < attrs.length; j++) {
                                    for (var l = 0; l < clsattr.Attr.length; l++) {
                                        var ca = clsattr.Attr[l];
                                        if (attrs[j].attr == ca.Name) {
                                            ca.action = attrs[j].action;
                                            ca.edit = attrs[j].edit;
                                            ca.notempty = attrs[j].notempty;
                                            ca.ext_button = attrs[j].ext_button;
                                            ca.button_img = attrs[j].button_img;
                                            ca.button_tooltip = attrs[j].button_tooltip;
                                            ca.before_click_button = attrs[j].before_click_button;
                                            ca.button_callback = attrs[j].button_callback;
                                            ca.hidden = attrs[j].hidden;
                                            ca.select = attrs[j].select == undefined ? false : attrs[j].select;
                                            ca.Value = "";
                                            if (ca.dictitem.length > 0) {
                                                if (ca.select == true)
                                                    ca.Value = []; //ca.dictitem[0].CN_S_NAME;
                                                else
                                                    ca.Value = this.translateSys(
                                                        "select"); //ca.dictitem[0].CN_S_NAME;
                                                var dictitemlist = [];
                                                for (var d = 0; d < ca.dictitem.length; d++) {
                                                    ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;
                                                    ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;
                                                    ca.dictitem[d].attr = ca.Name;
                                                    if (ca.dictitem[d].CN_C_IS_DEFAULT == '1')
                                                        ca.Value = ca.dictitem[d].CN_S_NAME;
                                                }
                                            }
                                            if (utils.classUtils.attrTypeIsDateTime(ca.Type)) {
                                                var nowDate = new Date();
                                                var date = {
                                                    year: nowDate.getFullYear(),
                                                    month: nowDate.getMonth() + 1,
                                                    day: nowDate.getDate()
                                                }
                                                ca.Value = date.year + '-' + (date.month >= 10 ? date.month :
                                                    '0' +
                                                    date
                                                    .month) + '-' + (date.day >= 10 ? date.day : '0' + date
                                                    .day);
                                            }
                                            if (utils.classUtils.attrTypeIsObjRefMulti(ca.Type)) {
                                                ca.RelClsList = ca.RelCls;
                                                ca.Value = this.translateSys('please');
                                            }
                                            if (utils.classUtils.attrTypeIsRegion(ca.Type))
                                                ca.Value = this.translateSys("select");
                                            if (utils.classUtils.attrTypeIsBool(ca.Type))
                                                ca.Value = false;
                                            attr.push(ca);
                                        }
                                    }
                                }
                                newattrlist.push({
                                    BkColor: clsattr.BkColor,
                                    HasAce: clsattr.HasAce,
                                    ImgFontStyle: clsattr.ImgFontStyle,
                                    Name: clsattr.Name,
                                    Order: clsattr.Order,
                                    Open: open,
                                    Attr: attr,
                                    control_style: this.$data.classGridStyle.StyleDef.control_style,
                                    title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith
                                })
                                // }
                            }
                        }
                        if (newattrlist.length > 0) {
                            this.$data.classAttrList = newattrlist;
                        }
                        var req = [];
                        if (this.$data.classGridStyle.StyleDef) {
                            if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {
                                var attrlist = this.$data.classGridStyle.StyleDef.show_style
                                // $el.find('.attr_field').prop('readonly', true);
                                // $el.find('.attr_field').prop('disabled', true);
                                for (var i = 0; i < attrlist.length; i++) {
                                    var attr = attrlist[i].attrs
                                    for (var j = 0; j < attr.length; j++) {
                                        var ar = attr[j];
                                        req.push({
                                            attr: ar.attr,
                                            value: ar.value ? ar.value : ''
                                        });
                                    }
                                }
                            }
                            newattrlist.push({
                                BkColor: clsattr.BkColor,
                                HasAce: clsattr.HasAce,
                                ImgFontStyle: clsattr.ImgFontStyle,
                                Name: clsattr.Name,
                                Order: clsattr.Order,
                                Open: open,
                                Attr: attr,
                                control_style: this.$data.classGridStyle.StyleDef.control_style,
                                title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith
                            })
                            // }
                        }
                    }
                    if (newattrlist.length > 0) {
                        this.$data.classAttrList = newattrlist;
                    }
                    var req = [];
                    if (this.$data.classGridStyle.StyleDef) {
                        if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {
                            var attrlist = this.$data.classGridStyle.StyleDef.show_style
                            // $el.find('.attr_field').prop('readonly', true);
                            // $el.find('.attr_field').prop('disabled', true);
                            for (var i = 0; i < attrlist.length; i++) {
                                var attr = attrlist[i].attrs
                                for (var j = 0; j < attr.length; j++) {
                                    var ar = attr[j];
                                    req.push({
                                        attr: ar.attr,
                                        value: ar.value ? ar.value : ''
                                    });
                        var eventlist = this.$data.classGridStyle.StyleDef.event;
                        // console.log(eventlist);
                        if (eventlist) {
                            if (eventlist.length > 0) {
                                for (var i = 0; i < eventlist.length; i++) {
                                    if (eventlist[i].event_id == 'before_ok') {
                                        this.$data.edit_ok_event = eventlist[i];
                                    } else if (eventlist[i].event_id == 'initial') {
                                        this.$data.edit_inital_event = eventlist[i];
                                    } else if (eventlist[i].event_id == 'before_select_compose') {
                                        this.$data.edit_select_compose_event = eventlist[i].scrip_id;
                                        this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;
                                    }
                                }
                            }
                        }
                    }
                    var eventlist = this.$data.classGridStyle.StyleDef.event;
                    // console.log(eventlist);
                    if (eventlist) {
                        if (eventlist.length > 0) {
                            for (var i = 0; i < eventlist.length; i++) {
                                if (eventlist[i].event_id == 'before_ok') {
                                    this.$data.edit_ok_event = eventlist[i];
                                } else if (eventlist[i].event_id == 'initial') {
                                    this.$data.edit_inital_event = eventlist[i];
                                } else if (eventlist[i].event_id == 'before_select_compose') {
                                    this.$data.edit_select_compose_event = eventlist[i].scrip_id;
                                    this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;
                                }
                        await this.loadFormData(this.objAttr)
                        // console.log(req);
                        if (this.$data.edit_inital_event) {
                            var eventid = this.$data.edit_inital_event.scrip_id;
                            var info = {
                                eventid: eventid,
                                edtype: "0",
                                projectid: '',
                                rclsid: '',
                                robjid: '',
                                userlogin: '',
                                clsid: this.$data.param.clsid,
                                objid: "",
                                attr: req,
                            }
                            this.ini_DataObjRunCustomEvent(info);
                        }
                    }
                    // console.log(req);
                    if (this.$data.edit_inital_event) {
                        var eventid = this.$data.edit_inital_event.scrip_id;
                        var info = {
                            eventid: eventid,
                            edtype: "0",
                            projectid: '',
                            rclsid: '',
                            robjid: '',
                            userlogin: '',
                            clsid: this.$data.param.clsid,
                            objid: "",
                            attr: req,
                        }
                        this.ini_DataObjRunCustomEvent(info);
                    }
                    console.log(this.$data.classGridStyle);
                    console.log(this.$data.classAttrList);
                        console.log(this.$data.classGridStyle);
                        console.log(this.$data.classAttrList);
                } else {
                    } else {
                        uni.showModal({
                            title: this.translateSys('tip'),
                            content: this.translate('no_find_attr_diaplay'),
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                    }
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('tip'),
                        content: this.translate('no_find_attr_diaplay'),
                        title: this.translateSys("error"),
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                        confirmText: this.translateSys("cancel")
                    });
                }
            },
@@ -801,6 +877,76 @@
                }
                this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index,
                    iindex);
            },
            setFormValues(data) {
                if (JSON.stringify(data) == '{}') {
                    return;
                }
                for (var a = 0; a < this.$data.classAttrList
                    .length; a++) {
                    for (var l = 0; l < this.$data
                        .classAttrList[a]
                        .Attr
                        .length; l++) {
                        var ca = this.$data.classAttrList[a]
                            .Attr[l];
                        let curIndex = data.findIndex((attr) => {
                            return attr.attr == ca.Name;
                        })
                        if (curIndex > -1) {
                            const attr = data[curIndex]
                            if (utils.classUtils
                                .attrTypeIsDict(ca
                                    .Type)) {
                                var dictItemList = [];
                                for (var d in attr
                                        .choice_list) {
                                    var list_val = attr
                                        .choice_list[d];
                                    dictItemList.push({
                                        "CN_S_NAME": list_val,
                                        "Name": list_val,
                                        "label": list_val,
                                        "value": list_val
                                    });
                                }
                                ca.dictitem = dictItemList;
                                // attr[j].dictitem = val[i].choice_list;
                            } else {
                                ca.Value = attr.value;
                            }
                        }
                    }
                }
                for (var i = 0; i < value.length; i++) {
                    var length = 0;
                    if (!this.$data.refdatastore.filter(function(
                            s) {
                            return data[i].attr == s.attr
                        }).length) {
                        length = 1;
                        this.$data.refdatastore.push(data[i]);
                    }
                    if (length == 0) {
                        for (var j = 0; j < this.$data.refdatastore
                            .length; j++) {
                            if (this.$data.refdatastore[j].attr ==
                                data[i]
                                .attr) {
                                this.$data.refdatastore[j].value =
                                    data[i]
                                    .value;
                            }
                        }
                    }
                }
            },
            popupChange(e) {
                console.log('当前模式:' + e.type + ',状态:' + e.show);
@@ -1216,18 +1362,7 @@
                    }
                });
            },
            //确定
            sava() {
                if (this.$data.edit_ok_event)
                    this.OKDataObjRunCustomEvent();
                else
                    this.add();
            },
            add() {
                uni.showLoading({
                    title: this.translateSys("loading"),
                    mask: true
                });
            getPostDataObjAttr() {
                var req = [];
                var attrlist = this.$data.classAttrList;
                for (var i = 0; i < attrlist.length; i++) {
@@ -1237,148 +1372,262 @@
                        if (ar.Value == this.translateSys("select") || ar.Value == '——' + this
                            .translateSys(
                                "select") + '——') ar.Value = '';
                        if (utils.classUtils.attrTypeIsDict(ar.Type)) {
                            if (ar.select == true) { //判断下拉是否多选
                                var valStr = "";
                                for (var v in ar.Value) {
                                    if (valStr)
                                        valStr += ";";
                                    valStr += ar.Value[v];
                                }
                                req.push({
                                    name: ar.Name,
                                    value: valStr
                                });
                            } else
                                req.push({
                                    name: ar.Name,
                                    value: ar.Value
                                });
                        } else {
                            const node = this.formatAttr(ar)
                        req.push(this.formatAttr(ar));
                    }
                }
                if (this.$data.refdatastore.length > 0) {
                    for (var i = 0; i < this.$data.refdatastore.length; i++) {
                        if (!req.filter(function(s) {
                                return this.$data.refdatastore[i].attr == s.name
                            }).length) {
                            length = 1;
                            req.push({
                                name: node.attr,
                                value: node.value
                                'attr': this.$data.refdatastore[i].attr,
                                'val': this.$data.refdatastore[i].value
                            });
                        }
                        if (ar.notempty == true && !ar.Value) {
                            // if(ar.NotEmpty=='1'){
                            uni.hideLoading();
                            // uni.showToast({title:ar.DispName+'不能为空!',icon:"success",duration:3000});
                            uni.showModal({
                                title: this.translateSys('tip'),
                                content: this.translateSys('quotation_mark_left') + ar.DispName +
                                    this
                                    .translateSys('quotation_mark_right') + this.translate(
                                        "cannot_empty"),
                                showCancel: false,
                                confirmText: this.translateSys('cancel')
                            });
                            return;
                        }
                    }
                }
                var enviroment = {
                    'function': '3000', // 功能点编号
                    cls_id: this.$data.param.clsid, // 功能点主数据类标识
                    'button': 'top', // top/bottom
                    button_name: this.translateSys('add2'),
                    master: {
                        cls_id: this.$data.param.clsid,
                    }
                };
                enviroment = Base64.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码
                var obj_attr = {};
                req.forEach(item => {
                    obj_attr[item.name] = item.value;
                    obj_attr[item.attr] = item.value;
                });
                // console.log(obj_attr);
                // var dataInfo={
                //     class_id: this.$data.param.clsid, data_obj_id: '', masterclsid: '',
                //     req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),
                //     compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment),
                //     not_trigger_sys_event: ''
                // };
                var dataInfo = {
                    class_id: this.$data.param.clsid,
                    class_name: '',
                    master_cls_id: '',
                    master_obj_id: '',
                    creator: '',
                    creator_name: '',
                    not_trigger_event: '',
                    update_exist: '',
                    post_process: '',
                    ext_info: enviroment,
                    obj_attr: obj_attr
                };
                console.log(dataInfo);
                // return
                DataObjCreate(dataInfo).then((res) => {
                    console.log(res);
                    uni.hideLoading();
                    let data = res.lua_result
                    if (data.ret != 0) {
                        var tip = data.err_info ? typeof data.err_info == 'string' ? data
                            .err_info :
                            data
                            .err_info.join('<br/>') : '';
                        if (data.ret == 801) uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                        else uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip + ',' + this.translateSys('tip') + ':' + data
                                .ret,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                        return false
                    } else {
                        var tip = data.info ? typeof data.info == 'string' ? data.info : data
                            .info
                            .join(
                                '<br/>') : '';
                        if (tip) uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                        uni.showToast({
                            title: this.translate('create_success'),
                            icon: "success",
                            duration: 3000
                        });
                    }
                    //刷新
                    uni.redirectTo({
                        url: '../modal/3018?param=' + JSON.stringify(this.$data
                                .param) +
                            "&titlename=" + this.$data.title
                return obj_attr
            },
            //确定
            async ok() {
                try {
                    uni.showLoading({
                        title: this.translateSys("loading"),
                        mask: true
                    });
                    // this.cancel();
                }).catch(ex => {
                    console.log(ex);
                    this.okLoading = true
                    var obj_attr = this.getPostDataObjAttr();
                    let ret = await this.sava();
                    this.okLoading = false
                    uni.hideLoading();
                    if (!ret) return;
                    obj_attr.id = this.objId;
                    const eventChannel = this.$scope.eventChannel;
                    // const eventChannel = this.getOpenerEventChannel();
                    eventChannel.emit(this.type, obj_attr);
                    uni.navigateBack()
                } catch (ex) {
                    return false;
                }
            },
            //确定
            async sava() {
                try {
                    if (this.param.objid) {
                        // let ret = await this.OKDataObjRunCustomEvent();
                        // if (!ret) return false;
                        if (this.$data.edit_ok_event) { // 点击确定按钮后
                            ret = await this.OKDataObjRunCustomEvent();
                            if (!ret) return false;
                        } else {
                            ret = await this.update();
                            if (!ret) return false;
                        }
                    } else {
                        if (this.editMode) {
                            return true
                        } else {
                            // let ret = await this.OKDataObjRunCustomEvent();
                            // if (!ret) return false;
                            if (this.$data.edit_ok_event) { // 点击确定按钮后
                                ret = await this.OKDataObjRunCustomEvent();
                                if (!ret) return false;
                            } else {
                                ret = await this.add();
                                if (!ret) return false;
                            }
                        }
                    }
                    return true;
                } catch (ex) {
                    return false;
                }
            },
            // async sava() {
            //     try {
            //         if (this.$data.edit_ok_event)
            //             this.OKDataObjRunCustomEvent();
            //         else
            //             this.add();
            //     } catch (ex) {
            //         return false;
            //     }
            // },
            async add() {
                try {
                    var req = [];
                    var attrlist = this.$data.classAttrList;
                    for (var i = 0; i < attrlist.length; i++) {
                        var attr = attrlist[i].Attr;
                        for (var j = 0; j < attr.length; j++) {
                            var ar = attr[j];
                            if (ar.Value == this.translateSys("select") || ar.Value == '——' + this
                                .translateSys(
                                    "select") + '——') ar.Value = '';
                            if (utils.classUtils.attrTypeIsDict(ar.Type)) {
                                if (ar.select == true) { //判断下拉是否多选
                                    var valStr = "";
                                    for (var v in ar.Value) {
                                        if (valStr)
                                            valStr += ";";
                                        valStr += ar.Value[v];
                                    }
                                    req.push({
                                        name: ar.Name,
                                        value: valStr
                                    });
                                } else
                                    req.push({
                                        name: ar.Name,
                                        value: ar.Value
                                    });
                            } else {
                                const node = this.formatAttr(ar)
                                req.push({
                                    name: node.attr,
                                    value: node.value
                                });
                            }
                            if (ar.notempty == true && !ar.Value) {
                                // if(ar.NotEmpty=='1'){
                                uni.hideLoading();
                                // uni.showToast({title:ar.DispName+'不能为空!',icon:"success",duration:3000});
                                uni.showModal({
                                    title: this.translateSys('tip'),
                                    content: this.translateSys('quotation_mark_left') + ar.DispName +
                                        this
                                        .translateSys('quotation_mark_right') + this.translate(
                                            "cannot_empty"),
                                    showCancel: false,
                                    confirmText: this.translateSys('cancel')
                                });
                                return;
                            }
                        }
                    }
                    var enviroment = {
                        'function': '3000', // 功能点编号
                        cls_id: this.$data.param.clsid, // 功能点主数据类标识
                        'button': 'top', // top/bottom
                        button_name: this.translateSys('add2'),
                        master: {
                            cls_id: this.$data.param.clsid,
                        }
                    };
                    enviroment = Base64.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码
                    var obj_attr = {};
                    req.forEach(item => {
                        obj_attr[item.name] = item.value;
                    });
                    var dataInfo = {
                        class_id: this.$data.param.clsid,
                        class_name: '',
                        master_cls_id: '',
                        master_obj_id: '',
                        creator: '',
                        creator_name: '',
                        not_trigger_event: '',
                        update_exist: '',
                        post_process: '',
                        ext_info: enviroment,
                        obj_attr: obj_attr
                    };
                    console.log(dataInfo);
                    // return
                    DataObjCreate(dataInfo).then((res) => {
                        console.log(res);
                        uni.hideLoading();
                        let data = res.lua_result
                        if (data.ret != 0) {
                            var tip = data.err_info ? typeof data.err_info == 'string' ? data
                                .err_info :
                                data
                                .err_info.join('<br/>') : '';
                            if (data.ret == 801) uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip,
                                showCancel: false,
                                confirmText: this.translateSys('cancel')
                            });
                            else uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip + ',' + this.translateSys('tip') + ':' + data
                                    .ret,
                                showCancel: false,
                                confirmText: this.translateSys('cancel')
                            });
                            return false
                        } else {
                            var tip = data.info ? typeof data.info == 'string' ? data.info : data
                                .info
                                .join(
                                    '<br/>') : '';
                            if (tip) uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip,
                                showCancel: false,
                                confirmText: this.translateSys('cancel')
                            });
                            uni.showToast({
                                title: this.translate('create_success'),
                                icon: "success",
                                duration: 3000
                            });
                        }
                        //刷新
                        uni.redirectTo({
                            url: '../modal/3018?param=' + JSON.stringify(this.$data
                                    .param) +
                                "&titlename=" + this.$data.title
                        });
                        // this.cancel();
                    }).catch(ex => {
                        console.log(ex);
                        uni.hideLoading();
                        let exStr = JSON.stringify(ex)
                        if (exStr == "{}")
                            exStr = ex
                        let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                        uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                    });
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('tip'),
                        content: ex.errMsg,
                        title: this.translateSys('error') + " 4.1",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                    });
                });
                }
            },
            ini_DataObjRunCustomEvent(info) {
                var param = {
@@ -1473,63 +1722,7 @@
                                    var value = action.value;
                                    if (action_type == 'set_dlg_attr') {
                                        if (value) {
                                            console.log(value);
                                            for (var i = 0; i < value.length; i++) {
                                                for (var a = 0; a < this.$data.classAttrList
                                                    .length; a++) {
                                                    for (var l = 0; l < this.$data
                                                        .classAttrList[a]
                                                        .Attr
                                                        .length; l++) {
                                                        var ca = this.$data.classAttrList[a]
                                                            .Attr[l];
                                                        if (value[i].attr == ca.Name) {
                                                            if (utils.classUtils
                                                                .attrTypeIsDict(ca
                                                                    .Type)) {
                                                                var dictItemList = [];
                                                                for (var d in value[i]
                                                                        .choice_list) {
                                                                    var list_val = value[i]
                                                                        .choice_list[d];
                                                                    dictItemList.push({
                                                                        "CN_S_NAME": list_val,
                                                                        "Name": list_val,
                                                                        "label": list_val,
                                                                        "value": list_val
                                                                    });
                                                                }
                                                                ca.dictitem = dictItemList;
                                                                // attr[j].dictitem = val[i].choice_list;
                                                            } else {
                                                                ca.Value = value[i].value;
                                                            }
                                                        }
                                                    }
                                                }
                                                var length = 0;
                                                if (!this.$data.refdatastore.filter(function(
                                                        s) {
                                                        return value[i].attr == s.attr
                                                    }).length) {
                                                    length = 1;
                                                    this.$data.refdatastore.push(value[i]);
                                                }
                                                if (length == 0) {
                                                    for (var j = 0; j < this.$data.refdatastore
                                                        .length; j++) {
                                                        if (this.$data.refdatastore[j].attr ==
                                                            value[i]
                                                            .attr) {
                                                            this.$data.refdatastore[j].value =
                                                                value[i]
                                                                .value;
                                                        }
                                                    }
                                                }
                                            }
                                            this.setFormValues(value)
                                        }
                                    }
                                    if (action_type == 'open_select_userdlg') {
@@ -1555,9 +1748,13 @@
                }).catch(ex => {
                    // console.log(ex);
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('error') + " 2.1",
                        content: ex.errMsg,
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                    });
@@ -1669,66 +1866,7 @@
                                var action = actionlist[i];
                                if (action.action_type == 'set_dlg_attr') {
                                    var result = action.value;
                                    for (var i = 0; i < result.length; i++) {
                                        if (result[i].choice_list) {
                                            for (var c = 0; c < $this.$data.classAttrList
                                                .length; c++) {
                                                var attr = $this.$data.classAttrList[c].Attr;
                                                for (var j = 0; j < attr.length; j++) {
                                                    if (attr[j].Name == result[i].attr) {
                                                        if (utils.classUtils.attrTypeIsDict(
                                                                attr[j]
                                                                .Type)) {
                                                            var dictItemList = [];
                                                            for (var d in result[i]
                                                                    .choice_list) {
                                                                var val = result[i]
                                                                    .choice_list[d];
                                                                dictItemList.push({
                                                                    "CN_S_NAME": val,
                                                                    "Name": val,
                                                                    "label": val,
                                                                    "value": val
                                                                });
                                                            }
                                                            attr[j].dictitem = dictItemList;
                                                            // attr[j].dictitem = result[i].choice_list;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        for (var c = 0; c < $this.$data.classAttrList
                                            .length; c++) {
                                            var attr = $this.$data.classAttrList[c].Attr;
                                            for (var j = 0; j < attr.length; j++) {
                                                console.log(attr[j].Name + '==' + result[i]
                                                    .attr);
                                                if (attr[j].Name == result[i].attr) {
                                                    attr[j].Value = result[i].value;
                                                }
                                            }
                                        }
                                        var length = 0;
                                        if (!$this.$data.refdatastore.filter(function(s) {
                                                return result[i].attr == s.attr
                                            }).length) {
                                            length = 1;
                                            $this.$data.refdatastore.push(result[i]);
                                        }
                                        if (length == 0) {
                                            for (var j = 0; j < $this.$data.refdatastore
                                                .length; j++) {
                                                if ($this.$data.refdatastore[j].attr == result[
                                                        i]
                                                    .attr) {
                                                    $this.$data.refdatastore[j].value = result[
                                                            i]
                                                        .value;
                                                }
                                            }
                                        }
                                    }
                                    this.setFormValues(action.value)
                                } else if (data.action[i].action_type == 'set_global_attr') {
                                    $this.$data.global_attr = data.action[i].value || [];
                                }
@@ -1768,161 +1906,174 @@
                    }
                }).catch(ex => {
                    // console.log(ex);
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('error') + " 3.1",
                        content: ex.errMsg,
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                    });
                });
            },
            OKDataObjRunCustomEvent() {
                var enviroment = {
                    'function': '3000', // 功能点编号
                    cls_id: this.$data.param.clsid, // 功能点主数据类标识
                    'button': 'top', // top/bottom
                    button_name: this.translateSys('add2'),
                    master: {
                        cls_id: this.$data.param.clsid, // button=bottom时 master的cls_id
            async OKDataObjRunCustomEvent() {
                try {
                    var enviroment = {
                        'function': '3000', // 功能点编号
                        cls_id: this.$data.param.clsid, // 功能点主数据类标识
                        'button': 'top', // top/bottom
                        button_name: this.translateSys('add2'),
                        master: {
                            cls_id: this.$data.param.clsid, // button=bottom时 master的cls_id
                    }
                };
                var eventid = this.$data.edit_ok_event.scrip_id;
                var req = [];
                var attrlist = this.$data.classAttrList;
                for (var i = 0; i < attrlist.length; i++) {
                    var attr = attrlist[i].Attr;
                    for (var j = 0; j < attr.length; j++) {
                        var ar = attr[j];
                        if (ar.Value == this.translateSys("select") || ar.Value == '——' + this
                            .translateSys(
                                "select") + '——') ar.Value = '';
                        req.push(this.formatAttr(ar));
                    }
                }
                if (this.$data.refdatastore.length > 0) {
                    for (var i = 0; i < this.$data.refdatastore.length; i++) {
                        if (!req.filter(function(s) {
                                return this.$data.refdatastore[i].attr == s.name
                            }).length) {
                            length = 1;
                            req.push({
                                'attr': this.$data.refdatastore[i].attr,
                                'val': this.$data.refdatastore[i].value
                            });
                        }
                    };
                    var eventid = this.$data.edit_ok_event.scrip_id;
                    var req = [];
                    var attrlist = this.$data.classAttrList;
                    for (var i = 0; i < attrlist.length; i++) {
                        var attr = attrlist[i].Attr;
                        for (var j = 0; j < attr.length; j++) {
                            var ar = attr[j];
                            if (ar.Value == this.translateSys("select") || ar.Value == '——' + this
                                .translateSys(
                                    "select") + '——') ar.Value = '';
                            req.push(this.formatAttr(ar));
                        }
                    }
                }
                var info = {
                    eventid: eventid,
                    edtype: "0",
                    projectid: '',
                    rclsid: '',
                    robjid: '',
                    userlogin: '',
                    clsid: this.$data.param.clsid,
                    objid: "",
                    attr: req,
                }
                //      var dataInfo = {
                //          edtype: info.edtype, eventid: info.eventid, projectid: info.projectid,rclsid: info.rclsid,
                // robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,
                // attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), global_attr: JSON.stringify(this.$data.global_attr)
                //      }
                enviroment = Base64.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码
                var global_attr = Base64.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码
                var obj_attr = {};
                info.attr.forEach(item => {
                    obj_attr[item.attr] = item.value;
                });
                if (!eventid.includes('{')) eventid = '{' + eventid + '}';
                var dataInfo = {
                    ed_type: info.edtype,
                    start_transaction: '',
                    class_id: info.clsid,
                    class_name: '',
                    event_id: eventid,
                    event_name: '',
                    data_obj_id: info.objid,
                    obj_attr: obj_attr,
                    prj_id: info.projectid,
                    ref_cls_id: info.rclsid,
                    rel_obj_id: info.robjid,
                    user_login: info.userlogin,
                    data_json: '',
                    compose_info: '',
                    ext_info: enviroment,
                    global_attr: global_attr,
                    input_param: '',
                };
                console.log(dataInfo);
                // return;
                runCustomEvent(dataInfo).then(data => {
                    console.log(data);
                    if (data.ret != 0) {
                        var tip = data.err_info ? typeof data.err_info == 'string' ? data
                            .err_info :
                            data
                            .err_info.join('<br/>') : '';
                        if (data.ret == 801) uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                        else uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip + ',' + this.translateSys('tip') + ':' + data
                                .ret,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                        return false
                    } else {
                        var tip = data.info ? typeof data.info == 'string' ? data.info : data
                            .info
                            .join(
                                '<br/>') : '';
                        if (tip) uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                        var result = data.result;
                        for (var i = 0; i < result.length; i++) {
                            // self.class_attr_ele.find('.attr_field[data-field="' + result[i].attr + '"]').val(result[i].value).data('val', result[i].value);
                            var length = 0;
                            if (!this.$data.refdatastore.filter(function(s) {
                                    return result[i].attr == s.attr
                    if (this.$data.refdatastore.length > 0) {
                        for (var i = 0; i < this.$data.refdatastore.length; i++) {
                            if (!req.filter(function(s) {
                                    return this.$data.refdatastore[i].attr == s.name
                                }).length) {
                                length = 1;
                                this.$data.refdatastore.push(result[i]);
                                req.push({
                                    'attr': this.$data.refdatastore[i].attr,
                                    'val': this.$data.refdatastore[i].value
                                });
                            }
                            if (length == 0) {
                                for (var j = 0; j < this.$data.refdatastore.length; j++) {
                                    if (this.$data.refdatastore[j].attr == result[i].attr) {
                                        this.$data.refdatastore[j].value = result[i].value;
                        }
                    }
                    var info = {
                        eventid: eventid,
                        edtype: "0",
                        projectid: '',
                        rclsid: '',
                        robjid: '',
                        userlogin: '',
                        clsid: this.$data.param.clsid,
                        objid: this.$data.param.objid,
                        attr: req,
                    }
                    enviroment = Base64.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码
                    var global_attr = Base64.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码
                    var obj_attr = {};
                    info.attr.forEach(item => {
                        obj_attr[item.attr] = item.value;
                    });
                    if (!eventid.includes('{')) eventid = '{' + eventid + '}';
                    var dataInfo = {
                        ed_type: info.edtype,
                        start_transaction: '',
                        class_id: info.clsid,
                        class_name: '',
                        event_id: eventid,
                        event_name: '',
                        data_obj_id: info.objid,
                        obj_attr: obj_attr,
                        prj_id: info.projectid,
                        ref_cls_id: info.rclsid,
                        rel_obj_id: info.robjid,
                        user_login: info.userlogin,
                        data_json: '',
                        compose_info: '',
                        ext_info: enviroment,
                        global_attr: global_attr,
                        input_param: '',
                    };
                    console.log(dataInfo);
                    // return;
                    runCustomEvent(dataInfo).then(data => {
                        console.log(data);
                        if (data.ret != 0) {
                            var tip = data.err_info ? typeof data.err_info == 'string' ? data
                                .err_info :
                                data
                                .err_info.join('<br/>') : '';
                            if (data.ret == 801) uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip,
                                showCancel: false,
                                confirmText: this.translateSys('cancel')
                            });
                            else uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip + ',' + this.translateSys('tip') + ':' + data
                                    .ret,
                                showCancel: false,
                                confirmText: this.translateSys('cancel')
                            });
                            return false
                        } else {
                            var tip = data.info ? typeof data.info == 'string' ? data.info : data
                                .info
                                .join(
                                    '<br/>') : '';
                            if (tip) uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip,
                                showCancel: false,
                                confirmText: this.translateSys('cancel')
                            });
                            var result = data.result;
                            for (var i = 0; i < result.length; i++) {
                                // self.class_attr_ele.find('.attr_field[data-field="' + result[i].attr + '"]').val(result[i].value).data('val', result[i].value);
                                var length = 0;
                                if (!this.$data.refdatastore.filter(function(s) {
                                        return result[i].attr == s.attr
                                    }).length) {
                                    length = 1;
                                    this.$data.refdatastore.push(result[i]);
                                }
                                if (length == 0) {
                                    for (var j = 0; j < this.$data.refdatastore.length; j++) {
                                        if (this.$data.refdatastore[j].attr == result[i].attr) {
                                            this.$data.refdatastore[j].value = result[i].value;
                                        }
                                    }
                                }
                            }
                            this.add();
                        }
                        this.add();
                    }
                }).catch(ex => {
                    // console.log(ex);
                    }).catch(ex => {
                        let exStr = JSON.stringify(ex)
                        if (exStr == "{}")
                            exStr = ex
                        let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                        uni.showModal({
                            title: this.translateSys('error') + " 4.1",
                            content: tip,
                            showCancel: false,
                            confirmText: this.translateSys('cancel')
                        });
                    });
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('error') + " 4.1",
                        content: ex.errMsg,
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                    });
                });
                }
            },
            DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {
                var enviroment = {
@@ -2233,10 +2384,13 @@
                    }
                }).catch(ex => {
                    // console.log(ex);
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('tip') + "5.1",
                        content: ex.errMsg,
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('cancel')
                    });
@@ -2493,7 +2647,7 @@
            color: #fff;
            font-size: 38rpx;
            font-weight: bold;
            float: right;
            float: left;
            display: inline-block;
        }
@@ -2502,12 +2656,12 @@
            margin-top: 50rpx;
            padding: 20rpx;
            line-height: 1.5;
            background: #27A6E1;
            background: #fff;
            border: none;
            color: #fff;
            color: #000;
            font-size: 38rpx;
            font-weight: bold;
            float: left;
            float: right;
            display: inline-block;
        }
pages/modal/5601.vue
@@ -274,14 +274,11 @@
            },
        },
        onLoad(options) {
            console.log(options.titlename, options);
            uni.setNavigationBarTitle({
                title: options.titlename
            }); //设置顶部标题 
            this.title = options.titlename;
            this.param = JSON.parse(options.param);
            //获取主数据类ID
            this.ClsID = this.param.master_cls?.id;
            if (this.ClsID) {
@@ -736,7 +733,7 @@
                            .onSuffixClickEvent; //后图标点击回调
                        var isflag = false;
                        if (onChangeEvent.id) { //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            $this.onChange(onChangeEvent);
                        }
                        if (item.value) { //第一个输入框不为空
@@ -819,7 +816,7 @@
                    this.head_styledef.form.model[attr] = item.value;
                    var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                    if (onChangeEvent.id) { //内容变化后事件
                    if (onChangeEvent?.id) { //内容变化后事件
                        this.onChange(onChangeEvent);
                    }
@@ -835,7 +832,7 @@
                        let attr = col.fieldId;
                        this.head_styledef.form.model[attr] = col.value;
                        var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent.id) { //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                        return
@@ -846,7 +843,7 @@
                        let attr = item.fieldId;
                        this.head_styledef.form.model[attr] = item.value;
                        var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent.id) { //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                    }
@@ -863,7 +860,7 @@
                        let attr = col.fieldId;
                        this.head_styledef.form.model[attr] = col.value;
                        var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent.id) { //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                        return
@@ -874,7 +871,7 @@
                        let attr = item.fieldId;
                        this.head_styledef.form.model[attr] = item.value;
                        var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent.id) { //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                    }
@@ -2574,14 +2571,17 @@
                })
            },
            onBtnClick(btn, pageData) {
                const $this = this
                if (btn.Prompt) {
                    const sContent = btn.PromptContent || this.translate("confirm")
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: btn.PromptContent || this.translate("confirm"),
                        success: function(res) {
                            if (res.confirm) {}
                            this.onButtonClicked(btn, pageData, -1);
                            if (res.confirm) {
                                $this.onButtonClicked(btn, pageData, -1);
                            }
                        },
                    })
@@ -2590,14 +2590,17 @@
                }
            },
            onRowBtnClick(btn, pageData, index) {
                const $this = this
                if (btn.Prompt) {
                    const sContent = btn.PromptContent || this.translate("confirm")
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: btn.PromptContent || this.translate("confirm"),
                        success: function(res) {
                            if (res.confirm) {}
                            this.onButtonClicked(btn, pageData, index);
                            if (res.confirm) {
                                $this.onButtonClicked(btn, pageData, index);
                            }
                        },
                    })
@@ -2611,7 +2614,7 @@
                    button: "top",
                    button_name: btn.ShowName,
                    cls_id: btn.Cls_ID,
                    function: "3018",
                    function: "5601",
                    master: {},
                };
                if (btn.FunCode == "TriggerEvent") {
@@ -2621,14 +2624,146 @@
                    this.cancel();
                } else if (btn.FunCode == "Delete") {
                    if (index > -1) {
                        const pageIndex = this.pageDetail.findIndex((
                            page) => {
                            return pageData.Name == page.Name;
                        })
                        const style = pageData.DefList[index];
                        //删除码盘中样式面板
                        pageData.DefList.splice(index, 1);
                        this.del(pageData, style, btn.AfterProcess_Event);
                        this.$set(this.pageDetail, pageIndex, pageData)
                    }
                } else if (btn.FunCode == "Modify") {
                    if (index > -1) {
                        const style = pageData.DefList[index];
                        if (btn.Edit_dlg.Model == "small") {
                            this.showSmallDialog(btn, style, enviroment, pageData);
                        } else if (btn.Edit_dlg.Model == "form") {
                            this.showFormDialog(btn, style, enviroment, pageData);
                        } else {
                            uni.showModal({
                                title: this.translateSys("tip"),
                                content: this.translateSys("unrealized"),
                                showCancel: false,
                                confirmText: this.translateSys("cancel")
                            });
                        }
                    }
                } else {
                    this.$Message.warning(this.$t("sys.unrealized"));
                }
            },
            //修改小窗口数据
            showSmallDialog(btn, row, enviroment, pageData) {
                var data = {
                    Add_BtnName: btn.ShowName,
                    EditDlgMode: btn.Edit_dlg.Model,
                    clsid: btn.Cls_ID,
                    objid: "",
                    cls_name: btn.Cls_Name,
                    Edit_dlg: btn.Edit_dlg
                };
                const objAttr = {}
                row.form.items.forEach(item => {
                    if (item.name == "Layout") { //判断是否是栅栏格式
                        item.setting.colList.forEach(cols => {
                            if (cols != null) objAttr[cols
                                .fieldId] = cols.value;
                        });
                    } else
                        objAttr[item.fieldId] = item.value;
                });
                const url = `../modal/3018?param=${JSON.stringify(data)}&titlename=${btn.Edit_dlg
                    .Name}&editMode=1&objAttr=${JSON.stringify(objAttr)}&type=updateDataObj`
                var $this = this;
                uni.navigateTo({
                    url: url,
                    events: {
                        // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
                        updateDataObj: function(formData) {
                            const pageIndex = $this.pageDetail.findIndex((
                                page) => {
                                return pageData.Name == page.Name;
                            })
                            if (pageIndex < 0)
                                return
                            Object.assign(row.form.model, formData);
                            row.form.items.forEach(async (ele, index) => {
                                if (ele.name != "Layout") {
                                    let value = formData[ele.fieldId]
                                    if (value)
                                        ele.value = value
                                } else {
                                    ele.setting.colList.forEach(async (col) => {
                                        if (col) {
                                            let value = formData[col.fieldId]
                                            if (value)
                                                col.value = value
                                        }
                                    });
                                }
                            })
                            $this.$set($this.pageDetail, pageIndex, pageData)
                        },
                    }
                });
            },
            //修改自定义表单数据
            showFormDialog(btn, row, enviroment, pageData) {
                const objAttr = {}
                row.form.items.forEach(item => {
                    if (item.name == "Layout") { //判断是否是栅栏格式
                        item.setting.colList.forEach(cols => {
                            if (cols != null) objAttr[cols
                                .fieldId] = cols.value;
                        });
                    } else
                        objAttr[item.fieldId] = item.value;
                });
                const url = `../modal/form/index?param=${JSON.stringify(btn)}&titlename=${btn.Edit_dlg
                    .Name}&editMode=1&objAttr=${JSON.stringify(objAttr)}&type=updateDataObj`
                var $this = this;
                uni.navigateTo({
                    url: url,
                    events: {
                        // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
                        updateDataObj: function(formData) {
                            const pageIndex = $this.pageDetail.findIndex((
                                page) => {
                                return pageData.Name == page.Name;
                            })
                            if (pageIndex < 0)
                                return
                            Object.assign(row.form.model, formData);
                            row.form.items.forEach(async (ele) => {
                                if (ele.name != "Layout") {
                                    let value = formData[ele.fieldId]
                                    if (value)
                                        ele.value = value
                                } else {
                                    ele.setting.colList.forEach(async (col) => {
                                        if (col) {
                                            let value = formData[col.fieldId]
                                            if (value)
                                                col.value = value
                                        }
                                    });
                                }
                            })
                            $this.$set($this.pageDetail, pageIndex, pageData)
                        },
                    }
                });
            },
            //确定
            ok(pageData) {
@@ -3367,6 +3502,7 @@
                    line-height: 1.5;
                    border: none;
                    font-size: 30rpx;
                    margin-right: 10rpx;
                    display: inline-block;
                    float: right;
                    text-align: center;
pages/modal/form/form.vue
File was deleted
pages/modal/form/index.vue
New file
@@ -0,0 +1,2231 @@
<template>
    <view class="uni-page-modal-form">
        <view class="view-content">
            <!-- 表头样式 -->
            <uni-forms ref="baseForm" label-align="right">
                <view v-for="(item,index) in head_styledef.form.items" :key="index" class="v-head-style">
                    <!-- 普通布局 -->
                    <uni-forms-item v-if="item.name != 'Layout'" :label="item.label ?item.label +':':'' "
                        :label-width="item.labelWidth+'px'">
                        <uni-data-picker v-if="item.name=='Select'" :class="item.disabled?'input-disabled':''"
                            v-model="item.value" :localdata="item.dict" @change="onEnterChange(item)"
                            :readonly="item.disabled" :clear-icon="false" :popup-title="item.label"></uni-data-picker>
                        <view class="input-wrapper" v-if="item.name=='Input' || item.name=='InputNumber'">
                            <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
                                @click="classAttr_extButton(item)">&#xe568;</text>
                            <input class="uni-input" :class="item.disabled?'input-disabled':''"
                                :style="{'padding-left':item.setting.prefix?0 : '8rpx','right':item.setting.suffix?0 : '8rpx'}"
                                :type="item.name=='Input'?'text':'number'" v-model="item.value"
                                :disabled="item.disabled" :placeholder="item.placeholder"
                                :focus="focusFieldId == item.fieldId" @focus="ontap(item)" @click="onClick(item)"
                                @keyup.enter="onEnterChange(item)" @blur="onEnterChange(item)" :maxlength="-1" />
                            <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
                                @click="classAttr_extButton(item)"></text>
                        </view>
                        <!-- 复选框 -->
                        <checkbox-group v-if="item.name=='Checkbox'" :class="item.disabled?'input-disabled':''"
                            :disabled="item.disabled" @change="onCheckBoxValue" :data-attr="item.fieldId"
                            :data-index="index">
                            <label v-for="(item2) in item.selections" :key="item2.value">
                                <checkbox :value="item2.value" :checked="item.value.includes(item2.value)" />
                                <text>{{item2.label}}</text>
                            </label>
                        </checkbox-group>
                        <!-- 单选框 -->
                        <radio-group v-if="item.name=='Radio'" :class="item.disabled?'input-disabled':''"
                            :disabled="item.disabled" @change="onRadioBoxValue" :data-attr="item.fieldId"
                            :data-index="index">
                            <label v-for="(item2) in item.selections" :key="item2.value">
                                <radio :value="item2.value" :checked="item2.value === item.value" />
                                <text>{{item2.label}}</text>
                            </label>
                        </radio-group>
                        <!-- Switch开关 -->
                        <switch class="input-switch" v-if="item.name=='Switch'"
                            :class="item.disabled?'input-disabled':''" :disabled="item.disabled" v-model="item.value"
                            @change="onEnterChange(item)" />
                    </uni-forms-item>
                    <!-- 栅格布局 -->
                    <uni-row v-else :gutter="item.setting.gutter">
                        <uni-col
                            :span=" item.setting.spanList && item.setting.spanList[key]? item.setting.spanList[key] : 24 / item.setting.col"
                            v-for="(col,key) in item.setting.colList">
                            <uni-forms-item :label="col.label ? col.label +':':''" :label-width="col.labelWidth+'px'">
                                <uni-data-picker v-if="col.name=='Select'" :class="col.disabled?'input-disabled':''"
                                    v-model="col.value" :localdata="col.dict" @change="onEnterChange(col)"
                                    :readonly="col.disabled" :clear-icon="false"
                                    :popup-title="col.label"></uni-data-picker>
                                <view class="input-wrapper" v-if="col.name=='Input' || col.name=='InputNumber'">
                                    <text v-if="col.setting.prefix" class="uni-icon" :class="[col.setting.prefix]"
                                        @click="classAttr_extButton(col)">&#xe568;</text>
                                    <input class="uni-input" :class="col.disabled?'input-disabled':''"
                                        :style="{'padding-left':col.setting.prefix?0 : '8px','right':col.setting.suffix?0 : '8px'}"
                                        :type="col.name=='Input'?'text':'number'" v-model="col.value"
                                        :disabled="col.disabled" :placeholder="col.placeholder"
                                        :focus="focusFieldId == col.fieldId" @focus="ontap(col)" @click="onClick(col)"
                                        @keyup.enter="onEnterChange(col)" @blur="onEnterChange(col)" :maxlength="-1" />
                                    <text v-if="col.setting.suffix" class="uni-icon" :class="[col.setting.suffix]"
                                        @click="classAttr_extButton(col)"></text>
                                </view>
                                <!-- 复选框 -->
                                <checkbox-group v-if="col.name=='Checkbox'" :class="col.disabled?'input-disabled':''"
                                    :disabled="col.disabled" @change="onCheckBoxValue" :data-attr="col.fieldId"
                                    :data-index="index" :data-iindex="key">
                                    <label v-for="(col2) in col.selections" :key="col2.value">
                                        <checkbox :value="col2.value" :checked="col.value.includes(col2.value)" />
                                        <text>{{col2.label}}</text>
                                    </label>
                                </checkbox-group>
                                <!-- 单选框 -->
                                <radio-group v-if="col.name=='Radio'" :class="col.disabled?'input-disabled':''"
                                    :disabled="col.disabled" @change="onRadioBoxValue" :data-attr="col.fieldId"
                                    :data-index="index" :data-iindex="key">
                                    <label v-for="(col2) in col.selections" :key="col2.value">
                                        <radio :value="col2.value" :checked="col2.value === col.value" />
                                        <text>{{col2.label}}</text>
                                    </label>
                                </radio-group>
                                <!-- Switch开关 -->
                                <switch v-if="col.name=='Switch'" :class="col.disabled?'input-disabled':''"
                                    :disabled="col.disabled" v-model="col.value" @change="onEnterChange(col)" />
                            </uni-forms-item>
                        </uni-col>
                    </uni-row>
                </view>
            </uni-forms>
        </view>
        <view class="view-bottom">
            <button type="primary" @tap="ok" class="btn_add" :class="okLoading?'btn_disabled':''"
                :disabled="okLoading">{{translateSys('ok')}}</button>
            <button type="default" @tap="cancel" class="btn_cancel">{{translateSys('cancel')}}</button>
        </view>
        <view>
            <uni-popup class="view-popup" ref="popup" background-color="#fff" @change="popupChange">
                <view class="popup-header">{{check_list.title}}</view>
                <view class="popup-content" :class="{ 'popup-height': popupType === 'left' || popupType === 'right' }"
                    :style="{'width':check_list.width?check_list.width+'px':'200px','height':check_list.height?check_list.height+'px':'88%'}">
                    <view class="popup-cont" :style="{'height':check_list.height?check_list.height-45+'px':'415px'}">
                        <view class="view_popup_CheckList" v-for="(item,index) in check_list.items">
                            <checkbox-group class="check_list" @change="checkChange" :data-ischeck="item.check"
                                :data-index="index" :style="{'margin-left': '10rpx'}">
                                <label>
                                    <checkbox :value="item.check" :checked="item.check" />
                                    <text>{{item.name}}</text>
                                </label>
                            </checkbox-group>
                        </view>
                    </view>
                    <view class="popup-footer">
                        <button type="default" @tap="popup_sava" class="btn_popup_add">{{translateSys('ok')}}</button>
                        <button type="default" @tap="popup_cancel"
                            class="btn_popup_cancel">{{translateSys('cancel')}}</button>
                    </view>
                </view>
            </uni-popup>
        </view>
    </view>
</template>
<script>
    import Base64 from '../../../components/js-base64/base64.js'
    import {
        dictGetInfo
    } from "@/api/mobox.js"
    import {
        getUIStyleInfo,
        runCustomEvent,
        dataObjCreate,
        updateDataObj,
        dataObjInfo
    } from "@/api/data.js"
    export default {
        name: "PageModalForm",
        modules: {
            Base64,
        },
        data() {
            return {
                okLoading:false,
                title: this.translateSys('add2'),
                type: '',
                editMode: false,
                clsId: '',
                objId: "",
                param: {},
                focusFieldId: "",
                focusOldFieldId: "",
                head_styledef: {
                    form: {
                        items: []
                    }
                },
                global_attr: [],
                ext_info: {},
                data_json: [],
                refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}
                popupType: "center",
                check_list: {},
                popupParam: {},
            };
        },
        computed: {
            initialEvent() {
                let event = this.head_styledef.event?.find((e) => e.event_id == "initial");
                return {
                    id: event?.scrip_id,
                    name: event?.scrip_name,
                };
            },
            beforeOKEvent() {
                let event = this.head_styledef.event?.find((e) => e.event_id == "before_ok");
                return {
                    id: event?.scrip_id,
                    name: event?.scrip_name,
                };
            },
            afterOKEvent() {
                let event = this.head_styledef.event?.find((e) => e.event_id == "after_ok");
                return {
                    id: event?.scrip_id,
                    name: event?.scrip_name,
                };
            },
            beforeCancelEvent() {
                let event = this.head_styledef.event?.find(
                    (e) => e.event_id == "before_cancel"
                );
                return {
                    id: event?.scrip_id,
                    name: event?.scrip_name,
                };
            },
            afterCancelEvent() {
                let event = this.head_styledef.event?.find(
                    (e) => e.event_id == "after_cancel"
                );
                return {
                    id: event?.scrip_id,
                    name: event?.scrip_name,
                };
            },
        },
        onLoad(options) {
            this.param = JSON.parse(options.param);
            let objAttr
            if (options.type) {
                this.type = options.type;
            }
            //获取主数据类ID
            this.clsId = this.param.Cls_ID;
            this.objId = options.objId || "";
            this.editMode = options.editMode ? true : false;
            if (options.objAttr)
                objAttr = JSON.parse(options.objAttr);
            if (options.globalAttrs)
                this.global_attr = JSON.parse(options.globalAttrs);
            if (options.extInfo)
                this.ext_info = JSON.parse(options.extInfo);
            if (options.dataJson)
                this.data_json = JSON.parse(options.dataJson);
            this.title = this.param.ShowName? this.param.ShowName : options.titlename; //设置按钮文字
            // console.log(options)
            uni.setNavigationBarTitle({
                title: this.title
            }); //设置顶部标题
            if (this.clsId) {
                this.loadData(objAttr)
            } else {
                uni.showModal({
                    title: this.translateSys("error"),
                    content: this.translate("tip_no_master_class"),
                    showCancel: false,
                    confirmText: this.translateSys("cancel")
                });
            }
        },
        //页面初始化获取焦点
        methods: {
            setData(obj) {
                let that = this;
                let keys = [];
                let val, data;
                Object.keys(obj).forEach(function(key) {
                    keys = key.split(".");
                    val = obj[key];
                    data = that.$data;
                    keys.forEach(function(key2, index) {
                        if (index + 1 == keys.length) {
                            that.$set(data, key2, val);
                            console.log("$set", key2, val)
                        } else {
                            if (!data[key2]) {
                                that.$set(data, key2, {});
                                console.log("$set", key2, {})
                            }
                        }
                        data = data[key2];
                    });
                });
            },
            async loadData(objAttr) {
                //获取数据类的自定义表单参数
                await this.Head_UIStyleGetInfo(this.clsId, this.param.Edit_dlg.ID);
                // form data
                await this.loadFormData(objAttr);
                // init event
                await this.loadInitialEvent();
            },
            async Head_UIStyleGetInfo(class_id, style_id) { //获取自定义表单样式
                try {
                    var $this = this;
                    var dataInfo = {
                        class_id: class_id,
                        ui_style_id: style_id,
                    };
                    const result = await getUIStyleInfo(dataInfo)
                    var styledef = "";
                    if (result.style_def) {
                        //mobox2的style_def是json字符串
                        styledef = result.style_def.replace(/\\/g, "");
                        //mobox3的style_def是base64字符串
                        if (!result.style_def.includes('"')) styledef = Base64.decode(
                            result
                            .style_def);
                    }
                    const styledefHead = styledef ? JSON.parse(styledef) : {};
                    if (styledefHead?.form?.items) {
                        for (let i in styledefHead.form.items) {
                            const ele = styledefHead.form.items[i]
                            if (ele.name != "Layout") {
                                if (ele?.useDict) {
                                    //判断useDict是否使用字典
                                    await this.DictGetInfo(ele.bind.dict,
                                        styledefHead.form.model,
                                        ele);
                                } else {
                                    if (ele?.name === "Select") {
                                        const selections = ele?.selections || []
                                        //有默认值,显示默认值
                                        let itemName = ele.value || "";
                                        if (itemName) {
                                            styledefHead.form
                                                .model[ele.fieldId] = itemName;
                                        }
                                        ele.dict = selections.map((a) => {
                                            return {
                                                value: a.value,
                                                text: a.label
                                            }
                                        })
                                    }
                                }
                                if ($this.focusFieldId == "") {
                                    if (ele.name == 'Input' || ele.name ==
                                        'InputNumber') {
                                        $this.setData({
                                            focusFieldId: ele.fieldId
                                        })
                                    }
                                }
                            } else {
                                for (let j in ele.setting.colList) {
                                    const col = ele.setting.colList[j]
                                    if (col?.useDict) {
                                        //判断useDict是否使用字典
                                        await this.DictGetInfo(col.bind
                                            .dict,
                                            styledefHead.form
                                            .model, col);
                                    } else {
                                        if (col?.name === "Select") {
                                            const selections = col?.selections || []
                                            //有默认值,显示默认值
                                            let itemName = col.value || "";
                                            if (itemName) {
                                                styledefHead.form
                                                    .model[col.fieldId] = itemName;
                                            }
                                            col.dict = selections.map((a) => {
                                                return {
                                                    value: a.value,
                                                    text: a.label
                                                }
                                            })
                                        }
                                    }
                                    if ($this.focusFieldId == "") {
                                        if (col.name == 'Input' || col
                                            .name ==
                                            'InputNumber') {
                                            $this.setData({
                                                focusFieldId: col
                                                    .fieldId
                                            })
                                        }
                                    }
                                }
                            }
                        }
                    }
                    this.setData({
                        head_styledef: styledefHead
                    })
                    console.log("Head_UIStyleGetInfo", this.head_styledef)
                } catch (ex) {
                    // console.log(ex);
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: $this.translateSys('tip') + "1",
                        content: exStr,
                        showCancel: false,
                        confirmText: $this.translateSys("cancel")
                    });
                }
            },
            async DictGetInfo(dict, formModel, formItem) { //Mobox3得到得到字典信息字典项列表
                this.data = [];
                var $this = this;
                var dataInfo = {
                    dict_id: dict.id,
                    dict_name: dict.name
                };
                try {
                    const result = await dictGetInfo(dataInfo)
                    var list = [];
                    var itemName = '';
                    (result.dict_item_list || []).forEach((item) => {
                        if (item.is_default == '1')
                            itemName = item.name
                        list.push({
                            text: item.value ? item.value : item.name,
                            value: item.name,
                        });
                    });
                    //有默认值,显示默认值
                    if (itemName) {
                        formItem.value = itemName;
                        formModel[formItem.fieldId] = itemName;
                    }
                    formItem.dict = list;
                } catch (ex) {
                    // console.log(ex);
                    uni.showModal({
                        title: this.translateSys("error") + "3",
                        content: ex.errMsg,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                }
            },
            async loadFormData(objAttr) {
                let formData
                if (this.objId) {
                    let info = await dataObjInfo({
                        class_id: this.clsId,
                        obj_id: this.objId,
                    });
                    formData = {};
                    formData["id"] = info.id;
                    formData["state"] = info.state;
                    info.attr_list.forEach(({
                        name,
                        value
                    }) => {
                        formData[name] = value;
                    });
                } else if (objAttr) {
                    formData = {};
                    Object.keys(objAttr).forEach((attr) => {
                        let value = objAttr[attr];
                        formData[attr] = value;
                    });
                }
                //传入参数值
                if (formData) {
                    if (this.head_styledef?.form) {
                        const items = this.head_styledef?.form?.items || []
                        const model = this.head_styledef?.form?.model || {}
                        Object.assign(model, formData);
                        items.forEach(async (ele, index) => {
                            if (ele.name != "Layout") {
                                let value = formData[ele.fieldId]
                                if (value)
                                    ele.value = value
                            } else {
                                ele.setting.colList.forEach(async (col) => {
                                    if (col) {
                                        let value = formData[col.fieldId]
                                        if (value)
                                            col.value = value
                                    }
                                });
                            }
                        })
                        this.$data.head_styledef.form.model = model
                        this.$data.head_styledef.form.items = items
                    }
                }
            },
            async loadInitialEvent() {
                try {
                    if (this.initialEvent.id) {
                        let obj_attr = this.head_styledef.form.model;
                        let inputParam = {
                            id: "",
                            attrs: Object.keys(obj_attr).map((a) => ({
                                attr: a,
                                value: obj_attr[a],
                            })),
                        };
                        let input_param = Base64.encode(JSON.stringify(inputParam));
                        let global_attr = Base64.encode(JSON.stringify(this.global_attr)); //将字符串转换为base64编码
                        let data_json = Base64.encode(JSON.stringify(this.data_json)); //将字符串转换为base64编码
                        let ext_info = Base64.encode(JSON.stringify(this.ext_info)); //将字符串转换为base64编码
                        const result = await runCustomEvent({
                            ed_type: 0,
                            class_id: this.clsId,
                            event_id: this.initialEvent.id,
                            data_obj_id: this.objId,
                            obj_attr,
                            input_param,
                            global_attr,
                            data_json,
                            ext_info
                        })
                        if (result.ret != 0) {
                            var tip = result.err_info ? typeof result
                                .err_info == 'string' ? result
                                .err_info : result.err_info.join('<br/>') :
                                '';
                            if (result.ret == 801) {
                                if (this.param.Only_Script_Error) {
                                    let pos = tip.indexOf(":");
                                    if (pos > -1) tip = tip.substring(pos +
                                        1);
                                }
                                uni.showModal({
                                    title: this.translateSys(
                                        "tip"),
                                    content: tip,
                                    showCancel: false,
                                    confirmText: this.translateSys(
                                        "cancel")
                                });
                            } else uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip + ',' + this
                                    .translateSys('tip') + ':' +
                                    result
                                    .ret,
                                showCancel: false,
                                confirmText: this.translateSys(
                                    "cancel")
                            });
                            return false;
                        } else {
                            var tip = result.info ? typeof result.info ==
                                'string' ? result.info :
                                result.info.join('<br/>') : '';
                            if (tip) uni.showModal({
                                title: this.translateSys('tip'),
                                content: tip,
                                showCancel: false,
                                confirmText: this.translateSys(
                                    "cancel")
                            });
                            if (result.result_type == 0 && result.action) {
                                result.action.forEach(item => {
                                    if (item.action_type ==
                                        "set_dlg_current_edit_attr"
                                    ) {
                                        if ($this
                                            .focusOldFieldId ==
                                            item.value) {
                                            $this.setData({
                                                focusFieldId: ""
                                            })
                                        } else {
                                            $this.setData({
                                                focusFieldId: $this
                                                    .focusOldFieldId
                                            })
                                        }
                                        $this.$nextTick(() => {
                                            $this.setData({
                                                focusFieldId: item
                                                    .value
                                            })
                                        });
                                    } else if (item.action_type ==
                                        "set_dlg_attr") {
                                        // value = {"attr":"xxx", "value":"xxx"}
                                        var data = item.value;
                                        $this.setFormValues(data)
                                    }
                                });
                            } else {
                                if (result.info) {
                                    uni.showModal({
                                        title: this.translateSys(
                                            "error") + "4.3",
                                        content: result.info,
                                        showCancel: false,
                                        confirmText: this
                                            .translateSys("cancel")
                                    });
                                }
                            }
                        }
                    }
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: $this.translateSys('tip') + "2",
                        content: exStr,
                        showCancel: false,
                        confirmText: $this.translateSys("cancel")
                    });
                }
            },
            onClick(item) {
                this.focusFieldId = item.fieldId
            },
            ontap(item) { //扫码功能
                // var $ele = e;
                //console.log(e.target)
                this.focusOldFieldId = item.fieldId
                getApp().onScan((result) => {
                    console.log(result.decodedata);
                    item.value = result.decodedata;
                    var $this = this;
                    if (item.oldvalue != item.value && item.value.trim() != "") {
                        item.oldvalue = item.value;
                        var attr = item.fieldId;
                        this.head_styledef.form.model[attr] = item.value;
                        var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                        var onSuffixClickCallbackEvent = item.bind
                            .onSuffixClickCallbackEvent; //后图标点击事件
                        var onSuffixClickEvent = item.bind
                            .onSuffixClickEvent; //后图标点击回调
                        var isflag = false;
                        if (onChangeEvent?.id) { //内容变化后事件
                            $this.onChange(onChangeEvent);
                        }
                        if (item.value) { //第一个输入框不为空
                            //初始化,下个输入框focus属性
                            var findd = false
                            for (let i in $this.head_styledef.form.items) {
                                const ele = $this.head_styledef.form.items[i]
                                if (ele.name != "Layout") {
                                    if (ele.name == 'Input' || ele.name ==
                                        'InputNumber') {
                                        if (attr == ele.fieldId) {
                                            findd = true
                                        } else {
                                            if (findd) {
                                                $this.setData({
                                                    focusFieldId: ele.fieldId
                                                })
                                                break
                                            }
                                        }
                                    }
                                } else {
                                    if (findd) {
                                        let curIndex = ele.setting.colList.findIndex((
                                            col, index2, arr) => {
                                            return (col.name == 'Input' || col
                                                .name == 'InputNumber');
                                        })
                                        if (curIndex > -1) {
                                            $this.setData({
                                                focusFieldId: ele.setting
                                                    .colList[curIndex]
                                                    .fieldId
                                            })
                                            break
                                        }
                                    } else {
                                        let curIndex = ele.setting.colList.findIndex((
                                            col, index2, arr) => {
                                            return attr == col.fieldId;
                                        })
                                        if (curIndex > -1) {
                                            findd = true
                                            let curIndex2 = ele.setting.colList
                                                .findIndex((col, index2, arr) => {
                                                    return (col.name == 'Input' ||
                                                            col.name ==
                                                            'InputNumber') &&
                                                        index2 >
                                                        curIndex;
                                                })
                                            if (curIndex2 > -1) {
                                                $this.setData({
                                                    focusFieldId: ele.setting
                                                        .colList[curIndex]
                                                        .fieldId
                                                })
                                                break
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                })
            },
            onEnterChange(item) { //回车,点击按钮,取消节点事件
                console.log(item);
                if (item.oldvalue != item.value && item.value.trim() != "") {
                    item.oldvalue = item.value;
                    var attr = item.fieldId;
                    this.head_styledef.form.model[attr] = item.value;
                    var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                    if (onChangeEvent?.id) { //内容变化后事件
                        this.onChange(onChangeEvent);
                    }
                }
            },
            onCheckBoxValue(e) { //绑定Model值
                let values = e.detail.value || []
                const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
                if (item?.setting?.colList) {
                    const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
                    if (col) {
                        col.value = values
                        let attr = col.fieldId;
                        this.head_styledef.form.model[attr] = col.value;
                        var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                        return
                    }
                } else {
                    if (item) {
                        item.value = values
                        let attr = item.fieldId;
                        this.head_styledef.form.model[attr] = item.value;
                        var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                    }
                }
            },
            onRadioBoxValue(e) { //绑定Model值
                let values = e.detail.value || ""
                const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
                if (item?.setting?.colList) {
                    const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
                    if (col) {
                        col.value = values
                        let attr = col.fieldId;
                        this.head_styledef.form.model[attr] = col.value;
                        var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                        return
                    }
                } else {
                    if (item) {
                        item.value = values
                        let attr = item.fieldId;
                        this.head_styledef.form.model[attr] = item.value;
                        var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                        if (onChangeEvent?.id) { //内容变化后事件
                            this.onChange(onChangeEvent);
                        }
                    }
                }
            },
            classAttr_extButton(item) {
                var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件
                var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调
                if (!onSuffixClickCallbackEvent.id) {
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: this.translate('icon_click_callback_empty'),
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return;
                }
                if (!onSuffixClickEvent.id) {
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: this.translate('icon_click_event_empty'),
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return;
                }
                this.$data.popupType = 'right'
                // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
                this.$refs.popup.open(this.popupType);
                this.dataObjRunCustomEvent_Return(onSuffixClickCallbackEvent.id, '', onSuffixClickEvent.id,
                    item);
            },
            // 内容变化后事件
            async onChange(event) {
                try {
                    if (event.id) {
                        //获取表头属性
                        var head_attr = {};
                        this.head_styledef.form.items.forEach(item => {
                            if (item.name == "Layout") { //判断是否是栅栏格式
                                item.setting.colList.forEach(cols => {
                                    if (cols != null) head_attr[cols
                                        .fieldId] = cols.value;
                                });
                            } else
                                head_attr[item.fieldId] = item.value;
                        });
                        var obj_attr = this.head_styledef.form.model;
                        // console.log(obj_attr);
                        var input_param = Base64.encode(
                            JSON.stringify(
                                Object.keys(head_attr).map((a) => ({
                                    attr: a,
                                    value: head_attr[a] || "",
                                }))
                            )
                        );
                        var $this = this;
                        let global_attr = Base64.encode(JSON.stringify(this.global_attr))
                        let data_json = Base64.encode(JSON.stringify(this.data_json))
                        let ext_info = Base64.encode(JSON.stringify(this.ext_info))
                        var dataInfo = {
                            ed_type: 0,
                            start_transaction: true,
                            class_id: this.clsId,
                            class_name: '',
                            event_id: event.id,
                            event_name: '',
                            data_obj_id: '',
                            obj_attr: obj_attr,
                            prj_id: '',
                            ref_cls_id: '',
                            rel_obj_id: '',
                            user_login: '',
                            data_json,
                            compose_info: '',
                            ext_info,
                            global_attr,
                            input_param: input_param,
                        };
                        runCustomEvent(dataInfo).then(result => {
                            console.log(result);
                            if (result.ret != 0) {
                                var tip = result.err_info ? typeof result
                                    .err_info == 'string' ? result
                                    .err_info : result.err_info.join('<br/>') :
                                    '';
                                if (result.ret == 801) {
                                    if (this.param.Only_Script_Error) {
                                        let pos = tip.indexOf(":");
                                        if (pos > -1) tip = tip.substring(pos +
                                            1);
                                    }
                                    uni.showModal({
                                        title: this.translateSys(
                                            "tip"),
                                        content: tip,
                                        showCancel: false,
                                        confirmText: this.translateSys(
                                            "cancel")
                                    });
                                } else uni.showModal({
                                    title: this.translateSys('tip'),
                                    content: tip + ',' + this
                                        .translateSys('tip') + ':' +
                                        result
                                        .ret,
                                    showCancel: false,
                                    confirmText: this.translateSys(
                                        "cancel")
                                });
                                return false;
                            } else {
                                var tip = result.info ? typeof result.info ==
                                    'string' ? result.info :
                                    result.info.join('<br/>') : '';
                                if (tip) uni.showModal({
                                    title: this.translateSys('tip'),
                                    content: tip,
                                    showCancel: false,
                                    confirmText: this.translateSys(
                                        "cancel")
                                });
                                if (result.result_type == 0 && result.action) {
                                    result.action.forEach(item => {
                                        if (item.action_type ==
                                            "set_dlg_current_edit_attr"
                                        ) {
                                            if ($this
                                                .focusOldFieldId ==
                                                item.value) {
                                                $this.setData({
                                                    focusFieldId: ""
                                                })
                                            } else {
                                                $this.setData({
                                                    focusFieldId: $this
                                                        .focusOldFieldId
                                                })
                                            }
                                            $this.$nextTick(() => {
                                                $this.setData({
                                                    focusFieldId: item
                                                        .value
                                                })
                                            });
                                        } else if (item.action_type ==
                                            "set_dlg_attr") {
                                            // value = {"attr":"xxx", "value":"xxx"}
                                            var data = item.value;
                                            $this.setFormValues(data)
                                        }
                                    });
                                } else {
                                    if (result.info) {
                                        uni.showModal({
                                            title: this.translateSys(
                                                "error") + "4.3",
                                            content: result.info,
                                            showCancel: false,
                                            confirmText: this
                                                .translateSys("cancel")
                                        });
                                    }
                                }
                            }
                        }).catch(ex => {
                            // console.log(ex);
                            let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
                            uni.showModal({
                                title: this.translateSys("error") + "4.1",
                                content: tip,
                                showCancel: false,
                                confirmText: this.translateSys("cancel")
                            });
                        });
                    }
                } catch (ex) {
                    var tip = typeof ex == "string" ? ex : ex.message;
                    uni.showModal({
                        title: this.translateSys("error") + "4.2",
                        content: this.translate(
                                'execute_after_change_event_failed') + this
                            .translateSys(
                                "comma") +
                            this.translate('reason') + this.translateSys("colon") +
                            tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                }
            },
            setFormValues(data) {
                const head_styledef = this.head_styledef
                if (JSON.stringify(data) == '{}') {
                    return;
                }
                head_styledef.form.items.forEach(async (ele, index) => {
                    if (ele.name != "Layout") {
                        let curIndex = data.findIndex((attr, index2, arr) => {
                            return attr.attr == ele.fieldId;
                        })
                        if (curIndex > -1) {
                            const attr = data[curIndex]
                            if (ele.name ==
                                'Select' &&
                                attr
                                .choice_list
                            ) {
                                const
                                    dictItemList = [];
                                const
                                    choiceList =
                                    attr
                                    .choice_list || [];
                                for (let d in
                                        choiceList) {
                                    const
                                        val =
                                        choiceList[
                                            d
                                        ];
                                    dictItemList
                                        .push({
                                            text: val,
                                            value: val
                                        });
                                }
                                ele.dict =
                                    dictItemList;
                            }
                            ele.value =
                                attr
                                .value;
                        }
                    } else {
                        ele.setting
                            .colList
                            .forEach(
                                async (
                                    col
                                ) => {
                                    if (
                                        col) {
                                        let curIndex = data.findIndex((
                                            attr, index2, arr) => {
                                            return attr.attr == col.fieldId;
                                        })
                                        if (curIndex > -1) {
                                            const attr = data[curIndex]
                                            if (col.name ==
                                                'Select' &&
                                                attr
                                                .choice_list
                                            ) {
                                                const
                                                    dictItemList = [];
                                                const
                                                    choiceList =
                                                    attr
                                                    .choice_list || [];
                                                for (let d in
                                                        choiceList) {
                                                    const
                                                        val =
                                                        choiceList[
                                                            d
                                                        ];
                                                    dictItemList
                                                        .push({
                                                            text: val,
                                                            value: val
                                                        });
                                                }
                                                col.dict =
                                                    dictItemList;
                                            }
                                            col.value =
                                                attr
                                                .value;
                                        }
                                    }
                                })
                    }
                })
                this.setData({
                    head_styledef: head_styledef
                })
            },
            popupChange(e) {
                console.log('当前模式:' + e.type + ',状态:' + e.show);
            },
            checkChange(e) { //弹框check选择
                // console.log(e.target.dataset);
                var index = e.target.dataset.index;
                var ischeck = e.target.dataset.ischeck;
                var data = this.$data.check_list.items;
                // this.$data.check_list.items=[];
                if (this.$data.check_list.multiple_choice == "0") { //判断时单选还是多选
                    for (var i in data) {
                        data[i].check = false;
                    }
                }
                data[index].check = ischeck ? false : true;
                this.$data.check_list.items = data;
            },
            popup_cancel(e) { //弹框取消
                this.$refs.popup.close();
            },
            popup_sava(e) { //弹框确定
                var $this = this;
                var items = $this.$data.check_list.items;
                var data = [];
                var name = "";
                for (var i = 0; i < items.length; i++) {
                    if (items[i].check == true) {
                        if (name)
                            name += ';';
                        name += items[i].name;
                        data.push({
                            id: items[i].id,
                            name: items[i].name
                        });
                    }
                }
                if (!$this.$data.popupParam) {
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: "popupParam为空!",
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return;
                }
                if (data.length == 0) {
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: this.translate("tip_no_select_data"),
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return;
                }
                let global_attr = Base64.encode(JSON.stringify(this.global_attr))
                let data_json = Base64.encode(JSON.stringify(this.data_json))
                let ext_info = Base64.encode(JSON.stringify(this.ext_info))
                var callback_eventid = $this.$data.popupParam.button_callback.trim();
                var info = {
                    eventid: callback_eventid,
                    edtype: "0",
                    projectid: '',
                    rclsid: '',
                    robjid: '',
                    userlogin: '',
                    clsid: $this.clsId,
                    objid: "",
                    attr: $this.$data.popupParam.req,
                    dataJson: data
                }
                $this.DataObjRunCustomEvent(info, $this.$data.popupParam.data_attr);
                this.$refs.popup.close();
            },
            async DataObjRunCustomEvent(info, data_attr) {
                var $this = this;
                var enviroment = {
                    'function': '3000', // 功能点编号
                    cls_id: this.clsId, // 功能点主数据类标识
                    'button': 'top', // top/bottom
                    button_name: this.translateSys('add2'),
                    master: {
                        cls_id: this.clsId, // button=bottom时 master的cls_id
                        //obj_id: ''  // button=bottom时 master的obj_id
                    }
                };
                if (data_attr) {
                    enviroment.edit_dlg = {
                        type: 'small', //小窗口
                        class_id: this.clsId, //当前数据类id
                    }
                    if (data_attr) {
                        enviroment.edit_dlg.form_control = { //所属的表单控件
                            name: data_attr.Name, //字段属性
                            text: data_attr.DispName, //显示文本
                            group_name: data_attr.GroupName, //属性组
                            type: data_attr.Type, //字段类型
                            readonly: data_attr.ReadOnly, //是否只读
                            button_img: data_attr.button_img, //引用按钮的图标
                            button_tooltip: data_attr.button_tooltip //引用按钮的tooltip
                        }
                    }
                }
                enviroment = Base64.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码
                var input_param = Base64.encode(JSON.stringify(info.attr)); //将字符串转换为base64编码
                var global_attr = Base64.encode(JSON.stringify(this.global_attr)); //将字符串转换为base64编码
                if (info.dataJson)
                    info.dataJson = Base64.encode(JSON.stringify(info.dataJson)); //将字符串转换为base64编码
                var obj_attr = {};
                info.attr.forEach(item => {
                    obj_attr[item.attr] = item.value;
                });
                if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';
                var dataInfo = {
                    ed_type: info.edtype,
                    start_transaction: true,
                    class_id: info.clsid,
                    class_name: '',
                    event_id: info.eventid,
                    event_name: '',
                    data_obj_id: info.objid,
                    obj_attr: obj_attr,
                    prj_id: info.projectid,
                    ref_cls_id: info.rclsid,
                    rel_obj_id: info.robjid,
                    user_login: info.userlogin,
                    data_json: info.dataJson,
                    compose_info: '',
                    ext_info: enviroment,
                    global_attr: global_attr,
                    input_param: input_param,
                };
                console.log(dataInfo);
                // return;
                runCustomEvent(dataInfo).then(data => {
                    if (data.ret != 0) {
                        var tip = data.err_info ? typeof data.err_info == 'string' ? data
                            .err_info :
                            data
                            .err_info.join('<br/>') : '';
                        if (data.ret == 801) {
                            if (this.param.Only_Script_Error) {
                                let pos = tip.indexOf(":");
                                if (pos > -1) tip = tip.substring(pos + 1);
                            }
                            uni.showModal({
                                title: this.translateSys("tip"),
                                content: tip,
                                showCancel: false,
                                confirmText: this.translateSys("cancel")
                            });
                        } else uni.showModal({
                            title: this.translateSys("tip"),
                            content: tip + ',' + this.translateSys('tip') + ':' + data
                                .ret,
                            showCancel: false,
                            confirmText: this.translateSys("cancel")
                        });
                        return false
                    } else {
                        var tip = data.info ? typeof data.info == 'string' ? data.info : data
                            .info
                            .join(
                                '<br/>') : '';
                        if (tip) uni.showModal({
                            title: this.translateSys("tip"),
                            content: tip,
                            showCancel: false,
                            confirmText: this.translateSys("cancel")
                        });
                        var actionlist = data.action;
                        if (actionlist) {
                            console.log(actionlist);
                            for (var i = 0; i < actionlist.length; i++) {
                                var action = actionlist[i];
                                if (action.action_type == 'set_dlg_attr') {
                                    var result = action.value;
                                    $this.setFormValues(result)
                                } else if (action.action_type == 'set_dlg_attr_show') {
                                    var result = action.value;
                                    result.forEach(async (attr, key) => {
                                        $this.$data.head_styledef.form.items
                                            .forEach(
                                                async (ele,
                                                    index) => {
                                                    //判断是否是栅格表单
                                                    if (ele.name != 'Layout') {
                                                        if (ele.fieldId == attr
                                                            .attr) {
                                                            ele.show = attr
                                                                .show;
                                                        }
                                                    } else if (ele.name ==
                                                        'Layout') {
                                                        ele.setting.colList
                                                            .forEach(
                                                                col => {
                                                                    if (col) {
                                                                        if (col
                                                                            .fieldId ==
                                                                            attr
                                                                            .attr
                                                                        ) {
                                                                            col.show =
                                                                                attr
                                                                                .show;
                                                                        }
                                                                    }
                                                                });
                                                    }
                                                });
                                    });
                                    var head_styledef = JSON.parse(JSON.stringify($this.$data
                                        .head_styledef));
                                    $this.$data.head_styledef = [];
                                    $this.$data.head_styledef = head_styledef;
                                    // console.log($this.$data.head_styledef);
                                } else if (action.action_type == 'set_global_attr') {
                                    $this.$data.global_attr = action.value || [];
                                } else {
                                    uni.showModal({
                                        title: this.translateSys("tip"),
                                        content: this.translateSys(
                                                "quotation_mark_left") +
                                            action
                                            .action_type + this.translateSys(
                                                "quotation_mark_right") + this
                                            .translate(
                                                "tip_action_unprocessed"),
                                        showCancel: false,
                                        confirmText: this.translateSys("cancel")
                                    });
                                }
                            }
                        }
                        console.log($this.head_styledef);
                        if (data.result) {
                            var result = data.result;
                            for (var i = 0; i < result.length; i++) {
                                for (var c = 0; c < $this.$data.head_styledef.form.items
                                    .length; c++) {
                                    var attr = $this.$data.head_styledef.form.items[c];
                                    //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据
                                    if ($this.head_styledef.form.model[result[i].attr] ==
                                        undefined) {
                                        $this.head_styledef.form.model[result[i].attr] =
                                            result[i]
                                            .value;
                                    }
                                    //判断是否是栅格表单
                                    if (attr.name != 'Layout') {
                                        if (attr.fieldId == result[i].attr) {
                                            attr.value = '';
                                            attr.oldvalue = '';
                                            attr.value = result[i].value;
                                            attr.oldvalue = result[i].value;
                                            $this.head_styledef.form.model[attr.fieldId] =
                                                result[i]
                                                .value;
                                        }
                                    } else if (attr.name == 'Layout') {
                                        attr.setting.colList.forEach(col => {
                                            if (col) {
                                                if (col.fieldId == result[i].attr) {
                                                    col.value = '';
                                                    col.oldvalue = '';
                                                    col.value = result[i].value;
                                                    col.oldvalue = result[i].value;
                                                    $this.head_styledef.form.model[col
                                                            .fieldId] =
                                                        result[i].value;
                                                }
                                            }
                                        });
                                    }
                                }
                                var length = 0;
                                if (!$this.$data.refdatastore.filter(function(s) {
                                        return result[i].attr == s.attr
                                    }).length) {
                                    length = 1;
                                    $this.$data.refdatastore.push(result[i]);
                                }
                                if (length == 0) {
                                    for (var j = 0; j < $this.$data.refdatastore.length; j++) {
                                        if ($this.$data.refdatastore[j].attr == result[i]
                                            .attr) {
                                            $this.$data.refdatastore[j].value = result[i]
                                                .value;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }).catch(ex => {
                    // console.log(ex);
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys("error") + "3.1",
                        content: exStr,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                });
            },
            dataObjRunCustomEvent_Return(eventid, data_attr, button_callback, item) {
                console.log("dataObjRunCustomEvent_Return", eventid, data_attr, button_callback)
                const $this = this
                var enviroment = {
                    'function': '3000', // 功能点编号
                    cls_id: $this.clsId, // 功能点主数据类标识
                    'button': 'top', // top/bottom
                    button_name: $this.translateSys('add2'),
                    master: {
                        cls_id: $this.clsId, // button=bottom时 master的cls_id
                        //obj_id: ''  // button=bottom时 master的obj_id
                    }
                };
                var obj_attr = $this.head_styledef.form.model;
                console.log(obj_attr);
                var req = Object.keys(obj_attr).map((a) => ({
                    attr: a,
                    value: obj_attr[a] || "",
                }));
                if ($this.refdatastore.length > 0) {
                    for (var i = 0; i < $this.refdatastore.length; i++) {
                        if (!req.filter(function(s) {
                                return $this.refdatastore[i].attr == s.name
                            }).length) {
                            req.push({
                                'attr': $this.refdatastore[i].attr,
                                'value': $this.refdatastore[i].value
                            });
                        }
                    }
                }
                let global_attr = Base64.encode(JSON.stringify(this.global_attr))
                let data_json = Base64.encode(JSON.stringify(this.data_json))
                let ext_info = Base64.encode(JSON.stringify(this.ext_info))
                var obj_attr = {};
                req.forEach(item2 => {
                    obj_attr[item2.attr] = item2.value;
                });
                let input_param = Base64.encode(
                    JSON.stringify(
                        Object.keys(obj_attr).map((a) => ({
                            attr: a,
                            value: obj_attr[a] || "",
                        }))
                    )
                );
                if (!eventid.includes('{')) eventid = '{' + eventid + '}';
                var dataInfo = {
                    ed_type: "0",
                    start_transaction: true,
                    class_id: $this.clsId,
                    class_name: '',
                    event_id: eventid,
                    event_name: '',
                    data_obj_id: '',
                    obj_attr: obj_attr,
                    prj_id: '',
                    ref_cls_id: '',
                    rel_obj_id: '',
                    user_login: '',
                    data_json,
                    compose_info: '',
                    ext_info,
                    global_attr,
                    input_param: input_param,
                };
                console.log(dataInfo);
                // return;
                runCustomEvent(dataInfo).then(data => {
                    if (data.ret != 0) {
                        var tip = data.err_info ? typeof data.err_info == 'string' ? data
                            .err_info :
                            data
                            .err_info.join('<br/>') : '';
                        if (data.ret == 801) {
                            if ($this.param.Only_Script_Error) {
                                let pos = tip.indexOf(":");
                                if (pos > -1) tip = tip.substring(pos + 1);
                            }
                            uni.showModal({
                                title: $this.translateSys("tip"),
                                content: tip,
                                showCancel: false,
                                confirmText: $this.translateSys("cancel")
                            });
                        } else uni.showModal({
                            title: $this.translateSys("tip"),
                            content: tip + ',' + $this.translateSys('tip') + ':' + data
                                .ret,
                            showCancel: false,
                            confirmText: $this.translateSys("cancel")
                        });
                        return false
                    } else {
                        var tip = data.info ? typeof data.info == 'string' ? data.info : data
                            .info
                            .join(
                                '<br/>') : '';
                        if (tip) uni.showModal({
                            title: $this.translateSys("tip"),
                            content: tip,
                            showCancel: false,
                            confirmText: $this.translateSys("cancel")
                        });
                        if (data != "") {
                            var actions = data.action;
                            if (actions) {
                                for (var i = 0; i < actions.length; i++) {
                                    var action = actions[i];
                                    console.log(action)
                                    var val = action.value;
                                    var enviroment = JSON.stringify(enviroment);
                                    if (action.action_type == 'open_panel') {
                                        var d = dialog({
                                            title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                                $this.translateSys("tip"),
                                            content: $this.translateSys(
                                                    "quotation_mark_left") +
                                                action
                                                .action_type + $this.translateSys(
                                                    "quotation_mark_right") + $this
                                                .translate(
                                                    "tip_action_unprocessed")
                                        });
                                        d.show();
                                    } else if (action.action_type == 'open_select_userdlg') {
                                        var style = val.style;
                                        // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''
                                        var param = {
                                            item: item,
                                            button_callback: button_callback,
                                            req: req,
                                            data_attr: data_attr
                                        }
                                        uni.navigateTo({
                                            url: '../selpsn/index?mulit=false&param=' +
                                                JSON
                                                .stringify(
                                                    param),
                                            events: {
                                                AddPer(data, param) {
                                                    // console.log(param);
                                                    console.log(data);
                                                    var callback_eventid = param
                                                        .button_callback
                                                        .trim();
                                                    var info = {
                                                        eventid: callback_eventid,
                                                        edtype: "0",
                                                        projectid: '',
                                                        rclsid: '',
                                                        robjid: '',
                                                        userlogin: '',
                                                        clsid: $this.clsId,
                                                        objid: "",
                                                        attr: param.req,
                                                        inputparameter: data,
                                                        dataJson: [],
                                                    }
                                                    $this.DataObjRunCustomEvent(info,
                                                        param
                                                        .data_attr);
                                                }
                                            }
                                        });
                                    } else if (action.action_type == 'open_data_query_dlg') {
                                        var d = dialog({
                                            title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                                $this.translateSys("tip"),
                                            content: $this.translateSys(
                                                    "quotation_mark_left") +
                                                action
                                                .action_type + $this.translateSys(
                                                    "quotation_mark_right") + $this
                                                .translate(
                                                    "tip_action_unprocessed")
                                        });
                                        d.show();
                                    } else if (action.action_type == 'open_common_dlg') {
                                        if (val.common_dlg_id == 'check_list') {
                                            $this.setData({
                                                check_list: val.config
                                            })
                                            if (val.config.appear_style == 'sideslip') //判断是否是侧滑
                                                $this.setData({
                                                    popupType: "right"
                                                })
                                            else
                                                $this.setData({
                                                    popupType: "center"
                                                })
                                            // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
                                            $this.$refs.popup.open($this.popupType);
                                            var popupParam = {
                                                item: item,
                                                button_callback: button_callback,
                                                req: req,
                                                data_attr: data_attr
                                            }
                                            $this.setData({
                                                popupParam: popupParam
                                            })
                                        }
                                    } else if (action.action_type == 'open_project_query_dlg') {
                                        //console.log(action.value.select_range);
                                        //console.log(action.value.mulit_select);
                                        var priRel = '-1';
                                        if (action.value.select_range == '全部相关')
                                            priRel = '0';
                                        else if (action.value.select_range == '我负责的项目')
                                            priRel = '1';
                                        else if (action.value.select_range == '我创建的')
                                            priRel = '2';
                                        else if (action.value.select_range == '我参与的' || action
                                            .value
                                            .select_range == '我参加的')
                                            priRel = '3';
                                        else if (action.value.select_range == '我关注的')
                                            priRel = '4';
                                        else if (action.value.select_range == '我下属的项目')
                                            priRel = '5';
                                        var param_ = {
                                            item: item,
                                            button_callback: button_callback,
                                            req: req
                                        }
                                        uni.navigateTo({
                                            url: '../selPrj/index?relation=' + priRel +
                                                '&param=' +
                                                JSON.stringify(param_),
                                            events: {
                                                AddPer(data, param) {
                                                    var attr = param.item.fieldId;
                                                    $this.head_styledef.form.model[
                                                            attr] =
                                                        data[0].ID +
                                                        ';' + data[0].Name;
                                                    // $this.$data.classAttrList[param.index].Attr[param.iindex].Value=data[0].Name;
                                                    // $this.$data.classAttrList[param.index].Attr[param.iindex].ValID=data[0].ID+';'+data[0].Name;
                                                    var callback_eventid = param
                                                        .button_callback
                                                        .trim();
                                                    if (callback_eventid) {
                                                        var info = {
                                                            eventid: callback_eventid,
                                                            edtype: "2",
                                                            projectid: data[0].ID,
                                                            rclsid: "",
                                                            robjid: "",
                                                            userlogin: "",
                                                            clsid: $this.clsId,
                                                            objid: "",
                                                            attr: param.req,
                                                            dataJson: [],
                                                        }
                                                        $this.DataObjRunCustomEvent(
                                                            info);
                                                    }
                                                }
                                            }
                                        });
                                    } else {
                                        uni.showModal({
                                            title: $this.translateSys("tip"),
                                            content: $this.translateSys(
                                                    "quotation_mark_left") +
                                                action.action_type + $this.translateSys(
                                                    "quotation_mark_right") + $this
                                                .translate(
                                                    "tip_action_unprocessed"),
                                            showCancel: false,
                                            confirmText: $this.translateSys("cancel")
                                        });
                                    }
                                }
                            }
                        } else {
                            uni.showModal({
                                title: $this.translateSys('tip') + "5.2",
                                content: $this.translateSys("quotation_mark_left") +
                                    "before_click_button" + $this.translateSys(
                                        "quotation_mark_right") + $this.translateSys(
                                        "comma") + 'event_id' + eventid,
                                showCancel: false,
                                confirmText: $this.translateSys("cancel")
                            });
                        }
                    }
                }).catch(ex => {
                    // console.log(ex);
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: $this.translateSys('tip') + "5.1",
                        content: exStr,
                        showCancel: false,
                        confirmText: $this.translateSys("cancel")
                    });
                });
            },
            //确定
            async ok() {
                try {
                    uni.showLoading({
                        title: this.translateSys("loading"),
                        mask: true
                    });
                    this.okLoading = true
                    var obj_attr = this.head_styledef.form.model || {};
                        console.log(obj_attr)
                    let ret = await this.sava();
                    this.okLoading = false
                    uni.hideLoading();
                    if (!ret) return;
                    obj_attr.id = this.objId || "";
                    const eventChannel = this.$scope.eventChannel;
                    // const eventChannel = this.getOpenerEventChannel();
                    eventChannel.emit(this.type, obj_attr);
                    uni.navigateBack()
                } catch (ex) {
                    return false;
                }
            },
            async sava() {
                try {
                    if (this.objId) {
                        let ret = await this.beforeOK();
                        if (!ret) return false;
                        if (this.afterOKEvent?.id) { // 点击确定按钮后
                            ret = await this.afterOK();
                            if (!ret) return false;
                        } else {
                            ret = await this.update();
                            if (!ret) return false;
                        }
                    } else {
                        if (this.editMode) {
                            return true
                        } else {
                            let ret = await this.beforeOK();
                            if (!ret) return false;
                            if (this.afterOKEvent?.id) { // 点击确定按钮后
                                ret = await this.afterOK();
                                if (!ret) return false;
                            } else {
                                ret = await this.add();
                                if (!ret) return false;
                            }
                        }
                    }
                    return true;
                } catch (ex) {
                    return false;
                }
            },
            async beforeOK() {
                try {
                    if (!this.beforeOKEvent.id) return true;
                    const $this = this
                    var obj_attr = this.head_styledef.form.model;
                    // console.log(obj_attr);
                    var input_param = {
                        id: "",
                        attrs: Object.keys(obj_attr).map((a) => ({
                            attr: a,
                            value: obj_attr[a],
                        })),
                    };
                    let global_attr = Base64.encode(JSON.stringify(this.global_attr))
                    let data_json = Base64.encode(JSON.stringify(this.data_json))
                    let ext_info = Base64.encode(JSON.stringify(this.ext_info))
                    var dataInfo = {
                        ed_type: "0",
                        start_transaction: true,
                        class_id: this.clsId,
                        class_name: '',
                        event_id: this.beforeOKEvent?.id,
                        event_name: '',
                        data_obj_id: this.objId,
                        obj_attr: obj_attr,
                        prj_id: '',
                        ref_cls_id: '',
                        rel_obj_id: '',
                        user_login: '',
                        global_attr,
                        data_json,
                        ext_info,
                        compose_info: '',
                        input_param: Base64.encode(JSON.stringify(input_param)),
                    };
                    await runCustomEvent(dataInfo)
                    return true
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('tip') + "7.1",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return false
                }
            },
            async add() {
                try {
                    var obj_attr = this.head_styledef.form.model || {};
                    var dataInfo = {
                        class_id: this.clsId,
                        obj_attr: obj_attr
                    };
                    await dataObjCreate(dataInfo)
                    return true
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys("tip") + "6.1",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return false
                }
            },
            async update() {
                try {
                    var obj_attr = this.head_styledef.form.model || {};
                    var dataInfo = {
                        class_id: this.clsId,
                        obj_id: this.objId,
                        obj_attr: obj_attr
                    };
                    await dataObjUpdate(dataInfo)
                    return true
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys("tip") + "6.2",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return false
                }
            },
            async afterOK() {
                try {
                    var obj_attr = this.head_styledef.form.model ||{}
                    // console.log(obj_attr);
                    var input_param = {
                        id: "",
                        attrs: Object.keys(obj_attr).map((a) => ({
                            attr: a,
                            value: obj_attr[a],
                        })),
                    };
                    let global_attr = Base64.encode(JSON.stringify(this.global_attr))
                    let data_json = Base64.encode(JSON.stringify(this.data_json))
                    let ext_info = Base64.encode(JSON.stringify(this.ext_info))
                    var dataInfo = {
                        ed_type: "0",
                        start_transaction: true,
                        class_id: this.clsId,
                        class_name: '',
                        event_id: this.afterOKEvent?.id,
                        event_name: '',
                        data_obj_id: this.objId,
                        obj_attr: obj_attr,
                        prj_id: '',
                        ref_cls_id: '',
                        rel_obj_id: '',
                        user_login: '',
                        global_attr,
                        data_json,
                        ext_info,
                        compose_info: '',
                        input_param: Base64.encode(JSON.stringify(input_param)),
                    };
                    await runCustomEvent(dataInfo)
                    return true
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys('tip') + "7.2",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return false
                }
            },
             async cancel(e) { //取消
                try {
                    if (!this.objId) {
                        if (this.editMode) {
                            uni.navigateBack({
                                delta: 1 //返回层数,2则上上页
                            });
                            return
                        }
                    }
                    let ret = await this.beforeCancel();
                    if (!ret) return false;
                    uni.navigateBack({
                        delta: 1 //返回层数,2则上上页
                    });
                    await this.afterCancel();
                } catch (ex) {}
            },
            async beforeCancel() {
                try {
                    if (!this.beforeCancelEvent.id) return true;
                    var obj_attr = this.head_styledef.form.model;
                    let inputParam = {
                        id: "",
                        attrs: Object.keys(obj_attr).map((a) => ({
                            attr: a,
                            value: obj_attr[a],
                        })),
                    };
                    let input_param = Base64.encode(JSON.stringify(inputParam));
                    let global_attr = Base64.encode(JSON.stringify(this.global_attr))
                    let data_json = Base64.encode(JSON.stringify(this.data_json))
                    let ext_info = Base64.encode(JSON.stringify(this.ext_info))
                    await runCustomEvent({
                        ed_type: 0,
                        start_transaction: true,
                        class_id: this.clsId,
                        event_id: this.beforeCancelEvent.id,
                        data_obj_id: this.objId,
                        obj_attr,
                        input_param,
                        global_attr,
                        data_json,
                        ext_info,
                    })
                    return true
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys("tip") + "8.1",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return false
                }
            },
            async afterCancel() {
                try {
                    if (!this.afterCancelEvent.id) return true;
                    var obj_attr = this.head_styledef.form.model;
                    let inputParam = {
                        id: "",
                        attrs: Object.keys(obj_attr).map((a) => ({
                            attr: a,
                            value: obj_attr[a],
                        })),
                    };
                    let input_param = Base64.encode(JSON.stringify(inputParam));
                    let global_attr = Base64.encode(JSON.stringify(this.global_attr))
                    let data_json = Base64.encode(JSON.stringify(this.data_json))
                    let ext_info = Base64.encode(JSON.stringify(this.ext_info))
                    await runCustomEvent({
                        ed_type: 0,
                        start_transaction: true,
                        class_id: this.clsId,
                        event_id: this.afterCancelEvent.id,
                        data_obj_id: this.objId,
                        obj_attr,
                        input_param,
                        global_attr,
                        data_json,
                        ext_info,
                    })
                    return true
                } catch (ex) {
                    let exStr = JSON.stringify(ex)
                    if (exStr == "{}")
                        exStr = ex
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
                    uni.showModal({
                        title: this.translateSys("tip") + "8.2",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return false
                }
            },
            translate(t) {
                if (typeof this.$t == "function") return this.$t(`page.${t}`)
                else return t;
            },
            translateSys(t) {
                if (typeof this.$t == "function") return this.$t(`sys.${t}`)
                else return t;
            },
        },
    };
</script>
<style lang="scss">
    .uni-page-modal-form {
        display: flex;
        height: calc(100vh - 30rpx);
        width: 720rpx;
        flex-direction: column !important;
        padding: 15rpx;
        .view-header {
            display: flex;
            width: 100%;
            flex-direction: column;
        }
        .v-head-style {
            width: 98%;
            .uni-forms-item {
                margin-bottom: 11rpx;
            }
            .input-wrapper {
                border: 1px solid #d5d5d5;
                width: 100%;
                display: flex;
                flex-direction: row;
                .uni-input {
                    flex: 1;
                    padding: 12rpx 8rpx;
                    color: #2d8cf0;
                    // height: 40rpx;
                    // line-height: 40rpx;
                }
                .uni-icon {
                    padding: 8rpx;
                    font-size: 32rpx;
                    color: rgb(192, 196, 204);
                }
            }
            .input-wrapper:hover {
                border: 1px solid rgb(41, 121, 255);
            }
        }
        .view-content {
            display: flex;
            flex: 1;
            width: calc(100% - 30rpx);
            padding: 10rpx 15rpx;
            flex-direction: column;
            overflow-y: auto;
        }
        .view-bottom {
            // display: flex;
            // flex-direction: row;
            display: block;
            width: calc(100% - 30rpx);
            padding: 10rpx 15rpx 20rpx 15rpx;
            .btn_add {
                width: 45%;
                margin: 0 10rpx;
                // padding: 5rpx 10rpx;
                background: #4D6AF4;
                    font-size: 38rpx;
                border: none;
                color: #fff;
                float: left;
                display: inline-block;
            }
            .btn_disabled {
                background-color: #ddd;
                color: #888;
            }
            .btn_cancel {
                width: 45%;
                margin: 0 10rpx;
                background: #fff;
                border: none;
                color: #000;
                font-size: 38rpx;
                float: right;
                display: inline-block;
            }
        }
        [nvue] uni-view {
            position: relative;
            border: 0 solid #000;
            box-sizing: border-box;
        }
        .uni-icon {
            /* border: 1px solid red; */
            width: 8%;
            font-family: uniicons;
            font-size: 40rpx;
            font-weight: 400;
            font-style: normal;
            /* width: 48rpx; */
            height: 48rpx;
            line-height: 48rpx;
            color: #2d8cf0;
            cursor: pointer;
            display: inline-block;
            vertical-align: 18rpx;
        }
        .input-disabled {
            background-color: #f3f3f3 !important;
        }
        ::v-deep .uni-row {
            margin-bottom: 0px;
        }
        .popup-header {
            font-size: 42rpx;
            font-weight: bold;
            margin: 20rpx 20rpx 0px 20rpx;
        }
        .view_popup_CheckList {
            margin-bottom: 20rpx;
        }
        .popup-footer {
            float: right;
            position: absolute;
            bottom: 0;
            right: 20rpx;
        }
        button.btn_popup_add {
            width: 180rpx;
            margin-top: 50rpx;
            margin-right: 20rpx;
            padding: 15rpx;
            line-height: 1.5;
            background: #27A6E1;
            border: none;
            color: #fff;
            font-size: 38rpx;
            font-weight: bold;
            /* float: left; */
            display: inline-block;
        }
        button.btn_popup_cancel {
            width: 180rpx;
            margin-top: 50rpx;
            padding: 15rpx;
            line-height: 1.5;
            background: #27A6E1;
            border: none;
            color: #fff;
            font-size: 38rpx;
            font-weight: bold;
            /* float: right; */
            display: inline-block;
        }
    }
</style>