liudong
2024-08-08 83efda58d43364236beaef1edf38016577df815d
src/views/dmx/knowledgeLib/config.vue
@@ -14,49 +14,14 @@
          </a-form-item>
          <a-form-item field="section" label="知识库图片">
            <a-space direction="vertical" :style="{ width: '100%' }">
              <a-upload
                :auto-upload="false"
                :fileList="file ? [file] : []"
                :show-file-list="false"
                @change="onChange"
                @progress="onProgress"
              >
                <template #upload-button>
                  <div
                    :class="`arco-upload-list-item${
                      file && file.status === 'error' ? ' arco-upload-list-item-error' : ''
                    }`"
                  >
                    <div
                      class="arco-upload-list-picture custom-upload-avatar"
                      v-if="file && file.url"
                    >
                      <img :src="file.url" />
                      <div class="arco-upload-list-picture-mask">
                        <IconEdit />
                      </div>
                      <a-progress
                        v-if="file.status === 'uploading' && file.percent < 100"
                        :percent="file.percent"
                        type="circle"
                        size="mini"
                        :style="{
                          position: 'absolute',
                          left: '50%',
                          top: '50%',
                          transform: 'translateX(-50%) translateY(-50%)',
                        }"
                      />
                    </div>
                    <div class="arco-upload-picture-card" v-else>
                      <div class="arco-upload-picture-card-text">
                        <IconPlus />
                        <div style="margin-top: 10px; font-weight: 600">上传</div>
                      </div>
                    </div>
                  </div>
                </template>
              </a-upload>
              <Upload
                v-if="avatarShow"
                :action="uploadAction"
                :limit="1"
                :url="form.avatar"
                @update:fileList="updateFileList"
                @success="handleSuccess"
              ></Upload>
            </a-space>
          </a-form-item>
          <a-form-item field="section" label="描述">
@@ -68,7 +33,7 @@
<!--              <a-option value="1">英文</a-option>-->
<!--            </a-select>-->
<!--          </a-form-item>-->
          <a-form-item field="section" label="嵌入模型">
          <a-form-item field="embd_id" label="嵌入模型">
            <a-space direction="vertical" size="large">
              <a-select :size="'large'" v-model="form.embd_id" :style="{width:'100%'}" placeholder="请选择 ..." :disabled="kbObj.chunk_num==0 && kbObj.token_num==0" allow-clear>
                <a-optgroup  :label="index" v-for="(item,index) in modelList" :key=index>
@@ -131,7 +96,7 @@
            <div style="width: 100%;text-align: right">
              <a-space>
                <a-button @click="cancelConfig">取消</a-button>
                <a-button type="primary" html-type="submit">保存</a-button>
                <a-button :loading="loading" type="primary" html-type="submit">保存</a-button>
              </a-space>
            </div>
          </a-form-item>
@@ -193,7 +158,8 @@
import { Message } from "@arco-design/web-vue";
import { queryModelList,kbUpdate } from "@/api/kbList";
import message from "@arco-design/web-vue/es/message";
import useLoading from "@/hooks/loading";
const { loading,setLoading } = useLoading(true);
const props =  defineProps(['kbtenantInfo'])
const emit =  defineEmits(['cancleConfig','saveConfig'])
@@ -207,10 +173,11 @@
});
let kbObj = reactive({});
let avatarShow = ref(true);
const form = reactive({
  name: kbObj.name,
  avatar: '',//
  name: '',
  avatar: '',//头像
  max_token: 600,
  threshold: 0.32,
  max_cluster: 233,
@@ -225,7 +192,7 @@
  language: "English",
  permission: "",
  embd_id: "BAAI/bge-large-zh-v1.5",
  parser_id: kbObj.parser_id,
  parser_id: '',
  layout_recognize: true
});
@@ -236,35 +203,42 @@
      message:'知识库名称不允许为空',
    },
  ],
  embd_id: [
    {
      required: true,
      message:'请选择',
    },
  ],
  parser_id: [
    {
      required: true,
      message:'请选择',
    },
  ],
  prompt: [
    {
      required: true,
      message:'提示词不允许为空',
    },
  ],
}
let visible = ref(false);
let loading = ref(false);
const formRef = ref(null);
const modelList = ref({});
const file = ref();
const onChange = (_, currentFile) => {
  file.value = currentFile;
  convertImageToBase64(file.value.file).then((result)=>{
    form.avatar = result;
  })
const uploadAction = '/api/v1/llm/upload'; // 替换为你的上传API
const fileList = ref([]);
const imageUrls = ref([]);
const updateFileList = (newFileList) => {
  fileList.value = newFileList;
  console.log(newFileList, 88);
};
function convertImageToBase64(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onloadend = function() {
      resolve(reader.result);
    };
    reader.onerror = reject;
    reader.readAsDataURL(file);
  });
}
const onProgress = (currentFile) => {
  file.value = currentFile;
const handleSuccess = (urls) => {
  imageUrls.value = urls; // 拿到上传的图片地址
  form.avatar = urls[0];
};
@@ -297,7 +271,7 @@
     };
   }
   try {
     setLoading(true)
    const data = await kbUpdate(parms);
    if(data.code == '0'){
      Message.success("配置成功");
@@ -305,10 +279,11 @@
      emit('saveConfig')
    }
    // emit('upTabdateItem')
    setLoading(false)
  } catch (err) {
    Message.error(err.message);
     setLoading(false)
  }
@@ -361,13 +336,11 @@
  formRef.value.resetFields();
  kbObj = value;
  console.log(kbObj, 'kbObj');
  // if(kbObj.avatar){
  //   file.value.url = kbObj.avatar
  // }
  let configObj = {
    name: kbObj.name,
    avatar: kbObj.avatar,
    pages:  kbObj.parser_config.pages,
    chunk_token_num:  kbObj.parser_config.chunk_token_num,
    description: kbObj.description,
    language: "English",
    permission: kbObj.permission,
@@ -384,9 +357,17 @@
      use_raptor: kbObj.parser_config.raptor.use_raptor,
    });
  }else{
    Object.assign(form,configObj);
    Object.assign(form,{
      ...configObj,
      use_raptor: false,
    });
  }
  imageUrls.value = [kbObj.avatar];
  console.log(form,'配置页面表单信息');
  avatarShow.value = false;
  setTimeout(() => {
    avatarShow.value = true;
  },100);
}
defineExpose({
@@ -395,6 +376,7 @@
onBeforeMount(()=>{
  setLoading(false)
  queryModel({})
})
onMounted(()=>{