<!--
  - Copyright (c) 2024 LangChat. TyCoding All Rights Reserved.
  -
  - Licensed under the GNU Affero General Public License, Version 3 (the "License");
  - you may not use this file except in compliance with the License.
  - You may obtain a copy of the License at
  -
  -     https://www.gnu.org/licenses/agpl-3.0.html
  -
  - Unless required by applicable law or agreed to in writing, software
  - distributed under the License is distributed on an "AS IS" BASIS,
  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  - See the License for the specific language governing permissions and
  - limitations under the License.
  -->

<script lang="ts" setup>
import { onMounted, ref, toRaw } from 'vue'
import { AppApi } from '@/api/new-ai/app'

const props = defineProps<{
  id: any
}>()
const emit = defineEmits(['update'])
const options = ref([])
const appId = ref('')

onMounted(async () => {
  options.value = await AppApi.getAppList({})
  appId.value = props.id
})

function onUpdate(val: any) {
  const obj = toRaw(options.value.find(item => item.id === val))
  if (obj == null) {
    emit('update', {
      id: '',
    })
  } else {
    emit('update', {
      id: obj.id,
    })
  }
}
</script>

<template>
  <el-select
    v-model="appId"
    clearable
    placeholder="请选择关联应用"
    @change="onUpdate"
  >
    <el-option
      v-for="item in options"
      :key="item.id"
      :label="item.name"
      :value="item.id"
    />
  </el-select>
</template>

<style lang="scss" scoped>
:deep(.el-select) {
  width: 100%;
}
</style>
