找回密码
 立即注册

QQ登录

只需一步,快速开始

spencer
注册会员   /  发表于:2020-3-12 16:24:05
11#
谢谢郭经理!谢谢版主!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-3-12 16:46:30
12#
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
spencer
注册会员   /  发表于:2020-7-6 16:05:11
13#
郭经理您好,我在编写程序的时候,还遇到一个问题,还需要请教一下。
在视频里,您说每个模板配套的js文件,里面主要处理该表格的样式和数据的解析。
但是,样式已经存在模板JSON数据里面,按理不用存储在js文件里。
而解析数据这块,应该能够通过遍历处理对象中的每一个数据,然后实现从数据库到js对象的转换,并通过spreadjs路径绑定将数据一一赋值到表格中的单元格里。
所以,这个配套模板的js为什么要单独写,我还是有点不明白。但是,我想里面一定是需要做一些每个表格不同的差异化处理,所以才需要配套相应的js文件。
能否分享一下这个js里面大致需要处理的内容?
这个js是自动生成,还是每个模板都要单独手写?
如方便能否贴一些大概的代码举例?不然这个问题的确很困扰我,十分感谢郭经理!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-7-6 17:20:08
14#
问题已收到,会替您联系郭经理。
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
adongguo讲师达人认证
金牌服务用户   /  发表于:2020-7-7 09:18:39
15#
spencer 发表于 2020-7-6 16:05
郭经理您好,我在编写程序的时候,还遇到一个问题,还需要请教一下。
在视频里,您说每个模板配套的js文件 ...

示例代码放到了下面,思路上就是处理不同的模板上一些特定的校验或者解析成后端通用的数据格式;
至于具体如何实现,其实都是灵活的,只要能解决您的问题都是可以的,不必完全拘泥于具体格式。

  1. var finacePage = {

  2.     /*
  3.     * 组装财报结构化数据
  4.     * */
  5.     assembleFinanceDto: function (spread) {
  6.         // 财报页面维度拼接 gxd
  7.         // {指标名:xx,指标值:xx,维度:xx,系统标识:xx}

  8.         var dataSources = spreadJSUtil.getDataSourceForSheets("ss");

  9.         // 资产负债表-金融-非合并
  10.         var bindData = dataSources[0].dataSource;
  11.         var dataOne = _assembleHelper(bindData, "CustFiRE", "ZCFZB");
  12.         // 利润表-金融-非合并
  13.         bindData = dataSources[1].dataSource;
  14.         var dataTwo = _assembleHelper(bindData, "CustFiRE", "LRB");
  15.         // 现金流量表-金融-非合并
  16.         bindData = dataSources[2].dataSource;
  17.         var dataThree = _assembleHelper(bindData, "CustFiRE", "XJLLB");

  18.         return  dataOne.concat(dataTwo, dataThree);
  19.     },
  20.     /**
  21.      * 对spread进行验证
  22.      * @param spread spreadjs的spread对象
  23.      */
  24.     validation: function (spread) {
  25.         var sheetCount = spread.getSheetCount();
  26.         var result = {};
  27.         var isValid = true;
  28.         for (var i = 0; i < sheetCount; i++) {
  29.             var sheet = spread.getSheet(i);
  30.             var rowCount = sheet.getRowCount();
  31.             var colCount = sheet.getColumnCount();
  32.             for (var j = 0; j < rowCount; j++) {
  33.                 for (var k = 0; k < colCount; k++) {
  34.                     var dataValidator = sheet.getDataValidator(j, k);
  35.                     isValid = (dataValidator !== undefined) ? sheet.isValid(j, k, sheet.getValue(j, k)) : isValid;
  36.                     if(!isValid){
  37.                         result['isValid'] = isValid;
  38.                         result['isForce'] = true;
  39.                         return result;
  40.                     }
  41.                 }
  42.             }
  43.         }
  44.         result['isValid'] = isValid;
  45.         result['isForce'] = false;
  46.         return result;
  47.     }
  48. };

  49. function _assembleHelper(bindData, systemFlag, sheetName) {
  50.     var dataArray = [];
  51.     // 维度信息:编制单位,编制日期,财报值类型(包含本期金额,上期金额)
  52.     var dimension = {};
  53.     dimension["makeOrg"] = bindData["makeOrg"];
  54.     dimension["makeDate"] = bindData["makeDate"];
  55.     dimension["sheetName"] = sheetName;

  56.     var bindingNames = Object.keys(bindData);
  57.     for (var i = 0; i < bindingNames.length -2; i++) {
  58.         if (bindingNames[i].indexOf("indicator") !== -1
  59.             && (bindingNames[i + 1].indexOf("filed") !== -1
  60.                 || bindingNames[i + 1].indexOf("field") !== -1)) {
  61.             dimension["valueType"] = "bqje";
  62.             dataArray.push({
  63.                 "quotaName": bindingNames[i].substr(10),
  64.                 "dimension": JSON.stringify(dimension),
  65.                 "systemFlag": systemFlag,
  66.                 "quotaValue": bindData[bindingNames[i+1]]
  67.             });
  68.             dimension["valueType"] = "sqje";
  69.             dataArray.push({
  70.                 "quotaName": bindingNames[i].substr(10),
  71.                 "dimension": JSON.stringify(dimension),
  72.                 "systemFlag": systemFlag,
  73.                 "quotaValue": bindData[bindingNames[i+2]]
  74.             });
  75.             i += 2;
  76.         }
  77.     }

  78.     return dataArray;

  79. }
复制代码

评分

参与人数 1金币 +2000 收起 理由
Clark.Pan + 2000 很给力!

查看全部评分

回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-7-7 10:15:28
16#
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部