cuiqian2004
9 天以前 90e4076a8adf5dac4384f10d9ce22398580eaf34
5601列表页面中的内容变化处理,自定义表单的set_dlg_attr_show
8个文件已修改
508 ■■■■ 已修改文件
App.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/oi-form/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libs/mobox.api.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3018_2.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/3037_2.vue 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/5601.vue 330 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/modal/form/index.vue 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
App.vue
@@ -4,7 +4,7 @@
        showToast,
    } from "@/js/Page.js"
    const rfidModule = uni.requireNativePlugin('RFIDModule');
    var main
    var main;
    export default {
        globalData: {
            largeMode: false,
components/oi-form/index.vue
@@ -53,6 +53,7 @@
        },
        methods: {
            setFormItemVisible(attrs) {
                console.log(attrs)
                attrs.forEach((attr) => {
                    let index = this.hiddenIds.findIndex((id) => id == attr.attr);
                    if (attr.show) {
@@ -61,6 +62,7 @@
                        if (index == -1) this.hiddenIds.push(attr.attr);
                    }
                });
                console.log(this.hiddenIds)
            },
            clearFormValues() {
                if (!this.form.model) return;
libs/mobox.api.js
@@ -12,7 +12,6 @@
        options.method = options.method || this.common.method;
        options.dataType = options.dataType || this.common.dataType;
        return new Promise((resolve, reject) => {
            console.log("request:", options);
            const app = getApp()
            let url = options.url
            let sessionID = app.globalData.sessionId || ""
manifest.json
@@ -2,8 +2,8 @@
    "name" : "MoboxPDA",
    "appid" : "__UNI__56D451E",
    "description" : "",
    "versionName" : "1.1.61",
    "versionCode" : 1161,
    "versionName" : "1.1.62",
    "versionCode" : 1162,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
pages/modal/3018_2.vue
@@ -2,7 +2,7 @@
    <view class="uni-page-modal-3018-2" :class="largeMode?'large-mode':''">
        <view class="view-content">
            <!-- 表头样式 -->
            <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :focusId="focusFieldId"
            <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] " :focusId="focusFieldId"
                @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton"
                @on-click-suffix="classAttr_extButton"></OIForm>
@@ -1568,28 +1568,28 @@
                }
            },
            hideFormItems(data) {
                const $this = this
            hideFormItems(attrs) {
                if (!Array.isArray(attrs)) {
                    return
                }
                const head_styledef = this.head_styledef
                data.forEach(async (attr, key) => {
                    head_styledef.form.items.forEach(async (ele, index) => {
                        //判断是否是栅格表单
                        if (ele.name != 'Layout') {
                            if (ele.fieldId == attr.attr) {
                                ele.show = attr.show;
                if (!head_styledef.hiddenIds) {
                    head_styledef.hiddenIds = []
                            }
                        } else if (ele.name == 'Layout') {
                            ele.setting.colList.forEach((col) => {
                                if (col) {
                                    if (col.fieldId == attr.attr) {
                                        col.show = attr.show;
                                    }
                attrs.forEach((attr) => {
                    let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr);
                    if (attr.show) {
                        if (index > -1) head_styledef.hiddenIds.splice(index, 1);
                    } else {
                        if (index == -1) head_styledef.hiddenIds.push(attr.attr);
                                }
                            });
                        }
                    });
                });
                this.setData({
                    head_styledef: head_styledef
                })
            },
            afterOK() {
                this.saving = true
                const $this = this
pages/modal/3037_2.vue
@@ -1,7 +1,7 @@
<template>
    <view class="uni-page-modal-3017-2" :class="largeMode?'large-mode':''">
        <!-- 表头样式 -->
        <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @on-focus="ontap"
        <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] " @on-focus="ontap"
            @on-change="onEnterChange" @on-click-prefix="classAttr_extButton" @on-click-suffix="classAttr_extButton">
        </OIForm>
        <!-- 从数据 -->
@@ -557,6 +557,10 @@
                                    }
                                } else if (data.action[i].action_type == 'set_dlg_attr_show') {
                                    var result = action.value;
                                    if (type == 'head') {
                                        $this.setFormItemVisible(result)
                                        // console.log($this.head_styledef);
                                    } else {
                                    result.forEach(async (attr, key) => {
                                        styledef.form.items.forEach(async (ele, index) => {
                                            //判断是否是栅格表单
@@ -579,11 +583,8 @@
                                        });
                                    });
                                    var style_def = JSON.parse(JSON.stringify(styledef));
                                    if (type == 'head') {
                                        $this.head_styledef = [];
                                        $this.head_styledef = style_def;
                                        // console.log($this.head_styledef);
                                    } else {
                                        $this.detail1_styledef = [];
                                        $this.detail1_styledef = style_def;
                                        // console.log($this.detail1_styledef);
@@ -1612,31 +1613,8 @@
                                    }
                                } else if (action.action_type == 'set_dlg_attr_show') {
                                    var result = action.value;
                                    result.forEach(async (attr, key) => {
                                        $this.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.head_styledef));
                                    $this.head_styledef = [];
                                    $this.head_styledef = head_styledef;
                                    var data = action.value;
                                    $this.setFormItemVisible(data)
                                    // console.log($this.head_styledef);
                                } else if (action.action_type == 'set_global_attr') {
                                    $this.global_attr = action.value || [];
@@ -1703,6 +1681,27 @@
                    });
                });
            },
            setFormItemVisible(attrs) {
                if (!Array.isArray(attrs)) {
                    return
                }
                const head_styledef = this.head_styledef
                if (!head_styledef.hiddenIds) {
                    head_styledef.hiddenIds = []
                }
                attrs.forEach((attr) => {
                    let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr);
                    if (attr.show) {
                        if (index > -1) head_styledef.hiddenIds.splice(index, 1);
                    } else {
                        if (index == -1) head_styledef.hiddenIds.push(attr.attr);
                    }
                });
                this.setData({
                    head_styledef: head_styledef
                })
            },
            scan_DataObjRunCustomEvent(info, data_attr) {
                var $this = this;
                var obj_attr = {};
pages/modal/5601.vue
@@ -1,7 +1,7 @@
<template>
    <view class="uni-page-modal-5601" :class="largeMode?'large-mode':''">
        <!-- 表头样式 -->
        <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :focusId="focusFieldId"
        <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] "  :focusId="focusFieldId"
            @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton"
            @on-click-suffix="classAttr_extButton"></OIForm>
