找回密码
 立即注册

QQ登录

只需一步,快速开始

spring_li

注册会员

3

主题

16

帖子

39

积分

注册会员

积分
39
最新发帖
spring_li
注册会员   /  发表于:2024-9-24 13:41  /   查看:535  /  回复:3
1金币

window.onload = function () {
  initHierarchyParentType ()
  document.getElementById('formUpdate').onclick = function () {
    toSubmit()
  }
  // document.getElementById('addColumn').onclick = function () {
  //   addColumn()
  // }
  // document.getElementById('disableData').onclick = function () {
  //   toDisableData()
  // }
  document.getElementById('disabletab').onclick = function () {
    toDisabletab()
  }
  document.getElementById('test').onclick = function () {
    toTest()
  }
};
// 自定义层级结构
function initHierarchyParentType() {
  var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 0,  tabStripPosition: GC.Spread.Sheets.TabStripPosition.top });
  var dataManager = spread.dataManager();
  // 初始化数据
  icostData.forEach((item, index) => {
    initTableData(spread, dataManager, item, index)
  })
  
  
}
function initTableData(spread, dataManager, item, index) {
  var taskTable = dataManager.addTable("Tasks", {
    data: item.list,
    schema: {
        hierarchy: {
            type: 'Custom',
            column: 'accountCode',
          parse: function (options) {
              // parse the primary key "1.1.1" to "1.1"
              // the returned value will be treated as parentId
              let seg = options.data.accountCode.split('.');
              return seg.slice(0, seg.length - 1).join('.')
          },
          unparse: function (options) {
              let parentIds, currentIndex = options.index, parentData = options.parentData, parentKey = parentData && parentData.WBSNumber;
                if (parentKey) {
                    let sp = parentKey.split('.');
                    parentIds = sp;
                } else {
                    parentIds = [];
                }
                parentIds.push(currentIndex + 1);
                return parentIds.join('.');
          },
          summaryFields: { // 层级数据合计
              'allAmount':'=SUM(CHILDREN(1,"allAmount"))'
          }
        },
      columns: {
        accountCode: { dataName: 'accountCode', isPrimaryKey: true,allowSort: false, allowFilterByValue: false, allowFilterByList : false, readonly: true }, // using primary key to indicate the hierarchy id optionally
        accountName: { dataName: 'accountName',allowSort: false, allowFilterByValue: false, allowFilterByList : false, readonly: true },
        factorName: { dataName: 'factorName',allowSort: false, allowFilterByValue: false, allowFilterByList : false, readonly: true, value:''},
        engQty: { dataName: 'engQty',allowSort: false, allowFilterByValue: false, allowFilterByList : false  },
        engQtyUnit: { dataName: 'engQtyUnit',allowSort: false, allowFilterByValue: false, allowFilterByList : false, readonly: true  },
        priceFormula: { dataName: 'priceFormula', allowSort: false, allowFilterByValue: false, allowFilterByList: false },
        priceChangeFactor: { dataName: 'priceChangeFactor', allowSort: false, allowFilterByValue: false, allowFilterByList: false, dataType: 'number',
          type: 'Select',
          style: {
              cellType: {
                  type: 'combobox',
                  editorValueType: 'value',
                  items: [
                      { text: '1', value: 1 },
                      { text: '0.03', value: 0.03 },
                      { text: '0.05', value: 0.05 }
                  ]
              }
          },
        },
        finalPrice: { dataName: 'finalPrice', allowSort: false, allowFilterByValue: false, allowFilterByList: false, dataType: "formula",
          value: "IF(AND([@priceFormula] > 0, [@priceChangeFactor] > 0), [@priceFormula] * [@priceChangeFactor], 0) "
        },
        priceUnit: { dataName: 'priceUnit', allowSort: false, allowFilterByValue: false, allowFilterByList: false, readonly: true },
        acctdAmount: { dataName: 'acctdAmount', allowSort: false, allowFilterByValue: false, allowFilterByList: false },
        taxRate: { dataName: 'taxRate', allowSort: false, allowFilterByValue: false, allowFilterByList: false },
        vatAmount: { dataName: 'vatAmount', allowSort: false, allowFilterByValue: false, allowFilterByList: false, readonly: true },
        allAmount: {
          dataName: 'allAmount', allowSort: false, allowFilterByValue: false, allowFilterByList: false, dataType: "Number",
          trigger: {
            when: "onNewAndUpdate",            // 在创建后应用公式 when: "onNewAndUpdate",// 在更新时应用公式
            formula: "=[@engQty] * [@finalPrice]",        // 触发公式设置当前的时间
            fields: "engQty,finalPrice,priceChangeFactor"            // 在新建时,不需要指定受影响字段
          },
          // value: "[@engQty] * [@finalPrice]"
        },
      }
    }
  });
  var sheet = spread.addSheetTab(index, item.dantiName, GC.Spread.Sheets.SheetType.tableSheet);
  // sheet.setDefaultRowHeight(40, GC.Spread.Sheets.SheetArea.colHeader);
  sheet.options.allowAddNew = true;

  taskTable.fetch().then(r => {
    var myView = taskTable.addView("myView", [
      { value: "accountCode", caption:'对应科目代码',  width: 200, outlineColumn: true },
      { value: "accountName", caption:'科目', width: 200 },
      { value: "factorName", caption:'成本影响因素', width: 200},
      { value: "engQty", caption:'数值', width: 100 }, // style: { formatter: '0.00%' }
      { value: "engQtyUnit", caption:'单位', width: 80 },
      { value: "priceFormula", caption: '原始指标', width: 100 },
      { value: "priceChangeFactor", caption: '调整系数', width: 100 },
      { value: "finalPrice", caption: '数值', width: 200 },
      { value: "priceUnit", caption: '单位', width: 80 },
      { value: "acctdAmount", caption: '不含增值税总价(万元)', width: 200 },
      { value: "taxRate", caption: '增值税率', width: 100 },
      { value: "vatAmount", caption: '增值税总额(万元)', width: 200 },
      { value: "allAmount", caption: '含增值税总价(万元)', width: 200 },
  ]);
  spread.suspendPaint();
  sheet.setDataView(myView);
  spread.resumePaint();
  })
}
// 提交数据
function toSubmit() {
  let spread = GC.Spread.Sheets.findControl(document.getElementById("ss"));
  let sheet = spread.getActiveSheetTab();
  // let sheet = spread.getSheetTab()
  // console.log(sheet.getDataView()) // 获取数据源
  // 获取数据源
  sheet.getDataView().fetch().then(data=>{
    console.log(data)
  })
}




