|
@@ -751,5 +751,148 @@ let pageCCOprObj = {
|
|
|
projectObj.mainSpread.getActiveSheet().autoFitRow(activeCell.row);
|
|
|
}
|
|
|
});
|
|
|
- }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 根据配置转换清单项目特征
|
|
|
+ *
|
|
|
+ * @param {Object} node - 选中的node节点
|
|
|
+ * @param {Object} setting - 设置
|
|
|
+ * @return {void}
|
|
|
+ */
|
|
|
+ buildCharacterBySetting: function(node, setting) {
|
|
|
+ let contentArray = [];
|
|
|
+ // 特征部分
|
|
|
+ const itemCharacter = node.data.itemCharacter;
|
|
|
+
|
|
|
+ if (itemCharacter === undefined || itemCharacter.length <= 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let characterArray = [];
|
|
|
+ for (const tmp of itemCharacter) {
|
|
|
+ if (tmp.eigenvalue === undefined || tmp.eigenvalue.length <= 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 获取选中的特征值
|
|
|
+ let selectedEigen = '';
|
|
|
+ for (const eigen of tmp.eigenvalue) {
|
|
|
+ if (eigen.isSelected) {
|
|
|
+ selectedEigen = eigen.value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 匹配设置的序号格式
|
|
|
+ const serialNo = this.formatSerialNumber(setting.serialType, tmp.serialNo);
|
|
|
+ let characterString = '';
|
|
|
+ // 特征生成方式
|
|
|
+ switch (setting.characterFormat) {
|
|
|
+ case '1':
|
|
|
+ // 特征值
|
|
|
+ characterString = serialNo + selectedEigen;
|
|
|
+ break;
|
|
|
+ case '2':
|
|
|
+ // 特征:特征值
|
|
|
+ characterString = serialNo + tmp.character + ':' + selectedEigen;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ characterArray.push(characterString);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 内容部分
|
|
|
+ const itemJob = node.data.jobContent;
|
|
|
+ if (itemJob === undefined || itemJob.length <= 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let jobArray = [];
|
|
|
+ for (const tmp of itemJob) {
|
|
|
+ // 匹配设置的序号格式
|
|
|
+ const serialNo = this.formatSerialNumber(setting.serialType, tmp.serialNo);
|
|
|
+ jobArray.push(serialNo + tmp.content)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 组合数据
|
|
|
+ let content = '';
|
|
|
+ switch (setting.addContent) {
|
|
|
+ case "1":
|
|
|
+ // 项目特征+工作内容
|
|
|
+ contentArray.push('[项目特征]');
|
|
|
+ contentArray.push.apply(contentArray, characterArray);
|
|
|
+ contentArray.push('[工作内容]');
|
|
|
+ contentArray.push.apply(contentArray, jobArray);
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ // 工作内容+项目特征
|
|
|
+ contentArray.push('[工作内容]');
|
|
|
+ contentArray.push.apply(contentArray, jobArray);
|
|
|
+ contentArray.push('[项目特征]');
|
|
|
+ contentArray.push.apply(contentArray, characterArray);
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ // 项目特征
|
|
|
+ contentArray.push(characterArray);
|
|
|
+ break;
|
|
|
+ case "4":
|
|
|
+ // 工作内容
|
|
|
+ contentArray.push(jobArray);
|
|
|
+ break;
|
|
|
+ case "5":
|
|
|
+ // 定额子目
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 显示格式
|
|
|
+ switch (setting.displayFormat) {
|
|
|
+ case "1":
|
|
|
+ // 换行分隔
|
|
|
+ content = contentArray.join('\r\n');
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ // 逗号分隔
|
|
|
+ content = contentArray.join(',');
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ // 括号分隔
|
|
|
+ content = '(' + contentArray.join(',') + ')';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 添加到对应位置
|
|
|
+ switch (setting.position) {
|
|
|
+ case "1":
|
|
|
+ // 添加到项目特征列
|
|
|
+ node.data.itemCharacterText = content;
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ // 添加到清单名称列
|
|
|
+ node.data.name = content;
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ // 添加到工作内容列
|
|
|
+ node.data.jobContentText = content;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 格式化序号格式
|
|
|
+ *
|
|
|
+ * @param {Number} type - 格式化的类型
|
|
|
+ * @param {String} serialNo - 待格式化的序号
|
|
|
+ * @return {String} - 返回格式化后的字符
|
|
|
+ */
|
|
|
+ formatSerialNumber: function(type, serialNo) {
|
|
|
+ const letter = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
|
|
|
+ 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
|
|
|
+ switch (type) {
|
|
|
+ case '1':
|
|
|
+ // 数字
|
|
|
+ serialNo = serialNo + '.';
|
|
|
+ break;
|
|
|
+ case '2':
|
|
|
+ // 英文字母(小写)
|
|
|
+ serialNo = letter[serialNo - 1] !== undefined ? letter[serialNo - 1] + '.' : '';
|
|
|
+ break;
|
|
|
+ case '3':
|
|
|
+ // 英文字母(大写)
|
|
|
+ serialNo = letter[serialNo - 1] !== undefined ? letter[serialNo - 1].toUpperCase() + '.' : '';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return serialNo;
|
|
|
+ },
|
|
|
}
|