供应商注册页面二开相关问题汇总原创
金蝶云社区-今夜打老虎
今夜打老虎
8人赞赏了该文章 1,624次浏览 未经作者许可,禁止转载编辑于2021年12月02日 16:22:54
summary-icon摘要由AI智能服务提供

本文讨论了在BOS设计器中修改供应商注册页面的问题,包括为何修改不生效、如何添加必录项、如何按组织过滤基础资料、新增字段和多选基础资料的具体操作方法。对于修改,因注册页面为独立H5页面,需直接编辑HTML文件及反编译服务端组件;对于新增字段和多选资料,则涉及前端控件添加、服务端字段解析及路由配置修改等步骤。

Q:为什么在BOS设计器中的【供应商注册资料】增加控件,供应商注册页面不生效?

A:供应商注册资料为独立的H5页面,不是系统中自动生成的通用基础资料,该功能适用于第一次注册供应商时之用。


Q:如果想修改这个页面,加一些必录项该如何操作?

A:客户需要具备二开能力,可以去服务器Kingdee-->WebSite-->Html5目录下拿到SupReg.html这个文件,在必录项前加上<span class="span_spec">* </span>,并在checkBeforeSave()加上对应字段的校验操作


Q:供应商注册上的基础资料希望可以按组织过滤,应该如何实现?

A:需要反编译服务端组件:Kingdee.K3.SCM.SCP.Business.PlugIn.dll的ScpSupRegHandler类,在查询基础资料时在FilterString中加上对应的条件即可


Q:想要在供应商注册页面新增字段,应该如何操作?

A:首先客户需要具备二开的能力,总体分为三个步骤:

1.去服务器Kingdee-->WebSite-->Html5目录下拿到SupReg.html这个文件,并增加对应前端控件(目前仅支持文本、单选、多选控件)

2.反编译服务端组件:Kingdee.K3.SCM.SCP.Business.PlugIn.dll的ScpSupRegHandler类,在通版基础上,自己去解析前端新增的字段

3.找到App_Data中的Common.config文件并修改路由配置(通版配置为:<add path="SRM/ScpSupRegHandler" verb="*" type="Kingdee.K3.SCM.SCP.Business.PlugIn.ScpSupRegHandler,Kingdee.K3.SCM.SCP.Business.PlugIn" />,二开需要改为自己的)


Q:想要在供应商注册页面增加多选基础资料,如何实现?

A:由于供应商注册资料为独立的H5页面,目前暂不能支持BOS设计器中所有的控件,仅支持文本框、复选框、单选下拉框和多选下拉框,多选下拉框的样式在通版中已经提供,新增时可以参考:

<div class="info_div"><span class="span_nomal">多选结算方式</span></div><select id="FMulSettleTypeId" autocomplete="off" multiple="multiple"></select>


多选下拉框一共有3处地方需要处理:1.初始化 2.查询供应商 3.保存供应商

1.在初始化时要加上:

$(function(){

    $('#FMulSettleTypeId').multipleSelect({

            placeholder: "请选择",

            selectAllText: "全选",

            allSelected: "选择全部"

    });

});


2.查询供应商(QuerySupReg)

let sceneIdList = resultData.FMulSettleTypeId;

let sceneIdArr = sceneIdList.split(",");

$('#FMulSettleTypeId option').each(function (i, content) {

        if ($.inArray($.trim(content.value), sceneIdArr) >= 0) {

                this.selected = true;

        }

});

//加载保存过后的多选值后,要调用刷新

$("#FMulSettleTypeId").multipleSelect('refresh');


3.保存供应商(如后端需要逗号分隔的字符串可以参考如下示例)

// 获取select元素的options属性

const options = $('#FMulSettleTypeId')[0].options               

const selectedValueArr = []              

for (let i = 0; i < options.length; i++) {

        // 如果该option被选中,则将它的value存入数组

        if (options[i].selected) {

                selectedValueArr.push(options[i].value)

        }

}

// 如果后端需要字符串形式,比如逗号分隔

const selectedValueStr = selectedValueArr.join(',')


具体可以参考:https://vip.kingdee.com/article/253915978210245888?fromAction=POST_ARTICLE 的介绍


图标赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0