找回密码
 立即注册

QQ登录

只需一步,快速开始

dp99

中级会员

46

主题

139

帖子

706

积分

中级会员

积分
706
dp99
中级会员   /  发表于:2018-8-4 22:46  /   查看:6389  /  回复:22
在论坛里没有找到这个函数,只在材料DEMO里见到,我的理解是把替换成系统字段,可我死活都试不出来,附我的工程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

22 个回复

倒序浏览
firestarman
高级会员   /  发表于:2018-8-5 16:27:16
沙发
  1. 用户只需要输入长,宽,高,厚的值,系统将根绝材料的公式自动的计算出用量,面积,周长和重量。具体实现的方法请参照“设置”-->"自定义Javascript/CSS"-->"上传Javascript文件"-->"AddFunction.js" 中的代码进行查看。
复制代码


demo主页面有说明的,是js自定义函数
回复 使用道具 举报
dp99
中级会员   /  发表于:2018-8-6 08:41:29
板凳
感谢指点,已经导入,要以实现,但还有点问题,两个参数,宽已经生效,高没有生效,是不是JS还要自己改动一下呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
dp99
中级会员   /  发表于:2018-8-6 08:43:33
地板
另外如果自己使用这个JS,除了要改下面中文的地方以外,其他还有改动的吗?JS目前还不太明白
// JavaScript source code
function CalculateFunction() {
    this.name = 'CALCULATE';
    this.maxArgs = 6;
    this.minArgs = 4;
}
CalculateFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
CalculateFunction.prototype.evaluate = function (args) {
    var formula = arguments[0] == null ? 0 : arguments[0];
    var chang = arguments[1] == null ? 0 : arguments[1];
    var kuan = arguments[2] == null ? 0 : arguments[2];
    var gao = arguments[3] == null ? 0 : arguments[3];
    var hou = arguments[4] == null ? 0 : arguments[4];
    var danjia = arguments[5] == null ? 0 : arguments[5];
    var param1 = arguments[6] == null ? 0 : arguments[6];
    var param2 = arguments[7] == null ? 0 : arguments[7];
    var myParam = new Array("直径", "周长", "单价", "参数1", "参数2", "长", "宽", "高", "厚");
    var myValue = new Array(kuan, kuan, danjia, param1, param2, chang, kuan, gao, hou);
    if (!formula) {
        return "";
    }
    formula = formula.replace(/\PI\(\)/ig, Math.PI);
    for (var i = 0; i < myParam.length; i++) {
        var regEx = new RegExp(myParam[i], "g");
        formula = formula.replace(regEx, myValue[i]);
    }
    //return Forguncy.ForguncyData.pageInfo.formulaManager.evaluateFormula("=" + formula, false);
    return Forguncy.ForguncyData.pageInfo.formulaManager.evaluateFormula("=" + formula, false) == 0 ?
        "" : Forguncy.ForguncyData.pageInfo.formulaManager.evaluateFormula("=" + formula, false);
}
//function getAllCharNotContainOperator(string) {
//    var str = string.replace(/\PI\(\)/ig, "派");
//    var value = str.replace(/\+/g, "").replace(/\-/g, "").replace(/\*/g, "").replace(/\//g, "").replace(/\(/g, "").replace(/\)/g, "").replace(/[0-9]/g, '');
//    value = value.split("").filter(function (x, n, s) { return s.indexOf(x) == n }).join("");
//    value.replace(/\派/g, "");
//    return value;
//}
GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("CALCULATE", new CalculateFunction());
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-8-6 10:05:25
5#
dp99 发表于 2018-8-6 08:43
另外如果自己使用这个JS,除了要改下面中文的地方以外,其他还有改动的吗?JS目前还不太明白
// JavaScrip ...

JS代码已经修改,请参考附件工程文件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
dp99
中级会员   /  发表于:2018-8-6 10:42:22
6#
谢谢,这只是个示范,实际应用还有好多字段,能简单讲一下,JS需要修改那些地方吗?
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-8-6 10:52:51
7#
dp99 发表于 2018-8-6 10:42
谢谢,这只是个示范,实际应用还有好多字段,能简单讲一下,JS需要修改那些地方吗?

需要修改对应的公式参数。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
dp99
中级会员   /  发表于:2018-8-7 21:34:30
8#
本帖最后由 dp99 于 2018-8-7 21:40 编辑

我改了一下,好像还是不起作用,有需要设置的地方吗?附我的工程。
// JavaScript source code
function CalculateFunction() {
    this.name = 'CALCULATE';
    this.maxArgs = 6;
    this.minArgs = 4;
}
CalculateFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
CalculateFunction.prototype.evaluate = function (args) {
    var formula = arguments[0] == null ? 0 : arguments[0];
    var gao = arguments[1] == null ? 0 : arguments[1];
    var kuan = arguments[2] == null ? 0 : arguments[2];
    var hou = arguments[3] == null ? 0 : arguments[3];
    var shuliang = arguments[4] == null ? 0 : arguments[4];
    var jiajia = arguments[5] == null ? 0 : arguments[5];
    var fu1 = arguments[6] == null ? 0 : arguments[6];
    var fu2 = arguments[7] == null ? 0 : arguments[7];
    var danjia = arguments[8] == null ? 0 : arguments[8];
    var men = arguments[9] == null ? 0 : arguments[9];
    var tao = arguments[10] == null ? 0 : arguments[10];
    var jijia = arguments[11] == null ? 0 : arguments[11];
    var xian1 = arguments[12] == null ? 0 : arguments[12];
    var xian2 = arguments[13] == null ? 0 : arguments[13];
    var se1 = arguments[14] == null ? 0 : arguments[14];
    var se2 = arguments[15] == null ? 0 : arguments[15];
    var myParam = new Array("高", "宽","厚","数量","加价","附1","附2","单价","门尺寸","套板尺寸","基价","线1","线2","色1","色2");
    var myValue = new Array(gao, kuan,hou,shuliang,jiajia,fu1,fu2,danjia,men,tao,jijia,xian1,xian2,se1,se2);
    if (!formula) {
        return "";
    }
    formula = formula.replace(/\PI\(\)/ig, Math.PI);
    for (var i = 0; i < myParam.length; i++) {
        var regEx = new RegExp(myParam, "g");
        formula = formula.replace(regEx, myValue);
    }
    //return Forguncy.ForguncyData.pageInfo.formulaManager.evaluateFormula("=" + formula, false);
    return Forguncy.ForguncyData.pageInfo.formulaManager.evaluateFormula("=" + formula, false) == 0 ?
        "" : Forguncy.ForguncyData.pageInfo.formulaManager.evaluateFormula("=" + formula, false);
}
//function getAllCharNotContainOperator(string) {
//    var str = string.replace(/\PI\(\)/ig, "派");
//    var value = str.replace(/\+/g, "").replace(/\-/g, "").replace(/\*/g, "").replace(/\//g, "").replace(/\(/g, "").replace(/\)/g, "").replace(/[0-9]/g, '');
//    value = value.split("").filter(function (x, n, s) { return s.indexOf(x) == n }).join("");
//    value.replace(/\派/g, "");
//    return value;
//}
GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("CALCULATE", new CalculateFunction());

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
firestarman
高级会员   /  发表于:2018-8-7 22:45:41
9#
单价公式帮你修好了,代码也修好了,自己看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
dp99
中级会员   /  发表于:2018-8-7 23:09:45
10#
收到,是不是只改了这里,我是15个参数,就改成16,对不
  this.maxArgs = 16;
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部