|
@@ -8,80 +8,84 @@
|
|
|
<div class="text-xs text-gray-400">
|
|
|
这些信息在机器人描述中供其他用户查看
|
|
|
</div>
|
|
|
- <div class="bg-gray-700 p-4 rounded-lg">
|
|
|
- <div class="flex gap-4">
|
|
|
- <div class="w-1/3">
|
|
|
- <div class="bg-gray-600 p-4 rounded-lg flex items-center justify-center">
|
|
|
- <img
|
|
|
- src="https://placehold.co/150x150"
|
|
|
- alt="Placeholder profile image"
|
|
|
- class="rounded-full"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="text-sm mt-2 text-center">
|
|
|
- 支持PNG、JPG、JPEG、WebP及GIF格式的图片大小不超过10MB。
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="flex-1">
|
|
|
- <div class="flex flex-col gap-4 ml-10">
|
|
|
- <div class="flex items-center justify-between">
|
|
|
- <div class="text-sm font-medium">名称</div>
|
|
|
- <input
|
|
|
- type="textarea"
|
|
|
- class="bg-gray-600 p-2 rounded-lg text-sm flex-1 ml-4 focus:outline-none focus:ring focus:border-blue-300"
|
|
|
- placeholder="填写名称"
|
|
|
- />
|
|
|
- </div>
|
|
|
+ <el-form :model="form" :rules="rules" ref="form" label-width="60px" class="form" >
|
|
|
+ <div class="bg-gray-700 p-5 rounded-lg">
|
|
|
+ <div class="flex gap-4">
|
|
|
+ <div class="w-1/3 flex justify-center">
|
|
|
+ <el-form-item label="" prop="picture" label-width="0">
|
|
|
+ <ImageUpload v-model="form.picture" class="imgUp" :limit="1" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <!-- <div class="bg-gray-600 p-4 rounded-lg flex items-center justify-center">
|
|
|
|
|
|
- <div class="flex items-center justify-between">
|
|
|
- <div class="text-sm font-medium">标语</div>
|
|
|
- <textarea
|
|
|
- class=" flex-1 ml-4 bg-gray-600 p-2 rounded-lg text-sm w-full h-16 focus:outline-none focus:ring focus:border-blue-300"
|
|
|
- placeholder="介绍一下你要值造的这个机器人。应段介绍只会是示在机器人的角色详情信息中,不会出现在提示词中,也不会影响到你的机器人。"
|
|
|
- ></textarea>
|
|
|
- </div>
|
|
|
- <div class="flex items-center justify-start">
|
|
|
- <div class="text-sm font-medium">类型</div>
|
|
|
- <div class="flex items-center gap-2 ml-6">
|
|
|
- <span class="text-xs bg-red-500 px-2 py-1 rounded-full">
|
|
|
- 公开
|
|
|
- </span>
|
|
|
- <span class="text-xs bg-gray-500 px-2 py-1 rounded-full">
|
|
|
- 私密
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="flex items-center justify-between">
|
|
|
- <div class="text-sm font-medium">标签</div>
|
|
|
- <input
|
|
|
- type="textarea"
|
|
|
- class="bg-gray-600 p-2 rounded-lg text-sm flex-1 ml-4 focus:outline-none focus:ring focus:border-blue-300"
|
|
|
- placeholder="搜索并选择与你的机器人相关的标签"
|
|
|
- />
|
|
|
+ </div> -->
|
|
|
+ <!-- <div class="text-sm mt-2 text-center">
|
|
|
+ 支持PNG、JPG、JPEG、WebP及GIF格式的图片大小不超过10MB。
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <div class="flex-1">
|
|
|
+ <div class="flex flex-col gap-4 ml-6 pb-4">
|
|
|
+ <el-form-item label="名称" prop="characterName">
|
|
|
+ <el-input v-model="form.characterName" placeholder="填写名称"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="简介" prop="prologue">
|
|
|
+ <el-input
|
|
|
+ v-model="form.prologue"
|
|
|
+ type="textarea"
|
|
|
+ :autosize="{ minRows: 3, maxRows: 3}"
|
|
|
+ placeholder="介绍一下你要值造的这个机器人。应段介绍只会是示在机器人的角色详情信息中,不会出现在提示词中,也不会影响到你的机器人。"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="性别" prop="sex">
|
|
|
+ <el-radio-group v-model="form.sex">
|
|
|
+ <el-radio label="0">男</el-radio>
|
|
|
+ <el-radio label="1">女</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="类型" prop="type">
|
|
|
+ <el-radio-group v-model="form.type">
|
|
|
+ <el-radio :label="0">公开</el-radio>
|
|
|
+ <el-radio :label="1">私密</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="标签" prop="labelId">
|
|
|
+ <el-select v-model="form.labelId" multiple filterable placeholder="搜索并选择与你的机器人相关的标签">
|
|
|
+ <el-option :label="item.labelName" :value="item.id" v-for="(item, index) in labelData" :key="index"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="text-xl font-medium">机器人制作</div>
|
|
|
- <div class="bg-gray-700 p-4 rounded-lg">
|
|
|
- <div class="flex flex-col gap-4">
|
|
|
- <div class="text-sm">描述</div>
|
|
|
- <textarea
|
|
|
- class="bg-gray-600 p-2 rounded-lg text-sm w-full h-16 focus:outline-none focus:ring focus:border-blue-300"
|
|
|
- placeholder="通过设置机器人的指令和反馈,机器人在玩家互动时即时回复,增强玩家的互动,有什么较好的指令。我们会对指令的使用情况进行了解,确保指令的正常使用。"
|
|
|
- ></textarea>
|
|
|
- </div>
|
|
|
- <div class="flex flex-col gap-4">
|
|
|
- <div class="text-sm mt-2">性格</div>
|
|
|
- <textarea
|
|
|
- class="bg-gray-600 p-2 rounded-lg text-sm w-full h-16 focus:outline-none focus:ring focus:border-blue-300"
|
|
|
- placeholder="性格简述"
|
|
|
- ></textarea>
|
|
|
+ <div class="text-xl font-medium my-6">机器人制作</div>
|
|
|
+ <div class="bg-gray-700 p-5 rounded-lg">
|
|
|
+ <el-form-item label="开场白" prop="firstContent" label-width="80px" style="margin-bottom: 20px;">
|
|
|
+ <el-input
|
|
|
+ v-model="form.firstContent"
|
|
|
+ type="textarea"
|
|
|
+ :autosize="{ minRows: 4, maxRows: 4}"
|
|
|
+ placeholder="帮您的机器人设计一段开场白吧"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="角色描述" prop="characterIntroduction" label-width="80px">
|
|
|
+ <el-input
|
|
|
+ v-model="form.characterIntroduction"
|
|
|
+ type="textarea"
|
|
|
+ :autosize="{ minRows: 4, maxRows: 4}"
|
|
|
+ placeholder="通过设置机器人的指令和反馈,机器人在玩家互动时即时回复,增强玩家的互动,有什么较好的指令。我们会对指令的使用情况进行了解,确保指令的正常使用。"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <div class="flex flex-col gap-4">
|
|
|
+ <div class="text-sm">描述</div>
|
|
|
+ <textarea
|
|
|
+ class="bg-gray-600 p-2 rounded-lg text-sm w-full h-16 focus:outline-none focus:ring focus:border-blue-300"
|
|
|
+ placeholder="通过设置机器人的指令和反馈,机器人在玩家互动时即时回复,增强玩家的互动,有什么较好的指令。我们会对指令的使用情况进行了解,确保指令的正常使用。"
|
|
|
+ ></textarea>
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </el-form>
|
|
|
<div class="flex justify-center">
|
|
|
- <button class="bg-blue-600 text-white px-4 py-2 rounded-lg">
|
|
|
+ <button class="bg-blue-600 text-white px-4 py-2 rounded-lg" @click="submitForm">
|
|
|
提交
|
|
|
</button>
|
|
|
</div>
|
|
@@ -93,14 +97,144 @@
|
|
|
|
|
|
<script>
|
|
|
import Header from "@/views/homeComponents/Header.vue"
|
|
|
+import { addCharacterApi } from "@/api/create.js"
|
|
|
+import { labelListApi } from "@/api/home.js"
|
|
|
export default {
|
|
|
components: {
|
|
|
Header,
|
|
|
},
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ labelData: [],
|
|
|
+ form: {
|
|
|
+ characterName: "",// 人物名称
|
|
|
+ characterIntroduction: "", //人物角色描述
|
|
|
+ characterPersonalityTags: "", //人物性格标签
|
|
|
+ firstContent: "", //首次聊天内容
|
|
|
+ labelId: "", //标签id
|
|
|
+ picture: "", //人物图片
|
|
|
+ prologue: "", //人物简介
|
|
|
+ sex: "", //性别(0男 1女)
|
|
|
+ type: "", //公开或私密(0公开 1私密)
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ characterName: [
|
|
|
+ { required: true, message: "请输入名称", trigger: "change" },
|
|
|
+ ],
|
|
|
+ characterIntroduction: [
|
|
|
+ { required: true, message: "请输入人物描述", trigger: "change" },
|
|
|
+ ],
|
|
|
+ firstContent: [
|
|
|
+ { required: true, message: "请输入开场白", trigger: "change" },
|
|
|
+ ],
|
|
|
+ labelId: [
|
|
|
+ { required: true, message: "请选择标签", trigger: "change" },
|
|
|
+ ],
|
|
|
+ picture: [
|
|
|
+ { required: true, message: "请上传人物图片", trigger: "change" },
|
|
|
+ ],
|
|
|
+ prologue: [
|
|
|
+ { required: true, message: "请输入人物简介", trigger: "change" },
|
|
|
+ ],
|
|
|
+ sex: [
|
|
|
+ { required: true, message: "请选择性别", trigger: "change" },
|
|
|
+ ],
|
|
|
+ type: [
|
|
|
+ { required: true, message: "请选择类型", trigger: "change" },
|
|
|
+ ],
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.getLabelList()
|
|
|
+ // console.log(this.$route.params.searchValue, 'this.$route.params.searchValue');
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async addCharacter() {
|
|
|
+ let data = {
|
|
|
+ name: this.form.name,
|
|
|
+ description: this.form.description,
|
|
|
+ character: this.form.character,
|
|
|
+ tags: this.form.tags,
|
|
|
+ image: this.form.image,
|
|
|
+ type: this.form.type,
|
|
|
+ }
|
|
|
+ let res = await addCharacterApi(data)
|
|
|
+ console.log(res, 'res');
|
|
|
+ },
|
|
|
+ getLabelList() {
|
|
|
+ let params = {
|
|
|
+ pageSize: 9999,
|
|
|
+ pageNum: 1
|
|
|
+ }
|
|
|
+ labelListApi(params).then(res => {
|
|
|
+ console.log(res, '标签列表');
|
|
|
+ this.labelData = res.rows
|
|
|
+ })
|
|
|
+ },
|
|
|
+ submitForm() {
|
|
|
+ this.$refs.form.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ addCharacterApi(this.form).then(() => {
|
|
|
+ this.$message({
|
|
|
+ message: '创建成功',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ this.$refs.form.resetFields()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ }
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
|
|
|
+</style>
|
|
|
+<style scoped>
|
|
|
+.form >>> .el-form-item {
|
|
|
+ margin-bottom: 0px;
|
|
|
+}
|
|
|
+.form >>> .el-form-item__label,
|
|
|
+.form >>> .el-radio {
|
|
|
+ color: #fff;
|
|
|
+}
|
|
|
+.form >>> .el-select {
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+.form >>> .el-input__inner,
|
|
|
+.form >>> .el-textarea__inner,
|
|
|
+.form >>> .el-select__input
|
|
|
+ {
|
|
|
+ width: 100%;
|
|
|
+ background-color: rgba(75, 85, 99, 1);
|
|
|
+ color: #fff;
|
|
|
+ border-radius: 0.5rem;
|
|
|
+ border-color: rgba(75, 85, 99, 0);
|
|
|
+}
|
|
|
+.imgUp {
|
|
|
+
|
|
|
+}
|
|
|
+.imgUp >>> .el-upload__tip {
|
|
|
+ color: #b8b8b8;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+.imgUp >>> .upload {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ padding: 20px;
|
|
|
+ background: rgba(75, 85, 99, 1);
|
|
|
+ border-radius: 10px;
|
|
|
+}
|
|
|
+.imgUp >>> .el-upload {
|
|
|
+ border-radius: 50%;
|
|
|
+}
|
|
|
+.imgUp >>> .el-upload-list__item {
|
|
|
+ border-radius: 50%;
|
|
|
+}
|
|
|
</style>
|