75
cuiqian2004
2025-11-28 e92aeae89a7430b326ab2157ed5004cc5c87d659
75
1个文件已添加
13个文件已修改
895 ■■■■■ 已修改文件
components/data-select/index.vue 723 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/oi-form/list/select/index.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
locale/en.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
locale/es.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
locale/zh-Hans.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
locale/zh-Hant.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3018_2.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3200.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3200_view.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3202.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3202_view.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/5601.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/data-select/index.vue
New file
@@ -0,0 +1,723 @@
<template>
    <view class="oi-data-select">
        <span v-if="label" class="uni-label-text hide-on-phone">{{label + ':'}}</span>
        <view class="uni-stat-box" :class="{'uni-stat__actived': current}">
            <view class="uni-select" :class="{'uni-select--disabled':disabled}">
                <view class="uni-select__input-box" @click="toggleSelector">
                    <input class="uni-select__input-text" :class="disabled?'input-disabled':''" v-model="current"
                        :placeholder="typePlaceholder" @blur="onBlur" :disabled="disabled || !filterable" />
                    <view v-if="modelValue && clear && !disabled" @click.stop="clearVal">
                        <uni-icons type="clear" color="#c0c4cc" size="24" />
                    </view>
                    <view v-else>
                        <uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" />
                    </view>
                </view>
                <view class="uni-select--mask" v-if="showSelector" @click="toggleSelector()" />
                <template v-if="popDown">
                    <view class="uni-select__selector" v-if="showSelector">
                        <view class="uni-popper__arrow"></view>
                        <scroll-view scroll-y="true" class="uni-select__selector-scroll">
                            <view class="uni-select__selector-empty" v-if="selections.length === 0">
                                <text>{{emptyTips}}</text>
                            </view>
                            <view v-else class="uni-select__selector-item"
                                :class="item.value == modelValue ?'selected-item':''" v-for="(item,index) in selections"
                                :key="index" @click="change(item)">
                                <text
                                    :class="{'uni-select__selector__disabled': item.disable}">{{formatItemName(item)}}</text>
                            </view>
                        </scroll-view>
                    </view>
                </template><template v-else>
                    <view class="uni-select__selector-top" v-if="showSelector">
                        <scroll-view scroll-y="true" class="uni-select__selector-scroll">
                            <view class="uni-select__selector-empty" v-if="selections.length === 0">
                                <text>{{emptyTips}}</text>
                            </view>
                            <view v-else class="uni-select__selector-item"
                                :class="item.value == modelValue ?'selected-item':''" v-for="(item,index) in selections"
                                :key="index" @click="change(item)">
                                <text
                                    :class="{'uni-select__selector__disabled': item.disable}">{{formatItemName(item)}}</text>
                            </view>
                        </scroll-view>
                        <view class="uni-popper__arrow-top"></view>
                    </view>
                </template>
            </view>
        </view>
    </view>
