<script src="/cloudstore/release/caa2c848ca50448b882137cb82ffb9a5/index.js"></script>


const ecodeSDK = {}
ecodeSDK.setCom = (id, name, Com) => {
}
ecodeSDK.imp = (obj) => {
}
ecodeSDK.exp = (obj) => {
}
const WfForm = {
    isMobile: () => {
        //  true表示是eMobile、微信、钉钉等移动终端,false代表PC端
    },
    /**
     * 4.6 函数式自定义渲染表单字段
     * 最低版本要求:KB900190701
     *
     * 以函数返回值方式自定义渲染表单字段,支持全部的字段类型,可实现基于原组件追加/复写/重新布局等等
     *
     * 建议结合ecode工具,放到模块加载前调用,使用JSX,可实现与表单字段渲染有关的二次开发
     *
     * 此接口的优先级高于4.4、4.5,即使用此接口代理的字段,如再使用4.4、4.5会直接无效
     *
     * proxyFieldContentComp: function(fieldid,fn)
     * @param convertFieldNameToId
     * @param customerRender
     */
    proxyFieldContentComp(convertFieldNameToId, customerRender = (info, compFn) => {
                              // console.log("字段id:",info.fieldid);
                              // console.log("明细行号:",info.rowIndex);
                              // console.log("字段只读必填属性:",info.viewAttr);
                              // console.log("字段值:",info.fieldValue);
                              // //返回自定义渲染的组件
                              // return React.createElement("div", {}, ["想怎么玩就怎么玩"]);
                              // //返回原组件
                              // return compFn();
                              // //返回基于原组件的复写组件
                              // return React.createElement("div", {}, ["前置组件",compFn(),"后置组件"]);
                          }
    ) {
    },
    /**
     * //如果此接口调用在代码块、custompage等(非模块加载前调用),需强制渲染字段一次
     * WfForm.forceRenderField("field111");
     * @param field
     */
    forceRenderField(field) {

    },
    // 说明:手动触发一次字段涉及的所有联动,包括字段联动、SQL联动、日期时间计算、字段赋值、公式、行列规则、显示属性联动、选择框联动、bindPropertyChange事件绑定等
    //
    // 场景:触发出的子流程打开默认不执行字段联动、归档节点查看表单不执行联动,可通过此接口实现
    //
    // triggerFieldAllLinkage:function(fieldMark)
    triggerFieldAllLinkage(s) {
//表单打开强制执行某字段的联动
//         jQuery(document).ready(function(){
//             WfForm.triggerFieldAllLinkage("field110");  //执行字段涉及的所有联动
//         });
    },
    // 5.2 删除明细表指定行/全部行
    // delDetailRow: function(detailMark, rowIndexMark)
    //
    // 说明:此方法会清空明细已选情况,删除时没有提示”是否删除”的确认框
    //
    // 参数说明
    //
    // 参数	参数类型	必须	说明
    // detailMark	String	是	明细表标示,明细1就是detail_1,以此递增类推
    // rowIndexMark	String	是	需要删除的行标示,删除全部行:all,删除部分行:”1,2,3”
    delDetailRow(tableName, all) {
        WfForm.delDetailRow("detail_1", "all");     //删除明细1所有行
        WfForm.delDetailRow("detail_1", "3,6");     //删除明细1行标为3,6的行

    }
}
WfForm.OPER_SAVE = '保存'
WfForm.OPER_SUBMIT = '提交/批准/提交需反馈/不需反馈等'
WfForm.OPER_SUBMITCONFIRM = '提交至确认页面,如果是确认界面,点确认触发的是SUBMIT'
WfForm.OPER_REJECT = '退回'
WfForm.OPER_REMARK = '批注提交'
WfForm.OPER_INTERVENE = '干预'
WfForm.OPER_FORWARD = '转发'
WfForm.OPER_TAKEBACK = '强制收回'
WfForm.OPER_DELETE = '删除'
WfForm.OPER_ADDROW = '添加明细行,需拼明细表序号'
WfForm.OPER_DELROW = '删除明细行,需拼明细表序号'
WfForm.OPER_PRINTPREVIEW = '打印预览	KB900190501'
WfForm.OPER_EDITDETAILROW = '移动端-编辑明细	KB900191101'
WfForm.OPER_BEFOREVERIFY = '校验必填前触发事件	KB900191201'
WfForm.OPER_TURNHANDLE = '转办	KB900201101'
WfForm.OPER_ASKOPINION = '意见征询	KB900201101'
WfForm.OPER_TAKFROWARD = '征询转办	KB900201101'
WfForm.OPER_TURNREAD = '传阅	KB900201101'
WfForm.OPER_FORCEOVER = '强制归档	KB900201101'
WfForm.OPER_BEFORECLICKBTN = '点右键按钮前	KB900201101'
WfForm.OPER_SAVECOMPLETE = '保存后页面跳转前	KB900210501'
WfForm.OPER_WITHDRAW = '撤回	KB900201101'
WfForm.OPER_CLOSE = '页面关闭'

