xiongzhu hace 2 años
padre
commit
878e95eb8a
Se han modificado 4 ficheros con 76 adiciones y 2 borrados
  1. 8 0
      src/router/index.js
  2. 11 1
      src/views/GameView.vue
  3. 17 1
      src/views/MainView.vue
  4. 40 0
      src/views/PromptView.vue

+ 8 - 0
src/router/index.js

@@ -61,6 +61,14 @@ const router = createRouter({
                     meta: {
                         title: '游戏详情'
                     }
+                },
+                {
+                    path: '/prompt',
+                    name: 'prompt',
+                    component: () => import('../views/PromptView.vue'),
+                    meta: {
+                        title: '提示词'
+                    }
                 }
             ]
         }

+ 11 - 1
src/views/GameView.vue

@@ -7,10 +7,11 @@
         <ElTableColumn prop="name" label="名称" min-width="120" />
         <ElTableColumn prop="status" label="状态" :formatter="statusFormatter" width="120" />
         <ElTableColumn prop="createdAt" label="创建时间" :formatter="timeFormatter" width="150" />
-        <ElTableColumn label="操作" align="center" width="200">
+        <ElTableColumn label="操作" align="center" width="350">
             <template #default="{ row }">
                 <ElButton @click="onPlay(row)" type="primary">进入</ElButton>
                 <ElButton @click="onEdit(row)">编辑</ElButton>
+                <ElButton @click="bindTwitch(row)" type="success">绑定Twitch</ElButton>
                 <ElButton @click="onDelete(row)" type="danger">删除</ElButton>
             </template>
         </ElTableColumn>
@@ -154,6 +155,15 @@ function onPlay(row) {
         }
     })
 }
+function bindTwitch(row) {
+    let u = new URL('https://id.twitch.tv/oauth2/authorize?')
+    u.searchParams.append('client_id', '530df6x09eq34be0vjhsezkl2oxap0')
+    u.searchParams.append('redirect_uri', 'http://localhost:3000/api/twitch/auth_callback')
+    u.searchParams.append('response_type', 'code')
+    u.searchParams.append('xxx', 'aaa')
+    u.searchParams.append('scope', 'channel:manage:broadcast chat:read chat:edit channel:manage:polls')
+    window.open(u.href)
+}
 </script>
 <style lang="less" scoped>
 .charactor-form {

+ 17 - 1
src/views/MainView.vue

@@ -54,7 +54,18 @@ import DarkSwitch from '@/components/DarkSwitch.vue'
 import SideMenu from '@/components/SideMenu.vue'
 import { useRoute } from 'vue-router'
 import { ref, watch, shallowRef, inject } from 'vue'
-import { User, MoodSmile, Wallet, Home, ExternalLink, Menu2, Settings, Photo, DeviceGamepad } from '@vicons/tabler'
+import {
+    User,
+    MoodSmile,
+    Wallet,
+    Home,
+    ExternalLink,
+    Menu2,
+    Settings,
+    Photo,
+    DeviceGamepad,
+    Prompt
+} from '@vicons/tabler'
 import UserAvatar from '@/components/UserAvatar.vue'
 import ChangePwd from '@/components/ChangePwd.vue'
 import { http } from '@/plugins/http'
@@ -74,6 +85,11 @@ const menus = [
         title: '游戏管理',
         icon: DeviceGamepad
     },
+    {
+        name: '/prompt',
+        title: '提示词',
+        icon: Prompt
+    },
     {
         name: 'user-parent',
         title: '用户管理',

+ 40 - 0
src/views/PromptView.vue

@@ -0,0 +1,40 @@
+<template>
+    <div>
+        <el-tabs v-model="activeName" class="demo-tabs" tabPosition="left">
+            <el-tab-pane v-for="(item, i) in prompts" :key="item.name" :label="item.description" :name="item.name">
+                <ElInput v-model="item.template" type="textarea" :autosize="{ min: 20 }"></ElInput>
+                <div class="mt-4">
+                    <ElButton @click="save(i)" :loading="loading" type="primary">保存</ElButton>
+                    <ElButton @click="restore(i)" :disabled="loading">恢复默认</ElButton>
+                </div>
+            </el-tab-pane>
+        </el-tabs>
+    </div>
+</template>
+<script setup>
+import { http } from '@/plugins/http'
+import { onMounted, ref } from 'vue'
+import { ElMessage } from 'element-plus'
+const activeName = ref('')
+const prompts = ref([])
+onMounted(() => {
+    http.get('/prompt').then((res) => {
+        prompts.value = res
+    })
+})
+const loading = ref(false)
+async function save(i) {
+    try {
+        loading.value = true
+        await http.put('/prompt', prompts.value[i])
+        loading.value = false
+        ElMessage.success('保存成功')
+    } catch (error) {
+        loading.value = false
+        ElMessage.error(error.message)
+    }
+}
+async function restore(i) {
+    prompts.value[i].template = prompts.value[i].defaultTemplate
+}
+</script>