<script setup lang="ts"> 
 | 
  import { defineProps, ref, defineEmits, onMounted } from 'vue'; 
 | 
  import { Message } from '@arco-design/web-vue'; 
 | 
  import { addSessionApi, getDialogListApi } from '@/api/session'; 
 | 
  const props = defineProps({ 
 | 
    modalObj: Object, 
 | 
  }); 
 | 
  const conversation = ref({ dialog_id: '', conversation_desc: '' }); 
 | 
  const dialogList = ref([]); 
 | 
  const emit = defineEmits(['addSession']); 
 | 
  const queryDialogList = async () => { 
 | 
    const { code, data } = await getDialogListApi(); 
 | 
    if (code === 200) { 
 | 
      dialogList.value = data; 
 | 
    } 
 | 
  }; 
 | 
  
 | 
  const rules = { 
 | 
    dialog_id: [ 
 | 
      { 
 | 
        required: true, 
 | 
        message: '智能助手不能为空', 
 | 
      }, 
 | 
    ], 
 | 
    conversation_desc: [ 
 | 
      { 
 | 
        required: true, 
 | 
        message: '描述不能为空', 
 | 
      }, 
 | 
    ], 
 | 
  }; 
 | 
  onMounted(() => { 
 | 
    queryDialogList(); 
 | 
  }); 
 | 
  const formRef = ref(); 
 | 
  const handleOk = () => { 
 | 
    formRef.value.validate().then(async (res) => { 
 | 
      if (!res) { 
 | 
        const { code } = await addSessionApi({ ...conversation.value }); 
 | 
        if (code === 200) { 
 | 
          Message.success('添加成功'); 
 | 
          emit('addSession'); 
 | 
          setTimeout(() => { 
 | 
            props.modalObj.add = false; 
 | 
          }, 500); 
 | 
        } else { 
 | 
          Message.warning('添加失败'); 
 | 
        } 
 | 
      } 
 | 
    }); 
 | 
  
 | 
    return false; 
 | 
  }; 
 | 
  const destroyData = () => { 
 | 
    formRef.value.resetFields(); 
 | 
  }; 
 | 
</script> 
 | 
  
 | 
<template> 
 | 
  <div> 
 | 
    <a-modal 
 | 
      v-model:visible="modalObj.add" 
 | 
      @before-ok="handleOk" 
 | 
      @cancel="modalObj.add = false" 
 | 
      @before-close="destroyData" 
 | 
    > 
 | 
      <template #title> 新增会话 </template> 
 | 
      <a-form ref="formRef" :model="conversation" :rules="rules"> 
 | 
        <a-form-item label="助手关联:" field="dialog_id" @submit="handleSubmit"> 
 | 
          <a-select 
 | 
            style="width: 80%" 
 | 
            v-model="conversation.dialog_id" 
 | 
            placeholder="请选择关联助手" 
 | 
          > 
 | 
            <a-option 
 | 
              v-for="dialog in dialogList" 
 | 
              :key="dialog.id" 
 | 
              :value="dialog.id" 
 | 
              >{{ dialog.name }}</a-option 
 | 
            > 
 | 
          </a-select> 
 | 
        </a-form-item> 
 | 
        <a-form-item label="描述:" field="conversation_desc"> 
 | 
          <a-textarea 
 | 
            placeholder="请输入描述" 
 | 
            :max-length="100" 
 | 
            show-word-limit 
 | 
            :auto-size="{ minRows: 4, maxRows: 5 }" 
 | 
            v-model="conversation.conversation_desc" 
 | 
            style="width: 80%" 
 | 
          ></a-textarea> 
 | 
        </a-form-item> 
 | 
      </a-form> 
 | 
    </a-modal> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<style scoped lang="scss"></style> 
 |