|
|
@@ -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(' | ')
|