chenkun 2 hete
szülő
commit
aec5e29ad3
2 módosított fájl, 282 hozzáadás és 19 törlés
  1. 155 3
      src/views/documents/KnowledgeSnippet.vue
  2. 127 16
      src/views/documents/SearchEngine.vue

+ 155 - 3
src/views/documents/KnowledgeSnippet.vue

@@ -247,8 +247,23 @@
             <el-row :gutter="20">
                 <el-col :span="12" v-for="field in currentKbSchema" :key="field.field_en_name">
                     <el-form-item :label="field.field_zh_name || field.field_en_name">
+                        <!-- 时效性、文档类型等枚举字段使用下拉框 -->
+                        <el-select
+                            v-if="METADATA_MAPS[field.field_en_name]"
+                            v-model="formData.custom_fields[field.field_en_name]"
+                            :placeholder="'请选择' + (field.field_zh_name || field.field_en_name)"
+                            style="width: 100%"
+                            clearable
+                        >
+                            <el-option
+                                v-for="(label, value) in METADATA_MAPS[field.field_en_name]"
+                                :key="value"
+                                :label="label"
+                                :value="value"
+                            />
+                        </el-select>
                         <el-input 
-                            v-if="field.field_type === 'text'"
+                            v-else-if="field.field_type === 'text'"
                             v-model="formData.custom_fields[field.field_en_name]" 
                             :placeholder="'请输入' + (field.field_zh_name || field.field_en_name)"
                         />
@@ -900,6 +915,143 @@ const getKbName = (collectionName: string | undefined) => {
     return kbOptions.value.find(k => k.value === collectionName)?.label || '未知知识库'
 }
 
