You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
duoji-frontend/src/views/roadwayManage/index.vue

318 lines
9.4 KiB
Vue

<template>
<div>
<div class="button-box">
<a-button type="primary" class="open" @click="confirmLight('open')">
打开全部光源
</a-button>
<a-button type="primary" class="close" @click="confirmLight('close')">
关闭全部光源
</a-button>
<a-button type="primary" @click="showModel('add','')">
新增巷道
</a-button>
</div>
<a-table
4 years ago
style="margin-top:40px"
:columns="columns"
:row-key="record => record.id"
:data-source="data"
:pagination="pagination"
@change="handleGetStreetList"
>
<span slot="leftType" slot-scope="text">
{{ text === null ? '-' : text === 0 ? '单伸' : '双伸' }}
</span>
<span slot="rightType" slot-scope="text">
{{ text === null ? '-' : text === 0 ? '单伸' : '双伸' }}
</span>
<span slot="connectStatus" slot-scope="text">
{{ text === 1 ? '已连接' : "未连接" }}
</span>
<span slot="plc" slot-scope="text" v-if="text.plcIp">
{{ text.plcIp }}:{{text.plcPort}}
</span>
<span slot="sensorGun" slot-scope="text">
<template>
<span v-if="text.rightSensorGunIp && text.leftSensorGunIp">{{text.leftSensorGunIp}}:{{text.leftSensorGunPort}} {{text.rightSensorGunIp}}:{{text.rightSensorGunPort}}</span>
<span v-else>
<span v-if="text.leftSensorGunIp">{{text.leftSensorGunIp}}:{{text.leftSensorGunPort}}</span>
<span v-if="text.rightSensorGunIp">{{text.rightSensorGunIp}}:{{text.rightSensorGunPort}}</span>
</span>
</template>
</span>
<span slot="actions" slot-scope="text">
<template>
<span v-if="text.camera1Name ">{{text.camera1Name}} </span>
<span v-else>
<span >{{text.camera1Name}}</span>
</span>
</template>
</span>
<span slot="action" slot-scope="text, record">
<a @click="openOneLight(record.id)">
打开光源
</a>
<a-divider type="vertical"/>
<a @click="closeOneLight(record.id)">
关闭光源
</a>
<a-divider type="vertical"/>
<a @click="showModel('edit',record)">
编辑
</a>
<a-divider type="vertical"/>
<a-popconfirm
title="是否删除?"
@confirm="() => delDosage(record)"
>
<a>删除</a>
</a-popconfirm>
</span>
</a-table>
<Model
:visible.sync="visible"
:modelTitle="modelTitle"
:modelData.sync="modelData"
@sure="submit"
@close="closeModel"
/>
</div>
</template>
<script>
import Model from "./model.vue"
const columns = [
{
title: '巷道名称',
dataIndex: 'name',
},
{
title: '巷道标识',
dataIndex: 'plcId',
},
{
title: '客户端IP',
scopedSlots: { customRender: 'plcIp' }
},
{
title: '客户端连接状态',
scopedSlots: { customRender: 'connectStatus' }
},
{
title: '左货架类型',
dataIndex: 'leftType',
scopedSlots: { customRender: 'leftType' }
},
{
title: '右货架类型',
dataIndex: 'rightType',//若这里保留slot插槽的text即代表rightType否则text.rightType才代表rightType本身
scopedSlots: {customRender: 'rightType'}
},
{
title: '对应球机',
scopedSlots: { customRender: 'actions' }
},
{
title: '修改时间',
dataIndex: 'updateTime',
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
},
];
export default {
data() {
return {
pageNum:1,
pageSize:10,
data: [],
pagination:{
total:0,
defaultPageSize:10, // 默认每页显示数量
showTotal: total => `${total} 条数据`, // 显示总数
showSizeChanger:true, // 显示可改变每页数量
pageSizeOptions: ['10', '20', '30'],
onShowSizeChange:(current, pageSize)=>this.pageSize = pageSize // 改变每页数量时更新显示
},
loading: false,
columns,
visible:false,
modelTitle:'',
modelData:[],
};
},
mounted() {
this.handleGetStreetList()
},
methods: {
handleGetStreetList(pagination) {
console.log(pagination)
if(pagination){
this.pagination.current = pagination.current;
this.pagination.pageSize = pagination.pageSize;
this.pageNum = pagination.current;
this.pageSize = pagination.pageSize;
}
this.request();
},
request(){
this.$api.httpApi.getStreetList({
data: {
pageNum:this.pageNum,
pageSize:this.pageSize,
}
}).then(res => {
const pagination = { ...this.pagination };
pagination.total = res.data.total;
this.data = res.data.list;
this.pagination = pagination;
}).catch(err => {
});
},
showModel(type,data){
this.visible = true
console.log(type)
if(type=='add'){
this.modelTitle = "新增巷道"
}else if(type=='edit'){
this.modelTitle = "编辑巷道"
this.modelData = data
}
},
submit(visible){
this.visible = visible
this.handleGetStreetList()
},
closeModel(visible,data){
this.visible = visible
this.modelData=data
},
delDosage(data){
console.log(data.id)
var id=data.id
this.$axios.delete('/street/'+id, {
data: {}
}).then(res => {
if(res.code==200){
this.$message.success('删除巷道成功');
this.handleGetStreetList()
}
}).catch(err => {
})
},
confirmLight(type) {
const that = this
if(type == "open"){
this.$confirm({
title: "打开光源",
content: "确认打开光源?",
okText: '确认',
onOk() {
return new Promise((resolve, reject) => {
that.openLight();
setTimeout(resolve, 1000);
}).catch(() => console.log('Oops errors!'));
},
cancelText: '取消',
});
}else{
this.$confirm({
title: "关闭光源",
content: "确认关闭光源?",
okText: '确认',
onOk() {
return new Promise((resolve, reject) => {
that.closeLight();
setTimeout(resolve, 1000);
this.$message.success('已关闭光源');
}).catch(() => console.log('Oops errors!'));
},
cancelText: '取消',
});
}
},
openOneLight(streetId){
console.log("openOneLight"+streetId)
this.$axios.get('/street/lightSource/open/' + streetId, {
}).then(res => {
if(res.code==200){
this.$message.success('已打开光源');
}
}).catch(err => {
})
},
closeOneLight(streetId){
console.log("closeOneLight"+streetId)
this.$axios.get('/street/lightSource/close/' + streetId, {
}).then(res => {
if(res.code==200){
this.$message.success('已关闭光源');
}
}).catch(err => {
})
},
openLight(){
console.log("openLight")
this.$api.httpApi.openLight().then(res => {
}).catch(err => {
});
},
closeLight(){
this.$api.httpApi.closeLight().then(res => {
}).catch(err => {
});
}
},
components:{
Model
}
};
</script>
<style lang="scss" scoped>
.add{
position: absolute;
4 years ago
top:20px;
right: 40px;
}
.button-box{
position: absolute;
top:20px;
right: 40px;
display: flex;
align-items: center;
justify-content: center;
.open{
margin-right: 15px;
}
.close{
margin-right: 15px;
}
}
</style>