src/views/collaborativeApproval/knowledgeBase/index.vue
@@ -127,11 +127,11 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="使用次数" prop="usageCount">
              <el-input-number v-model="form.usageCount" :min="0" style="width: 100%" />
            </el-form-item>
          </el-col>
<!--          <el-col :span="12">-->
<!--            <el-form-item label="使用次数" prop="usageCount">-->
<!--              <el-input-number v-model="form.usageCount" :min="0" style="width: 100%" />-->
<!--            </el-form-item>-->
<!--          </el-col>-->
        </el-row>
      </el-form>
    </FormDialog>
@@ -163,14 +163,14 @@
              {{ getEfficiencyLabel(currentKnowledge.efficiency) }}
            </el-tag>
          </el-descriptions-item>
          <el-descriptions-item label="使用次数">
            <el-tag type="info">{{ currentKnowledge.usageCount }} 次</el-tag>
          </el-descriptions-item>
<!--          <el-descriptions-item label="使用次数">-->
<!--            <el-tag type="info">{{ currentKnowledge.usageCount }} 次</el-tag>-->
<!--          </el-descriptions-item>-->
          <el-descriptions-item label="创建人">
            {{ currentKnowledge.creator }}
          </el-descriptions-item>
          <el-descriptions-item label="创建时间">
            {{ currentKnowledge.createTime }}
            {{dayjs(currentKnowledge.createTime).format("YYYY-MM-DD")}}
          </el-descriptions-item>
        </el-descriptions>
@@ -202,19 +202,19 @@
          <h4>使用统计</h4>
          <div class="usage-stats">
            <el-row :gutter="20">
              <el-col :span="8">
                <div class="stat-item">
                  <div class="stat-number">{{ currentKnowledge.usageCount }}</div>
                  <div class="stat-label">使用次数</div>
                </div>
              </el-col>
              <el-col :span="8">
<!--              <el-col :span="8">-->
<!--                <div class="stat-item">-->
<!--                  <div class="stat-number">{{ currentKnowledge.usageCount }}</div>-->
<!--                  <div class="stat-label">使用次数</div>-->
<!--                </div>-->
<!--              </el-col>-->
              <el-col :span="12">
                <div class="stat-item">
                  <div class="stat-number">{{ getEfficiencyScore(currentKnowledge.efficiency) }}%</div>
                  <div class="stat-label">效率提升</div>
                </div>
              </el-col>
              <el-col :span="8">
              <el-col :span="12">
                <div class="stat-item">
                  <div class="stat-number">{{ getTimeSaved(currentKnowledge.efficiency) }}</div>
                  <div class="stat-label">平均节省时间</div>
@@ -296,7 +296,7 @@
              <span v-else style="color: #909399">-</span>
            </template>
          </el-table-column>
          <el-table-column prop="createTime" label="上传时间" width="180" />
          <el-table-column prop="createTime" label="上传时间" width="120" :formatter="formatDate" />
          <el-table-column label="操作" width="150" align="center">
            <template #default="{ row }">
              <el-button
@@ -386,6 +386,11 @@
import useUserStore from '@/store/modules/user';
import { userListNoPageByTenantId } from '@/api/system/user.js';
import { getToken } from "@/utils/auth";
import dayjs from "dayjs";
import { parseDate } from "@/utils/ruoyi";
// 日期回显格式化(YYYY-MM-DD)
const formatDate = (row, column, cellValue) => parseDate(cellValue) || '-';
// 表单验证规则
const rules = {
@@ -528,24 +533,24 @@
      return typeMap[params] || "info";
    }
  },
  {
    label: "文件数量",
    prop: "fileCount",
    width: 100,
    align: "center"
  },
  {
    label: "切片数量",
    prop: "totalChunkCount",
    width: 100,
    align: "center"
  },
  {
    label: "使用次数",
    prop: "usageCount",
    width: 100,
    align: "center"
  },
  // {
  //   label: "文件数量",
  //   prop: "fileCount",
  //   width: 100,
  //   align: "center"
  // },
  // {
  //   label: "切片数量",
  //   prop: "totalChunkCount",
  //   width: 100,
  //   align: "center"
  // },
  // {
  //   label: "使用次数",
  //   prop: "usageCount",
  //   width: 100,
  //   align: "center"
  // },
  {
    label: "创建人",
    prop: "creator",
@@ -555,6 +560,7 @@
    label: "创建时间",
    prop: "createTime",
    width: 180,
    dataType:"date"
  },
  {
    dataType: "action",
@@ -577,13 +583,13 @@
          openFilesDialog(row);
        }
      },
      {
        name: "问答",
        type: "text",
        clickFun: (row) => {
          openChatDialog(row);
        }
      },
      // {
      //   name: "问答",
      //   type: "text",
      //   clickFun: (row) => {
      //     openChatDialog(row);
      //   }
      // },
      {
        name: "详情",
        type: "text",
@@ -1142,11 +1148,24 @@
// ============ 知识库问答相关 ============
// 生成UUID的fallback方案
const generateUUID = () => {
  if (typeof crypto !== 'undefined' && crypto.randomUUID) {
    return crypto.randomUUID();
  }
  // fallback: 兼容不支持 crypto.randomUUID 的环境
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    const r = Math.random() * 16 | 0;
    const v = c === 'x' ? r : (r & 0x3 | 0x8);
    return v.toString(16);
  });
};
// 打开问答弹窗
const openChatDialog = (row) => {
  currentKnowledgeBase.value = row;
  chatDialogVisible.value = true;
  memoryId.value = crypto.randomUUID();
  memoryId.value = generateUUID();
  messages.value = [];
  inputQuestion.value = "";
};
@@ -1240,7 +1259,7 @@
    }
  ).then(() => {
    messages.value = [];
    memoryId.value = crypto.randomUUID(); // 重新生成会话ID
    memoryId.value = generateUUID(); // 重新生成会话ID
    ElMessage.success("对话已清空");
  }).catch(() => {
    // 用户取消