|
|
@@ -68,7 +68,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
/** 监听vxe滚动条位置 */
|
|
|
function handleVxeScroll(event) {
|
|
|
- let { scroll } = data;
|
|
|
+ const { scroll } = data;
|
|
|
|
|
|
// 记录滚动条的位置
|
|
|
scroll.top = event.scrollTop;
|
|
|
@@ -81,7 +81,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
// 当手动勾选单选时触发的事件
|
|
|
function handleVxeRadioChange(event) {
|
|
|
- let row = event.$table.getRadioRecord();
|
|
|
+ const row = event.$table.getRadioRecord();
|
|
|
data.selectedRows.value = row ? [row] : [];
|
|
|
handleSelectChange('radio', data.selectedRows.value, event);
|
|
|
}
|
|
|
@@ -122,7 +122,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
// 点击单元格时触发的事件
|
|
|
function handleCellClick(event) {
|
|
|
- let { row, column, $event, $table } = event;
|
|
|
+ const { row, column, $event, $table } = event;
|
|
|
|
|
|
// 点击了可编辑的
|
|
|
if (column.editRender) {
|
|
|
@@ -187,7 +187,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
// 返回值决定单元格是否可以编辑
|
|
|
function handleActiveMethod({ row, column }) {
|
|
|
- let flag = (() => {
|
|
|
+ const flag = (() => {
|
|
|
if (props.disabled) {
|
|
|
return false;
|
|
|
}
|
|
|
@@ -226,12 +226,12 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
return false;
|
|
|
}
|
|
|
let disabled: boolean = false;
|
|
|
- let keys: string[] = Object.keys(props.disabledRows);
|
|
|
+ const keys: string[] = Object.keys(props.disabledRows);
|
|
|
for (const key of keys) {
|
|
|
// 判断是否有该属性
|
|
|
if (row.hasOwnProperty(key)) {
|
|
|
- let value = row[key];
|
|
|
- let temp: any = props.disabledRows![key];
|
|
|
+ const value = row[key];
|
|
|
+ const temp: any = props.disabledRows![key];
|
|
|
// 禁用规则可以是一个函数
|
|
|
if (typeof temp === 'function') {
|
|
|
disabled = temp(value, row, rowIndex);
|
|
|
@@ -252,7 +252,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
// 重新计算禁用行
|
|
|
function recalcDisableRows() {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
data.disabledRowIds = [];
|
|
|
const { tableFullData } = xTable.internalData;
|
|
|
tableFullData.forEach((row, rowIndex) => {
|
|
|
@@ -283,7 +283,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
/** 表尾数据处理方法,用于显示统计信息 */
|
|
|
function handleFooterMethod({ columns, data: $data }) {
|
|
|
const { statistics } = data;
|
|
|
- let footers: any[] = [];
|
|
|
+ const footers: any[] = [];
|
|
|
if (statistics.has) {
|
|
|
if (statistics.sum.length > 0) {
|
|
|
footers.push(
|
|
|
@@ -324,24 +324,24 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
// 创建新行,自动添加默认值
|
|
|
function createRow(record: Recordable = {}) {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
// 添加默认值
|
|
|
xTable.internalData.tableFullColumn.forEach((column) => {
|
|
|
- let col = column.params;
|
|
|
+ const col = column.params;
|
|
|
// 不能被注册的列不获取增强
|
|
|
if (col && !excludeKeywords.includes(col.type)) {
|
|
|
if (col.key && (record[col.key] == null || record[col.key] === '')) {
|
|
|
// 设置默认值
|
|
|
- let createValue = getEnhanced(col.type).createValue;
|
|
|
- let defaultValue = col.defaultValue ?? '';
|
|
|
- let ctx = { context: { row: record, column, $table: xTable } };
|
|
|
+ const createValue = getEnhanced(col.type).createValue;
|
|
|
+ const defaultValue = col.defaultValue ?? '';
|
|
|
+ const ctx = { context: { row: record, column, $table: xTable } };
|
|
|
record[col.key] = createValue(defaultValue, ctx);
|
|
|
}
|
|
|
// 处理联动列
|
|
|
if (col.type === JVxeTypes.select && data.innerLinkageConfig.size > 0) {
|
|
|
// 判断当前列是否是联动列
|
|
|
if (data.innerLinkageConfig.has(col.key)) {
|
|
|
- let configItem = data.innerLinkageConfig.get(col.key);
|
|
|
+ const configItem = data.innerLinkageConfig.get(col.key);
|
|
|
linkageMethods.getLinkageOptionsAsync(configItem, '');
|
|
|
}
|
|
|
}
|
|
|
@@ -353,7 +353,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
}
|
|
|
|
|
|
async function addOrInsert(rows: Recordable | Recordable[] = {}, index, triggerName, options?: IAddRowsOptions) {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
let records;
|
|
|
if (isArray(rows)) {
|
|
|
records = rows;
|
|
|
@@ -362,14 +362,14 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
}
|
|
|
// 遍历添加默认值
|
|
|
records.forEach((record) => createRow(record));
|
|
|
- let setActive = options?.setActive ?? props.addSetActive ?? true;
|
|
|
- let result = await pushRows(records, { index: index, setActive });
|
|
|
+ const setActive = options?.setActive ?? props.addSetActive ?? true;
|
|
|
+ const result = await pushRows(records, { index: index, setActive });
|
|
|
// 遍历插入的行
|
|
|
// online js增强时以传过来值为准,不再赋默认值
|
|
|
if (!(options?.isOnlineJS ?? false)) {
|
|
|
if (triggerName != null) {
|
|
|
for (let i = 0; i < result.rows.length; i++) {
|
|
|
- let row = result.rows[i];
|
|
|
+ const row = result.rows[i];
|
|
|
trigger(triggerName, {
|
|
|
row: row,
|
|
|
rows: result.rows,
|
|
|
@@ -405,12 +405,12 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
*/
|
|
|
async function addRows(rows: Recordable | Recordable[] = {}, options?: IAddRowsOptions) {
|
|
|
// 代码逻辑说明: VUEN-1892【online子表弹框】有主从关联js时,子表弹框修改了数据,主表字段未修改
|
|
|
- let result = await addOrInsert(rows, -1, 'added', options);
|
|
|
+ const result = await addOrInsert(rows, -1, 'added', options);
|
|
|
if(options && options!.emitChange==true){
|
|
|
trigger('valueChange', {column: 'all', row: result.row})
|
|
|
}
|
|
|
// 代码逻辑说明: 【TV360X-279】行编辑添加新字段滚动对应位置
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
setTimeout(() => {
|
|
|
xTable.scrollToRow(result.row);
|
|
|
}, 0);
|
|
|
@@ -424,12 +424,12 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
* @param options.setActive 是否激活最后一行的编辑模式
|
|
|
*/
|
|
|
async function pushRows(rows: Recordable | Recordable[] = {}, options = { setActive: false, index: -1 }) {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
let { setActive, index } = options;
|
|
|
index = index === -1 ? index : xTable.internalData.tableFullData[index];
|
|
|
index = index == null ? -1 : index;
|
|
|
// 插入行
|
|
|
- let result = await xTable.insertAt(rows, index);
|
|
|
+ const result = await xTable.insertAt(rows, index);
|
|
|
if (setActive) {
|
|
|
// -update-begin--author:liaozhiyang---date:20240619---for:【TV360X-1404】vxetable警告
|
|
|
// 激活最后一行的编辑模式
|
|
|
@@ -458,7 +458,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
/** 获取表格表单里的值 */
|
|
|
function getValues(callback, rowIds) {
|
|
|
- let tableData = getTableData({ rowIds: rowIds });
|
|
|
+ const tableData = getTableData({ rowIds: rowIds });
|
|
|
// 代码逻辑说明: 【issues/7631】JVxeTable组件的getValues回调函数参数修正
|
|
|
callback(tableData, tableData);
|
|
|
}
|
|
|
@@ -471,13 +471,13 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
/** 获取表格数据 */
|
|
|
function getTableData(options: getTableDataOptions = {}) {
|
|
|
- let { rowIds } = options;
|
|
|
+ const { rowIds } = options;
|
|
|
let tableData;
|
|
|
// 仅查询指定id的行
|
|
|
if (isArray(rowIds) && rowIds.length > 0) {
|
|
|
tableData = [];
|
|
|
rowIds.forEach((rowId) => {
|
|
|
- let { row } = getIfRowById(rowId);
|
|
|
+ const { row } = getIfRowById(rowId);
|
|
|
if (row) {
|
|
|
tableData.push(row);
|
|
|
}
|
|
|
@@ -494,20 +494,20 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
/** 仅获取新增的数据 */
|
|
|
function getNewData() {
|
|
|
- let newData = getNewDataWithId();
|
|
|
+ const newData = getNewDataWithId();
|
|
|
newData.forEach((row) => delete row.id);
|
|
|
return newData;
|
|
|
}
|
|
|
|
|
|
/** 仅获取新增的数据,带有id */
|
|
|
function getNewDataWithId() {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
return cloneDeep(xTable.getInsertRecords());
|
|
|
}
|
|
|
|
|
|
/** 根据ID获取行,新增的行也能查出来 */
|
|
|
function getIfRowById(id) {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
let row = xTable.getRowById(id),
|
|
|
isNew = false;
|
|
|
if (!row) {
|
|
|
@@ -523,8 +523,8 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
/** 通过临时ID获取新增的行 */
|
|
|
function getNewRowById(id) {
|
|
|
- let records = getXTable().getInsertRecords();
|
|
|
- for (let record of records) {
|
|
|
+ const records = getXTable().getInsertRecords();
|
|
|
+ for (const record of records) {
|
|
|
if (record.id === id) {
|
|
|
return record;
|
|
|
}
|
|
|
@@ -544,13 +544,13 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
* @param handler function
|
|
|
*/
|
|
|
function filterNewRows(rows, optOrRm:filterNewRowsOptions = true, handler?: Fn) {
|
|
|
- let insertRecords = getXTable().getInsertRecords();
|
|
|
- let records: Recordable[] = [];
|
|
|
+ const insertRecords = getXTable().getInsertRecords();
|
|
|
+ const records: Recordable[] = [];
|
|
|
optOrRm = typeof optOrRm === 'boolean' ? { removeNewLine: optOrRm } : optOrRm;
|
|
|
// true = 删除新增,false=只删除id
|
|
|
- let removeNewLine = optOrRm?.removeNewLine ?? true;
|
|
|
- for (let row of rows) {
|
|
|
- let item = cloneDeep(row);
|
|
|
+ const removeNewLine = optOrRm?.removeNewLine ?? true;
|
|
|
+ for (const row of rows) {
|
|
|
+ const item = cloneDeep(row);
|
|
|
if (insertRecords.includes(row)) {
|
|
|
handler ? handler({ item, row, insertRecords }) : null;
|
|
|
if (removeNewLine) {
|
|
|
@@ -570,20 +570,20 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
* @param top 新top位置,留空则滚动到上次记录的位置,用于解决切换tab选项卡时导致白屏以及自动将滚动条滚动到顶部的问题
|
|
|
*/
|
|
|
function resetScrollTop(top?) {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
xTable.scrollTo(null, top == null || top === '' ? data.scroll.top : top);
|
|
|
}
|
|
|
|
|
|
/** 校验table,失败返回errMap,成功返回null */
|
|
|
async function validateTable(rows?) {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
const errMap = await xTable.validate(rows ?? true).catch((errMap) => errMap);
|
|
|
return errMap ? errMap : null;
|
|
|
}
|
|
|
|
|
|
/** 完整校验 */
|
|
|
async function fullValidateTable(rows?) {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
const errMap = await xTable.fullValidate(rows ?? true).catch((errMap) => errMap);
|
|
|
return errMap ? errMap : null;
|
|
|
}
|
|
|
@@ -601,19 +601,19 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
console.warn(`[JVxeTable] setValues 必须传递数组`);
|
|
|
return 0;
|
|
|
}
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
let count = 0;
|
|
|
values.forEach((item) => {
|
|
|
- let { rowKey, values: record } = item;
|
|
|
- let { row } = getIfRowById(rowKey);
|
|
|
+ const { rowKey, values: record } = item;
|
|
|
+ const { row } = getIfRowById(rowKey);
|
|
|
if (!row) {
|
|
|
return;
|
|
|
}
|
|
|
Object.keys(record).forEach((colKey) => {
|
|
|
- let column = xTable.getColumnByField(colKey);
|
|
|
+ const column = xTable.getColumnByField(colKey);
|
|
|
if (column) {
|
|
|
- let oldValue = row[colKey];
|
|
|
- let newValue = record[colKey];
|
|
|
+ const oldValue = row[colKey];
|
|
|
+ const newValue = record[colKey];
|
|
|
if (newValue !== oldValue) {
|
|
|
row[colKey] = newValue;
|
|
|
// 触发 valueChange 事件
|
|
|
@@ -642,7 +642,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
/** 清空选择行 */
|
|
|
async function clearSelection() {
|
|
|
const xTable = getXTable();
|
|
|
- let event = { $table: xTable, target: instanceRef.value };
|
|
|
+ const event = { $table: xTable, target: instanceRef.value };
|
|
|
if (['radio', JVxeTypes.rowRadio].includes(props.rowSelectionType ?? '')) {
|
|
|
await xTable.clearRadioRow();
|
|
|
handleVxeRadioChange(event);
|
|
|
@@ -659,7 +659,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
function getSelectionData(isFull?: boolean) {
|
|
|
const xTable = getXTable();
|
|
|
if (['radio', JVxeTypes.rowRadio].includes(props.rowSelectionType ?? '')) {
|
|
|
- let row = xTable.getRadioRecord(isFull);
|
|
|
+ const row = xTable.getRadioRecord(isFull);
|
|
|
if (isNull(row)) {
|
|
|
return [];
|
|
|
}
|
|
|
@@ -723,9 +723,9 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
} else {
|
|
|
rowIds = [rowId];
|
|
|
}
|
|
|
- let rows = rowIds
|
|
|
+ const rows = rowIds
|
|
|
.map((id) => {
|
|
|
- let { row } = getIfRowById(id);
|
|
|
+ const { row } = getIfRowById(id);
|
|
|
if (!row) {
|
|
|
return;
|
|
|
}
|
|
|
@@ -742,7 +742,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
|
|
|
// 删除选中的数据
|
|
|
async function removeSelection() {
|
|
|
- let xTable = getXTable();
|
|
|
+ const xTable = getXTable();
|
|
|
let res;
|
|
|
if (['radio', JVxeTypes.rowRadio].includes(props.rowSelectionType ?? '')) {
|
|
|
res = await xTable.removeRadioRow();
|
|
|
@@ -757,8 +757,8 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
/** 重新计算排序字段的数值 */
|
|
|
async function recalcSortNumber(force = false) {
|
|
|
if (props.dragSort || force) {
|
|
|
- let xTable = getXTable();
|
|
|
- let sortKey = props.sortKey ?? 'orderNum';
|
|
|
+ const xTable = getXTable();
|
|
|
+ const sortKey = props.sortKey ?? 'orderNum';
|
|
|
let sortBegin = props.sortBegin ?? 0;
|
|
|
xTable.internalData.tableFullData.forEach((data) => (data[sortKey] = sortBegin++));
|
|
|
// 4.1.0
|
|
|
@@ -777,10 +777,10 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
*/
|
|
|
async function doSort(oldIndex: number, newIndex: number, force = false) {
|
|
|
if (props.dragSort || force) {
|
|
|
- let xTable = getXTable();
|
|
|
- let sort = (array) => {
|
|
|
+ const xTable = getXTable();
|
|
|
+ const sort = (array) => {
|
|
|
// 存储old数据,并删除该项
|
|
|
- let row = array.splice(oldIndex, 1)[0];
|
|
|
+ const row = array.splice(oldIndex, 1)[0];
|
|
|
// 向newIndex处添加old数据
|
|
|
array.splice(newIndex, 0, row);
|
|
|
};
|
|
|
@@ -818,7 +818,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
*/
|
|
|
function getAuth(authCode) {
|
|
|
if (data.authsMap.value != null && props.authPre) {
|
|
|
- let prefix = getPrefix(props.authPre);
|
|
|
+ const prefix = getPrefix(props.authPre);
|
|
|
return data.authsMap.value.get(prefix + authCode);
|
|
|
}
|
|
|
return null;
|
|
|
@@ -860,7 +860,7 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
const xTable = getXTable();
|
|
|
let rows:any[] = []
|
|
|
if (['radio', JVxeTypes.rowRadio].includes(props.rowSelectionType ?? '')) {
|
|
|
- let row = xTable.getRadioRecord(isFull);
|
|
|
+ const row = xTable.getRadioRecord(isFull);
|
|
|
if (isNull(row)) {
|
|
|
return [];
|
|
|
}
|
|
|
@@ -868,9 +868,9 @@ export function useMethods(props: JVxeTableProps, { emit }, data: JVxeDataProps,
|
|
|
} else {
|
|
|
rows = xTable.getCheckboxRecords(isFull)
|
|
|
}
|
|
|
- let records: Recordable[] = [];
|
|
|
- for (let row of rows) {
|
|
|
- let item = cloneDeep(row);
|
|
|
+ const records: Recordable[] = [];
|
|
|
+ for (const row of rows) {
|
|
|
+ const item = cloneDeep(row);
|
|
|
records.push(item);
|
|
|
}
|
|
|
return records;
|