|
@@ -1,244 +1,235 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <el-drawer v-model="isDrawer" :size="width" :title="title" @close="handleReset">
|
|
|
|
|
- <el-form
|
|
|
|
|
- :model="formParams"
|
|
|
|
|
- :rules="rules"
|
|
|
|
|
- ref="formRef"
|
|
|
|
|
- label-placement="left"
|
|
|
|
|
- :label-width="80"
|
|
|
|
|
- >
|
|
|
|
|
- <el-form-item label="设备名称" prop="nvrName">
|
|
|
|
|
- <el-input placeholder="请输入设备名称,不可重复" v-model="formParams.nvrName" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="设备编号" prop="deviceID">
|
|
|
|
|
- <el-input placeholder="自定义编号,不可重复" v-model="formParams.deviceID" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="设备IP" prop="deviceIP">
|
|
|
|
|
- <el-input placeholder="请输入设备IP" v-model="formParams.deviceIP" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="设备品牌" prop="deviceBrand">
|
|
|
|
|
- <el-select v-model="formParams.deviceBrand" placeholder="请选择设备品牌">
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in brands"
|
|
|
|
|
- :key="item.value"
|
|
|
|
|
- :label="item.label"
|
|
|
|
|
- :value="item.label"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="端口" prop="ipAddress">
|
|
|
|
|
- <el-input placeholder="请输入端口号" v-model="formParams.ipAddress" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="用户名" prop="username">
|
|
|
|
|
- <el-input placeholder="请输入用户名" v-model="formParams.username" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="密码" prop="password">
|
|
|
|
|
- <el-input placeholder="请输入密码" v-model="formParams.password" type="password" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="使用场景" prop="useCondition">
|
|
|
|
|
- <el-cascader
|
|
|
|
|
- v-model="formParams.useCondition"
|
|
|
|
|
- :options="conditions"
|
|
|
|
|
- :props="ismultiple"
|
|
|
|
|
- collapse-tags
|
|
|
|
|
- collapse-tags-tooltip
|
|
|
|
|
- clearable
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="负责人" prop="principal">
|
|
|
|
|
- <el-input placeholder="请输入设备安装负责人" v-model="formParams.principal" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item label="备注" prop="remark">
|
|
|
|
|
- <el-input placeholder="请输入备注" v-model="formParams.remark" :rows="5" type="textarea" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-form>
|
|
|
|
|
- <template #footer>
|
|
|
|
|
- <el-space size="middle">
|
|
|
|
|
- <el-button @click="handleReset">重置</el-button>
|
|
|
|
|
- <el-button type="primary" @click="formSubmit">提交</el-button>
|
|
|
|
|
- </el-space>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-drawer>
|
|
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <el-drawer v-model="isDrawer" :size="350" :title="title" @close="closeDrawer">
|
|
|
|
|
+ <el-form :model="formParams" :rules="rules" ref="formRef" label-position="left" :label-width="85">
|
|
|
|
|
+ <el-form-item label="设备名称:" prop="name">
|
|
|
|
|
+ <el-input v-model="formParams.name" placeholder="请输入设备名称" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="设备编号:" prop="code" :error="codeError">
|
|
|
|
|
+ <el-input v-model="formParams.code" placeholder="自定义编码,不可重复" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="设备品牌:" prop="nvrType">
|
|
|
|
|
+ <el-select v-model="formParams.nvrType" placeholder="请选择设备品牌">
|
|
|
|
|
+ <el-option v-for="item in brands" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="IP地址:" prop="nvrIp" :error="ipError">
|
|
|
|
|
+ <el-input v-model="formParams.nvrIp" placeholder="请输入设备IP地址,不可重复" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="端口:" prop="nvrPort">
|
|
|
|
|
+ <el-input v-model="formParams.nvrPort" placeholder="请输入设备端口" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="用户名:" prop="username">
|
|
|
|
|
+ <el-input v-model="formParams.username" placeholder="请输入设备用户名" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="密码:" prop="password">
|
|
|
|
|
+ <el-input v-model="formParams.password" placeholder="请输入设备密码" type="password" show-password />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="使用场景:" prop="workshopList">
|
|
|
|
|
+ <el-cascader v-model="workLocations" :options="locationOptions" :props="ismultiple" collapse-tags
|
|
|
|
|
+ collapse-tags-tooltip clearable placeholder="请选择使用该NVR的车间" @change="handleCascaderChange" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="负责人:" prop="principal">
|
|
|
|
|
+ <el-input v-model="formParams.principal" placeholder="请输入设备安装负责人" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="备注:" prop="remark">
|
|
|
|
|
+ <el-input v-model="formParams.remark" type="textarea" maxlength="200" :autosize="{ minRows: 3 }"
|
|
|
|
|
+ show-word-limit placeholder="请输入该设备相关备注" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <div class="btn-box">
|
|
|
|
|
+ <el-button @click="closeDrawer">取消</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="formSubmit">提交</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-drawer>
|
|
|
|
|
+ </div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
-import { ref, computed } from 'vue';
|
|
|
|
|
-import { nvrData } from '../type';
|
|
|
|
|
-import { brands, conditions } from '../constant';
|
|
|
|
|
-import { FormRules, ElMessage } from 'element-plus';
|
|
|
|
|
-import useNvrStore from '../store/useNvrList';
|
|
|
|
|
-const nvrStore = useNvrStore();
|
|
|
|
|
-const { getNvr } = nvrStore;
|
|
|
|
|
-const ismultiple = { multiple: true };
|
|
|
|
|
-const props = defineProps({
|
|
|
|
|
- title: {
|
|
|
|
|
- type: String,
|
|
|
|
|
- default: '添加NVR',
|
|
|
|
|
- },
|
|
|
|
|
- width: {
|
|
|
|
|
- type: Number,
|
|
|
|
|
- default: 450,
|
|
|
|
|
- },
|
|
|
|
|
-});
|
|
|
|
|
|
|
+import { ref, computed, onMounted } from 'vue';
|
|
|
|
|
+import { brands, useWorkLocation } from '../constant';
|
|
|
|
|
+import { FormRules } from 'element-plus';
|
|
|
|
|
+import {
|
|
|
|
|
+ NVRListItem,
|
|
|
|
|
+ NVRListItemAll,
|
|
|
|
|
+ addNVRListItem,
|
|
|
|
|
+ updateNVRListItem,
|
|
|
|
|
+} from '@/api/camera/camera-nvr';
|
|
|
|
|
+
|
|
|
|
|
+interface Props {
|
|
|
|
|
+ title: String,
|
|
|
|
|
+};
|
|
|
|
|
+const props = defineProps<Props>();
|
|
|
const emit = defineEmits(['form-submit', 'form-edit']);
|
|
const emit = defineEmits(['form-submit', 'form-edit']);
|
|
|
-const formRef: any = ref(null);
|
|
|
|
|
|
|
+
|
|
|
const isDrawer = ref(false);
|
|
const isDrawer = ref(false);
|
|
|
|
|
+const formRef: any = ref(null);
|
|
|
|
|
+const ismultiple = { multiple: true };
|
|
|
|
|
+
|
|
|
|
|
+const { locationOptions, getLocationOptions, getWorkLocation } = useWorkLocation();
|
|
|
|
|
+const workLocations = ref<[number | undefined, number | undefined] | []>([]);
|
|
|
|
|
+
|
|
|
|
|
+const codeError = ref('');
|
|
|
|
|
+const ipError = ref('');
|
|
|
|
|
+
|
|
|
const initFormNvr = () => ({
|
|
const initFormNvr = () => ({
|
|
|
- nvrName: '',
|
|
|
|
|
- deviceID: '',
|
|
|
|
|
- deviceIP: '',
|
|
|
|
|
- deviceBrand: '',
|
|
|
|
|
- ipAddress: '',
|
|
|
|
|
|
|
+ name: '',
|
|
|
|
|
+ code: '',
|
|
|
|
|
+ nvrIp: '',
|
|
|
|
|
+ nvrType: '',
|
|
|
|
|
+ nvrPort: '',
|
|
|
username: '',
|
|
username: '',
|
|
|
password: '',
|
|
password: '',
|
|
|
- useCondition: '',
|
|
|
|
|
|
|
+ workshopList: [],
|
|
|
principal: '',
|
|
principal: '',
|
|
|
remark: '',
|
|
remark: '',
|
|
|
});
|
|
});
|
|
|
-const formParams = ref<nvrData>(initFormNvr());
|
|
|
|
|
-const openDrawer = (id?: number) => {
|
|
|
|
|
|
|
+const formParams = ref<NVRListItem>(initFormNvr());
|
|
|
|
|
+
|
|
|
|
|
+const deleteKey = (obj, ...args) => {
|
|
|
|
|
+ args.forEach(v => { delete obj[v] });
|
|
|
|
|
+ return obj;
|
|
|
|
|
+}
|
|
|
|
|
+const openDrawer = (row: NVRListItemAll) => {
|
|
|
isDrawer.value = true;
|
|
isDrawer.value = true;
|
|
|
- if (id) {
|
|
|
|
|
- formParams.value = Object.assign(formParams.value, getNvr(id));
|
|
|
|
|
|
|
+ if (row) {
|
|
|
|
|
+ formParams.value = Object.assign(formParams.value, row);
|
|
|
|
|
+ deleteKey(formParams.value, 'createdAt', 'isDeleted', 'tenantId', 'updatedAt', 'workshopName');
|
|
|
|
|
+ console.log(formParams.value);
|
|
|
|
|
+ formParams.value.workshopList.map((item, index) => {
|
|
|
|
|
+ workLocations.value[index] = getWorkLocation(item, locationOptions.value)
|
|
|
|
|
+ });
|
|
|
return;
|
|
return;
|
|
|
- }
|
|
|
|
|
|
|
+ };
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
const closeDrawer = () => {
|
|
const closeDrawer = () => {
|
|
|
isDrawer.value = false;
|
|
isDrawer.value = false;
|
|
|
-};
|
|
|
|
|
-const handleReset = () => {
|
|
|
|
|
formRef.value.resetFields();
|
|
formRef.value.resetFields();
|
|
|
formParams.value = Object.assign(formParams.value, initFormNvr());
|
|
formParams.value = Object.assign(formParams.value, initFormNvr());
|
|
|
|
|
+ workLocations.value = [];
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
const isAddUser = computed(() => {
|
|
const isAddUser = computed(() => {
|
|
|
return props.title === '添加NVR';
|
|
return props.title === '添加NVR';
|
|
|
});
|
|
});
|
|
|
-const validateNvrName = (rule, value, callback) => {
|
|
|
|
|
- const nvrList = getNvr();
|
|
|
|
|
- let isDuplicate;
|
|
|
|
|
- if (nvrList) {
|
|
|
|
|
- isDuplicate = nvrList.some((nvr) => {
|
|
|
|
|
- return nvr.nvrName === value && nvr.id !== formParams.value.id;
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- if (isDuplicate) {
|
|
|
|
|
- callback(new Error('设备名称重复,请使用其他名称'));
|
|
|
|
|
- } else {
|
|
|
|
|
- callback();
|
|
|
|
|
- }
|
|
|
|
|
-};
|
|
|
|
|
-const validatedeviceID = (rule, value, callback) => {
|
|
|
|
|
- const nvrList = getNvr();
|
|
|
|
|
- let isDuplicate;
|
|
|
|
|
- if (nvrList) {
|
|
|
|
|
- isDuplicate = nvrList.some((nvr) => {
|
|
|
|
|
- return nvr.deviceID === value && nvr.id !== formParams.value.id;
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- if (isDuplicate) {
|
|
|
|
|
- callback(new Error('设备编号重复,请使用其他编号'));
|
|
|
|
|
- } else {
|
|
|
|
|
- callback();
|
|
|
|
|
- }
|
|
|
|
|
-};
|
|
|
|
|
|
|
+
|
|
|
const rules: FormRules = {
|
|
const rules: FormRules = {
|
|
|
- nvrName: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '设备名称不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- validator: validateNvrName,
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- ],
|
|
|
|
|
- deviceID: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '设备编号不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- validator: validatedeviceID,
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- ],
|
|
|
|
|
- deviceIP: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '设备IP不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- deviceBrand: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '设备品牌不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- ipAddress: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '端口不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- username: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '用户名不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- password: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '密码不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
- useCondition: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '使用场景不能为空',
|
|
|
|
|
- trigger: 'blur',
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ name: { required: true, message: '设备名称不能为空', trigger: 'blur' },
|
|
|
|
|
+ code: { required: true, message: '设备编号不能为空', trigger: 'change' },
|
|
|
|
|
+ nvrType: { required: true, message: '设备品牌不能为空', trigger: 'change' },
|
|
|
|
|
+ nvrIp: { required: true, message: '设备IP不能为空', trigger: 'change' },
|
|
|
|
|
+ nvrPort: { required: true, message: '端口不能为空', trigger: 'blur' },
|
|
|
|
|
+ username: { required: true, message: '用户名不能为空', trigger: 'blur' },
|
|
|
|
|
+ password: { required: true, message: '密码不能为空', trigger: 'blur' },
|
|
|
|
|
+ workshopList: { required: true, message: '使用场景不能为空', trigger: 'change' },
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const handleCascaderChange = () => {
|
|
|
|
|
+ formParams.value.workshopList = workLocations.value.map((item) => {
|
|
|
|
|
+ return item[1];
|
|
|
|
|
+ })
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
const formSubmit = () => {
|
|
const formSubmit = () => {
|
|
|
- const nvrList = getNvr();
|
|
|
|
|
- formRef.value.validate((valid) => {
|
|
|
|
|
- if (valid) {
|
|
|
|
|
- const maxID = nvrList.reduce((max, nvr) => Math.max(max, nvr.id), 0);
|
|
|
|
|
- const nvrData = {
|
|
|
|
|
- id: isAddUser.value ? maxID + 1 : formParams.value.id,
|
|
|
|
|
- nvrName: formParams.value.nvrName,
|
|
|
|
|
- deviceID: formParams.value.deviceID,
|
|
|
|
|
- deviceIP: formParams.value.deviceIP,
|
|
|
|
|
- deviceBrand: formParams.value.deviceBrand,
|
|
|
|
|
- ipAddress: formParams.value.ipAddress,
|
|
|
|
|
- username: formParams.value.username,
|
|
|
|
|
- password: formParams.value.password,
|
|
|
|
|
- useCondition: formParams.value.useCondition,
|
|
|
|
|
- principal: formParams.value.principal,
|
|
|
|
|
- remark: formParams.value.remark,
|
|
|
|
|
- };
|
|
|
|
|
- if (isAddUser.value) {
|
|
|
|
|
- emit('form-submit', nvrData);
|
|
|
|
|
- ElMessage({
|
|
|
|
|
- message: '添加NVR设备成功.',
|
|
|
|
|
- type: 'success',
|
|
|
|
|
- });
|
|
|
|
|
- } else {
|
|
|
|
|
- emit('form-edit', formParams.value);
|
|
|
|
|
- ElMessage({
|
|
|
|
|
- message: '修改NVR设备成功.',
|
|
|
|
|
- type: 'success',
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- closeDrawer();
|
|
|
|
|
- handleReset();
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const errorText = ref('');
|
|
|
|
|
+ // 捕获当前表单中是否有el-form-item__error即错误信息
|
|
|
|
|
+ const errorTipElements = document.querySelectorAll('.el-form-item__error');
|
|
|
|
|
+ errorTipElements.forEach((element) => {
|
|
|
|
|
+ if (element.textContent)
|
|
|
|
|
+ errorText.value = element.textContent;
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ if (errorText.value === '') {
|
|
|
|
|
+ codeError.value = '';
|
|
|
|
|
+ ipError.value = '';
|
|
|
|
|
+ formRef.value.validate((valid) => {
|
|
|
|
|
+ if (valid) {
|
|
|
|
|
+ const nvrData = {
|
|
|
|
|
+ name: formParams.value.name,
|
|
|
|
|
+ code: formParams.value.code,
|
|
|
|
|
+ nvrIp: formParams.value.nvrIp,
|
|
|
|
|
+ nvrType: formParams.value.nvrType,
|
|
|
|
|
+ nvrPort: formParams.value.nvrPort,
|
|
|
|
|
+ username: formParams.value.username,
|
|
|
|
|
+ password: formParams.value.password,
|
|
|
|
|
+ workshopList: formParams.value.workshopList,
|
|
|
|
|
+ principal: formParams.value.principal,
|
|
|
|
|
+ remark: formParams.value.remark,
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ if (isAddUser.value) {
|
|
|
|
|
+ addNVRListItem(nvrData).then((res) => {
|
|
|
|
|
+ if (Object.getOwnPropertyNames(res).length != 0) {
|
|
|
|
|
+ codeError.value = res.code === 'NVR的编码已存在' ? '设备编号重复' : '';
|
|
|
|
|
+ ipError.value = res.nvrIp === 'NVR的IP已存在' ? 'IP地址重复' : '';
|
|
|
|
|
+ } else {
|
|
|
|
|
+ emit('form-submit');
|
|
|
|
|
+ closeDrawer();
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ updateNVRListItem(formParams.value).then((res) => {
|
|
|
|
|
+ if (Object.getOwnPropertyNames(res).length != 0) {
|
|
|
|
|
+ codeError.value = res.code === 'NVR的编码已存在' ? '设备编号重复' : '';
|
|
|
|
|
+ ipError.value = res.nvrIp === 'NVR的IP已存在' ? 'IP地址重复' : '';
|
|
|
|
|
+ } else {
|
|
|
|
|
+ emit('form-edit');
|
|
|
|
|
+ closeDrawer();
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
defineExpose({
|
|
defineExpose({
|
|
|
openDrawer,
|
|
openDrawer,
|
|
|
closeDrawer,
|
|
closeDrawer,
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ getLocationOptions();
|
|
|
|
|
+})
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
-::v-deep .el-cascader {
|
|
|
|
|
- width: 330px;
|
|
|
|
|
|
|
+:deep(.el-drawer__header) {
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+
|
|
|
|
|
+ >:first-child {
|
|
|
|
|
+ margin-left: 32px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ font-size: 16px;
|
|
|
|
|
+ color: rgba(0, 0, 0, 0.88);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .el-drawer__close-btn {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ color: #000;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+:deep(.el-drawer__body) {
|
|
|
|
|
+ border-top: 1px solid #0000000F;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+:deep(.el-form-item__label) {
|
|
|
|
|
+ padding-right: 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+:deep(.el-cascader) {
|
|
|
|
|
+ width: 230px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-box {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ margin-top: 10px;
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|