|   | 
| <template> | 
|   <a-button 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" | 
|   > | 
|     <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> | 
|   | 
|       <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> | 
| </template> | 
|   | 
| <script lang="ts" setup> | 
| import { onMounted ,onBeforeMount, reactive, ref } from "vue"; | 
|   | 
| 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 rules = { | 
|   name: [ | 
|     { | 
|       required: true, | 
|       message:'名称不允许为空', | 
|     }, | 
|   ], | 
| } | 
|   | 
|   | 
| const handleSubmit = ({values, errors}) => { | 
|   console.log('values:', values, '\nerrors:', errors) | 
| } | 
|   | 
| 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('请求数据'); | 
|   | 
|       } | 
|     }) | 
| }; | 
| const handleCancel = () => { | 
|   visible.value = false; | 
| } | 
|   | 
| const handleOpened =(el) => { | 
|   Object.assign(form,{ | 
|     name: '',// 用户名 | 
|     nameJoin: '',// 昵称 | 
|     post: '',// 岗位 | 
|     txt: '',// 备注 | 
|   }); | 
|   formRef.value.resetFields(); | 
| } | 
|   | 
| const file = ref(); | 
|   | 
| const onChange = (_, currentFile) => { | 
|   file.value = { | 
|     ...currentFile, | 
|     // url: URL.createObjectURL(currentFile.file), | 
|   }; | 
| }; | 
| const onProgress = (currentFile) => { | 
|   file.value = currentFile; | 
| }; | 
|   | 
| onBeforeMount(()=>{ | 
|   | 
| }) | 
| onMounted(()=>{ | 
|   | 
|   | 
| }) | 
| </script> | 
|   | 
| <script lang="ts"> | 
| export default { | 
|   name: 'add', | 
|   methods: { | 
|   | 
|   } | 
| }; | 
| </script> |