Merge branch 'main' of http://1.117.67.95:3000/team/ycc-proxy-admin
This commit is contained in:
@@ -113,6 +113,17 @@ export namespace OrderQueryApi {
|
||||
export interface UpdateQueryCleanupConfigResponse {
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
// 运维补删接口:按 QueryId+FeatureApiId 删除单条查询中的指定模块数据
|
||||
export interface AdminDeleteQueryFeatureDataRequest {
|
||||
query_id: string;
|
||||
feature_api_id: string;
|
||||
}
|
||||
|
||||
export interface AdminDeleteQueryFeatureDataResponse {
|
||||
success: boolean;
|
||||
message: string;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -175,10 +186,23 @@ async function updateQueryCleanupConfig(
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 运维补删:按 QueryId + FeatureApiId 删除单条查询中的指定模块数据
|
||||
*/
|
||||
async function adminDeleteQueryFeatureData(
|
||||
data: OrderQueryApi.AdminDeleteQueryFeatureDataRequest,
|
||||
) {
|
||||
return requestClient.post<OrderQueryApi.AdminDeleteQueryFeatureDataResponse>(
|
||||
'/query/cleanup/delete/feature',
|
||||
data,
|
||||
);
|
||||
}
|
||||
|
||||
export {
|
||||
getOrderQueryDetail,
|
||||
getQueryCleanupConfigList,
|
||||
getQueryCleanupDetailList,
|
||||
getQueryCleanupLogList,
|
||||
updateQueryCleanupConfig,
|
||||
adminDeleteQueryFeatureData,
|
||||
};
|
||||
|
||||
@@ -14,17 +14,25 @@ import {
|
||||
Card,
|
||||
Collapse,
|
||||
Descriptions,
|
||||
Input,
|
||||
message,
|
||||
Modal,
|
||||
Tag,
|
||||
} from 'ant-design-vue';
|
||||
|
||||
import { getOrderQueryDetail } from '#/api/order/query';
|
||||
import {
|
||||
adminDeleteQueryFeatureData,
|
||||
getOrderQueryDetail,
|
||||
} from '#/api/order/query';
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const orderId = route.params.id as string;
|
||||
const loading = ref(false);
|
||||
const queryDetail = ref<OrderQueryApi.QueryDetail>();
|
||||
const deleteModalVisible = ref(false);
|
||||
const deleteFeatureApiId = ref('');
|
||||
const deleting = ref(false);
|
||||
|
||||
// 查询状态配置
|
||||
const queryStateConfig = [
|
||||
@@ -104,6 +112,39 @@ function handleCopied(_event: JsonViewerAction) {
|
||||
onMounted(() => {
|
||||
fetchQueryDetail();
|
||||
});
|
||||
|
||||
async function handleOpenDeleteModal(apiId?: string) {
|
||||
deleteFeatureApiId.value = apiId || '';
|
||||
deleteModalVisible.value = true;
|
||||
}
|
||||
|
||||
async function handleConfirmDelete() {
|
||||
if (!queryDetail.value) return;
|
||||
if (!deleteFeatureApiId.value) {
|
||||
message.warning('请填写要删除的模块 API 标识');
|
||||
return;
|
||||
}
|
||||
deleting.value = true;
|
||||
try {
|
||||
const res = await adminDeleteQueryFeatureData({
|
||||
query_id: queryDetail.value.id,
|
||||
feature_api_id: deleteFeatureApiId.value,
|
||||
});
|
||||
if (res.success) {
|
||||
message.success(res.message || '删除成功');
|
||||
deleteModalVisible.value = false;
|
||||
deleteFeatureApiId.value = '';
|
||||
// 重新拉取详情,刷新前端数据
|
||||
await fetchQueryDetail();
|
||||
} else {
|
||||
message.error(res.message || '删除失败');
|
||||
}
|
||||
} catch {
|
||||
message.error('删除失败');
|
||||
} finally {
|
||||
deleting.value = false;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -122,11 +163,16 @@ onMounted(() => {
|
||||
<template #title>
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="text-lg font-medium">订单查询详情</span>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-gray-500">查询状态:</span>
|
||||
<Tag v-if="queryDetail" :color="getQueryStateConfig(queryDetail.query_state).color">
|
||||
{{ getQueryStateConfig(queryDetail.query_state).label }}
|
||||
</Tag>
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-gray-500">查询状态:</span>
|
||||
<Tag v-if="queryDetail" :color="getQueryStateConfig(queryDetail.query_state).color">
|
||||
{{ getQueryStateConfig(queryDetail.query_state).label }}
|
||||
</Tag>
|
||||
</div>
|
||||
<Button v-if="queryDetail" danger type="primary" @click="handleOpenDeleteModal()">
|
||||
运维补删模块数据
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -198,6 +244,15 @@ onMounted(() => {
|
||||
</template>
|
||||
|
||||
<div class="grid gap-4">
|
||||
<div class="flex justify-end">
|
||||
<Button
|
||||
size="small"
|
||||
danger
|
||||
@click.stop="handleOpenDeleteModal(item.data.apiID)"
|
||||
>
|
||||
补删当前模块数据
|
||||
</Button>
|
||||
</div>
|
||||
<div v-if="item.data.data">
|
||||
<div class="mb-2 font-medium">查询结果:</div>
|
||||
<JsonViewer :value="item.data.data" copyable :expand-depth="2" boxed @copied="handleCopied" />
|
||||
@@ -219,6 +274,33 @@ onMounted(() => {
|
||||
</div>
|
||||
</Card>
|
||||
</template>
|
||||
|
||||
<!-- 运维补删模块数据弹窗 -->
|
||||
<Modal
|
||||
v-model:open="deleteModalVisible"
|
||||
:confirm-loading="deleting"
|
||||
title="运维补删模块数据"
|
||||
ok-text="确认删除"
|
||||
cancel-text="取消"
|
||||
@ok="handleConfirmDelete"
|
||||
>
|
||||
<div class="space-y-3">
|
||||
<p class="text-red-500 text-sm">
|
||||
该操作仅用于运维场景,按照 QueryId + FeatureApiId 精确删除单条查询中的某个模块数据,请谨慎使用。
|
||||
</p>
|
||||
<div>
|
||||
<div class="mb-1 text-sm text-gray-600">Query ID</div>
|
||||
<Input :value="queryDetail?.id" readonly />
|
||||
</div>
|
||||
<div>
|
||||
<div class="mb-1 text-sm text-gray-600">模块 API 标识(feature_api_id)</div>
|
||||
<Input
|
||||
v-model:value="deleteFeatureApiId"
|
||||
placeholder="例如:credit_score 或 credit_score_detail"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
</Page>
|
||||
</template>
|
||||
|
||||
@@ -10,8 +10,8 @@ export default defineConfig(async () => {
|
||||
changeOrigin: true,
|
||||
rewrite: (path) => path.replace(/^\/api/, ''),
|
||||
// mock代理目标地址
|
||||
target: 'http://localhost:8888/api',
|
||||
// target: 'https://www.onecha.cn/api',
|
||||
// target: 'http://localhost:8888/api',
|
||||
target: 'https://www.onecha.cn/api',
|
||||
ws: true,
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user