</template>
<script>
    /**
     * DataChecklist 数据选择器
     * @description 通过数据渲染的下拉框组件
     * @property {String} value 默认值
     * @property {Array} localdata 本地数据 ,格式 [{text:'',value:''}]
     * @property {Boolean} clear 是否可以清空已选项
     * @property {Boolean} emptyText 没有数据时显示的文字 ,本地数据无效
     * @property {String} label 左侧标题
     * @property {String} placeholder 输入框的提示文字
     * @property {Boolean} disabled 是否禁用
     * @event {Function} change  选中发生变化触发
     */
    export default {
        name: "OIDataSelect",
        mixins: [uniCloud.mixinDatacom || {}],
        props: {
            localdata: {
                type: Array,
                default () {
                    return []
                }
            },
            value: {
                type: [String, Number],
                default: ''
            },
            modelValue: {
                type: [String, Number],
                default: ''
            },
            label: {
                type: String,
                default: ''
            },
            placeholder: {
                type: String,
                default: '请选择'
            },
            emptyTips: {
                type: String,
                default: '无选项'
            },
            clear: {
                type: Boolean,
                default: true
            },
            defItem: {
                type: Number,
                default: 0
            },
            filterable: {
                type: Boolean,
                default: false
            },
            disabled: {
                type: Boolean,
                default: false
            },
            // 格式化输出 用法 field="_id as value, version as text, uni_platform as label" format="{label} - {text}"
            format: {
                type: String,
                default: ''
            },
        },
        data() {
            return {
                pointY: 0,
                scrollHeight: 40,
                keyboardHeight: 400,
                windowSize: {},
                showSelector: false,
                current: '',
                mixinDatacomResData: [],
                apps: [],
                channels: [],
                cacheKey: "OIDataSelect-lastSelectedValue",
            };
        },
        created() {
            const _this = this
            this.debounceGet = this.debounce(() => {
                this.query();
            }, 300);
            if (this.collection && !this.localdata.length) {
                this.debounceGet();
            }
            uni.getSystemInfo({
                success(e) {
                    _this.windowSize = {
                        width: e.windowWidth,
                        height: e.windowHeight - (e.statusBarHeight || 0)
                    }
                },
            })
            uni.onKeyboardHeightChange((res) => {
                //    console.log("onKeyboardHeightChange", res)
                _this.keyboardHeight = res.height; // 单位:px
            });
        },
        destroyed() {
            uni.offKeyboardHeightChange(() => {}) //
        },
        computed: {
            typePlaceholder() {
                const text = {
                    'opendb-stat-app-versions': '版本',
                    'opendb-app-channels': '渠道',
                    'opendb-app-list': '应用'
                }
                const common = this.placeholder
                const placeholder = text[this.collection]
                return placeholder ?
                    common + placeholder :
                    common
            },
            valueCom() {
                // #ifdef VUE3
                return this.modelValue;
                // #endif
                // #ifndef VUE3
                return this.value;
                // #endif
            },
            textShow() {
                // 长文本显示
                let text = this.current;
                if (text.length > 10) {
                    return text.slice(0, 25) + '...';
                }
                return text;
            },
            selections() {
                let list = this.mixinDatacomResData
                if (this.filterable) {
                    if (this.current) {
                        list = this.mixinDatacomResData.filter((a) => a.text.match(new RegExp(this.current, "i")))
                    }
                }
                let height = (list.length * 35) || 35
                if (height > 200) {
                    height = 200
                }
                this.scrollHeight = height + 10
                return list
            },
            popDown() {
                console.log("popDown", this.pointY, this.keyboardHeight, this.scrollHeight, this.windowSize.height)
                if (this.filterable) {
                    if (this.pointY + this.scrollHeight > this.windowSize.height - this.keyboardHeight) {
                        return false
                    }
                } else {
                    if (this.pointY + this.scrollHeight > this.windowSize.height) {
                        return false
                    }
                }
                return true
            }
        },
        watch: {
            localdata: {
                immediate: true,
                handler(val, old) {
                    if (Array.isArray(val) && old !== val) {
                        this.mixinDatacomResData = val
                    }
                }
            },
            valueCom(val, old) {
                this.initDefVal()
            },
            mixinDatacomResData: {
                immediate: true,
                handler(val) {
                    if (val.length) {
                        this.initDefVal()
                    }
                }
            },
        },
        methods: {
            debounce(fn, time = 100) {
                let timer = null
                return function(...args) {
                    if (timer) clearTimeout(timer)
                    timer = setTimeout(() => {
                        fn.apply(this, args)
                    }, time)
                }
            },
            // 执行数据库查询
            query() {
                this.mixinDatacomEasyGet();
            },
            // 监听查询条件变更事件
            onMixinDatacomPropsChange() {
                if (this.collection) {
                    this.debounceGet();
                }
            },
            initDefVal() {
                let defValue = ''
                if ((this.valueCom || this.valueCom === 0) && !this.isDisabled(this.valueCom)) {
                    defValue = this.valueCom
                } else {
                    let strogeValue
                    if (this.collection) {
                        strogeValue = this.getCache()
                    }
                    if (strogeValue || strogeValue === 0) {
                        defValue = strogeValue
                    } else {
                        let defItem = ''
                        if (this.defItem > 0 && this.defItem <= this.mixinDatacomResData.length) {
                            defItem = this.mixinDatacomResData[this.defItem - 1].value
                        }
                        defValue = defItem
                    }
                    if (defValue || defValue === 0) {
                        this.emit(defValue)
                    }
                }
                const def = this.mixinDatacomResData.find(item => item.value === defValue)
                this.current = def ? this.formatItemName(def) : ''
            },
            /**
             * @param {[String, Number]} value
             * 判断用户给的 value 是否同时为禁用状态
             */
            isDisabled(value) {
                let isDisabled = false;
                this.mixinDatacomResData.forEach(item => {
                    if (item.value === value) {
                        isDisabled = item.disable
                    }
                })
                return isDisabled;
            },
            onBlur() {
                if (this.modelValue) {
                    const def = this.mixinDatacomResData.find(item => item.value === this.modelValue)
                    this.current = def ? this.formatItemName(def) : ''
                } else {
                    this.current = ""
                }
            },
            clearVal() {
                this.emit('')
                if (this.collection) {
                    this.removeCache()
                }
            },
            change(item) {
                if (!item.disable) {
                    this.showSelector = false
                    this.current = this.formatItemName(item)
                    this.emit(item.value)
                }
            },
            emit(val) {
                this.$emit('input', val)
                this.$emit('update:modelValue', val)
                this.$emit('change', val)
                if (this.collection) {
                    this.setCache(val);
                }
            },
            toggleSelector(e) {
                if (this.disabled) {
                    return
                }
                if (!this.showSelector) {
                    this.pointY = e.detail.y
                }
                this.showSelector = !this.showSelector
            },
            formatItemName(item) {
                let {
                    text,
                    value,
                    channel_code
                } = item
                channel_code = channel_code ? `(${channel_code})` : ''
                if (this.format) {
                    // 格式化输出
                    let str = "";
                    str = this.format;
                    for (let key in item) {
                        str = str.replace(new RegExp(`{${key}}`, "g"), item[key]);
                    }
                    return str;
                } else {
                    return this.collection.indexOf('app-list') > 0 ?
                        `${text}(${value})` :
                        (
                            text ?
                            text :
                            `未命名${channel_code}`
                        )
                }
            },
            // 获取当前加载的数据
            getLoadData() {
                return this.mixinDatacomResData;
            },
            // 获取当前缓存key
            getCurrentCacheKey() {
                return this.collection;
            },
            // 获取缓存
            getCache(name = this.getCurrentCacheKey()) {
                let cacheData = uni.getStorageSync(this.cacheKey) || {};
                return cacheData[name];
            },
            // 设置缓存
            setCache(value, name = this.getCurrentCacheKey()) {
                let cacheData = uni.getStorageSync(this.cacheKey) || {};
                cacheData[name] = value;
                uni.setStorageSync(this.cacheKey, cacheData);
            },
            // 删除缓存
            removeCache(name = this.getCurrentCacheKey()) {
                let cacheData = uni.getStorageSync(this.cacheKey) || {};
                delete cacheData[name];
                uni.setStorageSync(this.cacheKey, cacheData);
            },
        }
    }
