cuiqian2004
2025-02-27 f85708dcab378fe8d12fbf95933d00883c36fe3d
5601 button
1个文件已添加
2个文件已修改
3892 ■■■■■ 已修改文件
manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/5601.vue 340 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/form/form.vue 3548 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json
@@ -2,8 +2,8 @@
    "name" : "MoboxPDA",
    "appid" : "__UNI__56D451E",
    "description" : "",
    "versionName" : "1.1.40",
    "versionCode" : 1140,
    "versionName" : "1.1.41",
    "versionCode" : 1141,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
pages/modal/5601.vue
@@ -144,25 +144,42 @@
                                                </uni-row>
                                            </div>
                                        </div>
                                        <div class="dv-panel-button">
                                        <div class="dv-panel-button"
                                            v-if="pageData.Select_Button==true || pageData.Row_Button.length > 0">
                                            <checkbox v-if="pageData.Select_Button==true" :model="ii"
                                                :checked="style.SelBut_Checked" />
                                            <!-- <text></text> -->
                                            <!-- <button type="primary" @click="savaItem(ii)" v-if="param.Sub_Page[0].OK_Button==true">保存</Button> -->
                                            <button type="warn" @tap="delItem(pageData,ii)"
                                                v-if="pageData.Del_Button==true">{{translateSys('delete')}}</button>
                                            <button size="mini" v-for="(btn,btnIndex) in pageData.Row_Button"
                                                :key="btnIndex" :type="btn.FunCode == 'Delete' ? 'warn' : 'primary'"
                                                @click="onRowBtnClick(btn, pageData,ii)">
                                                <Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'"
                                                    class="Img" />
                                                {{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
                                            </button>
                                        </div>
                                    </div>
                                </checkbox-group>
                            </view>
                            <view class="view-bottom" v-if="pageData.OK_Button==true">
                                <button type="default" @tap="cancel"
                                    class="btn_cancel">{{translateSys('cancel')}}</button>
                                <button type="primary" @tap="ok(pageData)" class="btn_add"
                                    :class="pageData.okLoading?'btn_disabled':''"
                                    :disabled="pageData.okLoading? true:false">{{translateSys('ok')}}</button>
                            <view class="view-bottom" v-if="pageData.Button.length >0 ">
                                <button v-for="(btn,btnIndex) in pageData.Button" :key="btnIndex"
                                    :type="btn.FunCode == 'Cancel' ? 'default' : 'primary'"
                                    :class="{'btn-disabled':(btn.FunCode != 'Cancel' && pageData.okLoading),
                                                    'btn-one':pageData.Button.length == 1,
                                                    'btn-left':(btnIndex < pageData.Button.length - 1),
                                                    'btn-right': btnIndex > 0 && btnIndex == pageData.Button.length - 1 ,
                                                    'width-50':(pageData.Button.length == 2),'width-32':(pageData.Button.length == 3),'width-30':(pageData.DropDownButton.length> 0)}"
                                    :disabled="(btn.FunCode != 'Cancel' && pageData.okLoading)? true:false"
                                    @click="onBtnClick(btn, pageData)">
                                    <Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'" class="Img" />
                                    {{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
                                </button>
                                <view class="btn-right" v-if="pageData.DropDownButton.length >0 ">
                                    <a @click="clickDropdownBtns(pageData)">
                                        <Icon class="mobox-normal-more" />
                                    </a>
                                </view>
                            </view>
                        </view>
                    </swiper-item>
@@ -236,11 +253,7 @@
                pageDetail: [], //{StyleDef{}:,DefList:[],ExtData:{}}
                // 分段器数据
                current: 0,
                Before_OK_Event: {},
                After_OK_Event: {},
                Before_Del_Event: {},
                After_Del_Event: {},
                active_id: '',
                selectAttrObj: {},
@@ -308,7 +321,6 @@
                });
            },
            async loadData(paramValue) {
                //获取数据类的自定义表单参数
                await this.Head_UIStyleGetInfo(this.ClsID, this.param.Input_UI_Style.ID);
                //传入参数值
@@ -351,6 +363,33 @@
                        this.ClsID,
                        page.UI_Style.ID
                    );
                    const buttons = this.pageButtonList(page)
                    page.Button = buttons
                    page.DropDownButton = []
                    if (buttons.length > 3) {
                        let cancelBtn = undefined
                        const btns = []
                        buttons.forEach((btn) => {
                            if (btn.FunCode == "Cancel") {
                                cancelBtn = btn
                            } else {
                                btns.push(btn)
                            }
                        })
                        if (cancelBtn) {
                            if (btns.length > 2) {
                                page.DropDownButton = btns.splice(2)
                                page.Button = btns
                            }
                            page.Button.push(cancelBtn)
                        } else {
                            if (btns.length > 3) {
                                page.DropDownButton = btns.splice(3)
                                page.Button = btns
                            }
                        }
                    }
                    page.Row_Button = this.rowButtonList(page)
                }
                this.setData({
@@ -365,6 +404,89 @@
                    current: index
                })
            },
            pageButtonList(page) {
                if (this.param?.ver == "2.0") {
                    return page?.Button || []
                } else {
                    if (page?.OK_Button) {
                        let evt = {};
                        if (page.Before_ok?.ID) {
                            evt = {
                                ID: page.Before_ok?.ID,
                                Name: page.Before_ok?.Name
                            };
                        } else if (page.After_ok?.ID) {
                            evt = {
                                ID: page.After_ok?.ID,
                                Name: page.After_ok?.Name
                            };
                        }
                        let btnCancel = {
                            Cls_Name: this.param?.master_cls?.name || "",
                            Cls_ID: this.param?.master_cls?.id || "",
                            FunCode: "Cancel",
                            ShowName: this.$t("sys.cancel"),
                            Style: "text",
                            Prompt: false,
                        };
                        if (evt.ID) {
                            let btn = {
                                Cls_Name: this.param?.master_cls?.name || "",
                                Cls_ID: this.param?.master_cls?.id || "",
                                FunCode: "TriggerEvent",
                                ShowName: this.$t("sys.ok"),
                                Style: "text",
                                Prompt: false,
                                NotTriggerSYSEvent: false,
                                DataStateVerify: false,
                                AttrVerify: false,
                                Event: evt,
                            };
                            return [btn, btnCancel];
                        } else return [btnCancel];
                    } else {
                        return [];
                    }
                }
            },
            rowButtonList(page) {
                if (this.param?.ver == "2.0") {
                    return page?.Row_Button || [];
                } else {
                    if (page?.Del_Button) {
                        let evt = {};
                        if (page.Before_Delete?.ID) {
                            evt = {
                                ID: page.Before_Delete?.ID,
                                Name: page.Before_Delete?.Name,
                            };
                        } else if (page.After_Delete?.ID) {
                            evt = {
                                ID: page.After_Delete?.ID,
                                Name: page.After_Delete?.Name
                            };
                        }
                        if (evt.ID) {
                            return [{
                                Cls_Name: this.param?.master_cls?.name || "",
                                Cls_ID: this.param?.master_cls?.id || "",
                                FunCode: "Delete",
                                ShowName: this.$t("sys.delete"),
                                Style: "text",
                                Prompt: false,
                                NotTriggerSYSEvent: false,
                                DataStateVerify: false,
                                AttrVerify: false,
                                AfterProcess_Event: evt,
                            }];
                        }
                    }
                    return [];
                }
            },
            checkboxChange(e) {
                var items = this.pageDetail[this.current]?.DefList || []
@@ -477,6 +599,8 @@
                    this.setData({
                        head_styledef: styledefHead
                    })
                    console.log("Head_UIStyleGetInfo", this.head_styledef)
                } catch (ex) {
                    // console.log(ex);
                    uni.showModal({
@@ -1704,21 +1828,6 @@
            onDetail1EnterChange(item) { //码盘中样式回车事件
                console.log(item);
            },
            delItem(pageData, index) { //删除码盘中样式面板
                //删除码盘中样式面板
                this.Before_Del_Event = pageData.Before_Delete;
                this.After_Del_Event = pageData.After_Delete;
                const style = pageData.DefList[index];
                //删除码盘中样式面板
                pageData.DefList.splice(index, 1);
                if (this.Before_Del_Event?.ID)
                    //是否有删除前事件
                    this.del(pageData, style, this.Before_Del_Event);
                else if (this.After_Del_Event?.ID)
                    //是否有删除后事件
                    this.del(pageData, style, this.After_Del_Event);
            },
            async del(pageData, style, event) {
                //获取表头属性
                var head_attr = {};
@@ -2442,6 +2551,82 @@
                // console.log(value);
                this.active_id = id;
            },
            //点击按钮列表
            clickDropdownBtns(pageData) {
                const that = this
                const itemlist = [];
                const btnList = pageData.DropDownButton || []
                for (let i in btnList) {
                    itemlist.push(btnList[i].ShowName || "");
                }
                uni.showActionSheet({
                    // title: '按钮列表',
                    itemList: itemlist,
                    success: (e) => {
                        console.log(e.tapIndex);
                        var btn = btnList[e.tapIndex];
                        that.onBtnClick(btn, pageData);
                    }
                })
            },
            onBtnClick(btn, pageData) {
                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);
                        },
                    })
                } else {
                    this.onButtonClicked(btn, pageData, -1);
                }
            },
            onRowBtnClick(btn, pageData, index) {
                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);
                        },
                    })
                } else {
                    this.onButtonClicked(btn, pageData, index);
                }
            },
            onButtonClicked(btn, pageData, index) {
                this.After_OK_Event = {}
                let enviroment = {
                    button: "top",
                    button_name: btn.ShowName,
                    cls_id: btn.Cls_ID,
                    function: "3018",
                    master: {},
                };
                if (btn.FunCode == "TriggerEvent") {
                    this.After_OK_Event = btn?.After_Event || {};
                    this.sava(pageData, btn.Event);
                } else if (btn.FunCode == "Cancel") {
                    this.cancel();
                } else if (btn.FunCode == "Delete") {
                    if (index > -1) {
                        const style = pageData.DefList[index];
                        //删除码盘中样式面板
                        pageData.DefList.splice(index, 1);
                        this.del(pageData, style, btn.AfterProcess_Event);
                    }
                } else {
                    this.$Message.warning(this.$t("sys.unrealized"));
                }
            },
            //确定
            ok(pageData) {
                this.Before_OK_Event = pageData.Before_ok;
@@ -3044,10 +3229,58 @@
            flex-direction: row;
            width: calc(100% - 30rpx);
            padding: 10rpx 15rpx 30rpx 15rpx;
            .btn-disabled {
                background-color: #ddd;
                color: #888;
            }
            .btn-left {
                padding: 20rpx;
                line-height: 1.5;
                border: none;
                font-size: 38rpx;
                font-weight: bold;
                float: left;
                display: inline-block;
            }
            .btn-one {
                padding: 20rpx;
                line-height: 1.5;
                border: none;
                font-size: 38rpx;
                font-weight: bold;
                float: left;
                display: inline-block;
                width: 50%;
                margin-left: 25%;
            }
            .btn-right {
                padding: 20rpx;
                line-height: 1.5;
                border: none;
                font-size: 38rpx;
                font-weight: bold;
                float: right;
                display: inline-block;
            }
            .width-50 {
                width: 49%;
            }
            .width-32 {
                width: 32%;
                margin-left: 1%;
            }
            .width-30 {
                width: 30%;
                margin-left: 1%;
            }
        }
        [nvue] uni-view {
            position: relative;
@@ -3073,7 +3306,7 @@
        .dv-panel {
            background-color: #efefef;
            padding: 20rpx 20rpx 4rpx 0px;
            padding: 20rpx 20rpx 10rpx 0px;
            border-radius: 12rpx;
            margin: 10rpx 0 20rpx 0;
            text-align: right;
@@ -3118,7 +3351,8 @@
            .dv-panel-button {
                width: 100%;
                text-align: left;
                padding-bottom: 20rpx;
                min-height: 30rpx;
                padding-bottom: 10rpx;
                checkbox {
                    padding-left: 20px;
@@ -3127,44 +3361,12 @@
                button {
                    text-align: left;
                    line-height: 1.8;
                    line-height: 1.5;
                    border: none;
                    font-size: 34rpx;
                    width: 180rpx;
                    font-size: 30rpx;
                    display: inline-block;
                    float: right;
                    text-align: center;
                    .btn_cancel {
                        width: 49.5%;
                        padding: 20rpx;
                        line-height: 1.5;
                        border: none;
                        font-size: 38rpx;
                        font-weight: bold;
                        float: left;
                        display: inline-block;
                    }
                    .btn_add {
                        width: 49.5%;
                        padding: 20rpx;
                        line-height: 1.5;
                        border: none;
                        font-size: 38rpx;
                        font-weight: bold;
                        float: right;
                        color: #fff;
                        display: inline-block;
                    }
                    .btn_disabled {
                        background-color: #ddd;
                        color: #888;
                    }
                }
            }
pages/modal/form/form.vue
New file
@@ -0,0 +1,3548 @@
<template>
    <view class="uni-page-modal-form">
        <!-- 表头样式 -->
        <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 class="view-content">
            <!-- 码盘子界面 -->
            <view v-if="param.Show_Welcom_Page==false" class="uni-panel-content">
                <!-- 页签 -->
                <view class="dv-tab">
                    <uni-segmented-control :current="current" :values="tabs" @clickItem="onClickItem"
                        styleType="button">
                    </uni-segmented-control>
                </view>
                <swiper class="view-tabpage" :current="current" @change="changeSwiper">
                    <!-- 子界面 -->
                    <swiper-item v-for="(pageData, pageIndex) in pageDetail" :key="pageIndex">
                        <view class="uni-panel-content">
                            <view class="view-tab-content" :id="'tabpanel' + pageData.Name">
                                <image class="logo" v-if="pageData.DefList.length==0"
                                    src="../../images/mobox_log_200x40.png">
                                </image>
                                <checkbox-group @change="checkboxChange">
                                    <div class="dv-panel" v-for="(style,ii) in pageData.DefList"
                                        @tap="onPanelClick(ii,style.form.htmlobjId)"
                                        :id="'dvpanel'+style.form.htmlobjId"
                                        :class="style.form.htmlobjId==active_id?'bk-active':''">
                                        <div class="dv-panel-input">
                                            <div class="dv-input" v-for="(item,index) in style.form.items">
                                                <!-- 普通布局 -->
                                                <view v-if="item.name!='Layout'">
                                                    <text class="txt_title"
                                                        :style="{'width':item.labelWidth+'px'}">{{item.label}}:</text>
                                                    <span class="form-item-span"
                                                        v-if="item.disabled">{{item.value}}</span>
                                                    <input class="uni-input" v-if="!item.disabled"
                                                        :type="item.name=='InputNumber'?'number':'text'"
                                                        v-model="item.value" :disabled="item.disabled"
                                                        :placeholder="item.placeholder" :maxlength="-1" />
                                                </view>
                                                <!-- 栅格布局 -->
                                                <uni-row class="demo-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="(cols,key) in item.setting.colList">
                                                        <view v-if="cols!=null">
                                                            <text class="txt_title"
                                                                :style="{'width':cols.labelWidth+'px'}">{{cols.label}}:</text>
                                                            <span class="form-item-span"
                                                                v-if="cols.disabled">{{cols.value}}</span>
                                                            <input class="uni-input" v-if="!cols.disabled"
                                                                :type="cols.name=='InputNumber'?'number':'text'"
                                                                v-model="cols.value" :disabled="cols.disabled"
                                                                :placeholder="cols.placeholder" :maxlength="-1" />
                                                        </view>
                                                    </uni-col>
                                                </uni-row>
                                            </div>
                                        </div>
                                        <div class="dv-panel-button"
                                            v-if="pageData.Select_Button==true || pageData.Row_Button.length > 0">
                                            <checkbox v-if="pageData.Select_Button==true" :model="ii"
                                                :checked="style.SelBut_Checked" />
                                            <!-- <text></text> -->
                                            <!-- <button type="primary" @click="savaItem(ii)" v-if="param.Sub_Page[0].OK_Button==true">保存</Button> -->
                                            <button size="mini" v-for="(btn,btnIndex) in pageData.Row_Button"
                                                :key="btnIndex" :type="btn.FunCode == 'Delete' ? 'warn' : 'primary'"
                                                @click="onRowBtnClick(btn, pageData,ii)">
                                                <Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'"
                                                    class="Img" />
                                                {{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
                                            </button>
                                        </div>
                                    </div>
                                </checkbox-group>
                            </view>
                            <view class="view-bottom" v-if="pageData.Button.length >0 ">
                                <button v-for="(btn,btnIndex) in pageData.Button" :key="btnIndex"
                                    :type="btn.FunCode == 'Cancel' ? 'default' : 'primary'"
                                    :class="{'btn-disabled':(btn.FunCode != 'Cancel' && pageData.okLoading),
                                                    'btn-one':pageData.Button.length == 1,
                                                    'btn-left':(btnIndex < pageData.Button.length - 1),
                                                    'btn-right': btnIndex > 0 && btnIndex == pageData.Button.length - 1 ,
                                                    'width-50':(pageData.Button.length == 2),'width-32':(pageData.Button.length == 3),'width-30':(pageData.DropDownButton.length> 0)}"
                                    :disabled="(btn.FunCode != 'Cancel' && pageData.okLoading)? true:false"
                                    @click="onBtnClick(btn, pageData)">
                                    <Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'" class="Img" />
                                    {{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
                                </button>
                                <view class="btn-right" v-if="pageData.DropDownButton.length >0 ">
                                    <a @click="clickDropdownBtns(pageData)">
                                        <Icon class="mobox-normal-more" />
                                    </a>
                                </view>
                            </view>
                        </view>
                    </swiper-item>
                </swiper>
            </view>
            <!-- 图文/文本 -->
            <view class="view-imagetext" v-else>
                <div class="view-imagetext-uploadlist">
                    <image :src="param.Welcome_Page.Img"
                        :style="{'width':param.Welcome_Page.Width+'px','height':param.Welcome_Page.Height+'px'}">
                    </image>
                    <text class="txt-text"
                        :style="{'color':param.Welcome_Page.Txt_Color,'font-size':param.Welcome_Page.Font_Size+'px','font-family':param.Welcome_Page.Font}">{{param.Welcome_Page.Text}}</Text>
                </div>
            </view>
        </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,
    } from "@/api/data.js"
    export default {
        name: "PageModalForm",
        modules: {
            Base64,
        },
        data() {
            return {
                title: this.translateSys("inventory"),
                ClsID: '',
                param: {},
                focusFieldId: "",
                focusOldFieldId: "",
                head_styledef: {
                    form: {
                        items: []
                    }
                },
                pageDetail: [], //{StyleDef{}:,DefList:[],ExtData:{}}
                // 分段器数据
                current: 0,
                After_OK_Event: {},
                active_id: '',
                selectAttrObj: {},
                global_attr: [],
                refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}
                popupType: "center",
                check_list: {},
                popupParam: {},
            };
        },
        computed: {
            tabs() {
                return this.pageDetail.map((page => {
                    return page.Name
                }));
            },
        },
        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) {
                this.loadData(options.paramValue)
            } 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(paramValue) {
                //获取数据类的自定义表单参数
                await this.Head_UIStyleGetInfo(this.ClsID, this.param.Input_UI_Style.ID);
                //传入参数值
                if (paramValue) {
                    const attrs = paramValue.attrs || [];
                    (this.$data.head_styledef?.form?.items || []).forEach(async (ele, index) => {
                        if (ele.name != "Layout") {
                            attrs.forEach(async (ele2, index2) => {
                                if (ele.fieldId == ele2.name) {
                                    ele.value = ele2.value;
                                }
                            });
                        } else {
                            ele.setting.colList.forEach(async (col) => {
                                if (col) {
                                    attrs.forEach(async (ele2,
                                        index2) => {
                                        if (col.fieldId == ele2.name) {
                                            col.value = ele2.value;
                                        }
                                    });
                                }
                            });
                        }
                    })
                }
                //加载初始界面
                if (this.$data.param.Show_Welcom_Page) {
                    this.$data.param.Welcome_Page.Img = this.$data.param.Welcome_Page.Img.replace(/ /g, '+');
                    this.$data.param.Welcome_Page.Width = parseInt(this.$data.param.Welcome_Page.Width);
                    this.$data.param.Welcome_Page.Height = parseInt(this.$data.param.Welcome_Page.Height);
                };
                //加载Tab页签
                const pageList = this.param.Sub_Page || []
                for (let i in pageList) {
                    const page = pageList[i]
                    page.DefList = [];
                    page.StyleDef = await this.Detail_UIstyleGetInfo(
                        this.ClsID,
                        page.UI_Style.ID
                    );
                    const buttons = this.pageButtonList(page)
                    page.Button = buttons
                    page.DropDownButton = []
                    if (buttons.length > 3) {
                        let cancelBtn = undefined
                        const btns = []
                        buttons.forEach((btn) => {
                            if (btn.FunCode == "Cancel") {
                                cancelBtn = btn
                            } else {
                                btns.push(btn)
                            }
                        })
                        if (cancelBtn) {
                            if (btns.length > 2) {
                                page.DropDownButton = btns.splice(2)
                                page.Button = btns
                            }
                            page.Button.push(cancelBtn)
                        } else {
                            if (btns.length > 3) {
                                page.DropDownButton = btns.splice(3)
                                page.Button = btns
                            }
                        }
                    }
                    page.Row_Button = this.rowButtonList(page)
                }
                this.setData({
                    pageDetail: pageList
                })
                console.log(this.pageDetail);
            },
            changeSwiper(evt) {
                let index = evt.target.current || evt.detail.current;
                this.setData({
                    current: index
                })
            },
            pageButtonList(page) {
                if (this.param?.ver == "2.0") {
                    return page?.Button || []
                } else {
                    if (page?.OK_Button) {
                        let evt = {};
                        if (page.Before_ok?.ID) {
                            evt = {
                                ID: page.Before_ok?.ID,
                                Name: page.Before_ok?.Name
                            };
                        } else if (page.After_ok?.ID) {
                            evt = {
                                ID: page.After_ok?.ID,
                                Name: page.After_ok?.Name
                            };
                        }
                        let btnCancel = {
                            Cls_Name: this.param?.master_cls?.name || "",
                            Cls_ID: this.param?.master_cls?.id || "",
                            FunCode: "Cancel",
                            ShowName: this.$t("sys.cancel"),
                            Style: "text",
                            Prompt: false,
                        };
                        if (evt.ID) {
                            let btn = {
                                Cls_Name: this.param?.master_cls?.name || "",
                                Cls_ID: this.param?.master_cls?.id || "",
                                FunCode: "TriggerEvent",
                                ShowName: this.$t("sys.ok"),
                                Style: "text",
                                Prompt: false,
                                NotTriggerSYSEvent: false,
                                DataStateVerify: false,
                                AttrVerify: false,
                                Event: evt,
                            };
                            return [btn, btnCancel];
                        } else return [btnCancel];
                    } else {
                        return [];
                    }
                }
            },
            rowButtonList(page) {
                if (this.param?.ver == "2.0") {
                    return page?.Row_Button || [];
                } else {
                    if (page?.Del_Button) {
                        let evt = {};
                        if (page.Before_Delete?.ID) {
                            evt = {
                                ID: page.Before_Delete?.ID,
                                Name: page.Before_Delete?.Name,
                            };
                        } else if (page.After_Delete?.ID) {
                            evt = {
                                ID: page.After_Delete?.ID,
                                Name: page.After_Delete?.Name
                            };
                        }
                        if (evt.ID) {
                            return [{
                                Cls_Name: this.param?.master_cls?.name || "",
                                Cls_ID: this.param?.master_cls?.id || "",
                                FunCode: "Delete",
                                ShowName: this.$t("sys.delete"),
                                Style: "text",
                                Prompt: false,
                                NotTriggerSYSEvent: false,
                                DataStateVerify: false,
                                AttrVerify: false,
                                AfterProcess_Event: evt,
                            }];
                        }
                    }
                    return [];
                }
            },
            checkboxChange(e) {
                var items = this.pageDetail[this.current]?.DefList || []
                var values = e.detail.value;
                for (var i = 0, lenI = items.length; i < lenI; ++i) {
                    const item = items[i]
                    if (values.includes(i)) {
                        item.SelBut_Checked = true
                    } else {
                        item.SelBut_Checked = false
                    }
                }
            },
            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);
                    uni.showModal({
                        title: this.translateSys("error") + "1",
                        content: ex.errMsg,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return {}
                }
            },
            async Detail_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 detailstyledef = result.style_def ? JSON.parse(
                        styledef) : {};
                    detailstyledef.SelBut_Checked = true;
                    if (detailstyledef?.form?.items) {
                        for (let index in detailstyledef.form.items) {
                            const ele = detailstyledef.form.items[index]
                            if (ele.name != "Layout") {
                                if (ele.useDict == true) { //判断useDict是否使用字典
                                    await this.DictGetInfo(ele.bind.dict,
                                        detailstyledef.form
                                        .model, ele);
                                }
                            } else {
                                for (let j in ele.setting.colList) {
                                    const col = ele.setting.colList[j]
                                    if (col?.useDict == true) {
                                        await this.DictGetInfo(col
                                            .bind.dict,
                                            detailstyledef.form
                                            .model, col);
                                    }
                                }
                            }
                        }
                    }
                    console.log("Detail_UIstyleGetInfo", detailstyledef);
                    return detailstyledef
                } catch (ex) {
                    // console.log(ex);
                    uni.showModal({
                        title: this.translateSys("error") + "2",
                        content: ex.errMsg,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return {}
                }
            },
            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")
                    });
                }
            },
            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);
            },
            getDetailAttrList(pageData) {
                const detailAttrList = [];
                if (pageData.DefList) {
                    pageData.DefList.forEach(style => {
                        var detail_attr = {};
                        style.form.items.forEach(item => {
                            if (item.name == "Layout") { //判断是否是栅栏格式
                                item.setting.colList.forEach(cols => {
                                    if (cols != null) detail_attr[cols
                                        .fieldId] = cols.value;
                                });
                            } else
                                detail_attr[item.fieldId] = item.value;
                        });
                        detail_attr['id'] = style.form.objId;
                        if (pageData.Select_Button == true) { //判断选择按钮是否为true
                            if (style.SelBut_Checked == true)
                                detailAttrList.push(detail_attr);
                        } else
                            detailAttrList.push(detail_attr);
                    });
                    // console.log(detailAttrList);
                    //获取正在码盘里没有显示的字段
                    pageData.DefList.forEach(style => {
                        style.form.attrs.forEach(attr => {
                            for (var key in detailAttrList) {
                                if (style.form.objId == detailAttrList[key][
                                        'id'
                                    ]) {
                                    var keys = Object.keys(detailAttrList[key]);
                                    var isflag = true;
                                    keys.forEach((ele) => {
                                        if (ele == attr.attr) isflag =
                                            false;
                                    });
                                    if (isflag) {
                                        detailAttrList[attr.attr] = attr.value;
                                    }
                                }
                            }
                        });
                    });
                }
                const jsonlist = [];
                detailAttrList.forEach(attr => {
                    jsonlist.push({
                        id: attr["id"] || "",
                        attrs: Object.keys(attr).map((a) => ({
                            attr: a,
                            value: attr[a] || "",
                        })).filter((a) => {
                            return a.attr != "id"
                        })
                    });
                });
                return jsonlist;
            },
            // 内容变化后事件
            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;
                        const jsonList = []
                        this.pageDetail.forEach((page) => {
                            jsonList.push({
                                page_name: page.Name,
                                item_list: $this.getDetailAttrList(page
                                    .DefList, page
                                    .Select_Button),
                                ext_data: page.ExtData || {}
                            })
                        })
                        const data_json = Base64.encode(
                            JSON.stringify(jsonList)
                        );
                        var dataInfo = {
                            ed_type: 0,
                            start_transaction: true,
                            class_id: this.$data.head_styledef.form.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: 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 ==
                                            "insert_subtable_page_row"
                                        ) { //码盘中
                                            $this.$data.param
                                                .Show_Welcom_Page =
                                                false;
                                            var value = item.value;
                                            $this.viewAceionRow(value);
                                        } else if (item.action_type ==
                                            "set_subtable_page_content"
                                        ) { //已码盘
                                            $this.$data.param
                                                .Show_Welcom_Page =
                                                false;
                                            var value = item.value;
                                            const pageData = $this
                                                .pageDetail.find((
                                                    page) => {
                                                    return value
                                                        .page_name ==
                                                        page.Name;
                                                });
                                            if (value.clear_confirm !=
                                                false && value.clear ==
                                                true &&
                                                pageData && pageData
                                                .DefList.length > 0
                                            ) { //判断是否清空页签内容,正在码盘是否有数据
                                                uni.showModal({
                                                    title: this
                                                        .translateSys(
                                                            'tip'
                                                        ),
                                                    content: this
                                                        .translate(
                                                            "are_you_sure_clear_first"
                                                        ) +
                                                        this
                                                        .translateSys(
                                                            "quotation_mark_left"
                                                        ) +
                                                        value
                                                        .page_name +
                                                        this
                                                        .translateSys(
                                                            "quotation_mark_right"
                                                        ) +
                                                        this
                                                        .translate(
                                                            "are_you_sure_clear_last"
                                                        ),
                                                    success: function(
                                                        res
                                                    ) {
                                                        if (res
                                                            .confirm
                                                        ) {
                                                            if (
                                                                pageData)
                                                                pageData
                                                                .DefList = [];
                                                            $this
                                                                .viewAceionContent(
                                                                    value
                                                                );
                                                        } else if (
                                                            res
                                                            .cancel
                                                        ) {
                                                            if (
                                                                pageData)
                                                                pageData
                                                                .DefList = [];
                                                            $this
                                                                .viewAceionContent(
                                                                    value
                                                                );
                                                        }
                                                    }
                                                });
                                            } else {
                                                if (pageData)
                                                    pageData
                                                    .DefList = [];
                                                $this
                                                    .viewAceionContent(
                                                        value);
                                            }
                                        } else if (item.action_type ==
                                            "select_subtable_page_row"
                                        ) {
                                            // value = {"page_name":"码盘中", "row":{"id":"xx"}}
                                            var value = item.value;
                                            const pageData = $this
                                                .pageDetail.find((
                                                    page) => {
                                                    return value
                                                        .page_name ==
                                                        page.Name;
                                                });
                                            if (pageData?.DefList) {
                                                pageData.DefList
                                                    .forEach(ele => {
                                                        if (ele
                                                            .form
                                                            .objId ==
                                                            value
                                                            .row.id
                                                        ) {
                                                            ele.SelBut_Checked =
                                                                true;
                                                            $this
                                                                .active_id =
                                                                ele
                                                                .form
                                                                .htmlobjId;
                                                            //自动滚动到指定元素
                                                            uni.createSelectorQuery()
                                                                .select(
                                                                    "#tabpanel" +
                                                                    value
                                                                    .page_name
                                                                ) //对应外层节点
                                                                .boundingClientRect(
                                                                    (
                                                                        container
                                                                    ) => {
                                                                        uni.createSelectorQuery()
                                                                            .select(
                                                                                "#dvpanel" +
                                                                                ele
                                                                                .form
                                                                                .htmlobjId
                                                                            ) //目标节点
                                                                            .boundingClientRect(
                                                                                (
                                                                                    target
                                                                                ) => {
                                                                                    uni.pageScrollTo({
                                                                                        scrollTop: target
                                                                                            .top -
                                                                                            container
                                                                                            .top, //滚动到实际距离是元素距离顶部的距离减去最外层盒子的滚动距离
                                                                                    });
                                                                                }
                                                                            )
                                                                            .exec();
                                                                    }
                                                                )
                                                                .exec();
                                                        }
                                                    });
                                            }
                                        } else if (item.action_type ==
                                            "remove_subtable_page_row"
                                        ) { //清除面板中指定id的数据
                                            var value = item.value;
                                            const pageData = $this
                                                .pageDetail.find((
                                                    page) => {
                                                    return value
                                                        .page_name ==
                                                        page.Name;
                                                });
                                            if (pageData
                                                ?.DefList
                                            ) //判断返回的action的page_name是否是待分拣//清除面板中指定id的数据
                                            {
                                                value.row.forEach(
                                                    row => {
                                                        pageData
                                                            .DefList
                                                            .forEach(
                                                                (ele,
                                                                    index
                                                                ) => {
                                                                    if (ele
                                                                        .form
                                                                        .objId ==
                                                                        row
                                                                        .id
                                                                    ) {
                                                                        pageData
                                                                            .DefList
                                                                            .splice(
                                                                                index,
                                                                                1
                                                                            );
                                                                    }
                                                                });
                                                    });
                                            }
                                        } else if (item.action_type ==
                                            "set_subtable_page_row") {
                                            $this.viewActionSetRow(item
                                                .value)
                                        } else if (item.action_type ==
                                            "set_subtable_page_ext_data"
                                        ) {
                                            var value = item.value;
                                            const pageData = $this
                                                .pageDetail.find((
                                                    page) => {
                                                    return value
                                                        .page_name ==
                                                        page.Name;
                                                });
                                            if (pageData)
                                                pageData.ExtData =
                                                value.ext_data
                                        } else if (item.action_type ==
                                            "clear_subpage_rows") {
                                            var value = item.value;
                                            const pageData = $this
                                                .pageDetail.find((
                                                    page) => {
                                                    return value
                                                        .page_name ==
                                                        page.Name;
                                                });
                                            if (pageData) {
                                                pageData.DefList = []
                                                pageData.ExtData = {}
                                            }
                                        } else 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")
                    });
                }
            },
            operationNumber(value1, value2, operation) {
                var number1 = 0
                var number2 = 0
                if (value1)
                    number1 = parseInt(value1)
                if (value2)
                    number2 = parseInt(value2)
                if (!operation) {
                    return value2;
                }
                if (operation == "+") {
                    return number1 + number2
                } else if (operation == "-") {
                    return number1 - number2
                } else if (operation == "*") {
                    return number1 * number2
                } else if (operation == "/") {
                    if (number2) return number1 / number2;
                    else {
                        throw new Error(`${this.translate("illegal_dividend")}'${value2}'`);
                        return 0;
                    }
                } else if (operation == "=") {
                    return value2;
                } else {
                    throw new Error(`${this.translate("unrecognized_operator")}'${operation}'`);
                    return 0;
                }
            },
            //更新分页签中的列表项内容
            viewActionSetRow(value) {
                const $this = this
                const pageIndex = $this.pageDetail.findIndex((
                    page, index2, arr) => {
                    return value.page_name == page.Name;
                })
                if (pageIndex < 0)
                    return
                const pageData = $this.pageDetail[pageIndex]
                var detailStyleDefList = pageData.DefList || []
                detailStyleDefList.forEach(ele => {
                    value.row.forEach((rowData) => {
                        if (rowData.id) {
                            if (ele.form.objId == rowData.id) {
                                rowData.attrs.forEach(attr => {
                                    ele.form.items.forEach(ele2 => {
                                        if (ele2.name !=
                                            'Layout') {
                                            if (ele2.fieldId ==
                                                attr
                                                .attr) {
                                                ele2.value =
                                                    $this
                                                    .operationNumber(
                                                        ele2
                                                        .value,
                                                        attr
                                                        .value,
                                                        attr
                                                        .operation
                                                    )
                                            }
                                        } else if (ele2.name ==
                                            'Layout') {
                                            ele2.setting
                                                .colList
                                                .forEach(
                                                    col => {
                                                        if (
                                                            col) {
                                                            if (col
                                                                .fieldId ==
                                                                attr
                                                                .attr
                                                            ) {
                                                                col.value =
                                                                    $this
                                                                    .operationNumber(
                                                                        col
                                                                        .value,
                                                                        attr
                                                                        .value,
                                                                        attr
                                                                        .operation
                                                                    )
                                                            }
                                                        }
                                                    })
                                        }
                                    });
                                });
                            }
                        } else if (rowData.condition) {
                            const conditions = rowData.condition;
                            let bFindCondition = true;
                            for (let i in conditions) {
                                const condition = conditions[i];
                                let bFind = false;
                                for (let i2 in ele.form.items) {
                                    const ele2 = ele.form.items[i2];
                                    if (ele2.name != "Layout") {
                                        if (ele2.fieldId == condition.attr) {
                                            if (condition.value == ele2.value) {
                                                bFind = true;
                                            }
                                            break;
                                        }
                                    } else {
                                        const colList = ele2.setting.colList || [];
                                        for (let i3 in colList) {
                                            const col = colList[i3];
                                            if (col.fieldId == condition.attr) {
                                                if (condition.value == col.value) {
                                                    bFind = true;
                                                }
                                                break;
                                            }
                                        }
                                        if (bFind) break;
                                    }
                                }
                                if (!bFind) {
                                    bFindCondition = false;
                                    break;
                                }
                            }
                            if (bFindCondition) {
                                rowData.attrs.forEach(attr => {
                                    ele.form.items.forEach(ele2 => {
                                        if (ele2.name !=
                                            'Layout') {
                                            if (ele2.fieldId ==
                                                attr
                                                .attr) {
                                                ele2.value =
                                                    $this
                                                    .operationNumber(
                                                        ele2
                                                        .value,
                                                        attr
                                                        .value,
                                                        attr
                                                        .operation
                                                    )
                                            }
                                        } else if (ele2.name ==
                                            'Layout') {
                                            ele2.setting
                                                .colList
                                                .forEach(
                                                    col => {
                                                        if (
                                                            col) {
                                                            if (col
                                                                .fieldId ==
                                                                attr
                                                                .attr
                                                            ) {
                                                                col.value =
                                                                    $this
                                                                    .operationNumber(
                                                                        col
                                                                        .value,
                                                                        attr
                                                                        .value,
                                                                        attr
                                                                        .operation
                                                                    )
                                                            }
                                                        }
                                                    })
                                        }
                                    });
                                });
                            }
                        }
                    })
                });
                pageData.DefList = detailStyleDefList
                $this.$set(this.pageDetail, pageIndex, pageData)
            },
            //加载正在码盘内容
            viewAceionRow(data) {
                // console.log(data);
                if (JSON.stringify(data.row) == '{}') {
                    return;
                }
                const pageIndex = this.pageDetail.findIndex((
                    page, index2, arr) => {
                    return data.page_name == page.Name;
                })
                if (pageIndex < 0)
                    return
                const pageData = this.pageDetail[pageIndex]
                var styleStr = JSON.stringify(pageData.StyleDef);
                var detailStyle = JSON.parse(styleStr);
                if (detailStyle.form) {
                    data.row.forEach(row => {
                        detailStyle = JSON.parse(styleStr);
                        detailStyle.form.objId = row.id;
                        detailStyle.form.htmlobjId = row.id ? row.id.replace(/-/g, '')
                            .replace(
                                '{', '').replace('}',
                                '') : 'null';
                        detailStyle.form.attrs = row.attrs;
                        row.attrs.forEach(attr => {
                            detailStyle.form.items.forEach(ele => {
                                if (ele.name != 'Layout') {
                                    if (ele.fieldId == attr.attr) ele
                                        .value =
                                        attr.value;
                                } else if (ele.name == 'Layout') {
                                    ele.setting.colList.forEach(
                                        col => {
                                            if (col) {
                                                if (col.fieldId ==
                                                    attr
                                                    .attr) col
                                                    .value = attr
                                                    .value;
                                            }
                                        });
                                }
                            });
                        });
                        pageData.DefList.push(detailStyle);
                        this.$set(this.pageDetail, pageIndex, pageData)
                    });
                }
            },
            //加载已码盘内容
            viewAceionContent(data) {
                var $this = this;
                const pageIndex = $this.pageDetail.findIndex((
                    page, index2, arr) => {
                    return data.page_name == page.Name;
                })
                if (pageIndex < 0)
                    return
                const pageData = $this.pageDetail[pageIndex]
                pageData.ExtData = data.ext_data || {}
                if (JSON.stringify(data.content) == '{}') {
                    return;
                }
                var styleStr = JSON.stringify(pageData.StyleDef);
                var detailStyle = JSON.parse(styleStr);
                if (detailStyle.form) {
                    data.content.forEach(cont => {
                        detailStyle = JSON.parse(styleStr);
                        detailStyle.SelBut_Checked = data.checkbox ?? true;
                        detailStyle.form.objId = cont.id;
                        detailStyle.form.htmlobjId = cont.id ? cont.id.replace(/-/g,
                                '')
                            .replace('{', '').replace('}',
                                '') : 'null';
                        detailStyle.form.attrs = cont.attrs;
                        cont.attrs.forEach(attr => {
                            detailStyle.form.items.forEach(ele => {
                                if (ele.name != 'Layout') {
                                    if (ele.fieldId == attr.attr) ele
                                        .value =
                                        attr.value;
                                } else if (ele.name == 'Layout') {
                                    ele.setting.colList.forEach(
                                        col => {
                                            if (col) {
                                                if (col.fieldId ==
                                                    attr
                                                    .attr) col
                                                    .value = attr
                                                    .value;
                                            }
                                        });
                                }
                            });
                        });
                        //如果 clear = false 则不需要清除,根据id判断是否存在,不存在插入到页面,如果存在用新的属性覆盖
                        if (data.clear == false) {
                            var isflag = true;
                            pageData.DefList.forEach((style, index) => {
                                if (style.form.objId == detailStyle.form
                                    .objId) {
                                    cont.attrs.forEach(attr => {
                                        style.form.items.forEach(
                                            ele => {
                                                if (ele.name !=
                                                    'Layout') {
                                                    if (ele
                                                        .fieldId ==
                                                        attr.attr)
                                                        ele
                                                        .value =
                                                        attr.value;
                                                } else if (ele
                                                    .name ==
                                                    'Layout') {
                                                    ele.setting
                                                        .colList
                                                        .forEach(
                                                            col => {
                                                                if (
                                                                    col
                                                                ) {
                                                                    if (col
                                                                        .fieldId ==
                                                                        attr
                                                                        .attr
                                                                    )
                                                                        col
                                                                        .value =
                                                                        attr
                                                                        .value;
                                                                }
                                                            });
                                                }
                                            });
                                    });
                                    isflag = false;
                                }
                            });
                            if (isflag) pageData.DefList.push(detailStyle); //待分拣
                        } else {
                            pageData.DefList.push(detailStyle); //待分拣
                        }
                        // $this.setData({pageDetail:pageD})
                        $this.$set(this.pageDetail, pageIndex, pageData)
                    });
                }
            },
            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
                })
            },
            onClickItem(e) { //选择页签
                // console.log(e);
                this.current = e.currentIndex
            },
            onDetail1EnterChange(item) { //码盘中样式回车事件
                console.log(item);
            },
            async del(pageData, style, event) {
                //获取表头属性
                var head_attr = {};
                this.$data.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;
                });
                // console.log(head_attr);
                //获取正在分拣属性
                var detailAttrList = [];
                var detail_attr = {};
                style.form.items.forEach(item => {
                    if (item.name == "Layout") { //判断是否是栅栏格式
                        item.setting.colList.forEach(cols => {
                            if (cols != null) detail_attr[cols
                                    .fieldId] = cols
                                .value;
                        });
                    } else
                        detail_attr[item.fieldId] = item.value;
                });
                detail_attr['id'] = style.form.objId;
                if (pageData.Select_Button == true) { //判断选择按钮是否为true
                    if (style.SelBut_Checked == true)
                        detailAttrList.push(detail_attr);
                } else
                    detailAttrList.push(detail_attr);
                // console.log(detailAttrList);
                //获取正在分拣里没有显示的字段
                style.form.attrs.forEach(attr => {
                    for (var key in detailAttrList) {
                        if (style.form.objId == detailAttrList[key]['id']) {
                            var keys = Object.keys(detailAttrList[key]);
                            var isflag = true;
                            keys.forEach((ele) => {
                                if (ele == attr.attr) isflag = false;
                            });
                            if (isflag) {
                                detailAttrList[attr.attr] = attr.value;
                            }
                        }
                    }
                });
                var input_param = Base64.encode(
                    JSON.stringify(
                        Object.keys(head_attr).map((a) => ({
                            attr: a,
                            value: head_attr[a] || "",
                        }))
                    )
                );
                var jsonlist = [];
                detailAttrList.forEach(attr => {
                    jsonlist.push({
                        id: attr["id"] || "",
                        attrs: Object.keys(attr).map((a) => ({
                            attr: a,
                            value: attr[a] || "",
                        })).filter((a) => {
                            return a.attr != "id"
                        })
                    });
                });
                if (jsonlist.length == 0) {
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: this.translate("tip_no_select_data"),
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return;
                }
                // console.log(jsonlist);
                const list = []
                list.push({
                    page_name: pageData.Name,
                    item_list: jsonlist,
                    ext_data: pageData.ExtData
                })
                $this.runCustomEvent(pageData, event, input_param, list);
            },
            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;
                }
                var callback_eventid = $this.$data.popupParam.button_callback.trim();
                var info = {
                    eventid: callback_eventid,
                    edtype: "0",
                    projectid: '',
                    rclsid: '',
                    robjid: '',
                    userlogin: '',
                    clsid: $this.$data.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.$data.ClsID, // 功能点主数据类标识
                    'button': 'top', // top/bottom
                    button_name: this.translateSys('add2'),
                    master: {
                        cls_id: this.$data.ClsID, // button=bottom时 master的cls_id
                        //obj_id: ''  // button=bottom时 master的obj_id
                    }
                };
                if (data_attr) {
                    enviroment.edit_dlg = {
                        type: 'small', //小窗口
                        class_id: this.$data.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.$data.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
                            });
                        }
                    }
                }
                var extinfo = enviroment;
                extinfo.edit_dlg = {
                    type: 'small', //小窗口
                    class_id: $this.ClsID, //当前数据类id
                }
                extinfo = Base64.encode(JSON.stringify(extinfo)); //将字符串转换为base64编码
                var global_attr = Base64.encode(JSON.stringify($this.global_attr)); //将字符串转换为base64编码
                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: extinfo,
                    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")
                        });
                        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.$data.param
                                                            .DataCls
                                                            .id,
                                                        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.$data
                                                                .param
                                                                .DataCls.id,
                                                            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")
                    });
                });
            },
            onPanelClick(value, id) {
                // console.log(value);
                this.active_id = id;
            },
            //点击按钮列表
            clickDropdownBtns(pageData) {
                const that = this
                const itemlist = [];
                const btnList = pageData.DropDownButton || []
                for (let i in btnList) {
                    itemlist.push(btnList[i].ShowName || "");
                }
                uni.showActionSheet({
                    // title: '按钮列表',
                    itemList: itemlist,
                    success: (e) => {
                        console.log(e.tapIndex);
                        var btn = btnList[e.tapIndex];
                        that.onBtnClick(btn, pageData);
                    }
                })
            },
            onBtnClick(btn, pageData) {
                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);
                        },
                    })
                } else {
                    this.onButtonClicked(btn, pageData, -1);
                }
            },
            onRowBtnClick(btn, pageData, index) {
                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);
                        },
                    })
                } else {
                    this.onButtonClicked(btn, pageData, index);
                }
            },
            onButtonClicked(btn, pageData, index) {
                this.After_OK_Event = {}
                let enviroment = {
                    button: "top",
                    button_name: btn.ShowName,
                    cls_id: btn.Cls_ID,
                    function: "3018",
                    master: {},
                };
                if (btn.FunCode == "TriggerEvent") {
                    this.After_OK_Event = btn?.After_Event || {};
                    this.sava(pageData, btn.Event);
                } else if (btn.FunCode == "Cancel") {
                    this.cancel();
                } else if (btn.FunCode == "Delete") {
                    if (index > -1) {
                        const style = pageData.DefList[index];
                        //删除码盘中样式面板
                        pageData.DefList.splice(index, 1);
                        this.del(pageData, style, btn.AfterProcess_Event);
                    }
                } else {
                    this.$Message.warning(this.$t("sys.unrealized"));
                }
            },
            //确定
            ok(pageData) {
                this.Before_OK_Event = pageData.Before_ok;
                this.After_OK_Event = pageData.After_ok;
                // console.log(this.Before_OK_Event);
                // console.log(this.After_OK_Event);
                if (this.$data.Before_OK_Event.ID) //是否有确定前事件
                    this.sava(pageData, this.$data.Before_OK_Event);
                else if (this.$data.After_OK_Event.ID) //是否有确定后事件
                    this.sava(pageData, this.$data.After_OK_Event);
            },
            sava(pageData, event) {
                var $this = this;
                if (pageData.DefList.length == 0) {
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: this.translate(
                                "tip_no_data_first") +
                            this.translateSys(
                                "quotation_mark_left") + pageData.Name + this
                            .translateSys(
                                "quotation_mark_right") +
                            this.translate(
                                "tip_no_data_last"),
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return false;
                }
                //获取表头属性
                pageData.okLoading = true
                var head_attr = {};
                this.$data.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;
                });
                // console.log(head_attr);
                //获取正在码盘属性
                var detailAttrList = [];
                pageData.DefList.forEach(style => {
                    var detail_attr = {};
                    style.form.items.forEach(item => {
                        if (item.name == "Layout") { //判断是否是栅栏格式
                            item.setting.colList.forEach(cols => {
                                if (cols != null) detail_attr[
                                    cols
                                    .fieldId] = cols.value;
                            });
                        } else
                            detail_attr[item.fieldId] = item.value;
                    });
                    detail_attr['id'] = style.form.objId;
                    if (pageData.Select_Button ==
                        true) { //判断选择按钮是否为true
                        if (style.SelBut_Checked == true)
                            detailAttrList.push(detail_attr);
                    } else
                        detailAttrList.push(detail_attr);
                });
                // console.log(detailAttrList);
                //获取正在码盘里没有显示的字段
                pageData.DefList.forEach(style => {
                    style.form.attrs.forEach(attr => {
                        for (var key in detailAttrList) {
                            if (style.form.objId == detailAttrList[key]
                                [
                                    'id'
                                ]) {
                                var keys = Object.keys(detailAttrList[
                                    key]);
                                var isflag = true;
                                keys.forEach((ele) => {
                                    if (ele == attr.attr)
                                        isflag =
                                        false;
                                });
                                if (isflag) {
                                    detailAttrList[attr.attr] = attr
                                        .value;
                                }
                            }
                        }
                    });
                });
                // console.log(detailAttrList);
                //    return;
                var input_param = Base64.encode(
                    JSON.stringify(
                        Object.keys(head_attr).map((a) => ({
                            attr: a,
                            value: head_attr[a] || "",
                        }))
                    )
                );
                var jsonlist = [];
                detailAttrList.forEach(attr => {
                    jsonlist.push({
                        id: attr["id"] || "",
                        attrs: Object.keys(attr).map((a) => ({
                            attr: a,
                            value: attr[a] || "",
                        }))
                    });
                });
                if (jsonlist.length == 0) {
                    pageData.okLoading = false
                    uni.showModal({
                        title: this.translateSys("tip"),
                        content: this.translate("tip_no_select_data"),
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                    return;
                }
                const list = []
                list.push({
                    page_name: pageData.Name,
                    item_list: jsonlist,
                    ext_data: pageData.ExtData
                })
                // console.log(jsonlist);
                $this.runCustomEvent(pageData, event, input_param, list);
                // jsonlist.forEach(async (json,key)=>{
                //     await $this.runCustomEvent(event,input_param,json,'1');
                // });
            },
            //执行确定脚本
            async runCustomEvent(pageParam, event, input_param, json, type) {
                var $this = this;
                var data_json = Base64.encode(
                    JSON.stringify(json)
                );
                var dataInfo = {
                    ed_type: 0,
                    start_transaction: true,
                    class_id: this.$data.ClsID,
                    class_name: '',
                    event_id: event.ID,
                    event_name: '',
                    data_obj_id: '',
                    obj_attr: '',
                    prj_id: '',
                    ref_cls_id: '',
                    rel_obj_id: '',
                    user_login: '',
                    data_json: data_json,
                    compose_info: '',
                    ext_info: '',
                    global_attr: '',
                    input_param: input_param,
                };
                // console.log(dataInfo);
                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) {
                            if (result.action) {
                                //    uni.showModal({title:this.translateSys("tip"),content:JSON.stringify(result.action),showCancel:false,confirmText:this.translateSys("cancel")});
                                result.action.forEach(item => {
                                    if (item.action_type ==
                                        "insert_subtable_page_row"
                                    ) { //码盘中
                                        var value = item.value;
                                        //加载已经码盘数据
                                        $this.viewAceionRow(
                                            value, );
                                        //清空条码内容
                                        $this.$data
                                            .head_styledef
                                            .form.items
                                            .forEach((
                                                item,
                                                index) => {
                                                if (item
                                                    .fieldId !=
                                                    "S_CNTR_CODE"
                                                ) {
                                                    item.value =
                                                        '';
                                                    item.oldvalue =
                                                        '';
                                                    $this
                                                        .$data
                                                        .head_styledef
                                                        .form
                                                        .model[
                                                            item
                                                            .fieldId
                                                        ] =
                                                        '';
                                                }
                                            });
                                        uni.showModal({
                                            title: this
                                                .translateSys(
                                                    "tip"
                                                ),
                                            content: this
                                                .translate(
                                                    'execute_event_success'
                                                ),
                                            showCancel: false,
                                            confirmText: this
                                                .translateSys(
                                                    "cancel"
                                                )
                                        });
                                    } else if (item.action_type ==
                                        "set_subtable_page_content"
                                    ) { //已码盘
                                        $this.$data.param
                                            .Show_Welcom_Page =
                                            false;
                                        var value = item.value;
                                        const pageData = $this
                                            .pageDetail.find((
                                                page) => {
                                                return value
                                                    .page_name ==
                                                    page.Name;
                                            });
                                        if (value.clear_confirm !=
                                            false && value.clear ==
                                            true &&
                                            pageData && pageData
                                            .DefList.length > 0
                                        ) { //判断是否清空页签内容,正在码盘是否有数据
                                            uni.showModal({
                                                title: this
                                                    .translateSys(
                                                        'tip'
                                                    ),
                                                content: this
                                                    .translate(
                                                        "are_you_sure_clear_first"
                                                    ) +
                                                    this
                                                    .translateSys(
                                                        "quotation_mark_left"
                                                    ) +
                                                    value
                                                    .page_name +
                                                    this
                                                    .translateSys(
                                                        "quotation_mark_right"
                                                    ) +
                                                    this
                                                    .translate(
                                                        "are_you_sure_clear_last"
                                                    ),
                                                success: function(
                                                    res
                                                ) {
                                                    if (res
                                                        .confirm
                                                    ) {
                                                        if (
                                                            pageData
                                                        )
                                                            pageData
                                                            .DefList = [];
                                                        $this
                                                            .viewAceionContent(
                                                                value
                                                            );
                                                    } else if (
                                                        res
                                                        .cancel
                                                    ) {
                                                        if (
                                                            pageData
                                                        )
                                                            pageData
                                                            .DefList = [];
                                                        $this
                                                            .viewAceionContent(
                                                                value
                                                            );
                                                    }
                                                }
                                            });
                                        } else {
                                            if (pageData)
                                                pageData
                                                .DefList = [];
                                            $this
                                                .viewAceionContent(
                                                    value);
                                        }
                                    } else if (item
                                        .action_type ==
                                        "remove_subtable_page_row"
                                    ) { //清除面板中指定id的数据
                                        var value = item.value;
                                        const pageData = $this
                                            .pageDetail.find((
                                                page) => {
                                                return value
                                                    .page_name ==
                                                    page
                                                    .Name;
                                            });
                                        if (pageData
                                            ?.DefList
                                        ) { //判断返回的action的page_name是否是待分拣
                                            //清除面板中指定id的数据
                                            value.row.forEach(
                                                row => {
                                                    pageData
                                                        .DefList
                                                        .forEach(
                                                            (
                                                                ele,
                                                                index
                                                            ) => {
                                                                if (ele
                                                                    .form
                                                                    .objId ==
                                                                    row
                                                                    .id
                                                                ) {
                                                                    pageData
                                                                        .DefList
                                                                        .splice(
                                                                            index,
                                                                            1
                                                                        );
                                                                }
                                                            }
                                                        );
                                                });
                                        }
                                    } else if (item
                                        .action_type ==
                                        "set_subtable_page_row"
                                    ) {
                                        $this.viewActionSetRow(
                                            item
                                            .value)
                                    } else if (item
                                        .action_type ==
                                        "set_subtable_page_ext_data"
                                    ) {
                                        var value = item.value;
                                        const pageData = $this
                                            .pageDetail.find((
                                                page) => {
                                                return value
                                                    .page_name ==
                                                    page
                                                    .Name;
                                            });
                                        if (pageData) {
                                            pageData.ExtData =
                                                value
                                                .ext_data
                                        }
                                    } else if (item
                                        .action_type ==
                                        "clear_subpage_rows") {
                                        var value = item.value;
                                        const pageData = $this
                                            .pageDetail.find((
                                                page) => {
                                                return value
                                                    .page_name ==
                                                    page
                                                    .Name;
                                            });
                                        if (pageData) {
                                            pageData
                                                .DefList = []
                                            pageData
                                                .ExtData = {}
                                        }
                                    } else 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 ($this.$data.After_OK_Event.ID !=
                                    event
                                    .ID) { //判断当前事件是否是确定后事件
                                    $this.sava(pageParam, $this.$data
                                        .After_OK_Event); //执行确定后事件
                                }
                            }
                        } else {
                            if (result.info) {
                                uni.showModal({
                                    title: this.translateSys(
                                        "tip"),
                                    content: result.info,
                                    showCancel: false,
                                    confirmText: this
                                        .translateSys("cancel")
                                });
                            }
                        }
                    }
                    pageParam.okLoading = false
                }).catch(ex => {
                    pageParam.okLoading = false
                    let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
                    uni.showModal({
                        title: this.translateSys("error") + "8.1",
                        content: this.translate(
                                "execute_after_ok_event_failed") +
                            this.translateSys(
                                "comma") +
                            tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                    });
                });
            },
            cancel(e) { //取消
                uni.navigateBack({
                    delta: 1 //返回层数,2则上上页
                });
            },
            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: 100%;
            flex-direction: column;
            min-height: 100px;
        }
        .dv-tab {
            width: calc(100% - 30rpx);
            padding: 0 15rpx;
        }
        .view-tabpage {
            width: 100%;
            flex: 1;
        }
        .view-tab-content {
            display: flex;
            flex: 1;
            width: calc(100% - 30rpx);
            padding: 10rpx 15rpx;
            flex-direction: column;
            overflow-y: auto;
        }
        .uni-panel-content {
            display: flex;
            width: 100%;
            height: 100%;
            flex-direction: column !important;
        }
        .view-bottom {
            display: flex;
            flex-direction: row;
            width: calc(100% - 30rpx);
            padding: 10rpx 15rpx 30rpx 15rpx;
            .btn-disabled {
                background-color: #ddd;
                color: #888;
            }
            .btn-left {
                padding: 20rpx;
                line-height: 1.5;
                border: none;
                font-size: 38rpx;
                font-weight: bold;
                float: left;
                display: inline-block;
            }
            .btn-one {
                padding: 20rpx;
                line-height: 1.5;
                border: none;
                font-size: 38rpx;
                font-weight: bold;
                float: left;
                display: inline-block;
                width: 50%;
                margin-left: 25%;
            }
            .btn-right {
                padding: 20rpx;
                line-height: 1.5;
                border: none;
                font-size: 38rpx;
                font-weight: bold;
                float: right;
                display: inline-block;
            }
            .width-50 {
                width: 49%;
            }
            .width-32 {
                width: 32%;
                margin-left: 1%;
            }
            .width-30 {
                width: 30%;
                margin-left: 1%;
            }
        }
        [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;
        }
        .dv-panel {
            background-color: #efefef;
            padding: 20rpx 20rpx 10rpx 0px;
            border-radius: 12rpx;
            margin: 10rpx 0 20rpx 0;
            text-align: right;
            .txt_title {
                font-size: 28rpx;
                text-align: right;
                display: inline-block;
            }
            input {
                vertical-align: middle;
                display: inline-block;
                border: 1px solid #d5d5d5;
                width: 68%;
                height: 48rpx;
                line-height: 28rpx;
                background: #FFF;
                border-radius: 7px !important;
                color: #2d8cf0;
                padding: 6rpx 8rpx 8rpx;
                font-size: 28rpx;
                font-family: inherit;
                box-shadow: none !important;
                transition-duration: 0.1s;
                margin-top: 0rpx;
            }
            input::-webkit-input-placeholder {
                font-size: 10rpx;
            }
            .form-item-span {
                vertical-align: text-top;
                color: #2d8cf0;
                white-space: normal;
                word-break: break-all;
                display: inline-block;
                width: calc(100% - 100px);
            }
            .dv-panel-button {
                width: 100%;
                text-align: left;
                min-height: 30rpx;
                padding-bottom: 10rpx;
                checkbox {
                    padding-left: 20px;
                    display: inline-block;
                }
                button {
                    text-align: left;
                    line-height: 1.5;
                    border: none;
                    font-size: 30rpx;
                    display: inline-block;
                    float: right;
                    text-align: center;
                }
            }
        }
        .dv-panel-input {
            width: 100%;
            display: inline-block;
            text-align: left;
            .dv-input {
                margin-bottom: 2rpx;
            }
        }
        .logo {
            height: 100rpx;
            width: 460rpx;
            display: flex;
            margin: 38% auto;
        }
        .dv-border {
            border: 1px solid red;
        }
        .view-imagetext {
            text-align: center;
            width: calc(100% - 80rpx);
            padding: 20rpx 40rpx 0px 40rpx;
            height: calc(100% - 30rpx);
            overflow: hidden;
        }
        .view-imagetext .view-imagetext-uploadlist {
            padding: 30rpx 0px 10rpx 0px;
            vertical-align: middle;
            display: inline-block;
            width: 100%;
            height: 100%;
            text-align: center;
            line-height: 100%;
            border: 2rpx solid transparent;
            border-radius: 8rpx;
            overflow: hidden;
            background: #fff;
            position: relative;
        }
        .view-imagetext .txt-text {
            display: block;
            margin: 20rpx;
            font-weight: bold;
        }
        .view-detalist-centen {
            text-align: center;
            width: 100%;
        }
        .view-detalist-centen .txt-detalist {
            background: #94D5EF;
            display: block;
            width: 100%;
            font-size: 36rpx;
            line-height: 80rpx;
            font-weight: 500;
        }
        .panel-active {
            border: 2px solid red;
        }
        .bk-active {
            background-color: #D6FCB2;
        }
        .dv_select {
            display: inline-block;
            width: 66%;
            background: #FFF;
            border-radius: 0 !important;
            color: #2d8cf0;
            /* padding: 10rpx 8rpx 12rpx; */
            font-size: 34rpx;
            font-family: inherit;
            box-shadow: none !important;
            transition-duration: 0.1s;
            margin-top: 0rpx;
            vertical-align: 20rpx;
            .uni-select {
                border: 2rpx solid #ccc;
                border-radius: 0 !important;
                color: #2d8cf0;
            }
            .uni-select__input-text {
                color: #2d8cf0;
            }
        }
        .input-disabled {
            background-color: #f3f3f3 !important;
        }
        .demo-uni-row {
            margin-bottom: 0px;
            display: block;
            .uni-input {
                width: calc(100% - 120px);
            }
        }
        ::v-deep .uni-row {
            margin-bottom: 0px;
        }
        .view-tabpage ::v-deep .uni-row {
            margin-bottom: 5px;
        }
        .demo-uni-col {
            height: 36px;
            border-radius: 5px;
        }
        .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>