Commit ce44d230 authored by 何远江's avatar 何远江

取消标题区域验证,添加标题去空格,修改标题获取字符串不全问题

parent 4b1addfe
......@@ -557,46 +557,23 @@ const setAreaMark = async (type: 'data' | 'head' = 'data') => {
*/
const result: Recordable[] = []
const rangeData = luckysheet.getRangeValue()
console.log(rangeData, '-----')
// return
const { beginColum, beginRow, endColum, endRow } = formState as Recordable
const { beginColum: bc, beginRow: br, endColum: ec, endRow: er } = currentAreaMark
// const isOneColumn = bc == ec
// 是否是纵向
let isVertical = rangeData.length > 1
if (!isRangeSide(unref(currentAreaMark), unref(formState))) {
return ElMessage.error('请选择区域边缘作为标题!')
}
// let position = 'left'
// if (beginRow == endRow) { // 横向
// isVertical = false
// if (beginRow == br) { // 上边
// position = 'top'
// } else if (beginRow == er) { // 下边
// position = 'bottom'
// } else {
// return ElMessage.error('请选择区域边缘作为标题!')
// }
// } else if (beginColum == endColum) { // 纵向
// isVertical = true
// if (beginColum == bc) { // 左边
// position = 'left'
// } else if (beginColum == ec) { // 右边
// position = 'right'
// } else {
// if (!isRangeSide(unref(currentAreaMark), unref(formState))) {
// return ElMessage.error('请选择区域边缘作为标题!')
// }
// }
if (isVertical) {
// if (er - br + 1 != rangeData.length) {
// return ElMessage.error('请选择区域边缘作为标题区!')
// }
for (let r = 0; r < rangeData.length; r++) {
const item = rangeData[r][0]
const title = item.v || item.ct.s.map((itm) => itm.v).join('')
result.push({
title: item.v || item.ct.s[0].v,
title: title.replaceAll(' ', ''),
sheet: formState.sheetNum,
row: +beginRow + r,
colum: beginColum
......@@ -608,28 +585,11 @@ const setAreaMark = async (type: 'data' | 'head' = 'data') => {
}
} else {
// // 如果只有一列,只能是头部或者尾部
// if (isOneColumn) {
// console.log('isOneColumn')
// if (endColum != ec) {
// return ElMessage.error('请选择区域边缘作为标题区!')
// }
// if (rangeData[0].length == 1) {
// if (endRow == br || beginRow == er) {
// } else {
// return ElMessage.error('请选择区域边缘作为标题区!')
// }
// } else {
// return ElMessage.error('请选择区域边缘作为标题区!')
// }
// }
// if (ec - bc + 1 != rangeData[0].length) {
// return ElMessage.error('请选择区域边缘作为标题区!')
// }
for (let c = 0; c < rangeData[0].length; c++) {
const item = rangeData[0][c]
console.log(item, '======')
const title = item.v || item.ct.s.map((itm) => itm.v).join('')
result.push({
title: item.v || item.ct.s[0].v,
title: title.replaceAll(' ', ''),
sheet: formState.sheetNum,
row: beginRow,
colum: +beginColum + c
......@@ -642,18 +602,42 @@ const setAreaMark = async (type: 'data' | 'head' = 'data') => {
}
// 清除之前的title颜色
resetCurrentHeadArea(() => {
luckysheet.setRangeShow({
row: [beginRow, endRow],
column: [beginColum, endColum]
})
currentAreaMark.excelAreaTitle = result
})
// resetCurrentHeadArea(() => {
// luckysheet.setRangeShow({
// row: [beginRow, endRow],
// column: [beginColum, endColum]
// })
// // currentAreaMark.excelAreaTitle = result
// })
// 合并组装的表头区域数据
// currentAreaMark.excelAreaTitle
// ? currentAreaMark.excelAreaTitle.push(...result)
// : (currentAreaMark.excelAreaTitle = result)
if (currentAreaMark.excelAreaTitle?.length > 0) {
const arr = [...result, ...unref(currentAreaMark.excelAreaTitle)]
// 合并,去重
currentAreaMark.excelAreaTitle = uniqArrayObject(arr)
} else {
currentAreaMark.excelAreaTitle = result
}
}
function uniqArrayObject(arr = []) {
return arr.reduce((cur, pre, index) => {
if (index == 0) {
cur.push(pre)
} else {
const isDiff = cur.every((item) => {
return (
item.column != pre.column ||
item.row != pre.row ||
item.sheet != pre.sheet ||
item.title != pre.title
)
})
isDiff && cur.push(pre)
}
return cur
}, [])
}
setTimeout(() => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment