123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <template>
- <a-drawer
- :open="props.open"
- class="config-drawer"
- root-class-name="config-drawer-root"
- :title="drawerTitle"
- :width="drawerWidth"
- placement="right"
- @close="close"
- >
- <template #extra>
- <a-radio-group v-model:value="modeRadio" button-style="solid" size="small">
- <a-radio-button value="base">基础配置</a-radio-button>
- <a-radio-button value="area">区域配置</a-radio-button>
- </a-radio-group>
- </template>
- <template v-if="modeRadio === 'base' && props.open">
- <deviceBaseConfig
- :dev-id="props.data.devId"
- :client-id="props.data.clientId"
- @success="deviceAreaConfigSuccess"
- ></deviceBaseConfig>
- </template>
- <template v-if="modeRadio === 'area' && props.open">
- <deviceAreaConfig
- :dev-id="props.data.devId"
- :length="props.data.length"
- :width="props.data.width"
- :ranges="[props.data.xStart, props.data.xEnd, props.data.yStart, props.data.yEnd]"
- @success="deviceAreaConfigSuccess"
- ></deviceAreaConfig>
- </template>
- </a-drawer>
- </template>
- <script setup lang="ts">
- import { ref, watch, computed } from 'vue'
- import deviceBaseConfig from '../deviceBaseConfig/index.vue'
- import deviceAreaConfig from '../deviceAreaConfig/index.vue'
- defineOptions({
- name: 'DeviceConfigDrawer',
- })
- type Props = {
- open: boolean
- mode?: 'base' | 'area'
- title?: string
- data: {
- devId: string
- clientId: string
- length: number
- width: number
- xStart: number
- xEnd: number
- yStart: number
- yEnd: number
- }
- }
- const emit = defineEmits<{
- (e: 'update:open', value: boolean): void
- (e: 'success', value: void): void
- }>()
- const props = withDefaults(defineProps<Props>(), {
- open: false,
- mode: 'base',
- title: '',
- data: () => ({
- devId: '',
- clientId: '',
- length: 0,
- width: 0,
- xStart: 0,
- xEnd: 0,
- yStart: 0,
- yEnd: 0,
- }),
- })
- const modeRadio = ref<'base' | 'area'>(props.mode)
- const drawerWidth = computed(() => {
- return modeRadio.value === 'base' ? 600 : 800
- })
- const drawerTitle = computed(() =>
- props.title ? props.title : modeRadio.value === 'base' ? '设备配置' : '区域配置'
- )
- watch(
- () => props.open,
- (newVal) => {
- if (newVal) {
- console.log('🌸🌸deviceConfig PROPS🌸🌸', props)
- modeRadio.value = props.mode
- }
- },
- {
- immediate: true,
- }
- )
- const deviceAreaConfigSuccess = () => {
- close()
- emit('success')
- }
- const close = () => {
- emit('update:open', false)
- }
- </script>
- <style scoped lang="less"></style>
|