|
@@ -94,6 +94,41 @@ let TEMPLATE_BILLS_SETTING = {
|
|
|
"font":"Arail",
|
|
|
}
|
|
|
}, {
|
|
|
+ "width":250,
|
|
|
+ "readOnly":false,
|
|
|
+ "head":{
|
|
|
+ "titleNames":["计算基数"],
|
|
|
+ "spanCols":[1],
|
|
|
+ "spanRows":[1],
|
|
|
+ "vAlign":[1],
|
|
|
+ "hAlign":[1],
|
|
|
+ "font":["Arial"]
|
|
|
+ },
|
|
|
+ "data":{
|
|
|
+ "field":"calcBase",
|
|
|
+ "vAlign":0,
|
|
|
+ "hAlign":3,
|
|
|
+ "font":"Arail",
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ "width":50,
|
|
|
+ "readOnly":false,
|
|
|
+ "head":{
|
|
|
+ "titleNames":["费率ID"],
|
|
|
+ "spanCols":[1],
|
|
|
+ "spanRows":[1],
|
|
|
+ "vAlign":[1],
|
|
|
+ "hAlign":[1],
|
|
|
+ "font":["Arial"]
|
|
|
+ },
|
|
|
+ "data":{
|
|
|
+ "field":"feeRateID",
|
|
|
+ "type":'Number',
|
|
|
+ "vAlign":0,
|
|
|
+ "hAlign":1,
|
|
|
+ "font":"Arail"
|
|
|
+ }
|
|
|
+ }, {
|
|
|
"width":50,
|
|
|
"readOnly":true,
|
|
|
"head":{
|
|
@@ -161,7 +196,7 @@ $(document).ready(function () {
|
|
|
showButton(tree.selected && tree.selected.canUpMove(), $('#upMove'));
|
|
|
showButton(tree.selected && tree.selected.canDownMove(), $('#downMove'));
|
|
|
showButton(tree.selected ? true : false, $('#delete'));
|
|
|
- }
|
|
|
+ };
|
|
|
let RefreshBillsData = function (datas) {
|
|
|
datas.forEach(function (data) {
|
|
|
let node = tree.findNode(data.data.ID);
|
|
@@ -179,11 +214,19 @@ $(document).ready(function () {
|
|
|
combo.editorValueType(GC.Spread.Sheets.CellTypes.EditorValueType.value)
|
|
|
.items(comboItems);
|
|
|
return combo;
|
|
|
- }
|
|
|
+ };
|
|
|
let getFixedFlagCellType = function () {
|
|
|
let billsFixedFlagData = JSON.parse(billsFixedFlagList);
|
|
|
return getNameValueComboCellType(billsFixedFlagData);
|
|
|
};
|
|
|
+ let getNameToValueMap = function (listString) {
|
|
|
+ let map = {};
|
|
|
+ let datas = JSON.parse(listString);
|
|
|
+ for(let data of datas){
|
|
|
+ map[data.name] = data.value;
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ };
|
|
|
let getTypeFlagCellType = function () {
|
|
|
let billsTypeFlagData = JSON.parse(billsTypeFlagList);
|
|
|
return getNameValueComboCellType(billsTypeFlagData);
|
|
@@ -206,7 +249,30 @@ $(document).ready(function () {
|
|
|
valueField = valueField[fields[i]];
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ };
|
|
|
+ let getRealValue = function (value,map) {//中文到实际值的转换
|
|
|
+ value = value.replace(/[\s\r\n]/g, "");//去掉空格,回车等无用字符
|
|
|
+ if(map[value]!==undefined && map[value]!==null) value = map[value];
|
|
|
+ return value;
|
|
|
+ };
|
|
|
+ let setUpdateData = function (node,data,col,value,setting) {
|
|
|
+ let fieldName = setting.cols[col].data.field;
|
|
|
+ let valueType = setting.cols[col].data.type;
|
|
|
+ if(fieldName == 'type'){
|
|
|
+ value = getRealValue(value,typeMap);
|
|
|
+ }
|
|
|
+ if(fieldName == 'flagsIndex.fixed.flag'){
|
|
|
+ value = getRealValue(value,fixedFlagMap);
|
|
|
+ }
|
|
|
+ if (/flagsIndex/.test(fieldName)) {
|
|
|
+ data.data.flags = [];
|
|
|
+ let flagField = fieldName.split('.');
|
|
|
+ data.data.flags.push({fieldName: flagField[1],flag: value});
|
|
|
+ } else {
|
|
|
+ if(valueType == 'Number') value = parseInt(value);
|
|
|
+ setFee(data.data, fieldName, value);
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
billsTemplateData = billsTemplateData.replace(/\n/g, '\\n');
|
|
|
let templateData = JSON.parse(billsTemplateData);
|
|
@@ -230,6 +296,10 @@ $(document).ready(function () {
|
|
|
let tree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
|
|
|
let billsSpread = TREE_SHEET_HELPER.createNewSpread($('#billsSpread')[0]);
|
|
|
let controller = TREE_SHEET_CONTROLLER.createNew(tree, billsSpread.getActiveSheet(), TEMPLATE_BILLS_SETTING);
|
|
|
+ let fixedFlagMap = getNameToValueMap(billsFixedFlagList);
|
|
|
+ let typeMap = getNameToValueMap(billsTypeFlagList);
|
|
|
+ console.log(fixedFlagMap);
|
|
|
+ console.log(typeMap);
|
|
|
//format code
|
|
|
//billsSpread.getSheet(0).setFormatter(-1, 1, '@');
|
|
|
controller.bind('refreshBaseActn', RefreshBaseActn);
|
|
@@ -237,25 +307,33 @@ $(document).ready(function () {
|
|
|
billsSpread.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, info) {
|
|
|
var node = controller.tree.items[info.row];
|
|
|
var fieldName = controller.setting.cols[info.col].data.field;
|
|
|
- var data = {type: 'update', data: {ID: node.getID()}};
|
|
|
- if (/flagsIndex/.test(fieldName)) {
|
|
|
- data.data.flags = [];
|
|
|
- let flagField = fieldName.split('.');
|
|
|
- data.data.flags.push({fieldName: flagField[1], flag: info.editingText});
|
|
|
- } else {
|
|
|
- setFee(data.data, fieldName, info.editingText);
|
|
|
+ var valueType = controller.setting.cols[info.col].data.type;
|
|
|
+ let value = info.editingText;
|
|
|
+ if(node){
|
|
|
+ var data = {type: 'update', data: {ID: node.getID()}};
|
|
|
+ if (/flagsIndex/.test(fieldName)) {
|
|
|
+ data.data.flags = [];
|
|
|
+ let flagField = fieldName.split('.');
|
|
|
+ data.data.flags.push({fieldName: flagField[1], flag: info.editingText});
|
|
|
+ } else {
|
|
|
+ if(valueType == 'Number') value = parseInt(info.editingText);
|
|
|
+ setFee(data.data, fieldName, value);
|
|
|
+ }
|
|
|
+ var updateData = [data];
|
|
|
+ CommonAjax.post(updateUrl, updateData, function (data) {
|
|
|
+ setFee(node.data, fieldName, value);
|
|
|
+ controller.refreshTreeNode([node], false);
|
|
|
+ }, function () {
|
|
|
+ controller.refreshTreeNode([node], false);
|
|
|
+ });
|
|
|
+ }else {
|
|
|
+ info.sheet.getCell(info.row,info.col).value("");
|
|
|
}
|
|
|
- var updateData = [data];
|
|
|
- CommonAjax.post(updateUrl, updateData, function (data) {
|
|
|
- setFee(node.data, fieldName, info.editingText);
|
|
|
- controller.refreshTreeNode([node], false);
|
|
|
- }, function () {
|
|
|
- controller.refreshTreeNode([node], false);
|
|
|
- });
|
|
|
+
|
|
|
});
|
|
|
billsSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (e, info) {
|
|
|
console.log("ClipboardPasted");
|
|
|
- var node, iRow, iCol, curRow, curCol, datas = [], data, fieldName, updateData;
|
|
|
+ var node, iRow, iCol, curRow, curCol, datas = [], data, fieldName,valueType,value, updateData;
|
|
|
for (iRow = 0; iRow < info.cellRange.rowCount; iRow ++) {
|
|
|
curRow = info.cellRange.row + iRow;
|
|
|
node = controller.tree.items[curRow];
|
|
@@ -263,15 +341,20 @@ $(document).ready(function () {
|
|
|
data = {type: 'update', data: {ID: node.getID()}};
|
|
|
for (iCol = 0; iCol < info.cellRange.colCount; iCol++) {
|
|
|
curCol = info.cellRange.col + iCol;
|
|
|
+ value = info.sheet.getText(curRow, curCol);
|
|
|
+ /* curCol = info.cellRange.col + iCol;
|
|
|
fieldName = controller.setting.cols[curCol].data.field;
|
|
|
-
|
|
|
+ valueType = controller.setting.cols[curCol].data.type;
|
|
|
+ value = info.sheet.getText(curRow, curCol);
|
|
|
if (/flagsIndex/.test(fieldName)) {
|
|
|
data.data.flags = [];
|
|
|
let flagField = fieldName.split('.');
|
|
|
- data.data.flags.push({fieldName: flagField[1],flag: info.sheet.getText(curRow, curCol)});
|
|
|
+ data.data.flags.push({fieldName: flagField[1],flag: value});
|
|
|
} else {
|
|
|
- setFee(data.data, fieldName, info.sheet.getText(curRow, curCol));
|
|
|
- }
|
|
|
+ if(valueType == 'Number') value = parseInt(value);
|
|
|
+ setFee(data.data, fieldName, value);
|
|
|
+ }*/
|
|
|
+ setUpdateData(node,data,curCol,value,controller.setting);
|
|
|
}
|
|
|
datas.push(data);
|
|
|
}
|
|
@@ -283,7 +366,9 @@ $(document).ready(function () {
|
|
|
controller.showTreeData();
|
|
|
});
|
|
|
});
|
|
|
-
|
|
|
+ billsSpread.bind(GC.Spread.Sheets.Events.RangeChanged, function (e,info) {
|
|
|
+ console.log(info);
|
|
|
+ });
|
|
|
tree.loadDatas(templateData);
|
|
|
controller.showTreeData();
|
|
|
RefreshBaseActn(tree);
|