diff --git a/src/jmapNew/theme/fuzhou_01/planConvert.js b/src/jmapNew/theme/fuzhou_01/planConvert.js index 3e233bad3..0163d7a31 100644 --- a/src/jmapNew/theme/fuzhou_01/planConvert.js +++ b/src/jmapNew/theme/fuzhou_01/planConvert.js @@ -12,235 +12,128 @@ export default { /** excel解析配置*/ ExcelConfig: { - // beginRow: 1, - // beginCol: 0, - // fieldNum: 10, - // trainId: '车次号', - // columns: ['备注', '车次号'] beginRow: 1, beginCol: 0, // fieldNum: 10, - columns: { - '默认上行折返轨': { key: 'upTrack', formatter: (val) => { return val; } }, - '默认下行折返轨': { key: 'downTrack', formatter: (val) => { return val; } } - } + trainId: '车次号', + columns: ['备注', '车次号'] + // beginRow: 1, + // beginCol: 0, + // // fieldNum: 10, + // columns: { + // '默认上行折返轨': { key: 'upTrack', formatter: (val) => { return val; } }, + // '默认下行折返轨': { key: 'downTrack', formatter: (val) => { return val; } } + // } }, - /** 解析exal数据转换为Json后台数据*/ - importData(Sheet, JsonData) { - const dataList = convertSheetToList(Sheet, true); - const needList = Object.keys(this.ExcelConfig.columns); - const tripObj = { upTrack: '', downTrack: '' }; - if (dataList && dataList.length && dataList[1] && dataList[0]) { - const tIndex = dataList.findIndex(it => { return it[0]; }); - if (dataList[0][0] == needList[0] && dataList[1][0] == needList[1]) { - for (var colIndex = this.ExcelConfig.beginCol; colIndex < dataList.length; colIndex += 1) { - var isContinue = true; - - for (var rowIndex = this.ExcelConfig.beginRow; isContinue; rowIndex += 1) { - isContinue = false; - - var title = dataList[colIndex][0]; - var value = dataList[colIndex][rowIndex]; - - if (title && value) { - // 数据列解析 - isContinue = true; - var titleStr = `${title}`.replace(/\s*/g, ''); - var valueStr = `${value}`.replace(/\s*/g, ''); - - // 取需要的字段 - if (needList.findIndex(elem => { return elem == titleStr; }) >= 0) { - tripObj[this.ExcelConfig.columns[titleStr].key] = this.ExcelConfig.columns[titleStr].formatter(valueStr); - } - } - - } - } - } else { - /** 解析二维数组为json对象*/ - const reg0 = /^[↑|↓|¡|ü|ý|]+(.*)/; // ↑|↓ - const reg1 = /^([▼|▲|¡ø|¨‹]+)\s*(\d+:\d+:\d+)/; // ▲ 06:10:00 - const reg2 = /^(\d+:\d+:\d+)\s*([▼|▲|¡ø|¨‹]+)/; // 06:10:00 ▲ - const reg3 = /^(\d+:\d+:\d+)\s*(\d+:\d+:\d+|)/; // 06:10:00 06:12:00 - const reg4 = /[▼|▲|¡|ø|¨|‹]+/; // ▲ - - dataList.forEach((elem, i) => { - var begin = -1; - /** 跳过名称所在的行*/ - if (i != tIndex && elem && elem.length > 0) { - elem.forEach((item, j) => { - /** 过滤空值*/ - if (item) { - var value = `${item}`.trim(); - var title = `${dataList[tIndex][j]}`.replace(/\s*/g, ''); - /** 匹配到开始位置或者结束位置*/ - if (reg0.test(value)) { - if (begin == -1) { - begin = value; // 设置初始索引 - JsonData.push({ - code: reg0.exec(value)[1], - arrivalList: [] - }); - } else if (begin === value) { - begin = -1; // 清空初始索引 - } - } else if (begin !== -1) { - /** 匹配到中间位置*/ - var begTime, endTime; - var runFlag = JsonData[JsonData.length - 1].code[2]; - var stationName = title.replace(/\s/, ''); - var need = false; - var flag = false; - if (reg1.test(value)) { - /** 含有特殊字符的时间格式*/ - [, begTime, endTime] = reg1.exec(value); - - begTime = reg4.test(begTime) ? '' : begTime; - endTime = reg4.test(endTime) ? '' : endTime; - - /** 下行方向时间互换*/ - if (runFlag === '2') { - [begTime, endTime] = [endTime, begTime]; - } - - /** 设置标志*/ - [need, flag] = [true, true]; - } else if (reg2.test(value)) { - /** 含有特殊字符的时间格式*/ - [, begTime, endTime] = reg2.exec(value); - - begTime = reg4.test(begTime) ? '' : begTime; - endTime = reg4.test(endTime) ? '' : endTime; - - /** 下行方向时间互换*/ - if (runFlag === '2') { - [begTime, endTime] = [endTime, begTime]; - } - - /** 设置标志*/ - [need, flag] = [true, true]; - } else if (reg3.test(value)) { - /** 正常时间格式*/ - [, begTime, endTime] = reg3.exec(value); - - /** 如果只存在一个数据时,则开始和结束设置一样*/ - endTime = endTime || begTime; - - /** 下行方向时间互换*/ - if (runFlag === '2') { - [begTime, endTime] = [endTime, begTime]; - } - - /** 设置标志*/ - [need, flag] = [true, false]; - } - - /** 添加json数据*/ - if (need) { // 储存非空 数据 - var stationObj = { - stationName: stationName - }; - - if (begTime) { stationObj['arriveTime'] = prefixTime(begTime); } - if (endTime) { stationObj['departureTime'] = prefixTime(endTime); } - if (flag) { stationObj['flag'] = flag; } // 是否转换轨 - JsonData[JsonData.length - 1].arrivalList.push(stationObj); - } - } - } - }); - } - }); - } - } - JsonData.forEach(item => { - item['upTrack'] = tripObj.upTrack; - item['downTrack'] = tripObj.downTrack; - }); - - return JsonData; - }, // /** 解析exal数据转换为Json后台数据*/ // importData(Sheet, JsonData) { // const dataList = convertSheetToList(Sheet, true); + // const needList = Object.keys(this.ExcelConfig.columns); + // const tripObj = { upTrack: '', downTrack: '' }; // if (dataList && dataList.length && dataList[1] && dataList[0]) { - // const tIndex = 8; // 设置不用过滤行数 - // /** 解析二维数组为json对象*/ - // const reg3 = /^(\d+:\d+:\d+|)/; // 06:12:00 - // const reg4 = /[▼|▲|¡|ø|¨|‹]+/; // ▲ - // dataList.forEach((elem, i) => { - // var begin = -1; - // /** 跳过名称所在的行*/ - // if (i != tIndex && elem && elem.length > 0) { - // let flag = false; - // let param = { begTime: '', endTime: '' }; - // if (i > tIndex) { elem.reverse(); } - // let interval = 1; - // for (let j = 0; j < elem.length;) { - // const item = elem[j]; - // let title = ''; - // var value = `${item}`.trim(); - // if (i > tIndex) { // 上行线 - // title = `${dataList[tIndex][dataList[tIndex].length - j - 1]}`.replace(/\s*/g, ''); - // if (title == 'undefined') { - // title = `${dataList[tIndex][dataList[tIndex].length - j - 2]}`.replace(/\s*/g, ''); - // } - // } else { // 下行线 - // title = `${dataList[tIndex][j]}`.replace(/\s*/g, ''); - // if (title == 'undefined') { - // title = `${dataList[tIndex][j - 1]}`.replace(/\s*/g, ''); + // const tIndex = dataList.findIndex(it => { return it[0]; }); + // if (dataList[0][0] == needList[0] && dataList[1][0] == needList[1]) { + // for (var colIndex = this.ExcelConfig.beginCol; colIndex < dataList.length; colIndex += 1) { + // var isContinue = true; + + // for (var rowIndex = this.ExcelConfig.beginRow; isContinue; rowIndex += 1) { + // isContinue = false; + + // var title = dataList[colIndex][0]; + // var value = dataList[colIndex][rowIndex]; + + // if (title && value) { + // // 数据列解析 + // isContinue = true; + // var titleStr = `${title}`.replace(/\s*/g, ''); + // var valueStr = `${value}`.replace(/\s*/g, ''); + + // // 取需要的字段 + // if (needList.findIndex(elem => { return elem == titleStr; }) >= 0) { + // tripObj[this.ExcelConfig.columns[titleStr].key] = this.ExcelConfig.columns[titleStr].formatter(valueStr); // } // } - // /** 匹配到开始位置或者结束位置*/ - // if (title == this.ExcelConfig.trainId && value != 'undefined') { - // if (begin == -1) { - // interval = 2; - // flag = true; - // begin = value; // 设置初始索引 - // JsonData.push({ - // code: value, - // destinationCode: '', - // arrivalList: [] - // }); - // } else if (flag) { - // interval = 1; - // begin = -1; // 清空初始索引 - // JsonData[JsonData.length - 1].destinationCode = value; - // flag = false; - // } - // } else if (title == this.ExcelConfig.columns[0]) { - // interval = 1; - // } else if (begin !== -1) { - // const item1 = `${elem[j]}`.trim(); - // const item2 = `${elem[j + 1]}`.trim(); - // if (item1 != 'undefined' || item2 != 'undefined') { - // /** 匹配到中间位置*/ - // var stationName = title.replace(/\s/, ''); - // const flag = reg3.test(item1) || reg3.test(item2); - // if (this.ExcelConfig.columns.indexOf(stationName) == -1 && flag) { - // let need = false; - // if (value.split(':')[0] == '24') { // 24:XX:XX 类似这种数据 变24为00 - // const arr = value.split(':'); - // arr[0] = '00'; - // value = arr.join(':'); - // } - // const item1 = elem[j] ? `${elem[j]}`.trim() : ''; - // const item2 = elem[j + 1] ? `${elem[j + 1]}`.trim() : ''; - // if (item1 && item2) { - // param.begTime = item1; - // param.endTime = item2; - // } else if (item1 && !item2) { - // param.begTime = item1; - // param.endTime = item1; - // } else if (!item1 && item2) { - // param.begTime = item2; - // param.endTime = item2; - // } + // } + // } + // } else { + // /** 解析二维数组为json对象*/ + // const reg0 = /^[↑|↓|¡|ü|ý|]+(.*)/; // ↑|↓ + // const reg1 = /^([▼|▲|¡ø|¨‹]+)\s*(\d+:\d+:\d+)/; // ▲ 06:10:00 + // const reg2 = /^(\d+:\d+:\d+)\s*([▼|▲|¡ø|¨‹]+)/; // 06:10:00 ▲ + // const reg3 = /^(\d+:\d+:\d+)\s*(\d+:\d+:\d+|)/; // 06:10:00 06:12:00 + // const reg4 = /[▼|▲|¡|ø|¨|‹]+/; // ▲ - // if (param.begTime && param.endTime) { - // need = true; + // dataList.forEach((elem, i) => { + // var begin = -1; + // /** 跳过名称所在的行*/ + // if (i != tIndex && elem && elem.length > 0) { + // elem.forEach((item, j) => { + // /** 过滤空值*/ + // if (item) { + // var value = `${item}`.trim(); + // var title = `${dataList[tIndex][j]}`.replace(/\s*/g, ''); + // /** 匹配到开始位置或者结束位置*/ + // if (reg0.test(value)) { + // if (begin == -1) { + // begin = value; // 设置初始索引 + // JsonData.push({ + // code: reg0.exec(value)[1], + // arrivalList: [] + // }); + // } else if (begin === value) { + // begin = -1; // 清空初始索引 + // } + // } else if (begin !== -1) { + // /** 匹配到中间位置*/ + // var begTime, endTime; + // var runFlag = JsonData[JsonData.length - 1].code[2]; + // var stationName = title.replace(/\s/, ''); + // var need = false; + // var flag = false; + // if (reg1.test(value)) { + // /** 含有特殊字符的时间格式*/ + // [, begTime, endTime] = reg1.exec(value); + + // begTime = reg4.test(begTime) ? '' : begTime; + // endTime = reg4.test(endTime) ? '' : endTime; + + // /** 下行方向时间互换*/ + // if (runFlag === '2') { + // [begTime, endTime] = [endTime, begTime]; + // } + + // /** 设置标志*/ + // [need, flag] = [true, true]; + // } else if (reg2.test(value)) { + // /** 含有特殊字符的时间格式*/ + // [, begTime, endTime] = reg2.exec(value); + + // begTime = reg4.test(begTime) ? '' : begTime; + // endTime = reg4.test(endTime) ? '' : endTime; + + // /** 下行方向时间互换*/ + // if (runFlag === '2') { + // [begTime, endTime] = [endTime, begTime]; + // } + + // /** 设置标志*/ + // [need, flag] = [true, true]; + // } else if (reg3.test(value)) { + // /** 正常时间格式*/ + // [, begTime, endTime] = reg3.exec(value); + + // /** 如果只存在一个数据时,则开始和结束设置一样*/ + // endTime = endTime || begTime; + + // /** 下行方向时间互换*/ + // if (runFlag === '2') { + // [begTime, endTime] = [endTime, begTime]; + // } + + // /** 设置标志*/ + // [need, flag] = [true, false]; // } // /** 添加json数据*/ @@ -248,27 +141,140 @@ export default { // var stationObj = { // stationName: stationName // }; - // if (reg4.test(param.begTime)) { - // param.begTime = ''; - // } - // if (reg4.test(param.endTime)) { - // param.endTime = ''; - // } - // stationObj['arriveTime'] = prefixTime(param.begTime); - // stationObj['departureTime'] = prefixTime(param.endTime); + + // if (begTime) { stationObj['arriveTime'] = prefixTime(begTime); } + // if (endTime) { stationObj['departureTime'] = prefixTime(endTime); } + // if (flag) { stationObj['flag'] = flag; } // 是否转换轨 // JsonData[JsonData.length - 1].arrivalList.push(stationObj); - // param = { begTime: '', endTime: '' }; // } // } // } - // } - // j = j + interval; + // }); // } - // } - // }); + // }); + // } // } + // JsonData.forEach(item => { + // item['upTrack'] = tripObj.upTrack; + // item['downTrack'] = tripObj.downTrack; + // }); + // return JsonData; // }, + /** 解析exal数据转换为Json后台数据*/ + importData(Sheet, JsonData) { + const dataList = convertSheetToList(Sheet, true); + if (dataList && dataList.length && dataList[1] && dataList[0]) { + const tIndex = 8; // 设置不用过滤行数 + /** 解析二维数组为json对象*/ + const reg3 = /^(\d+:\d+:\d+|)/; // 06:12:00 + const reg4 = /[▼|▲|¡|ø|¨|‹]+/; // ▲ + dataList.forEach((elem, i) => { + var begin = -1; + /** 跳过名称所在的行*/ + if (i != tIndex && elem && elem.length > 0) { + let flag = false; + let param = { begTime: '', endTime: '' }; + if (i > tIndex) { elem.reverse(); } + let interval = 1; + for (let j = 0; j < elem.length;) { + const item = elem[j]; + let title = ''; + var value = `${item}`.trim(); + if (i > tIndex) { // 上行线 + title = `${dataList[tIndex][dataList[tIndex].length - j - 1]}`.replace(/\s*/g, ''); + if (title == 'undefined') { + title = `${dataList[tIndex][dataList[tIndex].length - j - 2]}`.replace(/\s*/g, ''); + } + } else { // 下行线 + title = `${dataList[tIndex][j]}`.replace(/\s*/g, ''); + if (title == 'undefined') { + title = `${dataList[tIndex][j - 1]}`.replace(/\s*/g, ''); + } + } + + /** 匹配到开始位置或者结束位置*/ + if (title == this.ExcelConfig.trainId && value != 'undefined') { + if (begin == -1) { + interval = 2; + flag = true; + begin = value; // 设置初始索引 + JsonData.push({ + code: value, + destinationCode: '', + arrivalList: [] + }); + } else if (flag) { + interval = 1; + begin = -1; // 清空初始索引 + JsonData[JsonData.length - 1].destinationCode = value; + flag = false; + } + } else if (title == this.ExcelConfig.columns[0]) { + interval = 1; + } else if (begin !== -1) { + const item1 = `${elem[j]}`.trim(); + const item2 = `${elem[j + 1]}`.trim(); + if (item1 != 'undefined' || item2 != 'undefined') { + /** 匹配到中间位置*/ + var stationName = title.replace(/\s/, ''); + const flag = reg3.test(item1) || reg3.test(item2); + if (this.ExcelConfig.columns.indexOf(stationName) == -1 && flag) { + let need = false; + if (value.split(':')[0] == '24') { // 24:XX:XX 类似这种数据 变24为00 + const arr = value.split(':'); + arr[0] = '00'; + value = arr.join(':'); + } + const item1 = elem[j] ? `${elem[j]}`.trim() : ''; + const item2 = elem[j + 1] ? `${elem[j + 1]}`.trim() : ''; + if (item1 && item2) { + param.begTime = item1; + param.endTime = item2; + } else if (item1 && !item2) { + param.begTime = item1; + param.endTime = item1; + } else if (!item1 && item2) { + param.begTime = item2; + param.endTime = item2; + } + + if (param.begTime && param.endTime) { + need = true; + } + + /** 添加json数据*/ + if (need) { // 储存非空 数据 + var stationObj = { + stationName: stationName + }; + if (reg4.test(param.begTime)) { + param.begTime = ''; + } + if (reg4.test(param.endTime)) { + param.endTime = ''; + } + stationObj['arriveTime'] = prefixTime(param.begTime); + stationObj['departureTime'] = prefixTime(param.endTime); + JsonData[JsonData.length - 1].arrivalList.push(stationObj); + param = { begTime: '', endTime: '' }; + } + } + } + } + j = j + interval; + } + } + }); + } + const arr = []; + JsonData.forEach((item, i) => { + if (item.code) { + arr.push(item); + } + }); + return arr; + }, /** 将后台数据解析成图表*/ convertDataToModels(data, stations, kmRangeCoordMap, lineStyle) { diff --git a/src/views/planMonitor/editTool/menus/createEmptyPlan.vue b/src/views/planMonitor/editTool/menus/createEmptyPlan.vue index a89d2047f..1ed6aa68f 100644 --- a/src/views/planMonitor/editTool/menus/createEmptyPlan.vue +++ b/src/views/planMonitor/editTool/menus/createEmptyPlan.vue @@ -220,22 +220,22 @@ export default { jsonData = that.planConvert.importData(wb.Sheets[index], jsonData); } - if (that.$route.query.lineCode == '02' && !jsonData[0].downTrack && !jsonData[0].upTrack) { + // if (that.$route.query.lineCode == '02' && !jsonData[0].downTrack && !jsonData[0].upTrack) { + // that.loadingDig.close(); + // that.$message.warning(`运行图暂无默认上行折返轨或默认下行折返轨,请输入`); + // } else { + importRunPlan({ mapId: that.$route.params.mapId || that.$route.query.mapId || '02', runPlanList: jsonData }).then(response => { that.loadingDig.close(); - that.$message.warning(`运行图暂无默认上行折返轨或默认下行折返轨,请输入`); - } else { - importRunPlan({ mapId: that.$route.params.mapId || that.$route.query.mapId || '02', runPlanList: jsonData }).then(response => { - that.loadingDig.close(); - if (response && response.code == 200) { - that.$message.success(that.$t('tip.importOperationGraphSuccessfully')); - that.$emit('refresh'); + if (response && response.code == 200) { + that.$message.success(that.$t('tip.importOperationGraphSuccessfully')); + that.$emit('refresh'); // this.$emit('dispatchDialog', { name: 'openRunPlan', params: {type: 'add'} }); - } - }).catch(error => { - that.loadingDig.close(); - that.$message.warning(`${that.$t('tip.importRunGraphFailed')} ${error.message}`); - }); - } + } + }).catch(error => { + that.loadingDig.close(); + that.$message.warning(`${that.$t('tip.importRunGraphFailed')} ${error.message}`); + }); + // } } catch (error) { that.loadingDig.close(); that.$message.warning(`${that.$t('tip.parseRunGraphFailed')} ${error.message}`);