|
@ -1,8 +1,8 @@ |
|
|
<template> |
|
|
<template> |
|
|
<q-tr |
|
|
<q-tr |
|
|
ref="trRef" |
|
|
ref="trRef" |
|
|
:no-hover="props.grid.props.selectedMode === selectedMode.row ? false : true" |
|
|
:no-hover="props.grid.props.selectMode === selectMode.row ? false : true" |
|
|
:class="row[table.selectedField] && props.grid.props.selectedMode === selectedMode.row ? 'selected' : ''" |
|
|
:class="row[table.selectedField] && props.grid.props.selectMode === selectMode.row ? 'selected' : ''" |
|
|
:draggable="draggableComputed" |
|
|
:draggable="draggableComputed" |
|
|
@click.stop.prevent="click($event, row, props.rowIndex)" |
|
|
@click.stop.prevent="click($event, row, props.rowIndex)" |
|
|
@dblclick.stop.prevent="dbClick($event, row, props.rowIndex)" |
|
|
@dblclick.stop.prevent="dbClick($event, row, props.rowIndex)" |
|
@ -13,21 +13,21 @@ |
|
|
> |
|
|
> |
|
|
<q-td |
|
|
<q-td |
|
|
:ref="(el) => setTdRef(el, cols[0])" |
|
|
:ref="(el) => setTdRef(el, cols[0])" |
|
|
:class="props.grid.props.selectedMode === selectedMode.cell ? firstTdClassComputed : 'nowrap text-nowrap'" |
|
|
:class="props.grid.props.selectMode === selectMode.cell ? firstTdClassComputed : 'nowrap text-nowrap'" |
|
|
:style="cols[0].type && table.bodyEditStatus !== 'none' ? 'width: ' + (tdWidth[cols[0].name] - 24) + 'px;' : ''" |
|
|
:style="cols[0].type && table.bodyEditStatus !== 'none' ? 'width: ' + (tdWidth[cols[0].name] - 24) + 'px;' : ''" |
|
|
@click=" |
|
|
@click=" |
|
|
() => { |
|
|
() => { |
|
|
// 判定是否要退出编辑模式 |
|
|
// 判定是否要退出编辑模式 |
|
|
if (props.grid.props.localMode && table.bodyEditStatus === editStatus.cell && props.grid.props.selectedMode === selectedMode.cell) { |
|
|
if (props.grid.props.localMode && table.bodyEditStatus === editStatus.cell && props.grid.props.selectMode === selectMode.cell) { |
|
|
if (table['cellSelected']['colName'] !== cols[0]['name'] || table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
if (table['cellSelected']['colName'] !== cols[0]['name'] || table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
table.bodyEditStatus = 'none'; |
|
|
table.bodyEditStatus = 'none'; |
|
|
} |
|
|
} |
|
|
} else if (props.grid.props.localMode && table.bodyEditStatus === editStatus.row && props.grid.props.selectedMode === selectedMode.cell) { |
|
|
} else if (props.grid.props.localMode && table.bodyEditStatus === editStatus.row && props.grid.props.selectMode === selectMode.cell) { |
|
|
if (table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
if (table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
table.bodyEditStatus = 'none'; |
|
|
table.bodyEditStatus = 'none'; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if (table.bodyEditStatus === 'none' && props.grid.props.selectedMode === selectedMode.cell) { |
|
|
if (table.bodyEditStatus === 'none' && props.grid.props.selectMode === selectMode.cell) { |
|
|
table['cellSelected'] = { |
|
|
table['cellSelected'] = { |
|
|
row: toRaw(props.row), |
|
|
row: toRaw(props.row), |
|
|
rowKey: props.row[props.rowKey], |
|
|
rowKey: props.row[props.rowKey], |
|
@ -85,7 +85,7 @@ |
|
|
bg-color="light-green-1" |
|
|
bg-color="light-green-1" |
|
|
@blur=" |
|
|
@blur=" |
|
|
() => { |
|
|
() => { |
|
|
if (props.grid.props.selectedMode === selectedMode.cell && table.bodyEditStatus === editStatus.cell) { |
|
|
if (props.grid.props.selectMode === selectMode.cell && table.bodyEditStatus === editStatus.cell) { |
|
|
// 失去焦点,退出编辑模式 |
|
|
// 失去焦点,退出编辑模式 |
|
|
table.bodyEditStatus = editStatus.none; |
|
|
table.bodyEditStatus = editStatus.none; |
|
|
table['cellSelected'] = {}; |
|
|
table['cellSelected'] = {}; |
|
@ -119,22 +119,22 @@ |
|
|
<q-td |
|
|
<q-td |
|
|
v-if="index > 0" |
|
|
v-if="index > 0" |
|
|
:ref="(el) => setTdRef(el, col)" |
|
|
:ref="(el) => setTdRef(el, col)" |
|
|
:class="props.grid.props.selectedMode === selectedMode.cell ? tdClassComputed(col) : col.__thClass + ' ' + col.classes" |
|
|
:class="props.grid.props.selectMode === selectMode.cell ? tdClassComputed(col) : col.__thClass + ' ' + col.classes" |
|
|
:title="getTitle(col)" |
|
|
:title="getTitle(col)" |
|
|
:style="col.style + (col.type && table.bodyEditStatus !== 'none' ? ';width: ' + (tdWidth[col.name] - 24) + 'px;' : '')" |
|
|
:style="col.style + (col.type && table.bodyEditStatus !== 'none' ? ';width: ' + (tdWidth[col.name] - 24) + 'px;' : '')" |
|
|
@click=" |
|
|
@click=" |
|
|
() => { |
|
|
() => { |
|
|
// 判定是否要退出编辑模式 |
|
|
// 判定是否要退出编辑模式 |
|
|
if (props.grid.props.localMode && table.bodyEditStatus === editStatus.cell && props.grid.props.selectedMode === selectedMode.cell) { |
|
|
if (props.grid.props.localMode && table.bodyEditStatus === editStatus.cell && props.grid.props.selectMode === selectMode.cell) { |
|
|
if (table['cellSelected']['colName'] !== col['name'] || table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
if (table['cellSelected']['colName'] !== col['name'] || table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
table.bodyEditStatus = 'none'; |
|
|
table.bodyEditStatus = 'none'; |
|
|
} |
|
|
} |
|
|
} else if (props.grid.props.localMode && table.bodyEditStatus === editStatus.row && props.grid.props.selectedMode === selectedMode.cell) { |
|
|
} else if (props.grid.props.localMode && table.bodyEditStatus === editStatus.row && props.grid.props.selectMode === selectMode.cell) { |
|
|
if (table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
if (table['cellSelected']['row'][props.rowKey] !== props.row[props.rowKey]) { |
|
|
table.bodyEditStatus = 'none'; |
|
|
table.bodyEditStatus = 'none'; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if (table.bodyEditStatus === 'none' && props.grid.props.selectedMode === selectedMode.cell) { |
|
|
if (table.bodyEditStatus === 'none' && props.grid.props.selectMode === selectMode.cell) { |
|
|
table['cellSelected'] = { |
|
|
table['cellSelected'] = { |
|
|
row: toRaw(props.row), |
|
|
row: toRaw(props.row), |
|
|
rowKey: props.row[props.rowKey], |
|
|
rowKey: props.row[props.rowKey], |
|
@ -161,15 +161,6 @@ |
|
|
v-bind="col.attrs" |
|
|
v-bind="col.attrs" |
|
|
v-model="props.getRow(table.rows, props.row[props.rowKey], false)[col.name]" |
|
|
v-model="props.getRow(table.rows, props.row[props.rowKey], false)[col.name]" |
|
|
bg-color="light-green-1" |
|
|
bg-color="light-green-1" |
|
|
@blur=" |
|
|
|
|
|
() => { |
|
|
|
|
|
if (props.grid.props.selectedMode === selectedMode.cell && table.bodyEditStatus === editStatus.cell) { |
|
|
|
|
|
// 失去焦点,退出编辑模式 |
|
|
|
|
|
table.bodyEditStatus = editStatus.none; |
|
|
|
|
|
table['cellSelected'] = {}; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
" |
|
|
|
|
|
></component> |
|
|
></component> |
|
|
</template> |
|
|
</template> |
|
|
<template v-else> |
|
|
<template v-else> |
|
@ -236,7 +227,7 @@ |
|
|
import { ref, computed, inject, toRaw, reactive, onMounted } from 'vue'; |
|
|
import { ref, computed, inject, toRaw, reactive, onMounted } from 'vue'; |
|
|
import { Tools, NotifyManager } from '@/platform'; |
|
|
import { Tools, NotifyManager } from '@/platform'; |
|
|
import GridEditToolbar from './GridEditToolbar.vue'; |
|
|
import GridEditToolbar from './GridEditToolbar.vue'; |
|
|
import { dndImage, dndMode, selectedMode, editStatus } from './ts/grid'; |
|
|
import { dndImage, dndMode, selectMode, editStatus } from './ts/grid'; |
|
|
|
|
|
|
|
|
const trRef = ref(); |
|
|
const trRef = ref(); |
|
|
const tdDivRef = ref(); |
|
|
const tdDivRef = ref(); |
|
@ -359,8 +350,8 @@ const getTitle = (col) => { |
|
|
|
|
|
|
|
|
const firstTdClassComputed = computed(() => { |
|
|
const firstTdClassComputed = computed(() => { |
|
|
const tdClass = <any>['nowrap', 'text-nowrap']; |
|
|
const tdClass = <any>['nowrap', 'text-nowrap']; |
|
|
if (props.grid.props.selectedMode === selectedMode.cell) { |
|
|
if (props.grid.props.selectMode === selectMode.cell) { |
|
|
tdClass.push('cellSelected_hover'); |
|
|
tdClass.push('cellHover'); |
|
|
} |
|
|
} |
|
|
if (table && table['cellSelected'] && Tools.hasOwnProperty(table['cellSelected'], 'colName')) { |
|
|
if (table && table['cellSelected'] && Tools.hasOwnProperty(table['cellSelected'], 'colName')) { |
|
|
if (table['cellSelected']['colName'] === props.cols[0]['name'] && table['cellSelected']['rowKey'] === props.row[props.rowKey]) { |
|
|
if (table['cellSelected']['colName'] === props.cols[0]['name'] && table['cellSelected']['rowKey'] === props.row[props.rowKey]) { |
|
@ -372,8 +363,8 @@ const firstTdClassComputed = computed(() => { |
|
|
const tdClassComputed = computed(() => { |
|
|
const tdClassComputed = computed(() => { |
|
|
return (col) => { |
|
|
return (col) => { |
|
|
let tdClass = col.__thClass + ' ' + col.classes; |
|
|
let tdClass = col.__thClass + ' ' + col.classes; |
|
|
if (props.grid.props.selectedMode === selectedMode.cell) { |
|
|
if (props.grid.props.selectMode === selectMode.cell) { |
|
|
tdClass += ' cellSelected_hover'; |
|
|
tdClass += ' cellHover'; |
|
|
} |
|
|
} |
|
|
if (table && table['cellSelected'] && Tools.hasOwnProperty(table['cellSelected'], 'colName')) { |
|
|
if (table && table['cellSelected'] && Tools.hasOwnProperty(table['cellSelected'], 'colName')) { |
|
|
if (table['cellSelected']['colName'] === col['name'] && table['cellSelected']['rowKey'] === props.row[props.rowKey]) { |
|
|
if (table['cellSelected']['colName'] === col['name'] && table['cellSelected']['rowKey'] === props.row[props.rowKey]) { |
|
@ -842,13 +833,13 @@ const click = (evt, row, rowIndex) => { |
|
|
if ( |
|
|
if ( |
|
|
props.grid.props.localMode && |
|
|
props.grid.props.localMode && |
|
|
table.bodyEditStatus !== editStatus.none && |
|
|
table.bodyEditStatus !== editStatus.none && |
|
|
props.grid.props.selectedMode === selectedMode.row && |
|
|
props.grid.props.selectMode === selectMode.row && |
|
|
selected && |
|
|
selected && |
|
|
row[props.rowKey] !== selected[props.rowKey] |
|
|
row[props.rowKey] !== selected[props.rowKey] |
|
|
) { |
|
|
) { |
|
|
// 退出编辑状态 |
|
|
// 退出编辑状态 |
|
|
table.bodyEditStatus = editStatus.none; |
|
|
table.bodyEditStatus = editStatus.none; |
|
|
} else if (table.bodyEditStatus === editStatus.none && props.grid.props.selectedMode !== selectedMode.none) { |
|
|
} else if (table.bodyEditStatus === editStatus.none && props.grid.props.selectMode !== selectMode.none) { |
|
|
if (!evt.ctrlKey) { |
|
|
if (!evt.ctrlKey) { |
|
|
props.grid.clearSelected(); |
|
|
props.grid.clearSelected(); |
|
|
} |
|
|
} |
|
|