liudong
2024-07-26 b308f037bb6f1365c51b367ed4db5f8372febc90
src/views/dmx/knowledgeLib/index.vue
@@ -1,6 +1,6 @@
<template>
  <div class="container">
    <Breadcrumb :items="['大模型', '知识库管理']" />
    <Breadcrumb :items="['dmx.list.index', 'dmx.list.kbm']" />
    <div class="main-container">
      <div class="lf-container">
        <div class="lf-container-top">
@@ -16,17 +16,17 @@
              class="tab"
              v-for="(tab, index) in tabs"
              :key="index"
              @click="selectTab(index)"
              @click="selectTab(index,tab)"
              :class="{ 'active': selectedTab === index }"
            >
              {{ tab }}
              {{ tab.name }}
            </div>
          </div>
        </div>
      </div>
      <div class="rt-container">
        <a-tabs default-active-key="1">
          <a-tab-pane key="1" title="数据集">
          <a-tab-pane key="1" :title= "t('dmx.list.DataSet')">
            <div class="rt-container-main">
              <a-card  ref="account" class="general-card" :title="$t('')" style="padding-top: 20px">
                <a-row>
@@ -146,8 +146,13 @@
                  @page-change="onPageChange"
                  :scroll="{ y: 580 }"
                >
                  <template #contentType="{ record }">
                  <template #name="{ record }">
<!--                    <icon-file style="color: #0960bd;margin-right: 4px;" />-->
                    <icon-file style="margin-right: 4px;" />
<!--                    <span style="color: #0960bd;cursor: pointer" @click="fileClick">-->
<!--                      {{record.name}}-->
<!--                    </span>-->
                    {{record.name}}
                  </template>
                  <template #staue="{ record }">
                    <a-switch :model-value="record.staue"/>
@@ -156,19 +161,19 @@
                    <div style="display: flex;align-items: center;">
                      <div style="width: 100px">
                        <a-popover title="Title">
                          <a-tag :color="'blue'" border>成功</a-tag>
                          <a-tag :color="'blue'" border>{{$t('dmx.list.complete')}}</a-tag>
                          <template #content>
                            <p>Here is the text content</p>
                          </template>
                        </a-popover>
                        <a-popover title="Title">
                          <a-tag :color="'gold'" border>取消</a-tag>
                          <a-tag :color="'gold'" border>{{$t('dmx.list.cancel')}}</a-tag>
                          <template #content>
                            <p>Here is the text content</p>
                          </template>
                        </a-popover>
                        <a-popover title="Title">
                          <a-tag :color="'green'" border>未启动</a-tag>
                          <a-tag :color="'green'" border>{{$t('dmx.list.NotStarted')}}</a-tag>
                          <template #content>
                            <p>Here is the text content</p>
                          </template>
@@ -196,7 +201,7 @@
                  <template #operations="{ record }" >
                    <tool/>
                    <edit/>
                    <a-popconfirm content="确定删除吗?" type="warning" @ok="deleteItem(record)">
                    <a-popconfirm :content="t('dmx.list.EnsureDelete')" type="warning" @ok="deleteItem(record)">
                      <a-button v-permission="['admin']" type="text" size="small">
                        <template #icon>
                          <icon-delete />
@@ -213,27 +218,63 @@
              </a-card>
            </div>
          </a-tab-pane>
          <a-tab-pane key="2" title="测试">
          <a-tab-pane key="2" :title="t('dmx.list.test')">
            <div class="rt-container-main">
              <test ></test>
            </div>
          </a-tab-pane>
          <a-tab-pane key="3" title="配置">
          <a-tab-pane key="3" :title="t('dmx.list.disposition')">
            <div class="rt-container-main">
              <config ></config>
            </div>
          </a-tab-pane>
        </a-tabs>
        <div v-if="detailsShow" class="details">
          <div class="details-header">
            <div style="display: flex;align-items: center">
              <span><icon-arrow-left size="20px" style="cursor: pointer;color: #0960bd;margin: 10px" @click="goBackClick" /></span>
              <icon-file style="color: #0960bd;margin-right: 4px;" />
              <span style="">123.docx</span>
            </div>
            <div style="display: flex; align-items: center;">
              <a-radio-group v-model="position" type="button" style="margin-right: 10px">
                <a-radio value="top">{{'dmx.list.EntireArticle'}}</a-radio>
                <a-radio value="right">{{'dmx.list.omit'}}</a-radio>
              </a-radio-group>
              <a-popover position="bottom">
                <a-button type="outline" class="button" style="margin-right: 10px">{{'dmx.list.batch'}} <icon-down style="margin-left: 4px" /></a-button>
                <template #content>
                  <p>Here is the text content</p>
                  <p>Here is the text content</p>
                </template>
              </a-popover>
              <a-button type="outline" class="button" style="margin-right: 10px">
                <template #icon>
                  <icon-search />
                </template>
              </a-button>
              <a-popover position="bottom">
                <a-button type="outline" class="button" style="margin-right: 10px"><icon-sort /></a-button>
                <template #content>
                  <p>Here is the text content</p>
                  <p>Here is the text content</p>
                </template>
              </a-popover>
              <addDetails></addDetails>
            </div>
          </div>
          <a-divider style="margin-top: 10px" />
        </div>
      </div>
    </div>
  </div>
