AddPresetModal.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <template>
  2. <ElDialog title="添加预置位" :model-value="true" @close="emits('close')" width="500px">
  3. <template #footer>
  4. <el-button @click="emits('close')">取消</el-button>
  5. <el-button type="primary" @click="handleSubmit" :loading="loading">确定</el-button>
  6. </template>
  7. <ElInput type="textarea" autosize v-model="presetName" />
  8. </ElDialog>
  9. </template>
  10. <script lang="ts" setup>
  11. import { createPresetApi } from '@/api/camera/camera-preview';
  12. import { ElDialog, ElInput, ElMessage } from 'element-plus';
  13. import { ref } from 'vue';
  14. import usePresetListStore from '../../store/usePresetListStore';
  15. import useCameraDetailStore from '../../store/useCameraDetailStore';
  16. const presetName = ref('');
  17. const loading = ref(false);
  18. const emits = defineEmits<{ (e: 'close'): unknown; (e: 'ok'): unknown }>();
  19. const presetStore = usePresetListStore();
  20. const cameraDetailStore = useCameraDetailStore();
  21. const handleSubmit = () => {
  22. if (presetStore.isPresetNameExist(presetName.value)) {
  23. ElMessage.error('预置位名称已存在');
  24. return;
  25. }
  26. loading.value = true;
  27. createPresetApi({ presetName: presetName.value, cameraId: cameraDetailStore.cameraId })
  28. .then((val) => {
  29. if (val) {
  30. ElMessage.success('预置位创建成功');
  31. presetStore.currentPresetToken = val;
  32. emits('ok');
  33. } else {
  34. ElMessage.error('创建失败:已有预置位数量可能超限,请删除后再添加');
  35. }
  36. })
  37. .finally(() => {
  38. loading.value = false;
  39. });
  40. };
  41. </script>
  42. <style scoped></style>