|
|
@@ -8,7 +8,8 @@
|
|
|
* @version
|
|
|
*/
|
|
|
const XML_EXPORT_BASE = (() => {
|
|
|
-
|
|
|
+ // 自检提示的开始记号,区分提示属于哪一部分的类型(eg: 招标、控制价),便于后续做提示的合并去重
|
|
|
+ const HINT_START = '--start--';
|
|
|
// 属性类型
|
|
|
const TYPE = {
|
|
|
DATE: 1, //日期类型YYYY-MM-DD
|
|
|
@@ -40,7 +41,7 @@ const XML_EXPORT_BASE = (() => {
|
|
|
coe: 'priceCoe' // 价格指数调整法
|
|
|
};
|
|
|
// 加载数据间隔,减少服务器压力
|
|
|
- const TIMEOUT_TIME = 500;
|
|
|
+ const TIMEOUT_TIME = 200;
|
|
|
// 导出粒度
|
|
|
const GRANULARITY = {
|
|
|
PROJECT: 1, //导出建设项目
|
|
|
@@ -55,6 +56,7 @@ const XML_EXPORT_BASE = (() => {
|
|
|
};
|
|
|
// 配置项
|
|
|
const CONFIG = Object.freeze({
|
|
|
+ HINT_START,
|
|
|
TYPE,
|
|
|
WHITE_SPACE,
|
|
|
TAX_TYPE,
|
|
|
@@ -164,7 +166,7 @@ const XML_EXPORT_BASE = (() => {
|
|
|
let dateReg = /([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))/;
|
|
|
for (let data of datas) {
|
|
|
// 值统一转换成String
|
|
|
- data.value = !isDef(data.value)
|
|
|
+ data.value = !hasValue(data.value)
|
|
|
? DEFAULT_VALUE[data.type]
|
|
|
? DEFAULT_VALUE[data.type]
|
|
|
: ''
|
|
|
@@ -238,6 +240,60 @@ const XML_EXPORT_BASE = (() => {
|
|
|
}
|
|
|
return rst;
|
|
|
}
|
|
|
+ // 提取各导出类型的自检数据
|
|
|
+ function _extractHintParts(failList) {
|
|
|
+ let rst = [],
|
|
|
+ curPart;
|
|
|
+ for (let hint of failList) {
|
|
|
+ if (hint === HINT_START) {
|
|
|
+ curPart = [];
|
|
|
+ rst.push(curPart);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ curPart.push(hint);
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ }
|
|
|
+ // 自检提示去重
|
|
|
+ function deWeightHints(failList) {
|
|
|
+ let rst = [];
|
|
|
+ let hintParts = _extractHintParts(failList);
|
|
|
+ // 建设项目提示文本
|
|
|
+ let rootHints = [],
|
|
|
+ // 单位工程提示文本映射
|
|
|
+ tenderMap = {},
|
|
|
+ reg = /^<span style="font-weight: bold">单位工程/;
|
|
|
+ for (let hintPart of hintParts) {
|
|
|
+ // 单位工程xxx提示
|
|
|
+ let curTenderHint;
|
|
|
+ // 提取建设项目提示、各自单位工程提示
|
|
|
+ for (let hint of hintPart) {
|
|
|
+ if (reg.test(hint)) {
|
|
|
+ curTenderHint = hint;
|
|
|
+ if (!tenderMap[curTenderHint]) {
|
|
|
+ tenderMap[curTenderHint] = [];
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (curTenderHint) {
|
|
|
+ tenderMap[curTenderHint].push(hint);
|
|
|
+ } else {
|
|
|
+ rootHints.push(hint);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 建设项目提示去重,放入结果中
|
|
|
+ rootHints = [...new Set(rootHints)];
|
|
|
+ rst.push(...rootHints);
|
|
|
+ // 单位工程提示放入结果中
|
|
|
+ for (let tenderHint in tenderMap) {
|
|
|
+ rst.push(tenderHint);
|
|
|
+ // 单位工程提示去重
|
|
|
+ let tenderHints = [...new Set(tenderMap[tenderHint])];
|
|
|
+ rst.push(...tenderHints);
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ }
|
|
|
// 等待一段时间
|
|
|
function setTimeoutSync(handle, time) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
@@ -609,6 +665,7 @@ const XML_EXPORT_BASE = (() => {
|
|
|
}
|
|
|
|
|
|
const UTIL = Object.freeze({
|
|
|
+ deWeightHints,
|
|
|
isDef,
|
|
|
hasValue,
|
|
|
setTimeoutSync,
|