协商中再问按后台超时小时顺延并可强制清跟进时刻;工单与账号支持按筛选导出 Excel。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
import { computed, onMounted, reactive, ref, watch } from "vue";
|
||||
import { message, Modal } from "ant-design-vue";
|
||||
import {
|
||||
exportWorkOrders,
|
||||
getWorkOrderDetail,
|
||||
getWorkOrderList,
|
||||
retryAbnormal,
|
||||
@@ -30,6 +31,10 @@ const canCloseTicket = () => hasPermission(InquiryBtnPerm.workorderTransition);
|
||||
const canRetryTicket = () => hasPermission(InquiryBtnPerm.workorderTransition);
|
||||
const canViewDetail = () =>
|
||||
hasPermission(InquiryBtnPerm.workorderDetail) || hasPermission(InquiryBtnPerm.workorderList);
|
||||
/** 导出:有 export 或 list 均可(与主账 Logical.OR 对齐) */
|
||||
const canExportTicket = () =>
|
||||
hasPermission(InquiryBtnPerm.workorderExport) || hasPermission(InquiryBtnPerm.workorderList);
|
||||
const exporting = ref(false);
|
||||
|
||||
/**
|
||||
* 与主账 TicketStatuses 一致:仅询价中/已报价/协商中/转人工可关到「已关闭」。
|
||||
@@ -676,13 +681,47 @@ function retryTicket(row: TicketRow) {
|
||||
function refresh() {
|
||||
loadList().then(() => message.success("已刷新"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按当前筛选导出 Excel(与列表同源,不分页;主账上限 2 万行)。
|
||||
*/
|
||||
async function exportTickets() {
|
||||
if (!canExportTicket()) {
|
||||
message.warning("无导出权限");
|
||||
return;
|
||||
}
|
||||
if (exporting.value) return;
|
||||
exporting.value = true;
|
||||
try {
|
||||
await exportWorkOrders({
|
||||
keyword: filters.keyword.trim() || undefined,
|
||||
status: filters.status || undefined,
|
||||
eventException: filters.eventException || undefined,
|
||||
systemException: filters.systemException || undefined,
|
||||
bizType: filters.bizType || undefined,
|
||||
dateFrom: filters.dateFrom || undefined,
|
||||
dateTo: filters.dateTo || undefined,
|
||||
});
|
||||
message.success("已开始下载 Excel");
|
||||
} catch (e: any) {
|
||||
message.error(e?.message || "导出失败");
|
||||
} finally {
|
||||
exporting.value = false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Teleport defer to="#page-topbar-actions">
|
||||
<div style="display: flex; align-items: center; gap: 12px">
|
||||
<button type="button" class="btn btn-secondary" disabled title="导出待后续开放">
|
||||
<ProtoIcon name="download" :size="16" />导出工单
|
||||
<button
|
||||
v-if="canExportTicket()"
|
||||
type="button"
|
||||
class="btn btn-secondary"
|
||||
:disabled="exporting"
|
||||
@click="exportTickets"
|
||||
>
|
||||
<ProtoIcon name="download" :size="16" />{{ exporting ? "导出中…" : "导出工单" }}
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary" @click="refresh">
|
||||
<ProtoIcon name="refresh" :size="16" />刷新
|
||||
|
||||
Reference in New Issue
Block a user