186 lines
6.0 KiB
Vue
186 lines
6.0 KiB
Vue
<template>
|
||
<a-col v-for="(item,index) in tableData" :key="index" :xs="24" :sm="24" :md="12" :lg="12" :xl="8" :xxl="6" style="padding: 8px;">
|
||
<a-card style="width: 100%;border-radius: 8px;" :headStyle="{ height: '60px', padding: '0 24px' }" :bodyStyle="{ padding: '24px 24px 4px 24px' }">
|
||
<template #title>
|
||
<a-row style="font-weight: normal;">
|
||
<a-col :span="18" style="font-size: 14px;">
|
||
<div style="font-size: 12px;">SN:<span style="font-weight: bold;">{{item.sn}}</span></div>
|
||
<div style="font-size: 12px;">设备类型:摄像头</div>
|
||
</a-col>
|
||
<a-col :span="6" style="text-align: center;padding-top: 4px;">
|
||
<div :class="item.deviceStatus=='1'?'zxClass':'lxClass'">{{item.deviceStatus =='1'?'在线':'离线'}}</div>
|
||
</a-col>
|
||
</a-row>
|
||
</template>
|
||
<a-row>
|
||
<a-col :span="24" style="margin-top: -10px;">
|
||
NUID: {{item.nuId?item.nuId:'未配置'}}
|
||
</a-col>
|
||
<a-col :span="12" style="text-align: left;margin-top: 10px;">
|
||
同步状态:{{item.syncType =='1'?'已同步':'未同步'}}
|
||
</a-col>
|
||
<a-col :span="12" style="text-align: left;margin-top: 10px;">
|
||
维修状态:
|
||
<span v-if="item.maintainStatus=='0'">正常</span>
|
||
<span v-if="item.maintainStatus=='1'" style="color: red;">维修中</span>
|
||
<span v-if="item.maintainStatus=='2'">报废</span>
|
||
</a-col>
|
||
<a-col :span="24" style="text-align: center;margin-top: 20px;">
|
||
<span style="display:inline-block;cursor: pointer;" @click="handlePreview(item)">
|
||
<span class="tbClass"><img src="../../../assets/iot/a14.png" style="width:20px;" /></span><br/>
|
||
<span class="antTitle">预览</span>
|
||
</span>
|
||
<span style="display:inline-block;cursor: pointer;margin-left:10px;" @click="handleDel(item)" v-if="item.syncType=='0'">
|
||
<span class="tbClass"><img src="../../../assets/iot/a15.png" style="width:20px;" /></span><br/>
|
||
<span class="antTitle">移除</span>
|
||
</span>
|
||
<span style="display:inline-block;cursor: pointer;margin-left:10px;" @click="handleWeixiu(item)" v-if="item.maintainStatus=='1'" >
|
||
<span class="tbClass"><img src="../../../assets/iot/a6.png" style="width:20px;" /></span><br/>
|
||
<span class="antTitle">维修</span>
|
||
</span>
|
||
</a-col>
|
||
</a-row>
|
||
</a-card>
|
||
</a-col>
|
||
|
||
<CameraPreviewModal ref="previewModal"></CameraPreviewModal>
|
||
<a-modal v-model:visible="wxvisible" title="维修" @ok="handleWxOk">
|
||
<div style="padding: 10px;text-align: center;">
|
||
<div style="line-height: 60px;">
|
||
维修状态:<a-radio-group v-model:value="maintainStatus" :options="plainOptions" />
|
||
</div>
|
||
</div>
|
||
</a-modal>
|
||
</template>
|
||
|
||
<script lang="ts" name="iot-nuIotCameraInfo" setup>
|
||
import {ref} from 'vue';
|
||
import {Modal} from 'ant-design-vue';
|
||
import { useMessage } from '/@/hooks/web/useMessage';
|
||
import CameraPreviewModal from '/@/views/iot/tplink/camera/components/CameraPreviewModal.vue'
|
||
import { c } from 'node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf';
|
||
import { defHttp } from '/@/utils/http/axios';
|
||
|
||
const wxvisible = ref<boolean>(false);
|
||
const bxInfo = ref<any>({});
|
||
const maintainStatus = ref<string>('');
|
||
const previewModal = ref();
|
||
const { createMessage } = useMessage();
|
||
const emit = defineEmits(['register', 'ok']);
|
||
const props = defineProps({
|
||
tableData: { type: Object, default: () => ([]) },
|
||
});
|
||
const plainOptions = [
|
||
{ label: '正常', value: '0' },
|
||
{ label: '报废', value: '2' },
|
||
];
|
||
function handleWxOk() {
|
||
if(!maintainStatus.value){
|
||
createMessage.error('请选择报修状态!');
|
||
}else{
|
||
wxvisible.value = false;
|
||
var params = {
|
||
id: bxInfo.value.id,
|
||
departServerUrl: bxInfo.value.departServerUrl,
|
||
maintainStatus: maintainStatus.value,
|
||
}
|
||
defHttp.post({ url: '/iot/tplink/cameraInfo/weixiu', params }).then(() => {
|
||
emit("ok");
|
||
});
|
||
|
||
}
|
||
}
|
||
/**
|
||
* 维修
|
||
*/
|
||
function handleWeixiu(record){
|
||
bxInfo.value = record;
|
||
wxvisible.value = true;
|
||
}
|
||
/**
|
||
* 预览
|
||
*/
|
||
function handlePreview(record) {
|
||
previewModal.value.disableSubmit = true;
|
||
previewModal.value.edit(record);
|
||
}
|
||
/**
|
||
* 删除
|
||
*/
|
||
function handleDel(record) {
|
||
console.log("🚀 ~ handleDel ~ record:", record)
|
||
const list = props.tableData;
|
||
if(list.length==1){
|
||
createMessage.error('请至少保留一个摄像头!');
|
||
}else{
|
||
Modal.confirm({
|
||
title: '移除摄像头',
|
||
content: '是否要移除此摄像头?',
|
||
okText: '确认',
|
||
cancelText: '取消',
|
||
onOk: async () => {
|
||
// todo 删除
|
||
defHttp.post({ url: '/iot/tplink/cameraInfo/updateDepartById', params: { id: record.id } }).then(() => {
|
||
emit("ok");
|
||
});
|
||
},
|
||
});
|
||
}
|
||
|
||
}
|
||
|
||
</script>
|
||
|
||
<style lang="less" scoped>
|
||
|
||
|
||
.zxClass{
|
||
font-size:14px;
|
||
background: linear-gradient(to right, #1ea0fa, #017de9);
|
||
border-radius: 8px;
|
||
height: 35px;
|
||
color: white;
|
||
line-height: 35px;
|
||
}
|
||
|
||
.lxClass{
|
||
font-size:14px;
|
||
background: linear-gradient(to right, #cccccc, #cccccc);
|
||
border-radius: 8px;
|
||
height: 35px;
|
||
color: white;
|
||
line-height: 35px;
|
||
}
|
||
.tbClass{
|
||
background: #f6f6f6;
|
||
padding: 8px;
|
||
border-radius: 5px;
|
||
}
|
||
.antTitle{
|
||
margin-top: 10px;
|
||
display: block;
|
||
font-size: 12px;
|
||
}
|
||
|
||
|
||
|
||
.ytbClass{
|
||
font-size:12px;
|
||
background: linear-gradient(to right, #1ea0fa, #017de9);
|
||
border-radius: 8px;
|
||
height: 20px;
|
||
color: white;
|
||
line-height: 20px;
|
||
}
|
||
|
||
.wtbClass{
|
||
font-size:12px;
|
||
background: linear-gradient(to right, #cccccc, #cccccc);
|
||
border-radius: 8px;
|
||
height: 20px;
|
||
color: white;
|
||
line-height: 20px;
|
||
}
|
||
|
||
</style>
|