@@ -27,7 +27,10 @@
                                        @tap="onPanelClick(ii,style.form.htmlobjId)"
                                        :id="'dvpanel'+style.form.htmlobjId"
                                        :class="style.form.htmlobjId==active_id?'bk-active':''">
                                        <OIForm class="dv-panel-form" :form="style.form" viewMode></OIForm>
                                        <OIForm class="dv-panel-form" :form="style.form"
                                            :hiddenIds="style.hiddenIds ?style.hiddenIds :[] " viewMode @on-change="(item2)=>{
                                                onDetailEnterChange(item2,style,pageIndex)
                                            }"></OIForm>
                                        <div class="dv-panel-button"
                                            v-if="pageData.Select_Button==true || pageData.Row_Button.length > 0">
@@ -755,6 +758,7 @@
                }
            },
            classAttr_extButton(item) {
                var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件
                var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调
@@ -784,7 +788,155 @@
                this.dataObjRunCustomEvent_Return(onSuffixClickEvent.id, '', onSuffixClickCallbackEvent.id,
                    item);
            },
            onDetailEnterChange(item, style, pageIndex) {
                let newVal = item.value
                if (typeof item.value == "string") {
                    newVal = item.value.trim()
                    if (!newVal) {
                        item.oldvalue = newVal;
                        var attr = item.fieldId;
                        style.form.model[attr] = newVal;
                        return
                    }
                }
                if (item.oldvalue != newVal) {
                    item.oldvalue = newVal;
                    var attr = item.fieldId;
                    style.form.model[attr] = newVal;
                    var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                    if (onChangeEvent?.id) { //内容变化后事件
                        this.runDetailChangeEvent(onChangeEvent, style, pageIndex)
                    }
                }
            },
            async runDetailChangeEvent(event, style, pageIndex) {
                try {
                    const detail_attr = {}
                    style.form.items.forEach(item2 => {
                        if (item2.name == "Layout") { //判断是否是栅栏格式
                            item2.setting.colList.forEach(col => {
                                if (col != null) detail_attr[col
                                    .fieldId] = col.value;
                            });
                        } else
                            detail_attr[item2.fieldId] = item2.value;
                    });
                    var obj_attr = detail_attr
                    var input_param = Base64.encode(
                        JSON.stringify(
                            Object.keys(detail_attr).map((a) => ({
                                attr: a,
                                value: detail_attr[a] || "",
                            }))
                        )
                    );
                    var dataInfo = {
                        ed_type: 0,
                        start_transaction: true,
                        class_id: style.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: '',
                        compose_info: '',
                        ext_info: '',
                        global_attr: '',
                        input_param: input_param,
                    };
                    const result = await runCustomEvent(dataInfo)
                    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(
                                    'close')
                            });
                        } else uni.showModal({
                            title: this.translateSys('tip'),
                            content: tip + ',' + this
                                .translateSys('tip') + ':' +
                                result
                                .ret,
                            showCancel: false,
                            confirmText: this.translateSys(
                                'close')
                        });
                        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('close')
                        });
                        if (result.result_type == 0 && result.action) {
                            result.action.forEach(item => {
                                if (item.action_type == "set_dlg_attr") {
                                    // value = {"attr":"xxx", "value":"xxx"}
                                    var data = item.value;
                                    this.setDetailFormValues(data, style, pageIndex)
                                } else if (item.action_type == 'set_dlg_attr_show') {
                                    var data = item.value;
                                    this.setDetailFormItemVisible(data, style, pageIndex)
                                }
                            });
                        } else {
                            if (result.info) {
                                uni.showModal({
                                    title: this.translateSys(
                                        "error") + "6.3",
                                    content: result.info,
                                    showCancel: false,
                                    confirmText: this
                                        .translateSys('close')
                                });
                            }
                        }
                    }
                } catch (ex) {
                    console.log(ex)
                    var tip = typeof ex == "string" ? ex : ex.message;
                    uni.showModal({
                        title: this.translateSys("error") + "6.1",
                        content: this.translate(
                                'execute_after_change_event_failed') + this
                            .translateSys(
                                "comma") +
                            this.translate('reason') + this.translateSys("colon") +
                            tip,
                        showCancel: false,
                        confirmText: this.translateSys('close')
                    });
                }
            },
            getDetailAttrList(pageData) {
                const detailAttrList = [];
                console.log(pageData)
@@ -1057,6 +1209,10 @@
                                        // value = {"attr":"xxx", "value":"xxx"}
                                        var data = item.value;
                                        $this.setFormValues(data)
                                    }
                                    else if (item.action_type == 'set_dlg_attr_show') {
                                        var data = item.value;
                                        $this.setFormItemVisible(data)
                                    }
                                });
                            } else {
@@ -1513,10 +1669,31 @@
                $this.$set(this.pageDetail, pageIndex, pageData)
            },
            setFormItemVisible(attrs) {
                if (!Array.isArray(attrs)) {
                    return
                }
                const head_styledef = this.head_styledef
                if (!head_styledef.hiddenIds) {
                    head_styledef.hiddenIds = []
                }
                attrs.forEach((attr) => {
                    let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr);
                    if (attr.show) {
                        if (index > -1) head_styledef.hiddenIds.splice(index, 1);
                    } else {
                        if (index == -1) head_styledef.hiddenIds.push(attr.attr);
                    }
                });
                this.setData({
                    head_styledef: head_styledef
                })
            },
            setFormValues(attrs) {
                const head_styledef = this.head_styledef
                if (JSON.stringify(attrs) == '{}') {
                    return;
                if (!Array.isArray(attrs)) {
                    return
                }
                console.log(attrs)
                attrs.forEach(async (attr, key) => {
@@ -1595,13 +1772,113 @@
                    head_styledef: head_styledef
                })
            },
            setDetailFormItemVisible(attrs, style, pageIndex) {
                if (pageIndex < 0)
                    return
                if (!Array.isArray(attrs)) {
                    return
                }
                const pageData = this.pageDetail[pageIndex]
                if (!style.hiddenIds) {
                    style.hiddenIds = []
                }
                attrs.forEach((attr) => {
                    let index = style.hiddenIds.findIndex((id) => id == attr.attr);
                    if (attr.show) {
                        if (index > -1) style.hiddenIds.splice(index, 1);
                    } else {
                        if (index == -1) style.hiddenIds.push(attr.attr);
                    }
                });
                this.$set(this.pageDetail, pageIndex, pageData)
            },
            setDetailFormValues(attrs, style, pageIndex) {
                if (pageIndex < 0)
                    return
                if (!Array.isArray(attrs)) {
                    return
                }
                const pageData = this.pageDetail[pageIndex]
                attrs.forEach(async (attr, key) => {
                    if (attr.choice_list) {
                        var dictItemList = [];
                        attr.choice_list.forEach(async (val, index) => {
                            dictItemList.push({
                                text: val,
                                value: val
                            });
                        });
                        style.form.items.forEach(async (attr_item, index) => {
                            if (attr_item.name != "Layout") {
                                if (attr_item.fieldId == attr.attr) {
                                    if (attr_item.useDict) {
                                        attr_item.dict = dictItemList;
                                    } else {
                                        attr_item.selections = dictItemList;
                                    }
                                }
                            } else if (attr_item.name == "Layout") {
                                attr_item.setting.colList.forEach((col) => {
                                    if (col) {
                                        if (col.fieldId == attr.attr) {
                                            if (col.useDict) {
                                                col.dict = dictItemList;
                                            } else {
                                                col.selections = dictItemList;
                                            }
                                        }
                                    }
                                });
                            }
                        });
                    }
                    if (!style.form.model[attr.attr]) {
                        style.form.model[attr.attr] = attr.value;
                    }
                    style.form.items.forEach(async (ele) => {
                        if (ele.name != "Layout") {
                            if (ele.fieldId == attr.attr) {
                                ele.value = attr.value;
                                ele.oldvalue = attr.value;
                                if (ele.name == "Input") {
                                    if (attr.prompt) ele.placeholder = attr.prompt;
                                }
                                if (attr.enable !== undefined) {
                                    if (attr.enable) ele.disabled = false;
                                    else ele.disabled = true;
                                }
                            }
                        } else if (ele.name == "Layout") {
                            ele.setting.colList.forEach((col) => {
                                if (col) {
                                    if (col.fieldId == attr.attr) {
                                        col.value = attr.value;
                                        col.oldvalue = attr.value;
                                        if (col.name == "Input") {
                                            if (attr.prompt) col.placeholder = attr.prompt;
                                        }
                                        if (attr.enable !== undefined) {
                                            if (attr.enable) col.disabled = false;
                                            else col.disabled = true;
                                        }
                                    }
                                }
                            });
                        }
                    })
                    //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据
                })
                this.$set(this.pageDetail, pageIndex, pageData)
            },
            onClickItem(e) { //选择页签
                // console.log(e);
                this.current = e.currentIndex
            },
            onDetail1EnterChange(item) { //码盘中样式回车事件
                console.log(item);
            },
            async del(pageData, style, event) {
                //获取表头属性
                var head_attr = {};
@@ -1870,39 +2147,8 @@
                                    $this.setFormValues(result)
                                } else if (action.action_type == 'set_dlg_attr_show') {
                                    var result = action.value;
                                    result.forEach(async (attr, key) => {
                                        $this.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.head_styledef = [];
                                    $this.head_styledef = head_styledef;
                                    $this.setFormItemVisible(result)
                                    // console.log($this.head_styledef);
                                } else if (action.action_type == 'set_global_attr') {
                                    $this.global_attr = action.value || [];
@@ -2846,6 +3092,10 @@
                                        var data = item.value;
                                        $this.setFormValues(data)
                                    }
                                    else if (item.action_type == 'set_dlg_attr_show') {
                                        var data = item.value;
                                        $this.setFormItemVisible(data)
                                    }
                                });
                            } else {
pages/modal/form/index.vue
@@ -2,7 +2,7 @@
    <view class="uni-page-modal-form" :class="largeMode?'large-mode':''">
        <view class="view-content">
            <!-- 表头样式 -->
            <OIForm ref="refBaseForm" class="v-head-style" :form="head_styledef.form" :focusId="focusFieldId"
            <OIForm ref="refBaseForm" class="v-head-style" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] " :focusId="focusFieldId"
                @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton"
                @on-click-suffix="classAttr_extButton"></OIForm>
        </view>
