feat: 完善手动派单后台操作

This commit is contained in:
richjohnrambo
2026-10-13 22:13:47 +08:00
parent aa4799f2b9
commit ad6d0bbe01
11 changed files with 351 additions and 55 deletions
+34 -6
View File
@@ -355,7 +355,7 @@
<script lang="ts" setup>
import { computed, h, onMounted, onUpdated, reactive, ref } from 'vue';
import { NButton, NSpace, useDialog, useMessage } from 'naive-ui';
import { NButton, NSpace, NSwitch, useDialog, useMessage } from 'naive-ui';
import { DeleteOutlined, EditOutlined } from '@vicons/antd';
import { BasicTable, TableAction } from '@/components/Table';
import { BasicForm, useForm } from '@/components/Form';
@@ -384,12 +384,33 @@
NoticeEdit,
} from '@/api/appMember';
import { List as MemberLevelList } from '@/api/memberLevel';
import { columns, schemas, loadOptions, MemberRecord } from './model';
import { columns as baseColumns, schemas, loadOptions, MemberRecord } from './model';
const message = useMessage(),
dialog = useDialog(),
dict = useDictStore();
const { hasPermission } = usePermission();
const dispatchUpdatingIds = ref(new Set<number>());
const columns = baseColumns.map((column) =>
column.key === 'autoDispatch'
? {
...column,
render: (row: MemberRecord) =>
h(
NSwitch,
{
value: row.autoDispatch,
checkedValue: 1,
uncheckedValue: 2,
loading: dispatchUpdatingIds.value.has(row.id),
disabled: !hasPermission(['/appMember/autoDispatch']),
'onUpdate:value': (value: number) => toggleDispatch(row, value),
},
{ checked: () => '自动', unchecked: () => '手动' }
),
}
: column
);
const actionRef = ref(),
searchFormRef = ref<any>({}),
editFormRef = ref<any>(),
@@ -642,10 +663,17 @@
detailLoading.value = false;
}
}
async function toggleDispatch(row) {
await AutoDispatch({ id: row.id, autoDispatch: row.autoDispatch === 1 ? 2 : 1 });
message.success('更新成功');
reloadTable();
async function toggleDispatch(row: MemberRecord, nextValue?: number) {
if (dispatchUpdatingIds.value.has(row.id)) return;
const autoDispatch = nextValue ?? (row.autoDispatch === 1 ? 2 : 1);
dispatchUpdatingIds.value.add(row.id);
try {
await AutoDispatch({ id: row.id, autoDispatch });
row.autoDispatch = autoDispatch;
message.success(`已切换为${autoDispatch === 1 ? '自动' : '手动'}派单`);
} finally {
dispatchUpdatingIds.value.delete(row.id);
}
}
function openStatus(row) {
const action = row.memberStatus === 1 ? '禁用' : '启用';