/**
 * 注册流程事件
 * @param type
 * @param callback
 */
WfForm.registerCheckEvent = (type, callback = (callback) = {}) => {
    // WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){
    //     //... 执行自定义逻辑
    //     callback();
    // });
}

WfForm.ACTION_ADDROW = '添加明细行,需拼明细表序号	KB900190407'
WfForm.ACTION_DELROW = '删除明细行,需拼明细表序号	KB900190407'
WfForm.ACTION_EDITDETAILROW = '移动端-编辑明细行,需拼明细表序号	KB900190501'
WfForm.ACTION_SWITCHDETAILPAGING = '切换明细分页	KB900191201'
WfForm.ACTION_SWITCHTABLAYOUT = '切换模板布局标签页	KB900191201'

WfForm.registerAction = (type, callback) => {
    // WfForm.registerAction(WfForm.ACTION_ADDROW+"1", function(index){
    //     alert("添加行下标是"+index);
    // });     //下标从1开始,明细1添加行触发事件,注册函数入参为新添加行下标
    // WfForm.registerAction(WfForm.ACTION_DELROW+"2", function(arg){
    //     alert("删除行下标集合是"+arg.join(","));
    // });     //下标从1开始,明细2删除行触发事件
    // WfForm.registerAction(WfForm.ACTION_SWITCHDETAILPAGING, function(groupid){
    //     alert("切换明细表"+(groupid+1)+"的页码触发事件");
    // });
    // WfForm.registerAction(WfForm.ACTION_SWITCHTABLAYOUT, function(tabid){
    //     alert("切换到标签项"+tabid+"触发事件");
    // });
}

WfForm.convertFieldNameToId = (fieldName, table, flag) => {
    // var fieldid = WfForm.convertFieldNameToId("zs");
    // var fieldid = WfForm.convertFieldNameToId("zs_mx", "detail_1");
    // var fieldid = WfForm.convertFieldNameToId("zs_mx", "detail_1", false);
}

WfForm.getFieldValue = function (fieldMark) {
    // fieldMark	String	是	字段标示,格式field${字段ID}_${明细行号}
    // var fieldvalue = WfForm.getFieldValue("field110");
}

WfForm.bindFieldChangeEvent = function (fieldMarkStr, funobj = (obj, id, value) => {
}) {
//     fieldMarkStr	String	是	绑定字段标示,可多个拼接逗号隔开,例如:field110(主字段),field111_2(明细字段)……
//     funobj	Function	是	字段值变化触发的自定义函数,函数默认传递以下三个参数,参数1:触发字段的DOM对象,参数2:触发字段的标示(field27555等),参数3:修改后的值
//     WfForm.bindFieldChangeEvent("field27555,field27556", function (obj, id, value) {
//         console.log("WfForm.bindFieldChangeEvent--", obj, id, value);
//     });
}

WfForm.bindDetailFieldChangeEvent = function (fieldMarkStr, funobj = (id, rowIndex, value) => {
}) {

}


WfForm.controlBtnDisabled = function (isDisabled) {
    // isDisabled	boolean	是	true:按钮全部置灰不可操作,false:恢复按钮可操作状态
    // function subimtForm(params){
    //     WfForm.controlBtnDisabled(true);    //操作按钮置灰
    // ...
    //     WfForm.controlBtnDisabled(false);
    // }
}


WfForm.showMessage = function (msg, type, duration) {
    // 参数	参数类型	必须	说明
    // msg	String	true	提示信息内容
    // type	int	false	提示类型,1(警告)、2(错误)、3(成功)、4(一般),默认为1,不同类型提示信息效果不同
    // duration	Float	false	多长时间自动消失,单位秒,默认为1.5秒
    // WfForm.showMessage("结束时间需大于开始时间");   //警告信息,1.5s后自动消失
    // WfForm.showMessage("运算错误", 2, 10);  //错误信息,10s后消失

}

WfForm.getBaseInfo = function () {
//     console.log(WfForm.getBaseInfo());    //返回当前请求基础信息
// //输出对象说明:
    return {
        f_weaver_belongto_userid: "5240",    //用户信息
        f_weaver_belongto_usertype: "0",
        formid: -2010,       //表单id
        isbill: "1",         //新表单/老表单
        nodeid: 19275,       //节点id
        requestid: 4487931,  //请求id
        workflowid: 16084,   //路径id
    }
}

