feat: 添加数据纠错功能

This commit is contained in:
皓月归尘 2025-03-01 15:18:32 +08:00
parent 88ceb0f63b
commit ffdb1d07a3
9 changed files with 154 additions and 68 deletions

View File

@ -55,6 +55,7 @@ buttons:ForceToExit: Force Exit
buttons:DataAdmin: Data Admin
buttons:Audit: Audit
buttons:Feedback: Feedback
buttons:ErrorRecovery: Error Recovery
search:Total: Total
search:History: History
search:Collect: Collect

View File

@ -55,6 +55,7 @@ buttons:ExitInBatches: 批量强退
buttons:DataAdmin: 数据管理
buttons:Audit: 审核
buttons:Feedback: 反馈
buttons:ErrorRecovery: 纠错
search:Total:
search:History: 搜索历史
search:Collect: 收藏

View File

@ -6,8 +6,8 @@
label-width="82px"
>
<el-row :gutter="30">
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="编码ID" prop="code_id">
<re-col v-if="newFormInline.way !== '纠错'" :value="24" :xm="24" :sm="24">
<el-form-item label="编码ID" prop="code_id" label-width="120px">
<el-input
v-model="newFormInline.code_id"
placeholder="请输入编码ID~"
@ -17,22 +17,22 @@
/>
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="当前编码" prop="code">
<re-col v-if="newFormInline.way !== '纠错'" :value="24" :xm="24" :sm="24">
<el-form-item label="反馈编码" prop="code" label-width="120px">
<el-input
v-model="newFormInline.code"
placeholder="请输入当前编码~"
placeholder="请输入反馈编码~"
clearable
disabled
class="w-full"
/>
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="当前描述" prop="description">
<re-col v-if="newFormInline.way !== '纠错'" :value="24" :xm="24" :sm="24">
<el-form-item label="编码描述" prop="description" label-width="120px">
<el-input
v-model="newFormInline.description"
placeholder="请输入当前编码描述~"
placeholder="请输入编码描述~"
clearable
disabled
class="w-full"
@ -40,17 +40,25 @@
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="正确编码" prop="feedback_code">
<el-form-item
label="输入正确编码"
prop="feedback_code"
label-width="120px"
>
<el-input
v-model="newFormInline.feedback_code"
placeholder="请输入正确的编码描述~"
placeholder="请输入正确的编码~"
clearable
class="w-full"
/>
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="正确描述" prop="feedback_description">
<el-form-item
label="输入正确描述"
prop="feedback_description"
label-width="120px"
>
<el-input
v-model="newFormInline.feedback_description"
placeholder="请输入正确的编码描述~"
@ -69,6 +77,8 @@ import ReCol from "@/components/ReCol";
import type { FormRules } from "element-plus";
const ruleFormRef = ref();
interface PropsInfo {
/**方式 */
way: string;
/**编码ID */
code_id: string;
/**编码 */
@ -90,11 +100,12 @@ const formRules = reactive<FormRules>({
{ required: true, message: "反馈编码为必填项", trigger: "blur" }
],
feedback_description: [
{ required: true, message: "反馈描述为必填项", trigger: "blur" }
{ required: true, message: "反馈内容为必填项", trigger: "blur" }
]
});
const props = withDefaults(defineProps<ProsData>(), {
formInline: () => ({
way: "反馈",
code_id: "",
code: "",
description: "",

View File

@ -170,11 +170,29 @@
type="primary"
:size="size"
:disabled="!hasAuth('code:btn:logInfo')"
:icon="useRenderIcon(EditPen)"
:icon="useRenderIcon(Info)"
@click="handleDetail(row)"
>
{{ t("buttons:Details") }}
</el-button>
<el-button
class="reset-margin"
link
type="warning"
:size="size"
:disabled="!hasAuth('code:btn:addFeedback')"
:icon="useRenderIcon(EditPen)"
@click="
handleFeedback(
'纠错',
row.result_text[0],
row.query_text,
row.result_text[0].code ?? ''
)
"
>
{{ t("buttons:ErrorRecovery") }}
</el-button>
</template>
</pure-table>
</template>
@ -215,7 +233,7 @@
class="w-full top-2"
type="primary"
:disabled="!hasAuth('code:btn:addFeedback')"
@click="handleFeedback(item)"
@click="handleFeedback('反馈', item)"
>{{ t("buttons:Feedback") }}</el-button
>
</el-collapse-item>
@ -238,6 +256,7 @@ import EditPen from "@iconify-icons/ep/edit-pen";
import Refresh from "@iconify-icons/ep/refresh";
import UploadIcon from "@iconify-icons/ri/upload-2-line";
import Export from "@iconify-icons/ri/download-2-line";
import Info from "@iconify-icons/ri/information-line";
const { t } = useI18n();
import { hasAuth } from "@/utils/auth";
/**

View File

@ -375,16 +375,24 @@ export const useIndex = (tableRef: Ref) => {
exportToExcel([exportData], "查询结果");
};
/**处理反馈 */
const handleFeedback = async (row: QueryResultItem) => {
/**处理反馈 */
const handleFeedback = async (
way: string = "反馈",
row: QueryResultItem,
query_text?: string,
code?: string
) => {
addDialog({
title: `反馈错误`,
title: way,
props: {
formInline: {
way: way,
code_id: row?.id ?? "",
code: row?.code ?? "",
description: row?.description ?? "",
feedback_code: row?.code ?? "",
feedback_description: row?.description ?? ""
feedback_code: way === "反馈" ? (row?.code ?? "") : code,
feedback_description:
way === "反馈" ? (row?.description ?? "") : query_text
}
},
width: "45%",
@ -394,26 +402,29 @@ export const useIndex = (tableRef: Ref) => {
contentRenderer: () =>
h(editForm, {
formInline: {
way: way,
code_id: row?.id ?? "",
code: row?.code ?? "",
description: row?.description ?? "",
feedback_code: row?.code ?? "",
feedback_description: row?.description ?? ""
feedback_code: way === "反馈" ? (row?.code ?? "") : code,
feedback_description:
way === "反馈" ? (row?.description ?? "") : query_text
},
ref: formRef
}),
beforeSure: async (done, {}) => {
const FormData = formRef.value.newFormInline;
let id = way === "反馈" ? (row?.id ?? "") : "";
const res = await postAddCodeFeedbackAPI({
code_id: row.id,
code_id: id,
feedback_description: FormData.feedback_description,
feedback_code: FormData.feedback_code
});
if (res.success) {
message("反馈成功!", { type: "success" });
message(res.msg, { type: "success" });
done();
} else {
message("反馈失败!", { type: "error" });
message(res.msg, { type: "error" });
}
}
});

View File

@ -94,12 +94,30 @@
link
type="primary"
:size="size"
:disabled="!hasAuth('code:btn:logInfo')"
:disabled="!hasAuth('code:btn:addFeedback')"
:icon="useRenderIcon(EditPen)"
@click="handleDetail(row)"
>
{{ t("buttons:Details") }}
</el-button>
<el-button
class="reset-margin"
link
type="warning"
:size="size"
:disabled="!hasAuth('code:btn:addFeedback')"
:icon="useRenderIcon(Info)"
@click="
handleFeedback(
'纠错',
row.result_text[0],
row.query_text,
row.result_text[0].code ?? ''
)
"
>
{{ t("buttons:ErrorRecovery") }}
</el-button>
</template>
</pure-table>
</template>
@ -140,7 +158,7 @@
class="w-full top-2"
type="primary"
:disabled="!hasAuth('code:btn:addFeedback')"
@click="handleFeedback(item)"
@click="handleFeedback('反馈', item)"
>{{ t("buttons:Feedback") }}</el-button
>
</el-collapse-item>
@ -164,6 +182,7 @@ import { PureTableBar } from "@/components/RePureTableBar";
import { useRenderIcon } from "@/components/ReIcon/src/hooks";
import EditPen from "@iconify-icons/ep/edit-pen";
import Export from "@iconify-icons/ri/download-2-line";
import Info from "@iconify-icons/ri/information-line";
import type {
QueryCodeLogInfo,
QueryResult,
@ -174,9 +193,11 @@ import { PaginationProps } from "@pureadmin/table";
import { message } from "@/utils/message";
import { hasAuth } from "@/utils/auth";
import { addDialog } from "@/components/ReDialog";
//import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
//import { $t } from "@/plugins/i18n";
const { t } = useI18n();
const route = useRoute();
const router = useRouter();
//const router = useRouter();
const getParameter = isEmpty(route.params) ? route.query : route.params;
// /** */
//function init() {
@ -414,16 +435,23 @@ const onbatchExport = async () => {
exportToExcel([exportData], "查询结果");
};
/**处理反馈 */
const handleFeedback = async (row: QueryResultItem) => {
const handleFeedback = async (
way: string = "反馈",
row: QueryResultItem,
query_text?: string,
code?: string
) => {
addDialog({
title: `反馈错误`,
title: way,
props: {
formInline: {
way: way,
code_id: row?.id ?? "",
code: row?.code ?? "",
description: row?.description ?? "",
feedback_code: row?.code ?? "",
feedback_description: row?.description ?? ""
feedback_code: way === "反馈" ? (row?.code ?? "") : code,
feedback_description:
way === "反馈" ? (row?.description ?? "") : query_text
}
},
width: "45%",
@ -433,26 +461,29 @@ const handleFeedback = async (row: QueryResultItem) => {
contentRenderer: () =>
h(editForm, {
formInline: {
way: way,
code_id: row?.id ?? "",
code: row?.code ?? "",
description: row?.description ?? "",
feedback_code: row?.code ?? "",
feedback_description: row?.description ?? ""
feedback_code: way === "反馈" ? (row?.code ?? "") : code,
feedback_description:
way === "反馈" ? (row?.description ?? "") : query_text
},
ref: formRef
}),
beforeSure: async (done, {}) => {
const FormData = formRef.value.newFormInline;
let id = way === "反馈" ? (row?.id ?? "") : "";
const res = await postAddCodeFeedbackAPI({
code_id: row.id,
code_id: id,
feedback_description: FormData.feedback_description,
feedback_code: FormData.feedback_code
});
if (res.success) {
message("反馈成功!", { type: "success" });
message(res.msg, { type: "success" });
done();
} else {
message("反馈失败!", { type: "error" });
message(res.msg, { type: "error" });
}
}
});

View File

@ -6,8 +6,8 @@
label-width="82px"
>
<el-row :gutter="30">
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="编码ID" prop="code_id">
<re-col v-if="newFormInline.way !== '纠错'" :value="24" :xm="24" :sm="24">
<el-form-item label="编码ID" prop="code_id" label-width="120px">
<el-input
v-model="newFormInline.code_id"
placeholder="请输入编码ID~"
@ -17,8 +17,8 @@
/>
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="反馈编码" prop="code">
<re-col v-if="newFormInline.way !== '纠错'" :value="24" :xm="24" :sm="24">
<el-form-item label="反馈编码" prop="code" label-width="120px">
<el-input
v-model="newFormInline.code"
placeholder="请输入反馈编码~"
@ -28,8 +28,8 @@
/>
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="编码描述" prop="description">
<re-col v-if="newFormInline.way !== '纠错'" :value="24" :xm="24" :sm="24">
<el-form-item label="编码描述" prop="description" label-width="120px">
<el-input
v-model="newFormInline.description"
placeholder="请输入编码描述~"
@ -40,7 +40,11 @@
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="正确编码" prop="feedback_code">
<el-form-item
label="输入正确编码"
prop="feedback_code"
label-width="120px"
>
<el-input
v-model="newFormInline.feedback_code"
placeholder="请输入正确的编码~"
@ -50,7 +54,11 @@
</el-form-item>
</re-col>
<re-col :value="24" :xm="24" :sm="24">
<el-form-item label="正确描述" prop="feedback_description">
<el-form-item
label="输入正确描述"
prop="feedback_description"
label-width="120px"
>
<el-input
v-model="newFormInline.feedback_description"
placeholder="请输入正确的编码描述~"
@ -69,6 +77,8 @@ import ReCol from "@/components/ReCol";
import type { FormRules } from "element-plus";
const ruleFormRef = ref();
interface PropsInfo {
/**方式 */
way: string;
/**编码ID */
code_id: string;
/**编码 */
@ -95,6 +105,7 @@ const formRules = reactive<FormRules>({
});
const props = withDefaults(defineProps<ProsData>(), {
formInline: () => ({
way: "反馈",
code_id: "",
code: "",
description: "",

View File

@ -111,7 +111,8 @@ export const useCode = (tableRef: Ref) => {
{
label: "编码",
prop: "code",
formatter: ({ code }) => code.replace(/(\d{2})/g, "$1.").slice(0, -1)
formatter: ({ code }) =>
code ? code.replace(/(\d{2})/g, "$1.").slice(0, -1) : ""
},
{
label: "描述",

View File

@ -62,7 +62,7 @@ export const useCode = (tableRef: Ref) => {
pageSize: 10,
currentPage: 1,
background: true,
pageSizes: [10, 20, 30, 40, 50]
pageSizes: [10, 20, 30, 40, 50, 100, 200, 300]
});
// 上传文件区域显示状态
const showUploadArea = ref(false);