| | |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button @click="handleQuery"> |
| | | <Icon icon="ep:search" class="mr-5px" /> |
| | | <Icon icon="ep:search" class="mr-5px"/> |
| | | 搜索 |
| | | </el-button> |
| | | <el-button @click="resetQuery"> |
| | | <Icon icon="ep:refresh" class="mr-5px" /> |
| | | <Icon icon="ep:refresh" class="mr-5px"/> |
| | | 重置 |
| | | </el-button> |
| | | <el-button |
| | |
| | | @click="openForm('create')" |
| | | v-hasPermi="['video:camera:save']" |
| | | > |
| | | <Icon icon="ep:plus" class="mr-5px" /> |
| | | <Icon icon="ep:plus" class="mr-5px"/> |
| | | 新增 |
| | | </el-button> |
| | | <el-button |
| | |
| | | :loading="exportLoading" |
| | | v-hasPermi="['video:camera:export']" |
| | | > |
| | | <Icon icon="ep:download" class="mr-5px" /> |
| | | <Icon icon="ep:download" class="mr-5px"/> |
| | | 导出 |
| | | </el-button> |
| | | </el-form-item> |
| | |
| | | <el-table v-loading="loading" :data="list"> |
| | | <el-table-column label="品牌" align="center" prop="brand" width="80"> |
| | | <template #default="scope"> |
| | | <dict-tag :type="DICT_TYPE.CAMERA_BRAND" :value="scope.row.brand" /> |
| | | <dict-tag :type="DICT_TYPE.CAMERA_BRAND" :value="scope.row.brand"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="设备类型" align="center" prop="device" width="200"/> |
| | | <el-table-column label="编码" align="center" prop="code" width="200"/> |
| | | <el-table-column label="IP" align="center" prop="ip" /> |
| | | <el-table-column label="端口" align="center" prop="port" width="100"/> |
| | | <el-table-column label="IP" align="center" prop="ip"/> |
| | | <el-table-column label="端口" align="center" prop="port" width="80"/> |
| | | <el-table-column label="通道" align="center" prop="channel" width="80"/> |
| | | <el-table-column label="用户名" align="center" prop="username" width="100"/> |
| | | <el-table-column label="状态" prop="status" width="80"> |
| | | <template #default="scope"> |
| | | <dict-tag :type="DICT_TYPE.NVR_ONLINE_STATUS" :value="scope.row.status" /> |
| | | <dict-tag :type="DICT_TYPE.NVR_ONLINE_STATUS" :value="scope.row.status"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="位置" align="center" prop="location" /> |
| | | <el-table-column label="位置" align="center" prop="location"/> |
| | | <el-table-column label="备注" align="center" prop="remark" width="150"/> |
| | | <el-table-column label="操作" align="center" min-width="110" fixed="right"> |
| | | <template #default="scope"> |
| | |
| | | > |
| | | 删除 |
| | | </el-button> |
| | | <el-button |
| | | link |
| | | type="success" |
| | | @click="imageHandle(scope.row.id)" |
| | | v-hasPermi="['video:image:query']" |
| | | > |
| | | 查看截图 |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </ContentWrap> |
| | | |
| | | <!-- 表单弹窗:添加/修改 --> |
| | | <CameraForm ref="formRef" @success="getList" /> |
| | | <CameraForm ref="formRef" @success="getList"/> |
| | | |
| | | <CameraImage ref="imageFormRef"/> |
| | | |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import {DICT_TYPE, getIntDictOptions} from '@/utils/dict' |
| | | import download from '@/utils/download' |
| | | import * as CameraApi from '@/api/data/video/camera' |
| | | import CameraForm from './CameraForm.vue' |
| | | import download from '@/utils/download' |
| | | import * as CameraApi from '@/api/data/video/camera' |
| | | import CameraForm from './CameraForm.vue' |
| | | import CameraImage from './CameraImage.vue' |
| | | |
| | | defineOptions({name: 'Camera'}) |
| | | |
| | | const message = useMessage() // 消息弹窗 |
| | | const {t} = useI18n() // 国际化 |
| | | defineOptions({name: 'Camera'}) |
| | | |
| | | const loading = ref(true) // 列表的加载中 |
| | | const total = ref(0) // 列表的总页数 |
| | | const list = ref([]) // 列表的数据 |
| | | const queryParams = reactive({ |
| | | pageNo: 1, |
| | | pageSize: 10, |
| | | type: 1, |
| | | brand: undefined, |
| | | ip: undefined, |
| | | code: undefined, |
| | | device: undefined, |
| | | location: undefined, |
| | | status: undefined |
| | | }) |
| | | const queryFormRef = ref() // 搜索的表单 |
| | | const exportLoading = ref(false) // 导出的加载中 |
| | | const message = useMessage() // 消息弹窗 |
| | | const {t} = useI18n() // 国际化 |
| | | |
| | | /** 查询列表 */ |
| | | const getList = async () => { |
| | | loading.value = true |
| | | try { |
| | | const data = await CameraApi.getCameraPage(queryParams) |
| | | list.value = data.list |
| | | total.value = data.total |
| | | } finally { |
| | | loading.value = false |
| | | } |
| | | const loading = ref(true) // 列表的加载中 |
| | | const total = ref(0) // 列表的总页数 |
| | | const list = ref([]) // 列表的数据 |
| | | const queryParams = reactive({ |
| | | pageNo: 1, |
| | | pageSize: 10, |
| | | type: 1, |
| | | brand: undefined, |
| | | ip: undefined, |
| | | code: undefined, |
| | | device: undefined, |
| | | location: undefined, |
| | | status: undefined |
| | | }) |
| | | const queryFormRef = ref() // 搜索的表单 |
| | | const exportLoading = ref(false) // 导出的加载中 |
| | | |
| | | /** 查询列表 */ |
| | | const getList = async () => { |
| | | loading.value = true |
| | | try { |
| | | const data = await CameraApi.getCameraPage(queryParams) |
| | | list.value = data.list |
| | | total.value = data.total |
| | | } finally { |
| | | loading.value = false |
| | | } |
| | | } |
| | | |
| | | /** 搜索按钮操作 */ |
| | | const handleQuery = () => { |
| | | queryParams.pageNo = 1 |
| | | getList() |
| | | } |
| | | /** 搜索按钮操作 */ |
| | | const handleQuery = () => { |
| | | queryParams.pageNo = 1 |
| | | getList() |
| | | } |
| | | |
| | | /** 重置按钮操作 */ |
| | | const resetQuery = () => { |
| | | queryFormRef.value.resetFields() |
| | | handleQuery() |
| | | } |
| | | /** 重置按钮操作 */ |
| | | const resetQuery = () => { |
| | | queryFormRef.value.resetFields() |
| | | queryParams.brand = undefined |
| | | handleQuery() |
| | | } |
| | | |
| | | /** 添加/修改操作 */ |
| | | const formRef = ref() |
| | | const openForm = (type: string, id?: number) => { |
| | | formRef.value.open(type, id) |
| | | } |
| | | /** 添加/修改操作 */ |
| | | const formRef = ref() |
| | | const openForm = (type: string, id?: number) => { |
| | | formRef.value.open(type, id) |
| | | } |
| | | |
| | | /** 删除按钮操作 */ |
| | | const handleDelete = async (id: number) => { |
| | | try { |
| | | // 删除的二次确认 |
| | | await message.delConfirm() |
| | | // 发起删除 |
| | | await CameraApi.deleteCamera(id) |
| | | message.success(t('common.delSuccess')) |
| | | // 刷新列表 |
| | | await getList() |
| | | } catch { |
| | | } |
| | | } |
| | | |
| | | /** 导出按钮操作 */ |
| | | const handleExport = async () => { |
| | | try { |
| | | // 导出的二次确认 |
| | | await message.exportConfirm() |
| | | // 发起导出 |
| | | exportLoading.value = true |
| | | const data = await CameraApi.exportCamera(queryParams) |
| | | download.excel(data, '录像机列表.xls') |
| | | } catch { |
| | | } finally { |
| | | exportLoading.value = false |
| | | } |
| | | } |
| | | |
| | | /** 初始化 **/ |
| | | onMounted(async () => { |
| | | /** 删除按钮操作 */ |
| | | const handleDelete = async (id: number) => { |
| | | try { |
| | | // 删除的二次确认 |
| | | await message.delConfirm() |
| | | // 发起删除 |
| | | await CameraApi.deleteCamera(id) |
| | | message.success(t('common.delSuccess')) |
| | | // 刷新列表 |
| | | await getList() |
| | | }) |
| | | } catch { |
| | | } |
| | | } |
| | | |
| | | /** 查看截图 */ |
| | | const imageFormRef = ref() |
| | | const imageHandle = (id: string) => { |
| | | imageFormRef.value.open(id) |
| | | } |
| | | |
| | | /** 导出按钮操作 */ |
| | | const handleExport = async () => { |
| | | try { |
| | | // 导出的二次确认 |
| | | await message.exportConfirm() |
| | | // 发起导出 |
| | | exportLoading.value = true |
| | | const data = await CameraApi.exportCamera(queryParams) |
| | | download.excel(data, '录像机列表.xls') |
| | | } catch { |
| | | } finally { |
| | | exportLoading.value = false |
| | | } |
| | | } |
| | | |
| | | /** 初始化 **/ |
| | | onMounted(async () => { |
| | | await getList() |
| | | }) |
| | | </script> |