简搭云科技有限公司 简搭云科技有限公司
首页 (opens new window)
  • 可视化表单
  • 流程平台
  • 可视化大屏
  • 在线DB接口
  • 可视化表单
  • 优秀大屏设计
  • 3D样例
  • 视屏教学
  • 可视化表单系统 (opens new window)
  • 可视化大屏系统 (opens new window)
  • 可视化表单系统
  • 可视化大屏
  • 联系我们
  • 可视化表单系统 (opens new window)
  • 可视化大屏系统 (opens new window)

长沙市简搭云科技有限公司

长沙市简搭云科技有限公司
首页 (opens new window)
  • 可视化表单
  • 流程平台
  • 可视化大屏
  • 在线DB接口
  • 可视化表单
  • 优秀大屏设计
  • 3D样例
  • 视屏教学
  • 可视化表单系统 (opens new window)
  • 可视化大屏系统 (opens new window)
  • 可视化表单系统
  • 可视化大屏
  • 联系我们
  • 可视化表单系统 (opens new window)
  • 可视化大屏系统 (opens new window)
  • 可视化表单

    • 查询列表功能开发
    • 动态数据绑定示例
    • 各种计算示例
    • 提交前验证某个字段数据库是否唯一
    • 弹出选择数据并带出其它字段
    • 明细列表合计示例
    • 自定义属性各种用法
    • 表单样式自定义
  • 流程平台

  • 在线Mybatis

  • 在线视屏教学

  • 系统教程
  • 可视化表单
简搭云软件
2021-09-20

各种计算示例

本文针对设计表单时,表单各种逻辑的运用。

【逻辑】逻辑配置的实现原理,逻辑配置参考了动态数据数据绑定的思路,用于给vue代码添加各种监视,一旦数据发生改变时就触发。 先来分析一下生成代码片段,有助于逻辑配置。

