AddAlgoDialog.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <ElButton type="primary" @click="showDialog" size="small" style="margin-top: 10px">
  3. + 添加算法</ElButton
  4. >
  5. <ElDialog v-model="visible" title="添加算法" @close="handleClose" width="500px">
  6. <ElSelect v-model="selectedIds" multiple style="width: 100%" size="small">
  7. <ElOption
  8. v-for="item in allAlgoList"
  9. :key="item.id"
  10. :value="item.id"
  11. :label="item.name"
  12. :disabled="!!isAlgoBind(item.id)"
  13. >
  14. {{ item.name }}
  15. <span style="margin-left: 5px" v-if="isAlgoBind(item.id)">√</span>
  16. </ElOption>
  17. </ElSelect>
  18. <template #footer>
  19. <el-button @click="handleClose">取消</el-button>
  20. <el-button type="primary" @click="handleSubmit"> 保存 </el-button>
  21. </template>
  22. </ElDialog>
  23. </template>
  24. <script lang="ts" setup>
  25. import { ElDialog, ElSelect, ElOption, ElButton, ElMessage } from 'element-plus';
  26. import { ref } from 'vue';
  27. import useCameraAlgoStore from '../../store/useCameraAlgoStore';
  28. import { storeToRefs } from 'pinia';
  29. import { createCameraAlgoApi } from '@/api/camera/camera-preview';
  30. import useCameraDetailStore from '../../store/useCameraDetailStore';
  31. const selectedIds = ref<number[]>([]);
  32. const cameraAlgoStore = useCameraAlgoStore();
  33. const { isAlgoBind } = cameraAlgoStore;
  34. const { allAlgoList, selectedAlgoId } = storeToRefs(cameraAlgoStore);
  35. const { getCameraAlgoList } = cameraAlgoStore;
  36. const cameraDetailStore = useCameraDetailStore();
  37. const visible = ref(false);
  38. const handleClose = () => {
  39. visible.value = false;
  40. };
  41. const handleSubmit = () => {
  42. if (selectedIds.value?.length < 1) {
  43. ElMessage.warning({ message: '请选择算法' });
  44. return;
  45. }
  46. createCameraAlgoApi({
  47. algoIds: selectedIds.value || [],
  48. cameraId: cameraDetailStore.cameraId,
  49. }).then((res) => {
  50. console.log('createAlgo ok', res);
  51. selectedAlgoId.value = selectedIds.value?.[0];
  52. getCameraAlgoList(cameraDetailStore.cameraId);
  53. visible.value = false;
  54. ElMessage.success('添加算法成功');
  55. });
  56. };
  57. const showDialog = () => {
  58. visible.value = true;
  59. selectedIds.value = undefined;
  60. };
  61. </script>
  62. <style scoped></style>