WfForm.changeFieldValue = function (fieldMark, valueInfo) {
    // fieldMark	String	是	字段标示,格式field${字段ID}_${明细行号}
    // valueInfo	JSON	是	字段值信息,非浏览按钮字段格式为{value:”修改的值”};specialobj为浏览按钮信息,数组格式;showhtml属性只在单行文本类型且只读情况下生效;
    //修改文本框、多行文本、选择框等字段类型
//     WfForm.changeFieldValue("field123", {value:"1.234"});
// //修改浏览框字段的值,必须有specialobj数组结构对象
//     WfForm.changeFieldValue("field11_2", {
//         value: "2,3",
//         specialobj:[
//             {id:"2",name:"张三"},
//             {id:"3",name:"李四"}
//         ]
//     });
// //修改check框字段(0不勾选、1勾选)
//     WfForm.changeFieldValue("field123", {value:"1"});
// //针对单行文本框字段类型,只读情况,支持显示值跟入库值不一致
//     WfForm.changeFieldValue("field123", {
//         value: "入库真实值",
//         specialobj: {
//             showhtml: "界面显示值"
//         }
//     });
}

/**
 * 获取流览框显示值
 * fieldMark    String    是    字段标示,格式field${字段ID}_${明细行号}
 * splitChar    String    否    分隔符,默认以逗号分隔
 * @param fieldMark
 * @param splitChar
 */
WfForm.getBrowserShowName = function (fieldMark, splitChar) {
}

/**
 * 获取明细行所有行标示
 * @param detailMark
 */
WfForm.getDetailAllRowIndexStr = function (detailMark) {
    // 遍历明细行的写法
    // var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
    // for(var i=0; i<rowArr.length; i++){
    //     var rowIndex = rowArr[i];
    //     if(rowIndex !== ""){
    //         var fieldMark = "field111_"+rowIndex;    //遍历明细行字段
    //     }
    // }
}

/**
 添加明细行并设置初始值
 * 参数    参数类型    必须    说明
 * detailMark    String    是    明细表标示,明细1就是detail_1,以此递增类推
 * initAddRowData    JSON    否    给新增后设置初始值,格式为{field110:{value:”11”},field112:{value:”22”},…},注意key不带下划线标示
 * @param detailMark
 * @param initAddRowData
 */
WfForm.addDetailRow = function (detailMark, initAddRowData = {}) {
//     //明细2添加一行并给新添加的行字段field111赋值
//     WfForm.addDetailRow("detail_2",{field111:{value:"初始值"}});
// //添加一行并给浏览按钮字段赋值
//     WfForm.addDetailRow("detail_2",{field222:{
//             value: "2,3",
//             specialobj:[
//                 {id:"2",name:"张三"},
//                 {id:"3",name:"李四"}
//             ]
//         }});
// //动态字段赋值,明细1添加一行并给字段名称为begindate的字段赋值
//     var begindatefield = WfForm.convertFieldNameToId("begindate", "detail_1");
//     var addObj = {};
//     addObj[begindatefield] = {value:"2019-03-01"};
//     WfForm.addDetailRow("detail_1", addObj);
// //不推荐这种动态键值写法,IE不支持,避免掉
//     WfForm.addDetailRow("detail_1",{[begindatefield]:{value:"2019-03-01"}})
}

/**
 * 系统样式的Confirm确认框
 * 参数    参数类型    必须    说明
 * content    String    是    确认信息
 * okEvent    Function    是    点击确认事件
 * cancelEvent    Function    否    点击取消事件
 * otherInfo    Object    否    自定义信息(按钮名称)
 * @param content
 * @param okEvent
 * @param cancelEvent
 * @param otherInfo
 */
WfForm.showConfirm = function (content, okEvent, cancelEvent, otherInfo = {}) {
    // WfForm.showConfirm("确认删除吗?", function(){
    //     alert("删除成功");
    // });
    // WfForm.showConfirm("请问你是否需要技术协助?",function(){
    //     alert("点击确认调用的事件");
    // },function(){
    //     alert("点击取消调用的事件");
    // },{
    //     title:"信息确认",       //弹确认框的title,仅PC端有效
    //     okText:"需要",          //自定义确认按钮名称
    //     cancelText:"不需要"     //自定义取消按钮名称
    // });
}

/* ******************* 建模表开发依赖 ******************* */

const ModeList = {
    /**
     * getCheckedID: function()
     *
     * 描述: 选中的checkbox的值(主表数据ID)
     * @returns {undefined}
     */
    getCheckedID() {
        return undefined;
    },
    /**
     * showLoading: function(show, size, msg)
     *
     * 描述: 控制全局loading的显示/隐藏
     * @param show
     * @param size
     * @param msg
     */
    showLoading(show, size, msg) {

    }
}
ModeList.dataLoadAfter = function (data) {
    // 描述:在列表数据加载完,对列表的数据进行二次加工,并渲染。 dataLoadAfter传入dataHandle方法,用来接收并处理数据,dataHandle有两个参数。
    // var dataHandle = function(datas,displayType){
    //     //Changes to 'datas' do not directly modify the real database data, but modify the data received at the front end.
    //     var newDatas = datas;
    //     if(displayType == 'normal'){
    //         console.log(newDatas);
    //     }
    //     return newDatas;
    // }
    // ModeList.dataLoadAfter(dataHandle);
};