rapid-spreadjs 1.0.113 → 1.0.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +231 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.esm.js +231 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/utils/business.d.ts +14 -0
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1087,6 +1087,237 @@ const BusinessUtils = {
|
|
|
1087
1087
|
created(cyclicCellsRange, allCellsByRow);
|
|
1088
1088
|
}
|
|
1089
1089
|
},
|
|
1090
|
+
/**
|
|
1091
|
+
* 显示超差提醒批注信息
|
|
1092
|
+
* @param cctxConfigs 超差提醒配置集合
|
|
1093
|
+
* @param cellRowIndex 发生改变值的单元格行索引
|
|
1094
|
+
* @param cellColIndex 发生改变值的单元格列索引
|
|
1095
|
+
* @param isValueChgedUse 是否为单元格值发生改变的时候调用
|
|
1096
|
+
* @param commentOptions 批注配置项,默认为:{color: '#E11010', size: 10, defaultTextIsSet: true, defaultText: '无效'}(color:批注颜色,size:批注大小,defaultTextIsSet:是否设置单元格默认值,defaultText:单元格默认值内容)
|
|
1097
|
+
*/
|
|
1098
|
+
cctxComments: (spread, cctxConfigs, cellRowIndex, cellColIndex, isValueChgedUse = true, commentOptions = {
|
|
1099
|
+
color: '#E11010',
|
|
1100
|
+
size: 10,
|
|
1101
|
+
defaultTextIsSet: true,
|
|
1102
|
+
defaultText: '无效',
|
|
1103
|
+
}) => {
|
|
1104
|
+
if (!cctxConfigs || cctxConfigs.length == 0) {
|
|
1105
|
+
return;
|
|
1106
|
+
}
|
|
1107
|
+
const sheet = spread.getActiveSheet();
|
|
1108
|
+
spread.suspendPaint();
|
|
1109
|
+
spread.suspendCalcService();
|
|
1110
|
+
spread.suspendEvent();
|
|
1111
|
+
// //批注颜色、大小、是否设置单元格默认值、单元格默认值内容
|
|
1112
|
+
// let commentColor = color,
|
|
1113
|
+
// commentSize = 10,
|
|
1114
|
+
// commentDefaultTextIsSet = true,
|
|
1115
|
+
// commentDefaultText = '无效';
|
|
1116
|
+
let commentColor = commentOptions.color ? commentOptions.color : '#E11010', commentSize = commentOptions.size ? commentOptions.size : 10, commentDefaultTextIsSet = commentOptions.defaultTextIsSet ? commentOptions.defaultTextIsSet : true, commentDefaultText = commentOptions.defaultText ? commentOptions.defaultText : '无效';
|
|
1117
|
+
//将a~f这些字母替换为具体的值
|
|
1118
|
+
const replaceVar = (itemExp, varJsonObjs) => {
|
|
1119
|
+
const letters = ['a', 'b', 'c', 'd', 'e', 'f'];
|
|
1120
|
+
letters.forEach((letter) => {
|
|
1121
|
+
if (itemExp.indexOf(letter) > -1) {
|
|
1122
|
+
itemExp = itemExp.replaceAll(letter, varJsonObjs.find((itemVar) => itemVar.var == letter).value);
|
|
1123
|
+
}
|
|
1124
|
+
});
|
|
1125
|
+
return itemExp;
|
|
1126
|
+
};
|
|
1127
|
+
//将1~20这些数字替换为具体的设置条件
|
|
1128
|
+
const replaceNum = (itemExp, conJsonArr) => {
|
|
1129
|
+
const nums = [];
|
|
1130
|
+
for (let iNum = 1; iNum <= 20; iNum++) {
|
|
1131
|
+
nums.push(iNum);
|
|
1132
|
+
}
|
|
1133
|
+
nums.forEach((num) => {
|
|
1134
|
+
if (itemExp.indexOf(num) > -1 && num <= conJsonArr.length) {
|
|
1135
|
+
//将条件公式【1 || (2 && 3)】中的数组替换为#1#的形式
|
|
1136
|
+
itemExp = itemExp.replaceAll(num, `#${num}#`);
|
|
1137
|
+
}
|
|
1138
|
+
});
|
|
1139
|
+
nums.forEach((num) => {
|
|
1140
|
+
if (itemExp.indexOf(num) > -1 && num <= conJsonArr.length) {
|
|
1141
|
+
//将条件公式中的#1#替换为具体的设置条件
|
|
1142
|
+
itemExp = itemExp.replaceAll(`#${num}#`, `(${conJsonArr[num - 1]})`);
|
|
1143
|
+
}
|
|
1144
|
+
});
|
|
1145
|
+
return itemExp;
|
|
1146
|
+
};
|
|
1147
|
+
//获取新的conJson配置集合
|
|
1148
|
+
const getConJsonArrNew = (conJsonArr, varJsonArr) => {
|
|
1149
|
+
let conJsonArrNew = [];
|
|
1150
|
+
conJsonArr.forEach((element) => {
|
|
1151
|
+
let newElement = element;
|
|
1152
|
+
//将abs替换为[###]
|
|
1153
|
+
newElement = newElement.replaceAll('jd(', '精度开始').replaceAll(')jd', '精度结束').replaceAll('abs', '[###]');
|
|
1154
|
+
//将a~f这些字母替换为具体的值
|
|
1155
|
+
newElement = replaceVar(newElement, varJsonArr);
|
|
1156
|
+
//将[###]替换为Math.abs
|
|
1157
|
+
newElement = newElement.replaceAll('[###]', 'Math.abs').replaceAll('精度开始', 'Number(').replaceAll('精度结束', ').toFixed(8)');
|
|
1158
|
+
//将设置条件添加到新的集合中
|
|
1159
|
+
conJsonArrNew.push(newElement);
|
|
1160
|
+
});
|
|
1161
|
+
return conJsonArrNew;
|
|
1162
|
+
};
|
|
1163
|
+
for (let i = 0; i < cctxConfigs.length; i++) {
|
|
1164
|
+
const item = cctxConfigs[i];
|
|
1165
|
+
//有前置条件
|
|
1166
|
+
if (item.isQz) {
|
|
1167
|
+
//获取所有值单元格集合,格式如:[{"var":"a","value":10,"row":,……}]
|
|
1168
|
+
let varJsonArr = JSON.parse(item.varJson);
|
|
1169
|
+
//获取所有前置条件单元格集合,格式如:[{"var":"a","value":10,"row":,……}]
|
|
1170
|
+
let qzCellJsonArr = JSON.parse(item.qzCellJson);
|
|
1171
|
+
const doEvent = () => {
|
|
1172
|
+
varJsonArr.forEach((element) => {
|
|
1173
|
+
element.value = sheet.getValue(element.row, element.col);
|
|
1174
|
+
});
|
|
1175
|
+
//获取所有设置条件集合
|
|
1176
|
+
let conJsonArr = JSON.parse(item.conJson), conJsonArrNew = getConJsonArrNew(conJsonArr, varJsonArr);
|
|
1177
|
+
qzCellJsonArr.forEach((element) => {
|
|
1178
|
+
element.value = sheet.getValue(element.row, element.col);
|
|
1179
|
+
});
|
|
1180
|
+
//获取所有前置条件公式集合,格式如:[{"var":"a","value":10,"row":,……}]
|
|
1181
|
+
let qzGsJsonArr = JSON.parse(item.qzGsJson);
|
|
1182
|
+
qzGsJsonArr.forEach((element) => {
|
|
1183
|
+
element.value = sheet.getValue(element.row, element.col);
|
|
1184
|
+
});
|
|
1185
|
+
//循环所有前置公式
|
|
1186
|
+
//记录是否所有前置公式对应的条件都没有超差
|
|
1187
|
+
let isAllNotCc = true;
|
|
1188
|
+
for (let j = 0; j < qzGsJsonArr.length; j++) {
|
|
1189
|
+
const itemQzgs = qzGsJsonArr[j];
|
|
1190
|
+
//当前公式中的前置条件
|
|
1191
|
+
let curGsQz = itemQzgs.qzFor.replaceAll('jd(', '精度开始').replaceAll(')jd', '精度结束').replaceAll('abs', '[###]');
|
|
1192
|
+
curGsQz = replaceVar(curGsQz, qzCellJsonArr);
|
|
1193
|
+
curGsQz = curGsQz.replaceAll('[###]', 'Math.abs').replaceAll('精度开始', 'Number(').replaceAll('精度结束', ').toFixed(8)');
|
|
1194
|
+
try {
|
|
1195
|
+
//满足其中一个前置条件时
|
|
1196
|
+
if (eval(curGsQz)) {
|
|
1197
|
+
//获取最终的条件公式
|
|
1198
|
+
const lastFor = replaceNum(itemQzgs.conFor, conJsonArrNew);
|
|
1199
|
+
try {
|
|
1200
|
+
//设置批注
|
|
1201
|
+
if (eval(lastFor)) {
|
|
1202
|
+
isAllNotCc = false;
|
|
1203
|
+
sheet.comments
|
|
1204
|
+
.add(item.row, item.col, itemQzgs.tipMsg)
|
|
1205
|
+
.indicatorColor(commentColor)
|
|
1206
|
+
.indicatorSize(commentSize)
|
|
1207
|
+
.fontSize('10pt')
|
|
1208
|
+
.width(200);
|
|
1209
|
+
if (commentDefaultTextIsSet) {
|
|
1210
|
+
sheet.setValue(item.row, item.col, commentDefaultText);
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
//取消批注
|
|
1214
|
+
else {
|
|
1215
|
+
sheet.comments.remove(item.row, item.col);
|
|
1216
|
+
if (commentDefaultTextIsSet) {
|
|
1217
|
+
const cellVal = sheet.getValue(item.row, item.col);
|
|
1218
|
+
if (cellVal == commentDefaultText) {
|
|
1219
|
+
sheet.setValue(item.row, item.col, '');
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1224
|
+
catch (error) {
|
|
1225
|
+
//取消批注
|
|
1226
|
+
sheet.comments.remove(item.row, item.col);
|
|
1227
|
+
if (commentDefaultTextIsSet) {
|
|
1228
|
+
const cellVal = sheet.getValue(item.row, item.col);
|
|
1229
|
+
if (cellVal == commentDefaultText) {
|
|
1230
|
+
sheet.setValue(item.row, item.col, '');
|
|
1231
|
+
}
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
break;
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
catch (error) {
|
|
1238
|
+
//
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
//当所有公式条件都没有超差的时候,需要取消批注
|
|
1242
|
+
if (isAllNotCc) {
|
|
1243
|
+
//取消批注
|
|
1244
|
+
sheet.comments.remove(item.row, item.col);
|
|
1245
|
+
if (commentDefaultTextIsSet) {
|
|
1246
|
+
const cellVal = sheet.getValue(item.row, item.col);
|
|
1247
|
+
if (cellVal == commentDefaultText) {
|
|
1248
|
+
sheet.setValue(item.row, item.col, '');
|
|
1249
|
+
}
|
|
1250
|
+
}
|
|
1251
|
+
}
|
|
1252
|
+
};
|
|
1253
|
+
//如果当前改变值的单元格在varJsonArr集合中存在,则说明是修改的超差提醒配置的相关单元格
|
|
1254
|
+
if (isValueChgedUse) {
|
|
1255
|
+
if (varJsonArr.some((itemVar) => itemVar.row == cellRowIndex && itemVar.col == cellColIndex) ||
|
|
1256
|
+
qzCellJsonArr.some((itemVar) => itemVar.row == cellRowIndex && itemVar.col == cellColIndex)) {
|
|
1257
|
+
doEvent();
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
else {
|
|
1261
|
+
doEvent();
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
//无前置条件
|
|
1265
|
+
else {
|
|
1266
|
+
//获取所有值单元格集合,格式如:[{"var":"a","value":10,"row":,……}]
|
|
1267
|
+
let varJsonArr = JSON.parse(item.varJson);
|
|
1268
|
+
const doEvent = () => {
|
|
1269
|
+
varJsonArr.forEach((element) => {
|
|
1270
|
+
element.value = sheet.getValue(element.row, element.col);
|
|
1271
|
+
});
|
|
1272
|
+
//获取所有设置条件集合
|
|
1273
|
+
let conJsonArr = JSON.parse(item.conJson), conJsonArrNew = getConJsonArrNew(conJsonArr, varJsonArr);
|
|
1274
|
+
//获取最终的条件公式
|
|
1275
|
+
const lastFor = replaceNum(item.conFor, conJsonArrNew);
|
|
1276
|
+
try {
|
|
1277
|
+
//设置批注
|
|
1278
|
+
if (eval(lastFor)) {
|
|
1279
|
+
sheet.comments.add(item.row, item.col, item.tipMsg).indicatorColor(commentColor).indicatorSize(commentSize).fontSize('10pt').width(200);
|
|
1280
|
+
if (commentDefaultTextIsSet) {
|
|
1281
|
+
sheet.setValue(item.row, item.col, commentDefaultText);
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
//取消批注
|
|
1285
|
+
else {
|
|
1286
|
+
sheet.comments.remove(item.row, item.col);
|
|
1287
|
+
if (commentDefaultTextIsSet) {
|
|
1288
|
+
const cellVal = sheet.getValue(item.row, item.col);
|
|
1289
|
+
if (cellVal == commentDefaultText) {
|
|
1290
|
+
sheet.setValue(item.row, item.col, '');
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
catch (error) {
|
|
1296
|
+
//取消批注
|
|
1297
|
+
sheet.comments.remove(item.row, item.col);
|
|
1298
|
+
if (commentDefaultTextIsSet) {
|
|
1299
|
+
const cellVal = sheet.getValue(item.row, item.col);
|
|
1300
|
+
if (cellVal == commentDefaultText) {
|
|
1301
|
+
sheet.setValue(item.row, item.col, '');
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
};
|
|
1306
|
+
//如果当前改变值的单元格在varJsonArr集合中存在,则说明是修改的超差提醒配置的相关单元格
|
|
1307
|
+
if (isValueChgedUse) {
|
|
1308
|
+
if (varJsonArr.some((itemVar) => itemVar.row == cellRowIndex && itemVar.col == cellColIndex)) {
|
|
1309
|
+
doEvent();
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
else {
|
|
1313
|
+
doEvent();
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
spread.resumeEvent();
|
|
1318
|
+
spread.resumeCalcService();
|
|
1319
|
+
spread.resumePaint();
|
|
1320
|
+
},
|
|
1090
1321
|
};
|
|
1091
1322
|
|
|
1092
1323
|
/**
|