From 3e859fd9a98d48d318fb839286630969a2eb5b43 Mon Sep 17 00:00:00 2001 From: zhouhaibin Date: Mon, 25 Aug 2025 13:40:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8E=9F=E6=96=87=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=E5=A2=9E=E5=8A=A0=E5=8F=B3=E9=94=AE=E5=AE=9A=E4=BD=8D?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/configs/tenderTaskConfigs.json | 98 +++++----- src/components/UniversalResultDrawer.vue | 226 ++++++++++++++++++++++- 2 files changed, 274 insertions(+), 50 deletions(-) diff --git a/public/configs/tenderTaskConfigs.json b/public/configs/tenderTaskConfigs.json index afb0e0f..e5afcf1 100644 --- a/public/configs/tenderTaskConfigs.json +++ b/public/configs/tenderTaskConfigs.json @@ -138,7 +138,7 @@ "tenderComplianceReview": { "taskType": "tenderComplianceReview", "name": "招投标文件合规性审核", - "mode": "single", + "mode": "tabs", "pdfConfig": { "layout": "single", "sources": [ @@ -149,54 +149,66 @@ } ] }, - "fields": [ - { - "field": "issueName", - "title": "合规性分类-具体问题(示例:资质审查-业绩要求)", - "dataType": "string", - "displayType": "markdown", - "pdfSource": "document" - }, - { - "field": "originalText", - "title": "原文", - "dataType": "string", - "displayType": "markdown", - "pdfSource": "document" - }, + "tabs": [ { - "field": "reviewBasis", - "title": "相关法律法规政策", - "dataType": "json", - "displayType": "markdown", - "jsonConfig": { - "extractFields": [ - "review_points" - ], - "separator": ":", - "fieldProcessors": { - "review_points": "arrayJoinNewLine" + "key": "存在", + "label": "存在", + "fields": [ + { + "field": "originalText", + "title": "原文", + "dataType": "string", + "displayType": "markdown", + "pdfSource": "bid", + "required": true + }, + { + "field": "issueName", + "title": "原因", + "dataType": "string", + "displayType": "markdown" } - } + ] }, { - "field": "modifiedContent", - "title": "修改建议", - "dataType": "string", - "displayType": "markdown", - "pdfSource": "document" + "key": "不存在", + "label": "不存在", + "fields": [ + { + "field": "originalText", + "title": "原文", + "dataType": "string", + "displayType": "markdown", + "pdfSource": "bid", + "required": true + }, + { + "field": "issueName", + "title": "原因", + "dataType": "string", + "displayType": "markdown" + } + ] }, { - "field": "reviewBasis", - "title": "风险等级(红色预警:直接废标项,橙色风险:可能引发投诉项)", - "dataType": "json", - "displayType": "markdown", - "jsonConfig": { - "extractFields": [ - "risk_level" - ], - "separator": ":" - } + "key": "无法判断", + "label": "无法判断", + "fields": [ + { + "field": "originalText", + "title": "原文", + "dataType": "string", + "displayType": "markdown", + "pdfSource": "bid", + "required": true + }, + { + "field": "issueName", + "title": "原因", + "dataType": "string", + "displayType": "markdown" + } + ] } ] }, diff --git a/src/components/UniversalResultDrawer.vue b/src/components/UniversalResultDrawer.vue index 77e3286..f4eab32 100644 --- a/src/components/UniversalResultDrawer.vue +++ b/src/components/UniversalResultDrawer.vue @@ -108,6 +108,7 @@ class="section-content markdown-content" v-html="renderContent(section, getItemValue(item, section.field))" @click="locateByText(getItemValue(item, section.field), item, section, categoryIndex, idx)" + @contextmenu="handleContextMenu($event, getItemValue(item, section.field), item, section, categoryIndex, idx)" > @@ -151,6 +152,7 @@ class="section-content markdown-content comparison-content" v-html="renderMarkdown(getComparisonContent(item, section))" @click="locateByText(getComparisonContent(item, section), item, section, categoryIndex, idx)" + @contextmenu="handleContextMenu($event, getComparisonContent(item, section), item, section, categoryIndex, idx)" > @@ -241,6 +243,7 @@ v-html="renderContent(section, getItemValue(item, section.field))" v-if="getItemValue(item, section.field)" @click="locateByText(getItemValue(item, section.field), item, section, index, idx)" + @contextmenu="handleContextMenu($event, getItemValue(item, section.field), item, section, index, idx)" > @@ -285,6 +288,7 @@ class="section-content markdown-content comparison-content" v-html="renderMarkdown(getComparisonContent(item, section))" @click="locateByText(getComparisonContent(item, section), item, section, index, idx)" + @contextmenu="handleContextMenu($event, getComparisonContent(item, section), item, section, index, idx)" > @@ -320,10 +324,39 @@ + + +
+
+ 📍 定位原文 +
+
+ 📍 定位原文{{ !contextMenu.selectedText ? '(未选中文本)' : '(不支持)' }} +
+
+ 📋 复制选中文本 +
+
\ No newline at end of file