Intelligent-Medical-Guidance-Large-Model
/
frontend
/src
/views
/digital-human
/DigitalHumanEditDialogView.vue
<script setup lang="ts"> | |
import { ref } from 'vue' | |
import { ElMessage } from 'element-plus' | |
import StreamerInfoComponent from '@/components/StreamerInfoComponent.vue' | |
import { | |
streamerDetailInfoRequest, | |
streamerEditDetailRequest, | |
type StreamerInfo | |
} from '@/api/streamerInfo' | |
import { AxiosError } from 'axios' | |
const dialogInfoVisible = ref(false) | |
const saveLoading = ref(false) | |
const steamerInfo = ref({} as StreamerInfo) | |
steamerInfo.value.streamer_id = 0 | |
const showItemInfoDialog = async (streamerId: number) => { | |
console.log('streamerId = ', streamerId) | |
dialogInfoVisible.value = true | |
if (streamerId === 0) { | |
steamerInfo.value = {} as StreamerInfo | |
return | |
} | |
try { | |
// 请求接口获取主播数据 | |
const { data } = await streamerDetailInfoRequest(streamerId) | |
if (data.code === 0) { | |
steamerInfo.value = data.data | |
} else { | |
ElMessage.error('获取主播数据失败: ' + data.message) | |
} | |
} catch (error: unknown) { | |
if (error instanceof AxiosError) { | |
ElMessage.error('获取主播数据失败: ' + error.message) | |
} else { | |
ElMessage.error('未知错误:' + error) | |
} | |
} | |
} | |
const handelSaveClick = async () => { | |
try { | |
saveLoading.value = true | |
const { data } = await streamerEditDetailRequest(steamerInfo.value) | |
if (data.code === 0) { | |
steamerInfo.value.streamer_id = data.data | |
ElMessage.success('保存成功') | |
saveLoading.value = false | |
} else { | |
saveLoading.value = false | |
ElMessage.error('保存失败: ' + data.message) | |
} | |
} catch (error: unknown) { | |
saveLoading.value = false | |
if (error instanceof AxiosError) { | |
ElMessage.error('保存失败: ' + error.message) | |
} else { | |
ElMessage.error('未知错误:' + error) | |
} | |
} | |
} | |
defineExpose({ showItemInfoDialog }) | |
</script> | |
<template> | |
<div class="dialog-container"> | |
<el-dialog v-model="dialogInfoVisible" title="主播详情" width="80%" destroy-on-close> | |
<StreamerInfoComponent v-model="steamerInfo" :disable-change="false" /> | |
<template #footer> | |
<div class="dialog-footer"> | |
<el-button type="primary" @click="handelSaveClick" :loading="saveLoading"> | |
保存 | |
</el-button> | |
<el-button @click="dialogInfoVisible = false" :disabled="saveLoading"> 关闭 </el-button> | |
</div> | |
</template> | |
</el-dialog> | |
</div> | |
</template> | |
<style lang="scss" scoped> | |
// 使用 ::v-deep 选择器来覆盖 el-dialog 的默认样式。 | |
::v-deep(.el-dialog) { | |
border-radius: 10px; | |
padding: 20px; | |
--el-dialog-bg-color: #f7f8fa; | |
--el-dialog-title-font-size: 24px; | |
} | |
</style> | |