+const getValidityName = (val: string | null | undefined) => {
+    const names: Record<string, string> = {
+        XH: '现行',
+        FZ: '废止',
+        SX: '试行'
+    }
+    return names[val || ''] || val || '-'
+}
+
+// 元数据字段简写转中文映射
+const METADATA_MAPS: Record<string, Record<string, string>> = {
+    plan_category: {
+        CH: "超危大方案",
+        CH2: "超危大方案较大Ⅱ级",
+        CH4: "超危大方案特大Ⅳ级",
+        CH1: "超危大方案一般Ⅰ级",
+        CH3: "超危大方案重大Ⅲ级",
+        WD: "危大方案",
+        YB: "一般方案"
+    },
+    level_1_classification: {
+        SC: "施工方案"
+    },
+    level_2_classification: {
+        LZ: "临建工程",
+        LJ: "路基工程",
+        QL: "桥梁工程",
+        SD: "隧道工程",
+        QT: "其他"
+    },
+    level_3_classification: {
+        TM: "TBM施工",
+        BH: "拌和站安、拆施工",
+        BL: "不良地质隧道施工",
+        CG: "常规桥梁",
+        DT: "挡土墙工程类",
+        FB: "辅助坑道施工",
+        FD: "复杂洞口工程施工",
+        GG: "钢筋加工场安、拆",
+        GZ: "钢栈桥施工",
+        GH: "拱桥",
+        HD: "涵洞工程类",
+        HP: "滑坡体处理类",
+        LT: "路堤",
+        LQ: "路堑",
+        QT: "其他",
+        JK: "深基坑",
+        ZT: "隧道总体施工",
+        TS: "特殊结构隧道",
+        XL: "斜拉桥",
+        XS: "悬索桥"
+    },
+    level_4_classification: {
+        DT: "挡土墙",
+        DG: "顶管",
+        DL: "断层破碎带及软弱围岩",
+        GX: "钢筋砼箱涵",
+        GT: "高填路堤",
+        KH: "抗滑桩",
+        RY: "软岩大变形隧道",
+        SB: "上部结构",
+        JK: "深基坑开挖与支护",
+        LC: "深挖路堑",
+        TM: "隧道TBM",
+        JD: "隧道进洞",
+        SJ: "隧道竖井",
+        XJ: "隧道斜井",
+        TZ: "特种设备",
+        WS: "瓦斯隧道",
+        XB: "下部结构",
+        NJ: "小净距隧道",
+        YB: "岩爆隧道",
+        YR: "岩溶隧道",
+        YN: "涌水突泥隧道",
+        ZJ: "桩基础",
+        QT: "其他"
+    },
+    document_type: {
+        GB: "国家标准",
+        HY: "行业标准",
+        BM: "部门规章",
+        DB: "地方标准",
+        QY: "企业标准",
+        GL: "管理制度",
+        GF: "技术规范",
+        TT: "团体标准",
+        GJ: "国际标准",
+        FL: "国家法律",
+        LR: "地方法规",
+        QT: "其他",
+        HB: "行业标准",
+        QB: "企业标准",
+        GLZD: "管理制度",
+        JSGF: "技术规范",
+        TB: "团体标准",
+        IB: "国际标准",
+        OTHER: "其他"
+    },
+    professional_field: {
+        FL: "法律法规",
+        TY: "通用标准",
+        KC: "勘察钻探",
+        DJ: "地基基础",
+        LJ: "路基面",
+        QL: "桥梁工程",
+        SD: "隧道工程",
+        JT: "交通工程",
+        JZ: "建筑工程",
+        SZ: "市政工程",
+        JD: "机电安装",
+        LB: "路桥工程",
+        ZS: "装饰装修",
+        GK: "港口航道",
+        TL: "铁路工程",
+        FJ: "房建工程",
+        SL: "水利电力",
+        XX: "信息化",
+        SY: "试验检测",
+        AQ: "安全环保",
+        QT: "其他"
+    },
+    validity: {
+        XH: "现行",
+        FZ: "废止",
+        SX: "试行"
+    }
+}
+
+const getMetadataValueName = (key: string, val: any) => {
+    if (val === null || val === undefined) return '-'
+    const valStr = String(val)
+    if (METADATA_MAPS[key]) {
+        return METADATA_MAPS[key][valStr] || valStr
+    }
+    return valStr
+}
+
 const formatMetaInfo = (row: Snippet) => {
     // 优先展示 metadata 字段中的信息
     if (row.metadata) {
@@ -907,7 +1059,7 @@ const formatMetaInfo = (row: Snippet) => {
         if (typeof row.metadata === 'object') {
              const displayParts = []
              for (const [key, value] of Object.entries(row.metadata)) {
-                 const valStr = typeof value === 'object' ? JSON.stringify(value) : String(value)
+                 const valStr = getMetadataValueName(key, value)
                  displayParts.push(`${key}: ${valStr}`)
              }
              if (displayParts.length > 0) return displayParts.join(' | ')
@@ -917,7 +1069,7 @@ const formatMetaInfo = (row: Snippet) => {
                 const metaObj = JSON.parse(row.metadata)
                 const displayParts = []
                 for (const [key, value] of Object.entries(metaObj)) {
-                    const valStr = typeof value === 'object' ? JSON.stringify(value) : String(value)
+                    const valStr = getMetadataValueName(key, value)
                     displayParts.push(`${key}: ${valStr}`)
                 }
                 if (displayParts.length > 0) return displayParts.join(' | ')

+ 127 - 16
src/views/documents/SearchEngine.vue

@@ -404,13 +404,132 @@ const handleKbChange = async () => {
 const docNamesMap = ref<Record<string, string>>({})
 
 const formatMetaInfo = (row: any) => {
-    const getValidityName = (val: string | null | undefined) => {
-        const names: Record<string, string> = {
-            XH: '现行',
-            FZ: '废止',
-            SX: '试行'
+    // 元数据字段简写转中文映射
+    const METADATA_MAPS: Record<string, Record<string, string>> = {
+        plan_category: {
+            CH: "超危大方案",
+            CH2: "超危大方案较大Ⅱ级",
+            CH4: "超危大方案特大Ⅳ级",
+            CH1: "超危大方案一般Ⅰ级",
+            CH3: "超危大方案重大Ⅲ级",
+            WD: "危大方案",
+            YB: "一般方案"
+        },
+        level_1_classification: {
+            SC: "施工方案"
+        },
+        level_2_classification: {
+            LZ: "临建工程",
+            LJ: "路基工程",
+            QL: "桥梁工程",
+            SD: "隧道工程",
+            QT: "其他"
+        },
+        level_3_classification: {
+            TM: "TBM施工",
+            BH: "拌和站安、拆施工",
+            BL: "不良地质隧道施工",
+            CG: "常规桥梁",
+            DT: "挡土墙工程类",
+            FB: "辅助坑道施工",
+            FD: "复杂洞口工程施工",
+            GG: "钢筋加工场安、拆",
+            GZ: "钢栈桥施工",
+            GH: "拱桥",
+            HD: "涵洞工程类",
+            HP: "滑坡体处理类",
+            LT: "路堤",
+            LQ: "路堑",
+            QT: "其他",
+            JK: "深基坑",
+            ZT: "隧道总体施工",
+            TS: "特殊结构隧道",
+            XL: "斜拉桥",
+            XS: "悬索桥"
+        },
+        level_4_classification: {
+            DT: "挡土墙",
+            DG: "顶管",
+            DL: "断层破碎带及软弱围岩",
+            GX: "钢筋砼箱涵",
+            GT: "高填路堤",
+            KH: "抗滑桩",
+            RY: "软岩大变形隧道",
+            SB: "上部结构",
+            JK: "深基坑开挖与支护",
+            LC: "深挖路堑",
+            TM: "隧道TBM",
+            JD: "隧道进洞",
+            SJ: "隧道竖井",
+            XJ: "隧道斜井",
+            TZ: "特种设备",
+            WS: "瓦斯隧道",
+            XB: "下部结构",
+            NJ: "小净距隧道",
+            YB: "岩爆隧道",
+            YR: "岩溶隧道",
+            YN: "涌水突泥隧道",
+            ZJ: "桩基础",
+            QT: "其他"
+        },
+        document_type: {
+            GB: "国家标准",
+            HY: "行业标准",
+            BM: "部门规章",
+            DB: "地方标准",
+            QY: "企业标准",
+            GL: "管理制度",
+            GF: "技术规范",
+            TT: "团体标准",
+            GJ: "国际标准",
+            FL: "国家法律",
+            LR: "地方法规",
+            QT: "其他",
+            HB: "行业标准",
+            QB: "企业标准",
+            GLZD: "管理制度",
+            JSGF: "技术规范",
+            TB: "团体标准",
+            IB: "国际标准",
+            OTHER: "其他"
+        },
+        professional_field: {
+            FL: "法律法规",
+            TY: "通用标准",
+            KC: "勘察钻探",
+            DJ: "地基基础",
+            LJ: "路基面",
+            QL: "桥梁工程",
+            SD: "隧道工程",
+            JT: "交通工程",
+            JZ: "建筑工程",
+            SZ: "市政工程",
+            JD: "机电安装",
+            LB: "路桥工程",
+            ZS: "装饰装修",
+            GK: "港口航道",
+            TL: "铁路工程",
+            FJ: "房建工程",
+            SL: "水利电力",
+            XX: "信息化",
+            SY: "试验检测",
+            AQ: "安全环保",
+            QT: "其他"
+        },
+        validity: {
+            XH: "现行",
+            FZ: "废止",
+            SX: "试行"
         }
-        return names[val || ''] || val || '-'
+    }
+
+    const getMetadataValueName = (key: string, val: any) => {
+        if (val === null || val === undefined) return '-'
+        const valStr = String(val)
+        if (METADATA_MAPS[key]) {
+            return METADATA_MAPS[key][valStr] || valStr
+        }
+        return valStr
     }
 
     // 优先展示 metadata 字段中的信息
@@ -419,11 +538,7 @@ const formatMetaInfo = (row: any) => {
         if (typeof row.metadata === 'object') {
              const displayParts = []
              for (const [key, value] of Object.entries(row.metadata)) {
-                 let valStr = typeof value === 'object' ? JSON.stringify(value) : String(value)
-                 // 如果是时效性字段,转换简写为中文
-                 if (key === 'validity') {
-                     valStr = getValidityName(valStr)
-                 }
+                 const valStr = getMetadataValueName(key, value)
                  displayParts.push(`${key}: ${valStr}`)
              }
              if (displayParts.length > 0) return displayParts.join(' | ')
@@ -432,11 +547,7 @@ const formatMetaInfo = (row: any) => {
                 const metaObj = JSON.parse(row.metadata)
                 const displayParts = []
                 for (const [key, value] of Object.entries(metaObj)) {
-                    let valStr = typeof value === 'object' ? JSON.stringify(value) : String(value)
-                    // 如果是时效性字段,转换简写为中文
-                    if (key === 'validity') {
-                        valStr = getValidityName(valStr)
-                    }
+                    const valStr = getMetadataValueName(key, value)
                     displayParts.push(`${key}: ${valStr}`)
                 }
                 if (displayParts.length > 0) return displayParts.join(' | ')