yd-yunxing-web/src/views/common/AppSelect.vue

68 lines
1.5 KiB
Vue

<!--
- 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>