</template>
<script lang="ts" setup>
  import { computed, ref, reactive, watch, nextTick } from 'vue';
import { computed, ref, reactive, watch, nextTick, onBeforeMount } from "vue";
  import { useI18n } from 'vue-i18n';
  import useLoading from '@/hooks/loading';
  import { queryPolicyList, PolicyRecord, PolicyParams } from '@/api/list';
  import { queryKbList, PolicyRecord, PolicyParams } from '@/api/kbList';
  import { Pagination } from '@/types/global';
  import type { SelectOptionData } from '@arco-design/web-vue/es/select/interface';
  import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
@@ -245,6 +286,7 @@
  import config from '@/views/dmx/knowledgeLib/config.vue'
  import test from '@/views/dmx/knowledgeLib/test.vue'
  import tool from '@/views/dmx/knowledgeLib/tool.vue'
  import addDetails from '@/views/dmx/knowledgeLib/addDetails.vue'
  import { deleteAccount } from "@/api/account";
  type SizeProps = 'mini' | 'small' | 'medium' | 'large';
  type Column = TableColumnData & { checked?: true };
@@ -268,11 +310,13 @@
  const size = ref<SizeProps>('medium');
  let visible = ref(false)
  let detailsShow = ref(false)
  let selectedTab = ref(0)
  let tabs = reactive(['法律知识库', '政务知识库', '医学知识库', '其他知识库'])
  let tabs = ref([])
  const  selectTab = (index) => {
  const  selectTab = (index,item) => {
    selectedTab.value= index;
    console.log(item.id);
  }
  const basePagination: Pagination = {
@@ -302,38 +346,38 @@
  ]);
  const columns = computed<TableColumnData[]>(() => [
    {
      title: t('名称'),
      title: t('dmx.column.name'),
      dataIndex: 'name',
      slotName: 'name',
    },
    {
      title: t('分快数'),
      dataIndex: 'contentType',
      slotName: 'contentType',
    },
    {
      title: t('上传时间'),
      title: t('dmx.column.UploadTime'),
      dataIndex: 'filterType',
    },
    {
      title: t('创建人'),
      title: t('dmx.column.Founder'),
      dataIndex: 'count',
    },
    {
      title: t('解析状态'),
      title: t('dmx.column.Status'),
      dataIndex: 'createdTime',
    },
    {
      title: t('启用'),
      title: t('dmx.column.Enable'),
      dataIndex: 'staue',
      slotName: 'staue',
    },
    {
      title: t('解析状态'),
      title: t('dmx.column.ParseState'),
      dataIndex: 'status',
      slotName: 'status',
    },
    {
      title: t('操作'),
      title: t('dmx.column.Operate'),
      dataIndex: 'operations',
      slotName: 'operations',
      width: 150,
@@ -375,15 +419,16 @@
    },
  ]);
  const fetchData = async (
    params: PolicyParams = { current: 1, pageSize: 20 }
    params = { page: 1, page_size: 20 }
  ) => {
    setLoading(true);
    try {
      const { data } = await queryPolicyList(params);
      renderData.value = data.list;
      console.log(renderData, 'renderData');
      pagination.current = params.current;
      pagination.total = data.total;
      const { data } = await queryKbList(params);
      console.log(data, 'data');
      // renderData.value = data.list;
      // console.log(renderData, 'renderData');
      // pagination.current = params.current;
      // pagination.total = data.total;
    } catch (err) {
      // you can report use errorHandler or other
    } finally {
@@ -406,7 +451,27 @@
    fetchData({ ...basePagination, current });
  };
  fetchData();
  const knowledgeData = async (
    params = { page: 1, page_size: 20 }
  ) => {
    setLoading(true);
    try {
      const { data } = await queryKbList(params);
      console.log(data, 'data');
      tabs.value = data;
      console.log(tabs.value, 'tabs');
      // fetchData()
      // renderData.value = data.list;
      // console.log(renderData, 'renderData');
      // pagination.current = params.current;
      // pagination.total = data.total;
    } catch (err) {
      // you can report use errorHandler or other
    } finally {
      setLoading(false);
    }
  };
  const reset = () => {
    formModel.value = generateFormModel();
  };
@@ -465,6 +530,16 @@
    }
  };
  const fileClick = ()=>{
    detailsShow.value = true
  }
  const goBackClick = ()=>{
    detailsShow.value = false
  }
  const   deleteItem =  async (row)=>{
    console.log(row);
    // let data = await deleteAccount({id: row.number})
@@ -487,6 +562,11 @@
    },
    { deep: true, immediate: true }
  );
  onBeforeMount(()=>{
    knowledgeData()
  })
</script>
<script lang="ts">
@@ -549,6 +629,7 @@
        }
      }
      .rt-container{
        position: relative;
        //background: #626aea;
        margin-left: 20px;
        width: calc(100% - 200px);
@@ -556,6 +637,20 @@
        .rt-container-main{
          height: 76vh;
        }
        .details{
          position: absolute;
          top: 0;
          left: 0;
          width: 100%;
          height: 100%;
          background: #ffffff;
          .details-header{
            display: flex;
            justify-content: space-between;
            margin-top: 10px;
            padding-right: 20px;
          }
        }
      }
    }
  }