From a78f6ae9b480f1f86f1a07d551585f5f0cac07fd Mon Sep 17 00:00:00 2001 From: charles <981744753@qq.com> Date: 星期一, 29 七月 2024 16:48:56 +0800 Subject: [PATCH] feat:新增会话,会话记录模块 --- src/views/dmx/knowledgeLib/add.vue | 224 +++++++++++++++++++++---------------------------------- 1 files changed, 86 insertions(+), 138 deletions(-) diff --git a/src/views/dmx/knowledgeLib/add.vue b/src/views/dmx/knowledgeLib/add.vue index 2136f06..34bc1de 100644 --- a/src/views/dmx/knowledgeLib/add.vue +++ b/src/views/dmx/knowledgeLib/add.vue @@ -1,173 +1,113 @@ <template> - <a-button :type="edit=='edit' ? 'text' : 'primary'" @click="handleClick"> - <template #icon v-if="edit=='add'"> + <a-button type="primary" @click="handleClick"> + <template #icon> <icon-plus /> </template> - {{edit=='edit' ? '缂栬緫' : '鏂板缓璐﹀彿'}} + 鏂板鏂囦欢 </a-button> - <a-modal v-model:visible="visible" :title="edit=='edit' ? '缂栬緫' : '鏂板缓璐﹀彿'" @before-open="handleOpened" @cancel="handleCancel" @before-ok="handleBeforeOk"> - <a-form ref="formRef" :rules="rules" :model="form" @submit="handleSubmit" > - <a-form-item field="name" label="鐢ㄦ埛鍚�"> - <a-input v-model="form.name" /> - </a-form-item> - <a-form-item field="nameJoin" label="鏄电О"> - <a-input v-model="form.nameJoin" /> - </a-form-item> -<!-- <a-form-item field="post" label="Post">--> -<!-- <a-select v-model="form.post">--> -<!-- <a-option value="post1">Post1</a-option>--> -<!-- <a-option value="post2">Post2</a-option>--> -<!-- <a-option value="post3">Post3</a-option>--> -<!-- <a-option value="post4">Post4</a-option>--> -<!-- </a-select>--> -<!-- </a-form-item>--> - <a-form-item label="澶囨敞"> - <a-textarea v-model="form.txt" placeholder="璇疯緭鍏�" allow-clear/> - </a-form-item> -<!-- <a-form-item>--> -<!-- <div style="width: 100%;text-align: right">--> -<!-- <a-button @click="visible = false">鍙栨秷</a-button>--> -<!-- <a-button style="margin-left: 10px" type="primary" html-type="submit">纭畾</a-button>--> -<!-- </div>--> -<!-- </a-form-item>--> - </a-form> + <a-modal v-model:visible="visible" title="涓婁紶鏂囦欢" @before-open="handleOpened" @cancel="handleCancel" @before-ok="handleBeforeOk" title-align="start"> + <a-tabs :default-active-key="activeKey" @change="activeKeyChange"> + <a-tab-pane key="1" title="鏂囦欢"> + </a-tab-pane> + <a-tab-pane key="2" title="鏂囦欢澶�"> + </a-tab-pane> + </a-tabs> + <div class="aUpload"> + <!-- <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" />--> + <a-upload + action="/" + :auto-upload="false" + ref="uploadRef" + :file-list="uploadList" + draggable + :directory="directory" + @change="onChange" + multiple + /> + </div> </a-modal> </template> <script lang="ts" setup> -import { onMounted ,onBeforeMount, reactive, ref } from "vue"; - -const props = defineProps({ - edit: { - type: String, - default: 'add' - }, - record: { - type: Object, - default: () => { - return {} - } - } -}) +import { onMounted, onBeforeMount, reactive, ref, computed } from "vue"; +import axios from 'axios'; +import { kbdocumentupload } from "@/api/kbList"; +import { Message } from '@arco-design/web-vue'; +let CancelToken = axios.CancelToken +let source = null const visible = ref(false); const loading = ref(false); +const directory = ref(false); +const activeKey = ref('1'); +const formRef = ref(null); +const uploadList = ref([]); const form = reactive({ name: '',// 鐢ㄦ埛鍚� nameJoin: '',// 鏄电О post: '',// 宀椾綅 txt: '',// 澶囨敞 }); -const formRef = ref(null); - -const rules = { - name: [ - { - required: true, - message:'鐢ㄦ埛鍚嶄笉鍏佽涓虹┖', - }, - ], - nameJoin: [ - { - required: true, - message:'鏄电О涓嶅厑璁镐负绌�', - }, - ], - password: [ - { - required: true, - message:'password is required', - }, - ], - password2: [ - { - required: true, - message:'password is required', - }, - { - validator: (value, cb) => { - if (value !== form.password) { - cb('two passwords do not match') - } else { - cb() +const props = defineProps(['kbobj']) +const emit = defineEmits(['changeFetchData']) +const uploadRef = ref(); +const files = ref([]); +console.log(props.kbobj); +const acceptNameList = computed( + ()=>{ + return '.word, .pdf, .ppt, .excel, .txt, .zip, .rar, .7z, .doc, .docx, .xls, .xlsx, .pptx, .ppt, .pdf, .mp4, .avi, .mp3,.wav, .wma, .wmv, .rm,' + } +) +// 涓婁紶鏂囦欢 +const submitForm = async()=>{ + if (files.value && files.value.length > 0) { + files.value.map((item) => { + const formData = new FormData() + formData.append(name || 'file', item.file); + formData.append('kb_id', props.kbobj.id); + kbdocumentupload(formData).then((res) => { + if(res.code == 0){ + emit('changeFetchData') + Message.success('涓婁紶鎴愬姛'); + visible.value = false; } - } - } - ], - email: [ - { - type: 'email', - required: true, - } - ], - ip: [ - { - type: 'ip', - required: true, - } - ], - url: [ - { - type: 'url', - required: true, - } - ], - match: [ - { - required: true, - validator: (value, cb) => { - return new Promise((resolve) => { - if (!value) { - cb('Please enter match') - } - if (value !== 'match') { - cb('match must be match!') - } - resolve() - }) - } - } - ], + }) + }) + } } - const handleSubmit = ({values, errors}) => { - console.log('values:', values, '\nerrors:', errors) + } + + +const onChange = (fileList) => { + files.value = fileList; +}; + + + + + const handleClick = () => { visible.value = true; }; const handleBeforeOk = (done) => { - formRef.value.validate().then(res => { - console.log('form:', form) - if (!form.name) { - done(false) - }else { - console.log('璇锋眰鏁版嵁'); - - } - }) + submitForm(); }; const handleCancel = () => { visible.value = false; } const handleOpened =(el) => { - Object.assign(form,{ - name: '',// 鐢ㄦ埛鍚� - nameJoin: '',// 鏄电О - post: '',// 宀椾綅 - txt: '',// 澶囨敞 - }); - formRef.value.resetFields(); - console.log(props.edit, 'edit'); - console.log(props.record, 'record'); - if(props.edit == 'edit'){ - Object.assign(form,props.record); - } + console.log(props.kbobj); + uploadList.value = []; } - +const activeKeyChange = (value)=>{ + activeKey.value = value; + directory.value = value == '2' ? true : false; +} onBeforeMount(()=>{ }) @@ -178,11 +118,19 @@ </script> <script lang="ts"> -import { deleteAccount } from "@/api/account"; export default { name: 'add', methods: { } }; -</script> \ No newline at end of file +</script> + +<style scoped lang="less"> +.aUpload { + width: 100%; + max-height: 500px; + overflow: hidden; + overflow-y: auto; +} +</style> \ No newline at end of file -- Gitblit v1.8.0