前期准备:
1另外新建一个合同底表,以字段精简为佳, 比如 "合同编号" ,"部门",2个字段就可以了
因此,有"合同表"和"合同底表"2个表来完成一些功能.
2创建用户信息视图
合同业务流程:
当在合同表中添加(更新,删除)新合同的时候,同步添加(更新,删除)合同底表.
区别就是合同表使用的是部门(a,b,c,d)这样的字符串值存储.
合同底表使用的是: 行1 部门a ,行2,部门b,行3,部门c,行4,部门d 这样的数据行.即此合同编号对应有4行数据.
数据逻辑:
新增:使用服务器端命令,做循环添加数据库,循环次数为部门数组.是数组,不是你那尴尬的用逗号拼接的字符串a,b,c,d.(此处需要使用插件转成数组,看知识点)
更新:当所属部门有变动时(a,c,d),服务器端命令,先将底表数据中该合同编号的数据全部删除,然后调用新增服务器端命令,重新添加..因为底表结构简单,数据量极少,因此一刀切,删除了,再添加.
员工操作流程前准备:
1增加隐藏表格2绑定合同底表,查询条件为"部门"字段 in 张三的(部门数组)(查看数组知识点),这样就能将对应的合同编号筛选出来,
2增加隐藏辅助单元格,名字叫,"筛选合同编号数组", 公式=textjoin(表格2的合同编号列名,....查看该公式的用法) 将1筛选出来的合同编号拼接成数组.(有逗号字符串不一定就是数组)
3增加隐藏辅助单元格,名字叫"允许显示的合同编号数组"(作用是用来判断张三的部门组的权限后,对应的允许查看或修改的合同编号)
4增加页面加载命令:
条件
if
张三的部门数组 包含 值(=部门a,该部门为事先约定拥有跨部门查看的权限组),设置单元格"允许显示的合同编号数组"值为空.
else
设置单元格"允许显示的合同编号数组"值为 "筛选合同编号数组"
end
5表格1绑定合同表,查询条件为合同编号 in "允许显示的合同编号数组"(若为空,则为所有合同,若有值则为部分合同)
6,增加隐藏辅助单元格,a2,名字叫"获取当前行索引"
7,增加隐藏辅助单元格,文本框,a3,=index(表1,a2,数一下表格1合同编号是第几列) ,若是能显示选中行对应的合同编号那么就是数对了.没有列名称的列不需要数.同时该文本框增加命令,条件,if a3的值 in "筛选合同编号数组" ,命令:设置单元格属性,"修改合同" 按钮(下文提到),启用(或者显示) else 命令:设置单元格属性,"修改合同" 按钮,禁用(或者不显示)
由于是编辑权和查看权都混在一起的.
因此,在顶部做一个 "修改合同"按钮, 不要在行明细里添加,因为行明细中的按钮能执行的功能极少. 而且这都是几年前的ui设计风格,现在都不流行了,都是走简约,清爽风.
至此,当员工张三进入合同列表菜单时,表格1会将编辑权和若有查看权的合同编号都列出来了.
当选中某个合同时,会校验他对应的权限(7里面的设置),"修改合同"按钮是否允许使用.
知识点需要准备:
1, 用户属于多个部门,要创建用户信息视图,你的domo里连这个视图都没创建.
2,搜索插件,"分割文本为数组",用来将用户信息视图中的部门,分割成数组,将合同表中的部门转成数组.
3,用逗号拼接的,叫字符串,不叫数组,是不能使用 in 或者 not in ,所以需要 2 插件. |