办学质量监测教学评价系统
shenrongliang
2025-06-13 11d86cc6c26bb4f709e407acadf4805c2024e79f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<script setup lang='ts'>
import { computed, ref } from 'vue'
import { NModal, NTabPane, NTabs } from 'naive-ui'
import General from './General.vue'
import { useAuthStore } from '@/store'
import { SvgIcon } from '@/components/common'
 
interface Props {
  visible: boolean
}
 
interface Emit {
  (e: 'update:visible', visible: boolean): void
}
 
const props = defineProps<Props>()
 
const emit = defineEmits<Emit>()
 
const authStore = useAuthStore()
 
const isChatGPTAPI = computed<boolean>(() => !!authStore.isChatGPTAPI)
 
const active = ref('General')
 
const show = computed({
  get() {
    return props.visible
  },
  set(visible: boolean) {
    emit('update:visible', visible)
  },
})
</script>
 
<template>
  <NModal v-model:show="show" :auto-focus="false" preset="card" style="width: 100%; max-width: 1100px">
    <div>
      <NTabs v-model:value="active" type="line" animated>
        <NTabPane name="General" tab="General">
          <template #tab>
            <SvgIcon class="text-lg" icon="ri:file-user-line" />
            <span class="ml-2">{{ $t('setting.personal') }}</span>
          </template>
          <div class="min-h-[100px]">
            <General />
          </div>
        </NTabPane>
        
        <NTabPane v-if="isChatGPTAPI" name="Advanced" tab="Advanced">
          <template #tab>
            <SvgIcon class="text-lg" icon="ri:equalizer-line" />
            <span class="ml-2">{{ $t('setting.model') }}</span>
          </template>
          <div class="min-h-[100px]">
            <aiModel/>
          </div>
        </NTabPane>
      </NTabs>
    </div>
  </NModal>
</template>