</script>
<style lang="scss">
    $uni-base-color: #6a6a6a !default;
    $uni-main-color: #333 !default;
    $uni-secondary-color: #909399 !default;
    $uni-border-3: #e5e5e5;
    /* #ifndef APP-NVUE */
    @media screen and (max-width: 500px) {
        .hide-on-phone {
            display: none;
        }
    }
    /* #endif */
    .oi-data-select {
        display: flex;
        align-items: center;
        // padding: 15px;
        /* #ifdef H5 */
        cursor: pointer;
        /* #endif */
        width: 100%;
        flex: 1;
        box-sizing: border-box;
        .uni-stat-box {
            width: 100%;
            flex: 1;
        }
        .uni-stat__actived {
            width: 100%;
            flex: 1;
            // outline: 1px solid #2979ff;
        }
        .uni-label-text {
            font-size: 14px;
            font-weight: bold;
            color: $uni-base-color;
            margin: auto 0;
            margin-right: 5px;
        }
        .uni-select {
            font-size: 14px;
            border: 1px solid $uni-border-3;
            box-sizing: border-box;
            border-radius: 4px;
            padding: 0 5px;
            padding-left: 10px;
            position: relative;
            /* #ifndef APP-NVUE */
            display: flex;
            user-select: none;
            /* #endif */
            flex-direction: row;
            align-items: center;
            border-bottom: solid 1px $uni-border-3;
            width: 100%;
            flex: 1;
            height: 35px;
            &--disabled {
                background-color: #f5f7fa;
                cursor: not-allowed;
            }
        }
        .uni-select:hover {
            border: 1px solid rgb(41, 121, 255);
        }
        .uni-select__label {
            font-size: 16px;
            // line-height: 22px;
            height: 35px;
            padding-right: 10px;
            color: $uni-secondary-color;
        }
        .uni-select__input-box {
            height: 35px;
            position: relative;
            /* #ifndef APP-NVUE */
            display: flex;
            /* #endif */
            flex: 1;
            flex-direction: row;
            align-items: center;
        }
        .uni-select__input {
            flex: 1;
            font-size: 14px;
            height: 22px;
            line-height: 22px;
        }
        .uni-select__input-plac {
            font-size: 14px;
            color: $uni-secondary-color;
        }
        .uni-select__selector {
            /* #ifndef APP-NVUE */
            box-sizing: border-box;
            /* #endif */
            position: absolute;
            top: calc(100% + 12px);
            left: 0;
            width: 100%;
            background-color: #FFFFFF;
            border: 1px solid #EBEEF5;
            border-radius: 6px;
            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
            z-index: 3;
            padding: 4px 0;
        }
        .uni-select__selector-top {
            /* #ifndef APP-NVUE */
            box-sizing: border-box;
            /* #endif */
            position: absolute;
            bottom: calc(100% + 12px);
            left: 0;
            width: 100%;
            background-color: #FFFFFF;
            border: 1px solid #EBEEF5;
            border-radius: 6px;
            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
            z-index: 3;
            padding: 4px 0;
        }
        .uni-select__selector-scroll {
            /* #ifndef APP-NVUE */
            max-height: 200px;
            box-sizing: border-box;
            /* #endif */
        }
        /* #ifdef H5 */
        @media (min-width: 768px) {
            .uni-select__selector-scroll {
                max-height: 600px;
            }
        }
        /* #endif */
        .uni-select__selector-empty,
        .uni-select__selector-item {
            /* #ifndef APP-NVUE */
            display: flex;
            cursor: pointer;
            /* #endif */
            line-height: 35px;
            font-size: 14px;
            text-align: center;
            /* border-bottom: solid 1px $uni-border-3; */
            padding: 0px 10px;
        }
        .uni-select__selector-empty {
            color: #666;
        }
        .selected-item {
            color: rgb(41, 121, 255);
        }
        .uni-select__selector-item:hover {
            background-color: #f9f9f9;
        }
        .uni-select__selector-empty:last-child,
        .uni-select__selector-item:last-child {
            /* #ifndef APP-NVUE */
            border-bottom: none;
            /* #endif */
        }
        .uni-select__selector__disabled {
            opacity: 0.4;
            cursor: default;
        }
        /* picker 弹出层指向下的通用的指示小三角 */
        .uni-popper__arrow,
        .uni-popper__arrow::after {
            position: absolute;
            display: block;
            width: 0;
            height: 0;
            border-color: transparent;
            border-style: solid;
            border-width: 6px;
        }
        .uni-popper__arrow {
            filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
            top: -6px;
            left: 10%;
            margin-right: 3px;
            border-top-width: 0;
            border-bottom-color: #EBEEF5;
        }
        .uni-popper__arrow::after {
            content: " ";
            top: 1px;
            margin-left: -6px;
            border-top-width: 0;
            border-bottom-color: #fff;
        }
        /* picker 弹出层指向上的通用指示小三角 */
        .uni-popper__arrow-top,
        .uni-popper__arrow-top::after {
            position: absolute;
            display: block;
            width: 0;
            height: 0;
            border-color: transparent;
            border-style: solid;
            border-width: 6px;
        }
        .uni-popper__arrow-top {
            filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03));
            bottom: -6px;
            left: 10%;
            margin-right: 3px;
            border-bottom-width: 0;
            border-top-color: #EBEEF5;
        }
        .uni-popper__arrow-top::after {
            content: " ";
            bottom: 1px;
            margin-left: -6px;
            border-bottom-width: 0;
            border-top-color: #fff;
        }
        .uni-select__input-text {
            // width: 280px;
            width: 100%;
            color: $uni-main-color;
            white-space: nowrap;
            text-overflow: ellipsis;
            -o-text-overflow: ellipsis;
            overflow: hidden;
        }
        .input-disabled {
            background-color: #f3f3f3 !important;
        }
        .uni-select__input-placeholder {
            color: $uni-base-color;
            font-size: 12px;
        }
        .uni-select--mask {
            position: fixed;
            top: 0;
            bottom: 0;
            right: 0;
            left: 0;
            z-index: 2;
        }
    }
    .large-mode {
        .oi-data-select {
            .uni-label-text {
                font-size: 24px;
            }
            .uni-select {
                font-size: 24px;
                height: 32px;
                line-height: 32px;
                height: 45px;
            }
            .uni-select__label {
                font-size: 26px;
                height: 45px;
            }
            .uni-select__input-box {
                height: 45px;
                }
            .uni-select__input {
                font-size: 24px;
            }
            .uni-select__input-plac {
                font-size: 24px;
            }
            .uni-select__selector-empty,
            .uni-select__selector-item {
                font-size: 24px;
            }
            .uni-select__input-placeholder {
                font-size: 22px;
            }
        }
    }