export default {
    data() {
        return {
            "formData": {
                "filed163972871994610": "",
                "filed163972849090881": "",
                "filed163972849298675": "",
                "filed163972849432194": [],
                "filed163972953438075": "",
                "filed163972953596687": "",
                "filed163972954173198": "",
                "$tableNewId": ""
            },
            "deviceMode": "Mobile",
            "rules": {
                "filed163972871994610": [],
                "filed163972849090881": [],
                "filed163972849298675": [],
                "filed163972849432194": [],
                "filed163972953438075": [],
                "filed163972953596687": [],
                "filed163972954173198": []
            },
            "controlData": {
                "filed163972849090881": [],
                "filed163972849298675": [],
                "filed163972849432194": []
            },
            "selectindex": -1,
            "isedit": false,
            "selectproperty": "",
            "watchdetailfiled": {},
            "readDataPermission": {},
            "writeDataPermission": {}
        }
    },
    methods: {
        ///【下拉列表】加载选项方法
        loadfiled163972849090881(datarow) {
            const param = {
                body: {
                    filed163436600263567: this.formData.filed163972871994610
                },
            };
            this.$apiComm("question1634365727000_71309.querylist", param).then(res => {
                if (res.code != 0) {
                    this.$message.error(res.msg);
                    return;
                }
                this.controlData.filed163972849090881 = res.data.list
            });
        },
        ///【单选项】加载选项方法
        loadfiled163972849298675(datarow) {
            const param = {
                body: {},
            };
            this.$apiComm("question1634365727000_71309.querylist", param).then(res => {
                if (res.code != 0) {
                    this.$message.error(res.msg);
                    return;
                }
                this.controlData.filed163972849298675 = res.data.list
            });
        },
        ///【多选项】加载选项方法
        loadfiled163972849432194(datarow) {
            const param = {
                body: {},
            };
            this.$apiComm("question1634365727000_71309.querylist", param).then(res => {
                if (res.code != 0) {
                    this.$message.error(res.msg);
                    return;
                }
                this.controlData.filed163972849432194 = res.data.list
            });
        },
        //查询关联控件[关联查询]查询数据方法 
        loadqueryrelevance_1639729548000_27779(datarow) {
            const param = {
                body: {
                    filed163436600263567: this.formData.filed163972953438075
                }
            };
            this.$apiComm("question1634365727000_71309.querylist", param).then(res => {
                if (res.code != 0) {
                    this.$message.error(res.msg);
                    return;
                }
                if (res.data.list.length > 0) {
                    this.assignqueryrelevance_1639729548000_27779(res.data.list[0], datarow)
                } else {
                    this.assignqueryrelevance_1639729548000_27779(undefined, datarow)
                }
            });
        },
        //查询关联控件[关联查询]查询数据后赋值方法 
        assignqueryrelevance_1639729548000_27779(data, datarow) {
            this.formData.filed163972953596687 = data === undefined ? undefined : data.filed16343669449864;
            this.formData.filed163972954173198 = data === undefined ? undefined : data.filed163436646771791;
        },
        //系统方法 通用提交保存方法 
        submitData() {
            // console.log(JSON.stringify(this.formData))
            // return
            this.$refs['elForm'].validate(valid => {
                if (!valid) return
                const param = {
                    body: {
                        ...this.formData,
                        $fromid: this.fromid
                    }
                };

                this.$apiComm("question1639727608000_62936.SaveDataInfo", param).then(res => {
                    if (res.code != 0) {
                        this.$message.error(res.msg);
                    }
                    if (typeof this.dialogclose == 'function') {
                        this.dialogclose(true)
                    }
                    this.$message.success("保存成功!")
                });
            })
        },
        //系统方法 通用添加明细行方法 
        addListViewRow(datalistname) {
            var newrowobj = {}
            this.controlData[datalistname].scopedSlots.forEach(ee => {
                newrowobj[ee] = "";
            })
            this.formData[datalistname].push(newrowobj);
        },
        //系统方法 通用删除明细方法 
        delListViewRow(datalistname, rows) {
            if (rows.fid != undefined && rows.fid != "") {
                this.formData["del" + datalistname].push(rows.fid);
            }
            this.formData[datalistname].splice(this.formData[datalistname].indexOf(rows), 1);

        },
        //系统方法 判断url是否传入ID,如果传入给各个控件赋值 
        getTableNewId() {

            const tablefid = this.$query("tablefid");
            let newbusinessid = this.businessid;
            if (tablefid != null && tablefid != '') {
                newbusinessid = tablefid;
            }
            if (newbusinessid != null && newbusinessid != undefined && newbusinessid.trim() != "" && newbusinessid.trim() != "0") {
                this.formData.$tableNewId = newbusinessid;
                const param = {
                    body: {
                        fid: newbusinessid
                    },
                };
                this.$apiComm("question1639727608000_62936.getDataInfo", param).then(res => {
                    if (res.code == 0) {
                        this.isedit = true
                        for (let key in this.formData) {
                            if (res.data[key] != undefined) {
                                if (typeof(res.data[key]) == "string" && ((res.data[key].indexOf("[") >= 0 && res.data[key].indexOf("]") >= 0) || (res.data[key].indexOf("{") >= 0 && res.data[key].indexOf("}") >= 0))) {
                                    try {
                                        this.formData[key] = JSON.parse(res.data[key])
                                    } catch {
                                        this.formData[key] = res.data[key];
                                    }
                                } else {
                                    this.formData[key] = res.data[key];
                                }
                            }

                        }
                    }
                })
            } else {

                this.$getNewId().then(res => {
                    if (res.code == 0) {

                        this.formData.$tableNewId = res.data
                    }
                })
            }
        },
        //系统方法返回
        goBack() {
            history.go(-1)
        },
        //系统方法页面加载方法 
        funmounted() {
            this.getTableNewId(); ///解决手机端 文本框输入时被键盘挡住问题 
            const clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
            window.onresize = function() {
                const nowClientHeight = document.documentElement.clientHeight || document.body.clientHeight;
                if (clientHeight - nowClientHeight > 60) { //因为ios有自带的底部高度
                    //键盘弹出的事件处理
                    if (document.getElementById("maincontent") != null) {
                        document.getElementById("maincontent").classList.add("focusState");
                    }
                } else {
                    //键盘收起的事件处理
                    if (document.getElementById("maincontent") != null) {
                        document.getElementById("maincontent").classList.remove("focusState");
                    }
                }
            };
            this.loadfiled163972849090881();
            this.loadfiled163972849298675();
            this.loadfiled163972849432194();
            this.loadqueryrelevance_1639729548000_27779();
        }
    },
    watch: {
        'formData.filed163972871994610'() {
            this.loadfiled163972849090881();
        },
        'formData.filed163972953438075'() {
            this.loadqueryrelevance_1639729548000_27779();
        }
    },
    props: ["businessid", "IsPower", "fromstatus", "fromid", "$user"],
    mounted() {
        this.funmounted();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227

data()=>formData 为组件绑定数据的对象

data()=>deviceMode那种设备类型访问模式,如PC,Ipad,手机

data()=>rules 为表单验证对象,如必填,正则表达式验证等等。

data()=>watchdetailfiled 流程表单对象 为控制是否显示

data()=>readDataPermission 流程表单对象 为控制是否只读

data()=>writeDataPermission 流程表单对象 为控制是否可编写

methods 的方法就是代码生成的逻辑方法。

【逻辑】的位置如下图:

avatar

点击新增: avatar

其中触发的字段:包含了data()=>formData 所有属性的设置,同时新增了数据加载之前事件,数据加载之后事件,提交前事件的设置。该监控模式可以实现大部分事件的处理工作。

如果遇到:A文本框的内容等于=B文本框+C文本框的内容 如何解决,这个时候需要用到该逻辑的处理了。如下图:

avatar

这只是其中的一个小小的例子,还可以扩展思维实现更多逻辑。

avatar

其中运算逻辑中的表达式是支持js代码的编写的,为什么采用这种模式进行配置逻辑,主要是1.为了照顾运维,不懂开发人员使用,2.formData的属性是随机生成的,不好理解,使用配置模式更容易理解逻辑。

#chrome#调试
上次更新: 2023/10/17, 17:43:39
动态数据绑定示例
提交前验证某个字段数据库是否唯一

← 动态数据绑定示例 提交前验证某个字段数据库是否唯一→

简搭云软件 | Copyright © 2021-2025 长沙市简搭云科技有限公司
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×