简道云表单功能详述

表单功能

表单功能:下拉框只出现与当前用户有关的选项

场景:需要在下拉框时只能选择与自己/当前用户/当前部门/有权限/的信息。
设计思路:
1、设计三张表单:
项目信息表:记录项目基础信息
项目权限辅助表:记录不同人身份权限,辅助功能实现
项目跟进表:最终呈现表单,即选择项目时只能选择与自己相关的项目
2、项目信息表内增加成员/部门字段,记录项目组成员
3、项目权限辅助表中,利用智能助手,将项目信息表中带成员信息的多条子数据一次新增到该辅助表单
4、项目跟进表中,根据当前用户联动项目名称
智能助手设置

在这里插入图片描述
数据联动(下拉框设置)
在这里插入图片描述
实现效果:
在这里插入图片描述

表单功能:下拉框只出现与当前用户有关的选项

子表单功能

子表单功能:汇总

场景:在子表单A中录入相关信息,将类型/名称一致的数据数量求和,汇总至子表单B中
设计思路:
1、在子表单的每一行中设计不可见的字段:类型+产品
应用公式:CONCATENATE(子表单A名称.类型,"+",子表单A名称.产品)
表示将每行子表单的类型、产品和字符串“+”通过 CONCATENATE 函数连接起来。为以后的去重做准备
2、在主表单设置不可见的计算字段:类型+产品去重
应用公式:UNION(采购需求录入.类型+产品)
表示对子表单A中的类型+产品进行去重,只保留不重复的类型+产品
3、在主表单设置不可见的计算字段(类型:数字):行数
应用公式:COUNT(UNION(子表单A名称.类型+产品))
表示计算去重后的类型+产品的数量,用于作为子表单B的行数
4、在主表单设置不可见的计算字段:类型+产品+数量汇总
应用公式:CONCATENATE(子表单A名称.类型+产品+数量)
表示将子表单A中的所有类型、产品、数量通过 CONCATENATE 函数连接起来
5、新建子表单B作为汇总表,拖入数字字段序号、单行文本类型、单行文本产品、数字字段数量
注意:此处需要联动简道云子表单基础表(子表单辅助建设表,设置数据联动条件为总行数=行数,B子表单字段显示子表单辅助建设表字段的值,添加序号字段显示为序号字段)
与辅助建设表联动的原因是为了做到每汇总一行新数据,则序号自动向下编写一位
汇总类型的公式为:
SPLIT(TEXT(SPLIT(类型+产品去重,",")[子表单B名称.序号-1]),"+")[0]
意为:先通过逗号分割去重后的类型+产品,根据子表单序号取出对应行数的类型+产品,再通过”+“分割出类型和产品,取其中的第一个即为采购类型
产品汇总的公式为:
SPLIT(TEXT(SPLIT(类型+产品去重,",")[子表单B名称.序号-1]),"+")[1]
同上,其中的第二个为产品名称
数量汇总的公式为:
SUM(SPLIT(CONCATENATE(SPLIT(类型+产品+数量汇总,CONCATENATE(子表单B名称.类型,"+",子表单B名称.产品,"+"))), "-"))
意为:通过该行子表单的类型、产品和“+”字符将「类型+产品+数量汇总」进行分割,再通过“-”字符将对应产品的数量提取出来,最后通过 SUM 函数相加即为对应的采购数量

注:以上所有设置不可见的字段需在表单属性初,将不可见字段赋值规则为:始终重新计算

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JS三级联动表单 <!-- var arrText = new Array(5); var arrValue = new Array(arrText.length); function objSetOption(select1, select2, select3) { this.select1 = select1; this.select2 = select2; this.select3 = select3; } arrText[0]= new objSetOption("选择1:", "选择2_1:,选择2_2:", "选择3_1:,选择3_2:"); arrText[1] = new objSetOption("论文:1", "语文:1,数学:2,英语:3", "初中:2,高中:3"); arrText[2] = new objSetOption("例题:2", "显示b2_1:值b2_1,显示b2_2:值b2_2", "显示b3_1:值b3_1,显示b3_2:值b3_2"); arrText[3] = new objSetOption("显示c:值c", "显示c2_1:值c2_1,显示c2_2:值c2_2", "显示c3_1:值c3_1,显示c3_2:值c3_2"); arrText[4] = new objSetOption("显示d:值d", "显示d2_1:值d2_1,显示d2_2:值d2_2", "显示d3_1:值d3_1,显示d3_2:值d3_2"); arrText[5] = new objSetOption("显示e:值e", "显示e2_1:值e2_1,显示e2_2:值e2_2", "显示e3_1:值e3_1,显示e3_2:值e3_2"); function select() { var eltSelect1 = document.test.select1; var eltSelect2 = document.test.select2; var eltSelect3 = document.test.select3; var arrSelect1, arrSelect2, arrSelect3; var arrData1, arrData2, arrData3; with(eltSelect1) { var strSelect = options[selectedIndex].value; } for(i = 0;i < arrText.length;i ++) { arrSelect1 = arrText[i].select1; arrData1 = arrSelect1.split(":"); if (arrData1[1] == strSelect) { arrSelect2 = (arrText[i].select2).split(","); for(j = 0;j < arrSelect2.length;j++) { arrData2 = arrSelect2[j].split(":"); with(eltSelect2) { length = arrSelect2.length; options[j].text = arrData2[0]; options[j].value = arrData2[1]; } } arrSelect3 = (arrText[i].select3).split(","); for(j = 0;j < arrSelect3.length;j++) { arrData3 = arrSelect3[j].split(":"); with(eltSelect3) { length = arrSelect3.length; options[j].text = arrData3[0]; options[j].val
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值