add.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <a-button type="primary" v-hasPermi="'system:knowledgeLib:upload'" @click="handleClick">
  3. <template #icon>
  4. <icon-plus />
  5. </template>
  6. <!-- 新增文件 -->
  7. {{ $t('knowledgeLib.create_file') }}
  8. </a-button>
  9. <!--上传文件 -->
  10. <a-modal
  11. v-model:visible="visible"
  12. :title="$t('knowledgeLib.upload_file')"
  13. @open="handleOpened"
  14. @cancel="handleCancel"
  15. :ok-loading="loading"
  16. @before-ok="handleBeforeOk"
  17. title-align="start"
  18. >
  19. <a-tabs :default-active-key="activeKey" @change="activeKeyChange">
  20. <!-- 文件 -->
  21. <a-tab-pane key="1" :title="$t('knowledgeLib.file')"> </a-tab-pane>
  22. <!-- 文件夹 -->
  23. <a-tab-pane key="2" :title="$t('knowledgeLib.folder')"> </a-tab-pane>
  24. </a-tabs>
  25. <div class="aUpload">
  26. <!-- <a-upload :file-list="uploadList" draggable accept=".word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm," :custom-request="customRequest" />-->
  27. <a-upload
  28. action="/"
  29. :auto-upload="false"
  30. ref="uploadRef"
  31. :file-list="uploadList"
  32. draggable
  33. :directory="directory"
  34. @change="onChange"
  35. multiple
  36. />
  37. </div>
  38. </a-modal>
  39. </template>
  40. <script setup>
  41. import { onMounted, onBeforeMount, reactive, ref, computed } from 'vue';
  42. import { Message } from '@arco-design/web-vue';
  43. import axios from 'axios';
  44. import { kbdocumentupload } from '../../../../apis/rgflow-dify';
  45. import { toSyncOwnKnowledge } from './asyc.js';
  46. import { useI18n } from 'vue-i18n';
  47. const { t } = useI18n();
  48. let CancelToken = axios.CancelToken;
  49. let source = null;
  50. const visible = ref(false);
  51. const loading = ref(false);
  52. const directory = ref(false);
  53. const activeKey = ref('1');
  54. const formRef = ref(null);
  55. const uploadList = ref([]);
  56. const form = reactive({
  57. name: '', // 用户名
  58. nameJoin: '', // 昵称
  59. post: '', // 岗位
  60. txt: '' // 备注
  61. });
  62. const props = defineProps(['kbobj']);
  63. const emit = defineEmits(['changeFetchData']);
  64. const uploadRef = ref();
  65. const files = ref([]);
  66. const acceptNameList = computed(() => {
  67. return '.word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm,';
  68. });
  69. // 上传文件
  70. console.log(props, 11);
  71. const submitForm = async (done) => {
  72. if (!props.kbobj.id) {
  73. Message.error(t('management.no_permission'));
  74. done(false);
  75. return;
  76. }
  77. if (files.value && files.value.length > 0) {
  78. files.value.map((item) => {
  79. const formData = new FormData();
  80. formData.append('file', item.file);
  81. formData.append('kb_id', props.kbobj.id);
  82. kbdocumentupload(formData).then((res) => {
  83. if (res.retcode == 0) {
  84. emit('changeFetchData');
  85. Message.success('上传成功');
  86. handleCancel();
  87. // 同步数据
  88. toSyncOwnKnowledge(props.kbobj.id);
  89. }
  90. });
  91. });
  92. done(false);
  93. } else {
  94. done(false);
  95. }
  96. };
  97. const handleSubmit = ({ values, errors }) => {};
  98. const onChange = (fileList) => {
  99. files.value = fileList;
  100. };
  101. const handleClick = () => {
  102. visible.value = true;
  103. };
  104. const handleBeforeOk = (done) => {
  105. submitForm(done);
  106. };
  107. const handleCancel = () => {
  108. visible.value = false;
  109. };
  110. const handleOpened = (el) => {
  111. uploadList.value = [];
  112. files.value = [];
  113. loading.value = false;
  114. };
  115. const activeKeyChange = (value) => {
  116. activeKey.value = value;
  117. directory.value = value == '2' ? true : false;
  118. };
  119. onBeforeMount(() => {});
  120. onMounted(() => {});
  121. </script>
  122. <script>
  123. export default {
  124. name: 'add',
  125. methods: {}
  126. };
  127. </script>
  128. <style scoped lang="css">
  129. .aUpload {
  130. width: 100%;
  131. max-height: 500px;
  132. overflow: hidden;
  133. overflow-y: auto;
  134. :deep(.arco-upload-progress) {
  135. display: none;
  136. }
  137. }
  138. </style>