</style>
components/oi-form/list/select/index.vue
@@ -1,18 +1,36 @@
<template>
    <view class="oi-form-select">
        <!-- 下拉选择框 -->
        <uni-data-picker v-if="model" class="data-picker" :class="data.disabled?'input-disabled':''"
        <!-- <uni-data-picker v-if="model" class="data-picker" :class="data.disabled?'input-disabled':''"
            v-model="model[data.fieldId]" :localdata="data.useDict ? data.dict : data.selections" @change="onChange"
            :readonly="data.disabled" :clear-icon="false" :popup-title="data.label"></uni-data-picker>
        <uni-data-picker v-else class="data-picker" :class="data.disabled?'input-disabled':''" v-model="data.value"
            :localdata="data.useDict ? data.dict : data.selections" @change="onChange" :readonly="data.disabled"
            :clear-icon="false" :popup-title="data.label"></uni-data-picker>
            :clear-icon="false" :popup-title="data.label"></uni-data-picker> -->
        <!--         <OISelect v-if="model" v-model:value="model[data.fieldId]"
            :dataList="data.useDict ? data.dict : data.selections" @change="onChange" :disabled="data.disabled"
            :clearable="data.setting.clearable" :filterable="data.setting.filterable"></OISelect>
        <OISelect v-else v-model:value="data.value" :dataList="data.useDict ? data.dict : data.selections"
            @change="onChange" :disabled="data.disabled" :clearable="data.setting.clearable"
            :filterable="data.setting.filterable"></OISelect> -->
        <OIDataSelect v-if="model" v-model="model[data.fieldId]" :localdata="data.useDict ? data.dict : data.selections"
            @change="onChange" :disabled="data.disabled" :clear="data.setting.clearable"
            :filterable="data.setting.filterable"></OIDataSelect>
        <OIDataSelect v-else v-model="data.value" :localdata="data.useDict ? data.dict : data.selections"
            @change="onChange" :disabled="data.disabled" :clear="data.setting.clearable"
            :filterable="data.setting.filterable"></OIDataSelect>
    </view>