@@ -509,6 +509,10 @@
                                        // value = {"attr":"xxx", "value":"xxx"}
                                        var data = item.value;
                                        $this.setFormValues(data)
                                    } else if (action.action_type == 'set_dlg_attr_show') {
                                        var data = action.value;
                                        $this.setFormItemVisible(data)
                                    }
                                });
                            } else {
@@ -815,6 +819,11 @@
                                            var data = item.value;
                                            $this.setFormValues(data)
                                        }
                                        else if (action.action_type == 'set_dlg_attr_show') {
                                            var data = action.value;
                                            $this.setFormItemVisible(data)
                                        }
                                    });
                                } else {
@@ -924,6 +933,28 @@
                    head_styledef: head_styledef
                })
            },
            setFormItemVisible(attrs) {
                if (!Array.isArray(attrs)) {
                    return
                }
                const head_styledef = this.head_styledef
                if (!head_styledef.hiddenIds) {
                    head_styledef.hiddenIds = []
                }
                attrs.forEach((attr) => {
                    let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr);
                    if (attr.show) {
                        if (index > -1) head_styledef.hiddenIds.splice(index, 1);
                    } else {
                        if (index == -1) head_styledef.hiddenIds.push(attr.attr);
                    }
                });
                this.setData({
                    head_styledef: head_styledef
                })
            },
            popupChange(e) {
                console.log('当前模式:' + e.type + ',状态:' + e.show);
            },
@@ -1106,43 +1137,8 @@
                                    $this.setFormValues(result)
                                } else if (action.action_type == 'set_dlg_attr_show') {
                                    var result = action.value;
                                    result.forEach(async (attr, key) => {
                                        $this.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.head_styledef = [];
                                    $this.head_styledef = head_styledef;
                                    // console.log($this.head_styledef);
                                    $this.setFormItemVisible(result)
                                } else if (action.action_type == 'set_global_attr') {
                                    $this.global_attr = action.value || [];
                                } else {