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

标题区域设置区域限制添加

parent 2225740b
......@@ -516,7 +516,7 @@ const setAreaMark = async (type: 'data' | 'head' = 'data') => {
'checkNumber'
])
} else {
if (!currentAreaMark.excelAreaTitle) {
if (!currentAreaMark.excelAreaNicname) {
return ElMessage.error('请先设置数据区!')
}
// 判断是否在同一sheet
......@@ -536,9 +536,33 @@ const setAreaMark = async (type: 'data' | 'head' = 'data') => {
const { beginColum, beginRow, endColum, endRow } = formState as Recordable
const { beginColum: bc, beginRow: br, endColum: ec, endRow: er } = currentAreaMark
// const isOneColumn = bc == ec
// 是否是纵向
const isVertical = rangeData.length > 1
// const isDirection = rangeData.length == 1
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 {
// return ElMessage.error('请选择区域边缘作为标题!')
// }
// }
if (isVertical) {
// if (er - br + 1 != rangeData.length) {
// return ElMessage.error('请选择区域边缘作为标题区!')
......@@ -557,6 +581,21 @@ 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('请选择区域边缘作为标题区!')
// }
......@@ -596,6 +635,29 @@ const setAreaMark = async (type: 'data' | 'head' = 'data') => {
luckysheet.setRangeFormat('bg', areaMarksColor[type])
}, 100)
}
const isRangeSide = (range, insideRage) => {
const { beginColum, beginRow, endColum, endRow } = range
const { beginColum: bc, beginRow: br, endColum: ec, endRow: er } = insideRage
const sides = []
// 上
sides.push({ br: beginRow, er: beginRow, bc: beginColum, ec: endColum })
// 右
sides.push({ br: beginRow, er: endRow, bc: endColum, ec: endColum })
//下
sides.push({ br: endRow, er: endRow, bc: beginColum, ec: endColum })
// 左
sides.push({ br: beginRow, er: endRow, bc: beginColum, ec: beginColum })
const side = { br, bc, er, ec }
console.log('isRangeside', side, sides)
return !!sides.filter((item) => {
return item.bc == bc && item.br == br && item.ec == ec && item.er == er
}).length
}
const resetCurrentAreaState = (isedit: boolean = false) => {
// 重置 其他属性
const tmp: Recordable = {
......
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