</template>
<script>
    import OIDataSelect from '@/components/data-select/index.vue'
    export default {
        name: "OIFormSelect",
        components: {
            OIDataSelect
        },
        props: {
            data: {
                type: Object,
@@ -22,6 +40,10 @@
        },
        methods: {
            onChange(e) {
                if (this.model)
                    console.log(e, this.model[this.data.fieldId])
                else
                    console.log(e, this.data.value)
                this.$emit("on-change", e)
            },
@@ -33,37 +55,8 @@
    .oi-form-select {
        width: 100%;
        .data-picker {
            width: 100%;
            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: 10px; */
            vertical-align: middle;
            .uni-select {
                border: 1px solid #ccc;
                border-radius: 0 !important;
                color: #2d8cf0;
            }
            .uni-select__input-text {
                color: #2d8cf0;
            }
        }
        .input-disabled {
            background-color: #f3f3f3 !important;
        }
    }
</style>
locale/en.json
@@ -61,6 +61,7 @@
    "sys.please": "please",
    "sys.port": "Port",
"page.no_data": "No matching data",
    "page.address": "address",
    "page.server": "Server",
    "page.mobox3_app_type": "Mobox3 PDA application types",
locale/es.json
@@ -60,6 +60,7 @@
    "sys.please": "Por favor.",
    "sys.port": "puerto",
"page.no_data": "Sin datos coincidentes",
    "page.address": "dirección",
    "page.server": "Servidor",
    "page.mobox3_app_type": "Tipo de aplicación PDA mobox3",
locale/zh-Hans.json
@@ -60,6 +60,7 @@
    "sys.please": "请",
    "sys.port": "端口",
"page.no_data": "无匹配数据",
    "page.address": "地址",
    "page.server": "服务地址",
    "page.mobox3_app_type": "mobox3 pda应用类型",
locale/zh-Hant.json
@@ -60,6 +60,7 @@
    "sys.please": "请",
    "sys.port": "端口",
"page.no_data": "無匹配數據",
"page.address": "地址",
    "page.server": "服務地址",
    "page.mobox3_app_type": "mobox3 pda應用類型",
manifest.json
@@ -2,8 +2,8 @@
    "name" : "MoboxPDA",
    "appid" : "__UNI__56D451E",
    "description" : "",
    "versionName" : "1.1.72",
    "versionCode" : 1172,
    "versionName" : "1.1.75",
    "versionCode" : 1175,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
pages/index/index.vue
@@ -9,7 +9,7 @@
                            :style="{'background-color':app.bk_color,'color':app.bk_color}">
                            <text class="ico" :class="app.img_font_style" :style="{'color':app.txt_color}"></text>
                        </a>
                        <view @click="onClickApp(app)" class="app-name">{{app.name}}</view>
                        <view @click="onClickApp(app)" class="app-name">{{ (app.list_name || app.name)}}</view>
                    </view>
                </view>
            </view>
pages/modal/3018_2.vue
@@ -660,9 +660,9 @@
                if (item.name == "Input" || item.name == "InputNumber" || item.name == "Textarea") {
                    this.focusFieldId = item.fieldId
                } else if (item.name == "ImageButton") {
                    var onClickEvent = item.bind.onClickEvent; //后图标点击回调
                    if (!onClickEvent.id) {
                        showInfo(this.translate('icon_click_event_empty'))
                        return;
@@ -800,8 +800,7 @@
                                                focusFieldId: action.value
                                            })
                                        });
                                    }
                                    else if (action.action_type == 'open_panel') {
                                    } else if (action.action_type == 'open_panel') {
                                        var d = dialog({
                                            title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                                $this.translateSys("tip"),
@@ -1236,11 +1235,17 @@
            //确定
            sava() {
                if (this.after_ok?.id) { // 点击确定按钮后
                    this.afterOK();
                } else {
                    this.add();
                }
                this.handleButtonClick((done) => {
                    if (this.after_ok?.id) { // 点击确定按钮后
                        this.afterOK();
                    } else {
                        this.add();
                    }
                    setTimeout(() => {
                        done(); // 重置状态
                    }, 1000);
                });
            },
            add() {
@@ -1662,6 +1667,14 @@
                })
            },
            onButtonClicked(btn) {
                this.handleButtonClick((done) => {
                    this.buttonClicked(btn);
                    setTimeout(() => {
                        done(); // 重置状态
                    }, 1000);
                });
            },
            buttonClicked(btn) {
                let enviroment = {
                    button: "top",
                    button_name: btn.ShowName,
pages/modal/3200.vue
@@ -846,13 +846,27 @@
            //刷新
            Refresh(value) {
                //刷新当前页面
                this.initial();
                this.handleButtonClick((done) => {
                        this.initial();
                    setTimeout(() => {
                        done(); // 重置状态
                    }, 1000);
                });
                // uni.redirectTo({
                //     url:'../modal/3200?param='+JSON.stringify(this.param)+"&titlename="+this.title,
                // });
            },
            //点击显示浏览对象显示页面
            async onViewPageClick(style) {
            onViewPageClick(style) {
                this.handleButtonClick((done) => {
                    this.viewPageClick(style);
                    setTimeout(() => {
                        done(); // 重置状态
                    }, 1000);
                });
            },
            async viewPageClick(style) {
                if (this.param.ViewPage) {
                    if (this.param.ViewPage.View_UIDef) {
                        this.styledef = style;
@@ -1674,6 +1688,7 @@
            //点中表单
            onPanelClick(value) { //点击面板高亮显示
                // console.log(value);
                this.setData({
                    activeItem: this.detail1StyleDefList[value]
                })
pages/modal/3200_view.vue
@@ -385,7 +385,15 @@
                })
            },
            //处理相关按钮
            async onButtonClicked(btn) {
            onButtonClicked(btn) {
                this.handleButtonClick((done) => {
                    this.buttonClicked(btn);
                    setTimeout(() => {
                        done(); // 重置状态
                    }, 1000);
                });
            },
            async buttonClicked(btn) {
                var style = this.styleDef || '';
                try {
pages/modal/3202.vue
@@ -227,7 +227,7 @@
                        };
                        runCustomEvent(dataInfo).then(result => {
                            console.log(result);
                            if (result.ret != 0 && result.ret != 1) {
                                let cls_name = result.event_info?.cls_name
                                let event_name = result.event_info?.event_name
@@ -594,7 +594,15 @@
                this.initial()
            },
            //点击显示浏览对象显示页面
            async onViewPageClick(style) {
            onViewPageClick(style) {
                this.handleButtonClick((done) => {
                    this.viewPageClick(style);
                    setTimeout(() => {
                        done(); // 重置状态
                    }, 1000);
                });
            },
            async viewPageClick(style) {
                if (!this.clickItemEvent.id) {
                    return;
                }
@@ -639,7 +647,7 @@
                    data_json,
                }).then(result => {
                    // console.log(result);
                        hideLoading()
                    hideLoading()
                    if (result.ret != 0 && result.ret != 1) {
                        let cls_name = result.event_info?.cls_name
                        let event_name = result.event_info?.event_name
@@ -705,7 +713,7 @@
                }).catch(ex => {
                    // console.log(ex);
                        hideLoading()
                    hideLoading()
                    showError(ex, this.translateSys("error") + "8.1")
                });
            },
@@ -759,7 +767,7 @@
            //执行触发事件
            async triggerEvent(btn, style, enviroment) {
                const $this = this
showLoading("loading...")
                showLoading("loading...")
                var obj_attr = this.head_styledef.form.model;
                // console.log(obj_attr);
                var input_param = Base64.encode(
@@ -797,7 +805,7 @@
                    input_param,
                    data_json,
                }).then(result => {
                        hideLoading()
                    hideLoading()
                    // console.log(result);
                    if (result.ret != 0 && result.ret != 1) {
                        let cls_name = result.event_info?.cls_name
@@ -869,7 +877,7 @@
                }).catch(ex => {
                    // console.log(ex);
                        hideLoading()
                    hideLoading()
                    showError(ex, this.translateSys("error") + "8.1")
                });
            },
pages/modal/3202_view.vue
@@ -506,7 +506,6 @@
                })
            },
            onButtonClicked(btn) {
                let enviroment = {
                    button: "top",
                    button_name: btn.ShowName,
@@ -514,11 +513,16 @@
                    function: "3202",
                    master: {},
                };
                if (btn.FunCode == "TriggerEvent") {
                    this.onTriggerEvent(btn, enviroment);
                } else {
                    this.$Message.warning(this.$t("sys.unrealized"));
                }
                this.handleButtonClick((done) => {
                    if (btn.FunCode == "TriggerEvent") {
                        this.onTriggerEvent(btn, enviroment);
                    } else {
                        this.$Message.warning(this.$t("sys.unrealized"));
                    }
                    setTimeout(() => {
                        done(); // 重置状态
                    }, 1000);
                });
            },
            async onTriggerEvent(btn, enviroment) {
@@ -570,7 +574,7 @@
                    var $this = this;
                    if (!this.exit_view_event.id)
                        return
                        showLoading("loading...")
                    showLoading("loading...")
                    let data_json = [];
                    let jsonlist = [];
                    let detailStyleList = this.detail1StyleDefList;
@@ -1001,8 +1005,8 @@
        .v-scroll-view {
            flex: 1;
            overflow: hidden;
            width: 98%;
            overflow: auto;
        }
        .view-bottom {
pages/modal/5601.vue
@@ -58,7 +58,8 @@
                                        '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)}" @click="onBtnClick(btn, pageData)">
                                        'width-50':(pageData.Button.length == 2),'width-32':(pageData.Button.length == 3),
                                        'width-30':(pageData.DropDownButton.length> 0)}" @click="onBtnClick(btn, pageData)">
                                    <text v-if="btn.Style == 'img' || btn.Style == 'img_text'" class="img"></text>
                                    {{btn.ShowName ||""}}
                                </button>