最佳答案

查看完整内容

已解决,是由于addTable的name没有做区分导致[/backcolor]

3 个回复

倒序浏览
最佳答案
最佳答案
spring_li
注册会员   /  发表于:2024-9-24 13:41:58
来自 3#
本帖最后由 spring_li 于 2024-9-24 16:17 编辑

已解决,是由于addTable的name没有做区分导致
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-24 14:29:31
2#
您好!从您提供的代码片段中了解到,您应该是使用icostData变量引用的数据创建了多个TableSheet。连续多次调用Workbook:addSheetTab()创建TableSheet,活动TableSheet始终是第一次调用Workbook:addSheetTab()创建的TableSheet,如下图所示。

1727159325469.png131574706.png

因此,如果中途没有切换TableSheet,那么,代码片段结尾处通过Workbook:getActiveSheetTab()获取的是第一个TableSheet。如果有手动切换或通过代码Workbook:setActiveSheetTab()切换TableSheet,那么,Workbook:getActiveSheetTab()将获取到当前显示的TableSheet。

所以,您其实是想获取哪个TableSheet中的Table呢?
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-24 17:21:42
4#
spring_li 发表于 2024-9-24 15:16
已解决,是由于addTable的name没有做区分导致

解决了就好,那就结贴了。如有问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部