|
@@ -6,7 +6,8 @@ import {
|
|
exportTaskData,
|
|
exportTaskData,
|
|
getCurrencyCodeSelect,
|
|
getCurrencyCodeSelect,
|
|
getOperationSelect,
|
|
getOperationSelect,
|
|
- getTasks, postCreateTask,
|
|
|
|
|
|
+ getTasks,
|
|
|
|
+ postCreateTask,
|
|
postDeleteTask,
|
|
postDeleteTask,
|
|
postSendMessage,
|
|
postSendMessage,
|
|
postUpdateManyTask,
|
|
postUpdateManyTask,
|
|
@@ -276,6 +277,22 @@ const handleEditClosed = ({ row, column }) => {
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+// 禁用自动退出编辑模式
|
|
|
|
+const disableAutoExitEdit = () => {
|
|
|
|
+ const $grid = xGrid.value;
|
|
|
|
+ if ($grid) {
|
|
|
|
+ gridOptions.editConfig.autoClear = false; // 手动模式,禁止点击其他地方退出编辑模式
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+// 启用自动退出编辑模式
|
|
|
|
+const enableAutoExitEdit = () => {
|
|
|
|
+ const $grid = xGrid.value;
|
|
|
|
+ if ($grid) {
|
|
|
|
+ gridOptions.editConfig.autoClear = true; // 点击触发退出编辑模式
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
// 将 user 数组转换为 user_name 字符串
|
|
// 将 user 数组转换为 user_name 字符串
|
|
function userToUserName(user: string[]): string {
|
|
function userToUserName(user: string[]): string {
|
|
return operationList.value
|
|
return operationList.value
|
|
@@ -340,7 +357,7 @@ function filteredDataChange(newList) {
|
|
|
|
|
|
// 全部保存按钮
|
|
// 全部保存按钮
|
|
async function saveEvent(row) {
|
|
async function saveEvent(row) {
|
|
- clearRowEvent(row)
|
|
|
|
|
|
+ clearRowEvent(row);
|
|
const $grid = xGrid.value;
|
|
const $grid = xGrid.value;
|
|
if ($grid) {
|
|
if ($grid) {
|
|
try {
|
|
try {
|
|
@@ -352,24 +369,57 @@ async function saveEvent(row) {
|
|
if (!originalRecord) return null;
|
|
if (!originalRecord) return null;
|
|
|
|
|
|
const updatedFields = {};
|
|
const updatedFields = {};
|
|
|
|
+
|
|
// 比较字段并记录变化
|
|
// 比较字段并记录变化
|
|
for (const key in record) {
|
|
for (const key in record) {
|
|
- if (record[key] !== originalRecord[key]) {
|
|
|
|
- updatedFields[key] = record[key];
|
|
|
|
|
|
+ // 针对 operater 字段的特殊处理
|
|
|
|
+ if (key === 'operater') {
|
|
|
|
+ // 如果 operater 是字符串,将其转换为数组
|
|
|
|
+ let recordOperater = Array.isArray(record.operater)
|
|
|
|
+ ? record.operater
|
|
|
|
+ : record.operater.split(',').map(item => item.trim()); // 中文逗号分割并去除空格
|
|
|
|
+
|
|
|
|
+ // 如果 originalRecord.operater 是字符串,也转换为数组
|
|
|
|
+ let originalOperater = Array.isArray(originalRecord.operater)
|
|
|
|
+ ? originalRecord.operater
|
|
|
|
+ : originalRecord.operater.split(',').map(item => item.trim());
|
|
|
|
+
|
|
|
|
+ // 比较两个数组,确保它们不相等时才记录变化
|
|
|
|
+ if (JSON.stringify(recordOperater) !== JSON.stringify(originalOperater)) {
|
|
|
|
+ updatedFields[key] = recordOperater; // 存储更新后的 operater 数组
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ // 对于非 operater 字段,进行普通的比较
|
|
|
|
+ if (record[key] !== originalRecord[key]) {
|
|
|
|
+ updatedFields[key] = record[key];
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- return {
|
|
|
|
- id: record.id,
|
|
|
|
- ...updatedFields
|
|
|
|
- };
|
|
|
|
|
|
+ // 如果有变化字段,返回该记录,否则跳过
|
|
|
|
+ if (Object.keys(updatedFields).length > 0) {
|
|
|
|
+ return {
|
|
|
|
+ id: record.id,
|
|
|
|
+ ...updatedFields
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
}).filter(record => record); // 过滤掉值为 null 的记录
|
|
}).filter(record => record); // 过滤掉值为 null 的记录
|
|
- await postUpdateManyTask(updatedRecords);
|
|
|
|
- await getTaskList();
|
|
|
|
- await VXETable.modal.message({
|
|
|
|
- content: `更新 ${ updatedRecords.length } 条`,
|
|
|
|
- status: 'success',
|
|
|
|
- });
|
|
|
|
|
|
+
|
|
|
|
+ if (updatedRecords.length > 0) {
|
|
|
|
+ // 调用接口提交更新
|
|
|
|
+ await postUpdateManyTask(updatedRecords);
|
|
|
|
+ await getTaskList();
|
|
|
|
+ await VXETable.modal.message({
|
|
|
|
+ content: `更新 ${ updatedRecords.length } 条`,
|
|
|
|
+ status: 'success',
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ await VXETable.modal.message({
|
|
|
|
+ content: '没有检测到变化',
|
|
|
|
+ status: 'info',
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
console.log('error', e);
|
|
console.log('error', e);
|
|
@@ -535,10 +585,10 @@ const saveRowEvent = async (row: RowVO) => {
|
|
await $grid.clearEdit();
|
|
await $grid.clearEdit();
|
|
await updateRow(row);
|
|
await updateRow(row);
|
|
await getTaskList();
|
|
await getTaskList();
|
|
- gridOptions.loading = true;
|
|
|
|
- setTimeout(() => {
|
|
|
|
- gridOptions.loading = false;
|
|
|
|
- }, 300);
|
|
|
|
|
|
+ //gridOptions.loading = true;
|
|
|
|
+ //setTimeout(() => {
|
|
|
|
+ // gridOptions.loading = false;
|
|
|
|
+ //}, 300);
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
@@ -830,6 +880,8 @@ onMounted(() => {
|
|
:fetch-suggestions="querySearch"
|
|
:fetch-suggestions="querySearch"
|
|
:trigger-on-focus="false"
|
|
:trigger-on-focus="false"
|
|
clearable
|
|
clearable
|
|
|
|
+ @blur="enableAutoExitEdit"
|
|
|
|
+ @focus="disableAutoExitEdit"
|
|
@select="item => handleRowSelect(item, row)"
|
|
@select="item => handleRowSelect(item, row)"
|
|
>
|
|
>
|
|
<template v-slot="{ item }">
|
|
<template v-slot="{ item }">
|
|
@@ -844,6 +896,8 @@ onMounted(() => {
|
|
:fetch-suggestions="querySearch"
|
|
:fetch-suggestions="querySearch"
|
|
:trigger-on-focus="false"
|
|
:trigger-on-focus="false"
|
|
clearable
|
|
clearable
|
|
|
|
+ @blur="enableAutoExitEdit"
|
|
|
|
+ @focus="disableAutoExitEdit"
|
|
@select="item => handelRowCurrencyCodePlatformSelect(item,row)"
|
|
@select="item => handelRowCurrencyCodePlatformSelect(item,row)"
|
|
>
|
|
>
|
|
<template v-slot="{ item }">
|
|
<template v-slot="{ item }">
|