liudong
2024-08-02 3a022dc2caa78267a681824ea1c303f140cd6797
src/views/dmx/IntelligentAgent/components/editAgent.vue
@@ -1,119 +1,99 @@
<template>
  <a-button  type="text" size="small" @click="handleClick">
  <a-button  v-if="typeAngint=='edit'" type="text" size="small" @click="handleClick">
    <template #icon>
      <icon-tool />
    </template>
  </a-button>
  <a-modal v-model:visible="visible" title="添加模式"
<!--  <a-button v-if="typeAngint=='add'" style="margin-left: 10px" type="primary" @click="handleClick">确定</a-button>-->
  <a-modal v-model:visible="visible" title=""
           @before-open="handleOpened"
           @cancel="handleCancel"
           :footer="false"
           title-align="start"
           width="600px"
           fullscreen
  >
    <a-form ref="formRef" :rules="rules" :model="form" @submit="handleSubmit" :style="{width:'90%',margin:'0 auto'}" layout="vertical" >
      <a-form-item field="name" label="模型类型">
        <a-select v-model="form.section" placeholder="请选择">
          <a-option value="section one">Section One</a-option>
          <a-option value="section two">Section Two</a-option>
          <a-option value="section three">Section Three</a-option>
        </a-select>
      </a-form-item>
      <a-form-item field="name" label="模型名称">
        <a-input v-model="form.name" placeholder="请输入名称"/>
      </a-form-item>
      <a-form-item field="section" label="模型图片">
        <a-space direction="vertical" :style="{ width: '100%' }">
          <a-upload
            action="/"
            :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>
        </a-space>
      </a-form-item>
      <a-form-item field="name" label="基础Url">
        <a-input v-model="form.name" placeholder="请输入名称"/>
      </a-form-item>
      <a-form-item field="raptor" label="是否支持 Vision">
        <a-switch v-model="form.raptor" />
      </a-form-item>
  <div class="main-container">
    <div class="main-container-lf">
      <div style="padding: 10px;font-size: 16px;background:#eeeeee;">智能体配置</div>
      <div style="display: flex;width: 100%;" :style="{height:height}">
        <div style="width: 50%;height: 100%">
          <div style="padding: 10px;font-size: 12px;color: #2a2a2b;">智能体画像</div>
          <div>
      <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>
        </div>
      </a-form-item>
    </a-form>
        <div style="background:#eeeeee;width: 50%;">
          <a-form ref="formRef" :rules="rules" :model="form" @submit="handleSubmit"  layout="vertical" >
            <a-collapse :default-active-key="['1']">
              <a-collapse-item header="AI模型配置" key="1">
              </a-collapse-item>
              <a-collapse-item header="开场引导" :key="'2'">
              </a-collapse-item>
              <a-collapse-item header="知识库" key="3">
              </a-collapse-item>
              <a-collapse-item header="工具" key="4" disabled>
              </a-collapse-item>
              <a-collapse-item header="工作流" key="5" disabled>
              </a-collapse-item>
            </a-collapse>
            <a-form-item>
              <div style="position: absolute;right: 10px;top: 10px">
<!--                <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>
        </div>
      </div>
    </div>
    <div class="main-container-rt">
      <div :style="{height:heightrg}">
        <div style="padding: 10px">
          <a-avatar :style="{ backgroundColor: '#3370ff' }">
            <img
              :style="{ width: '100%'}"
              alt="dessert"
              src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a20012a2d4d5b9db43dfc6a01fe508c0.png~tplv-uwbnlip3yd-webp.webp"
            />
          </a-avatar>
          调试预览
        </div>
        <a-divider style="margin: 0;margin-left: 10px"/>
        <div class="bottom">
          <div class="input">
            <a-input  placeholder="输入您想了解的内容,按Enter发送">
              <template #suffix>
                <icon-send  style="cursor: pointer" />
              </template>
            </a-input></div>
          <div class="text">内容由AI生成,仅供参考</div>
        </div>
      </div>
    </div>
  </div>
  </a-modal>
</template>
<script lang="ts" setup>
import { onMounted ,onBeforeMount, reactive, ref } from "vue";
import { onMounted, onBeforeMount, reactive, ref, nextTick } from "vue";
import { IconSend } from "@arco-design/web-vue/es/icon";
const props =  defineProps(['typeAngint','formData'])
const visible = ref(false);
const loading = ref(false);
const form = reactive({
  size: "medium",
  name: "",
  age: undefined,
  section: "0",
  province: "haidian",
  options: [],
  date: "",
  time: "",
  radio: "radio one",
  slider: 5,
  score: 5,
  switch: false,
  multiSelect: ["section one"],
  treeSelect: "",
  raptor: false,
  prompt: '请总结以下段落。 小心数字,不要编造。 段落如下:\n' +
    '      {cluster_content}\n' +
    '以上就是你需要总结的内容。',
});
const formRef = ref(null);
const height = ref('calc(100vh - 150px)')
const heightrg = ref('calc(100vh - 100px)')
const rules = {
  name: [
@@ -129,9 +109,16 @@
  console.log('values:', values, '\nerrors:', errors)
}
const handleClick = () => {
const handleClick = (data) => {
  visible.value = true;
  nextTick(()=>{
    Object.assign(form,data);
    console.log(form);
  })
};
defineExpose({
  handleClick
})
const handleBeforeOk = (done) => {
    formRef.value.validate().then(res => {
      console.log('form:', form)
@@ -148,12 +135,6 @@
}
const handleOpened =(el) => {
  Object.assign(form,{
    name: '',// 用户名
    nameJoin: '',// 昵称
    post: '',// 岗位
    txt: '',// 备注
  });
  formRef.value.resetFields();
}
@@ -178,11 +159,32 @@
})
</script>
<script lang="ts">
export default {
  name: 'add',
  methods: {
<style scoped lang="less">
.main-container {
  width: 100%;
  display: flex;
  .main-container-lf {
    width: 60%;
  }
};
</script>
  .main-container-rt {
    position: relative;
    width: 40%;
  }
}
.bottom{
  width: 100%;
  position: absolute;
  bottom: 40px;
  left:0;
  .input{
    margin-left: 20%;
    width: 60%;
  }
  .text{
    margin-left: 40%;
    font-size: 12px;
    color: lightgrey;
    line-height: 40px;
  }
}
</style>