|
@@ -8,6 +8,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
<ElTableColumn prop="id" label="#" width="80" />
|
|
<ElTableColumn prop="id" label="#" width="80" />
|
|
|
<ElTableColumn prop="name" label="名称" />
|
|
<ElTableColumn prop="name" label="名称" />
|
|
|
|
|
+ <ElTableColumn prop="type" label="类型" width="100" />
|
|
|
<ElTableColumn prop="roomId" label="房间ID" />
|
|
<ElTableColumn prop="roomId" label="房间ID" />
|
|
|
<ElTableColumn prop="status" label="状态" width="150" :formatter="statusFormatter" />
|
|
<ElTableColumn prop="status" label="状态" width="150" :formatter="statusFormatter" />
|
|
|
<ElTableColumn prop="autoReset" label="自动重置" />
|
|
<ElTableColumn prop="autoReset" label="自动重置" />
|
|
@@ -24,7 +25,7 @@
|
|
|
<ElTableColumn prop="createdAt" label="创建时间" :formatter="timeFormatter" width="150" />
|
|
<ElTableColumn prop="createdAt" label="创建时间" :formatter="timeFormatter" width="150" />
|
|
|
<ElTableColumn label="操作" align="center" width="350">
|
|
<ElTableColumn label="操作" align="center" width="350">
|
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
|
- <ElButton v-if="row.status === 'created'" @click="onEdit(row)" type="primary">编辑</ElButton>
|
|
|
|
|
|
|
+ <ElButton @click="onEdit(row)" type="primary">编辑</ElButton>
|
|
|
<ElButton v-if="row.status === 'created'" @click="onInit(row)" type="primary">初始化</ElButton>
|
|
<ElButton v-if="row.status === 'created'" @click="onInit(row)" type="primary">初始化</ElButton>
|
|
|
<ElButton v-if="row.status !== 'created'" @click="onPlay(row)" type="primary">详情</ElButton>
|
|
<ElButton v-if="row.status !== 'created'" @click="onPlay(row)" type="primary">详情</ElButton>
|
|
|
<ElButton @click="onDelete(row)" type="danger">删除</ElButton>
|
|
<ElButton @click="onDelete(row)" type="danger">删除</ElButton>
|
|
@@ -42,6 +43,11 @@
|
|
|
<ElFormItem prop="name" label="名称">
|
|
<ElFormItem prop="name" label="名称">
|
|
|
<ElInput v-model="model.name" placeholder="请输入名称" />
|
|
<ElInput v-model="model.name" placeholder="请输入名称" />
|
|
|
</ElFormItem>
|
|
</ElFormItem>
|
|
|
|
|
+ <ElFormItem prop="type" label="类型">
|
|
|
|
|
+ <ElSelect v-model="model.type" placeholder="请选择类型">
|
|
|
|
|
+ <ElOption v-for="item in promptTypes" :key="item" :label="item" :value="item" />
|
|
|
|
|
+ </ElSelect>
|
|
|
|
|
+ </ElFormItem>
|
|
|
<ElFormItem prop="roomId" label="房间">
|
|
<ElFormItem prop="roomId" label="房间">
|
|
|
<ElSelect v-model="model.roomId" placeholder="请选择房间">
|
|
<ElSelect v-model="model.roomId" placeholder="请选择房间">
|
|
|
<ElOption v-for="item in rooms" :key="item.id" :label="item.name" :value="item.id" />
|
|
<ElOption v-for="item in rooms" :key="item.id" :label="item.name" :value="item.id" />
|
|
@@ -131,6 +137,7 @@ const table = ref(null)
|
|
|
const model = ref({})
|
|
const model = ref({})
|
|
|
const rules = {
|
|
const rules = {
|
|
|
name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
|
|
name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
|
|
|
|
|
+ type: [{ required: true, message: '请选择类型', trigger: 'blur' }],
|
|
|
roomId: [{ required: true, message: '请选择房间', trigger: 'blur' }],
|
|
roomId: [{ required: true, message: '请选择房间', trigger: 'blur' }],
|
|
|
autoReset: [{ required: true, message: '请输入自动重置', trigger: 'blur' }],
|
|
autoReset: [{ required: true, message: '请输入自动重置', trigger: 'blur' }],
|
|
|
background: [{ required: true, message: '请输入故事背景', trigger: 'blur' }],
|
|
background: [{ required: true, message: '请输入故事背景', trigger: 'blur' }],
|
|
@@ -154,10 +161,14 @@ const rules = {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const rooms = ref([])
|
|
const rooms = ref([])
|
|
|
|
|
+const promptTypes = ref([])
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
http.post('/room').then((res) => {
|
|
http.post('/room').then((res) => {
|
|
|
rooms.value = res.items
|
|
rooms.value = res.items
|
|
|
})
|
|
})
|
|
|
|
|
+ http.get('/prompt/types').then((res) => {
|
|
|
|
|
+ promptTypes.value = res
|
|
|
|
|
+ })
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
const { showEditDialog, onEdit } = setupEditDialog(model)
|
|
const { showEditDialog, onEdit } = setupEditDialog(model)
|
|
@@ -177,13 +188,21 @@ async function genCharactor() {
|
|
|
ElMessage.error('请先输入故事背景')
|
|
ElMessage.error('请先输入故事背景')
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+ if (!model.value.background) {
|
|
|
|
|
+ ElMessage.error('请先选择类型')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
const { value } = await ElMessageBox.prompt('生成数量:', '生成角色', {
|
|
const { value } = await ElMessageBox.prompt('生成数量:', '生成角色', {
|
|
|
inputPattern: /^\d{1,2}$/,
|
|
inputPattern: /^\d{1,2}$/,
|
|
|
inputErrorMessage: 'Invalid Num'
|
|
inputErrorMessage: 'Invalid Num'
|
|
|
})
|
|
})
|
|
|
generating.value = true
|
|
generating.value = true
|
|
|
try {
|
|
try {
|
|
|
- const res = await http.post(`/game/genCharactor`, { background: model.value.background, num: value })
|
|
|
|
|
|
|
+ const res = await http.post(`/game/genCharactor`, {
|
|
|
|
|
+ type: model.value.type,
|
|
|
|
|
+ background: model.value.background,
|
|
|
|
|
+ num: value
|
|
|
|
|
+ })
|
|
|
generating.value = false
|
|
generating.value = false
|
|
|
model.value.charactors = (model.value.charactors || []).concat(res)
|
|
model.value.charactors = (model.value.charactors || []).concat(res)
|
|
|
} catch (error) {
|
|
} catch (error) {
|