bip需求:费用申请单自定义字段根据供应商参照银行账户

谁想工作
·
·
IPFS
学习如何在费用申请单中设置自定义字段,依据供应商信息展示相关的银行账户。文章详细描述了修改过程,包括修改的路径和代码实现。通过对特定字段(如供应商ID和货币类型)的条件判断和设置,系统能够根据不同的收款对象(如供应商或客户)动态展示银行账户信息

需求:

对费用申请单的自定义字段设置成参照,根据供应商将银行账号展示出来;

修改过程:

修改路径:src\erm\erbudgetmg\erbudgetmg\card\requestApi.js

代码学习(边做边学)

原先逻辑解读:

1. if (item.attrcode == 'custaccount') {

这行代码是判断当前操作的项目是否为 “客商银行账号”。如果item.attrcode的值等于'custaccount',那么下面的逻辑才会执行。

2. let paytarget = ...;

获取paytarget值,这个值决定了收款对象的类型。paytarget可能有两种值:

○ "1":收款对象为供应商

○ "2":收款对象为客户

3. if (paytarget == "1") { ... } 和 else if (paytarget == "2") { ... }

根据paytarget的值,代码会分别处理:

○ 如果是供应商:设置accclass为"3",并且从表单或表格中获取hbbm(供应商的ID)。

○ 如果是客户:设置accclass为"2",并且从表单或表格中获取customer(客户的ID)。

4. let bzbm = ...;

获取bzbm,即货币类型。这个值来自于表单或表格。

5. 返回过滤条件

最终返回一个包含了pk_cust(客户或供应商的ID)、accclass(账户类别)、pk_currtype(货币类型)、以及一些额外参数的对象。

关键点

• props.form.getAllFormValue() 和 props.cardTable.getClickRowIndex():这些函数是从表单或表格中获取数据,props.form 和 props.cardTable 表示在前端框架中的数据状态,它们是用来访问表单和表格组件的。

• 条件判断:通过if-else语句来根据不同的paytarget值决定操作,涉及到了常见的条件判断和赋值操作。

• 返回过滤条件:最终返回的对象是用来作为过滤条件的,这常用于从后端请求数据时筛选数据。

修改代码解读:

修改代码:

1. if (item.attrcode == 'defitem44') {

这行判断代码是根据item对象的attrcode属性来决定是否执行后面的逻辑。如果item.attrcode的值是'defitem44',则会执行下面的item.queryCondition定义。

• defitem44是自定义项的标识符,表示这是一个在申请单中定义的特定字段。

2. item.queryCondition = function() {...}

这里是给item.queryCondition属性赋值一个函数。这个函数会在运行时被调用,用于构造一个查询条件对象。查询条件对象通常会作为过滤条件传递给后端,以便只获取符合条件的数据。

3. var pk_cust = ...

这一行代码用于定义一个变量pk_cust,它表示客户(或供应商)的ID。这个ID是根据当前操作模块来获取的:

• 如果当前模块是presetVar.head.head1,则从表单数据(props.form.getAllFormValue(presetVar.head.head1))中获取字段pk_supplier的值。

• props.form.getAllFormValue(presetVar.head.head1)返回的是表单中所有的数据,其中rows[0].values['pk_supplier']获取的是供应商ID(pk_supplier字段的值)。

• 如果不是该模块,则从卡片表格数据(props.cardTable.getClickRowIndex(moduleid).record.values['pk_supplier'])中获取供应商ID。

通过这段代码,pk_cust会获取供应商的ID(无论是通过表单还是通过卡片表格)。

4. var pk_currtype = ...

这一行代码与pk_cust类似,定义了一个变量pk_currtype,表示货币类型的ID。它的获取逻辑与pk_cust类似:

• 如果当前模块是presetVar.head.head1,则从表单中获取pk_currtype字段的值。

• 如果不是该模块,则从卡片表格数据中获取pk_currtype的值。

5. 返回查询条件对象

最终,queryCondition函数会返回一个包含以下属性的对象,作为查询条件:

• pk_cust: 供应商ID,通过上面的逻辑得到。

• accclass: '3': 账户类别,这里硬编码为'3',表示供应商。

• pk_currtype: 货币类型ID,通过上面的逻辑得到。

• TreeRefActionExt: '': 该字段为空,可能是为了满足某些接口要求,或者用于后端接口的扩展字段。

• DataPowerOperationCode: 'fi': 这个字段可能是用于标识数据操作类型的,'fi'可能表示财务相关操作。

• isDataPowerEnable: 'Y': 这个字段可能用于权限控制,标识是否启用数据权限。

(这两个字段看起来确实是 Cursor 自己增加的,用于满足后端扩展的需求和接口操作的标识,bip中并没有用到)

知识点:

1. props.form.getAllFormValue

是一个函数,用来行表格中 获取所有的表单数据;

2. props.form.getAllFormValue(presetVar.head.head1).rows[0].values['pk_supplier'].value

特定表单的第一行数据 rows[0] 中,获取 pk_supplier 字段 的 实际值(value)

3. var 关键字

var 是 JavaScript 中用来声明变量的关键字。它有以下特点:

·作用域:var 声明的变量是 函数作用域 的,意味着它的作用范围仅限于函数内部

4. return 语句

return 语句用于从一个函数中返回一个值。它可以是任何数据类型(字符串、数字、对象等)。

理解之后再次修改代码

课后问题

1. let 和 var 有什么区别?

2. moduleid == presetVar.head.head1 是什么意思?--判断


CC BY-NC-ND 4.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!