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 {
|
export interface UpdateQueryCleanupConfigResponse {
|
||||||
success: boolean;
|
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 {
|
export {
|
||||||
getOrderQueryDetail,
|
getOrderQueryDetail,
|
||||||
getQueryCleanupConfigList,
|
getQueryCleanupConfigList,
|
||||||
getQueryCleanupDetailList,
|
getQueryCleanupDetailList,
|
||||||
getQueryCleanupLogList,
|
getQueryCleanupLogList,
|
||||||
updateQueryCleanupConfig,
|
updateQueryCleanupConfig,
|
||||||
|
adminDeleteQueryFeatureData,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,17 +14,25 @@ import {
|
|||||||
Card,
|
Card,
|
||||||
Collapse,
|
Collapse,
|
||||||
Descriptions,
|
Descriptions,
|
||||||
|
Input,
|
||||||
message,
|
message,
|
||||||
|
Modal,
|
||||||
Tag,
|
Tag,
|
||||||
} from 'ant-design-vue';
|
} from 'ant-design-vue';
|
||||||
|
|
||||||
import { getOrderQueryDetail } from '#/api/order/query';
|
import {
|
||||||
|
adminDeleteQueryFeatureData,
|
||||||
|
getOrderQueryDetail,
|
||||||
|
} from '#/api/order/query';
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const orderId = route.params.id as string;
|
const orderId = route.params.id as string;
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
const queryDetail = ref<OrderQueryApi.QueryDetail>();
|
const queryDetail = ref<OrderQueryApi.QueryDetail>();
|
||||||
|
const deleteModalVisible = ref(false);
|
||||||
|
const deleteFeatureApiId = ref('');
|
||||||
|
const deleting = ref(false);
|
||||||
|
|
||||||
// 查询状态配置
|
// 查询状态配置
|
||||||
const queryStateConfig = [
|
const queryStateConfig = [
|
||||||
@@ -104,6 +112,39 @@ function handleCopied(_event: JsonViewerAction) {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
fetchQueryDetail();
|
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>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -122,11 +163,16 @@ onMounted(() => {
|
|||||||
<template #title>
|
<template #title>
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<span class="text-lg font-medium">订单查询详情</span>
|
<span class="text-lg font-medium">订单查询详情</span>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-3">
|
||||||
<span class="text-gray-500">查询状态:</span>
|
<div class="flex items-center gap-2">
|
||||||
<Tag v-if="queryDetail" :color="getQueryStateConfig(queryDetail.query_state).color">
|
<span class="text-gray-500">查询状态:</span>
|
||||||
{{ getQueryStateConfig(queryDetail.query_state).label }}
|
<Tag v-if="queryDetail" :color="getQueryStateConfig(queryDetail.query_state).color">
|
||||||
</Tag>
|
{{ getQueryStateConfig(queryDetail.query_state).label }}
|
||||||
|
</Tag>
|
||||||
|
</div>
|
||||||
|
<Button v-if="queryDetail" danger type="primary" @click="handleOpenDeleteModal()">
|
||||||
|
运维补删模块数据
|
||||||
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -198,6 +244,15 @@ onMounted(() => {
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div class="grid gap-4">
|
<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 v-if="item.data.data">
|
||||||
<div class="mb-2 font-medium">查询结果:</div>
|
<div class="mb-2 font-medium">查询结果:</div>
|
||||||
<JsonViewer :value="item.data.data" copyable :expand-depth="2" boxed @copied="handleCopied" />
|
<JsonViewer :value="item.data.data" copyable :expand-depth="2" boxed @copied="handleCopied" />
|
||||||
@@ -219,6 +274,33 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
</template>
|
</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>
|
</div>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ export default defineConfig(async () => {
|
|||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: (path) => path.replace(/^\/api/, ''),
|
rewrite: (path) => path.replace(/^\/api/, ''),
|
||||||
// mock代理目标地址
|
// mock代理目标地址
|
||||||
target: 'http://localhost:8888/api',
|
// target: 'http://localhost:8888/api',
|
||||||
// target: 'https://www.onecha.cn/api',
|
target: 'https://www.onecha.cn/api',
|
||||||
ws: true,
|
ws: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user