TransferStatusControl.vue 7.64 KB
<template>
    <el-card class="remoteTitle">
        <div class="card-content">
            <div class="demo-button">
                <el-button type="primary" size="small" @click="ReadStatus">读取全部</el-button>
                <el-button type="primary" size="small" @click="WriteStatus" disabled="false">写入全部</el-button>
            </div>
            <div class="demo-image">
                <div class="block">
                    <span class="demonstration">读写成功</span>
                    <el-icon><CircleCheckFilled color="rgb(0,255,0)"/></el-icon>
                </div>
                <div class="block">
                    <span class="demonstration">通讯异常</span>
                    <el-icon><Connection /></el-icon>
                </div>
                <div class="block">
                    <span class="demonstration">读写失败</span>
                    <el-icon><Failed color="rgb(255,0,0)"/></el-icon>
                </div>
            </div>
        </div>
    </el-card>
    <el-table
        ref="tableRef"
        v-model:checked="selectedRows"
        show-header="true" 
        :height="tableHeight"
        :cell-style="setCellStyle" 
        border 
        highlight-current-row 
        :header-cell-style="setHeaderCellStyle"  
        :data="visibleData" 
        v-loading="isLoading"
        element-loading-text="数据加载中......"
        row-class-name="fixed-row-height"
        element-loading-background="rgba(0, 0, 0, 0.8)"
        >
        <el-table-column type="selection" width="55" />
        <el-table-column prop="rowIndex" label="序号" width="45px" fixed />
        <el-table-column prop="transferId" label="机组编号" v-if="false" width="80px" fixed />
        <el-table-column prop="transferName" label="换热机组" width="150px" fixed />
        <el-table-column prop="jDValue" label="华为控制模式" width="80px" />
        <el-table-column prop="gainMode" label="增益模式" width="80px" />
        <el-table-column prop="weatherMode" label="气象仪模式" width="80px" />
        <el-table-column prop="curveMode" label="曲线对应模式" width="80px" />
        <el-table-column prop="criclePump1" label="1#循环泵启停" width="80px" />
        <el-table-column prop="criclePump2" label="2#循环泵启停" width="80px" />
        <el-table-column prop="Pump3" label="3#循环泵启停" width="80px" />
        <el-table-column prop="Pump4" label="4#循环泵启停" width="80px" />
        <el-table-column prop="ReplenishingPump" label="补水泵启停" width="80px" />
        <el-table-column prop="SecPump1" label="1#二级泵启停" width="80px" />
        <el-table-column prop="Evc1AutoOrManual" label="1#电动调节阀手动/自动切换" width="100px" />
        <el-table-column prop="Evc2AutoOrManual" label="2#电动调节阀手动/自动切换" width="100px" />
        <el-table-column prop="Evc3AutoOrManual" label="3#电动调节阀手动/自动切换" width="100px" />
        <el-table-column prop="Evc4AutoOrManual" label="4#电动调节阀手动/自动切换" width="100px" />
        <el-table-column prop="CriclePump1AutoOrManual" label="一号循环泵 手动/自动切换" width="100px" />
        <el-table-column prop="CriclePump2AutoOrManual" label="二号循环泵 手动/自动切换" width="100px" />
        <el-table-column prop="CriclePump3AutoOrManual" label="三号循环泵 手动/自动切换" width="100px" />
        <el-table-column prop="CriclePump4AutoOrManual" label="四号循环泵 手动/自动切换" width="100px" />
        <el-table-column prop="SecCriclePumpAutoOrManual" label="二级泵 手动/自动切换" width="100px" />
        <el-table-column fixed="right" label="操作" width="100">
            <template #default>
                <el-button link type="primary" size="small" @click="ReadStatus">读取</el-button>
                <el-button link type="primary" size="small" @click="WriteStatus">写入</el-button>
            </template>
        </el-table-column>
    </el-table>
    <el-card style="height: 50px; padding: 0;">
        <el-progress
            :text-inside="true"
            :stroke-width="16"
             status="success"
            :percentage="progress"
            />
    </el-card>
</template>
<script lang="ts" setup>
    import { ref, reactive, onMounted, onUnmounted, watch,toRefs  } from 'vue';
    import http from '../../api/http';
    import store from "../../store/index";

    const enterpriseId = store.getters.getEnterpriseId();
    const props = defineProps(['activeRadio']);
    const tableRef = ref(null);
    const selectedRows = ref([]);
    const isLoading= ref(true);
    const visibleData = ref([]);
    const tableHeight = ref(500);
    const progress =ref(0);
    const state = reactive({
        fits: ['Success', 'fale', 'cover', 'none', 'scale-down'],
        url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
    })
    const { fits, url } = toRefs(state);

    //监听修改actionValue状态
    watch(() =>props.activeRadio, (oldValue, newValue) => {
        //console.log("2actionValue:"+props.activeRadio);
        initData();
    },{deep:true});

    function setContentHeight() {
        tableHeight.value = window.innerHeight - 300;
    }
    async function initData(){
        isLoading.value = true;
        var type = 0;
        if(enterpriseId === "9BCA54BC-8F27-4849-8D7D-50C5099E1949".toLowerCase()){
            type = 1;
        }
        var result = await http.post('/api/remote/GetTransferStatus',{"SupplyType":type, "DeviceId": props.activeRadio});
        console.log(result);
        visibleData.value = result.data;
        isLoading.value = false;
    }
    initData();

    async function ReadStatus(){
        if(selectedRows){
            selectedRows.value.forEach(item =>{
                ReadStation(item);
            })
        }
    }
    async function WriteStatus(){

    }

    async function ReadStation(value){
        var result = await http.post('', value);
        var jobj = result.data;
        console.log(jobj);
    }

    onMounted(() => {
        setContentHeight();
    window.addEventListener('resize', setContentHeight);
    })
    onUnmounted(() => {
        window.removeEventListener('resize', setContentHeight);
    })

    function setCellStyle({ row, column, rowIndex, columnIndex }) {
        let css_color = {};
        css_color['padding-left'] = '0px';
        css_color['padding-right'] = '0px';
        css_color['borderColor'] = '#97d5fd';
        css_color['padding'] = '0px';
        return css_color;
    }

    function setHeaderCellStyle({ row, column, rowIndex, columnIndex }) {
        let css_color;
        var backcolor = 'd9f1ff';
        css_color = { 'background-color': '#' + backcolor, 'padding-left': '0px', 'padding-right': '0px', 'borderColor': '#97d5fd', 'color': '#000', 'text-align': 'center', 'vertical-align': 'top' };

        var backcolor = 'd9f1ff';
        css_color = { 'background-color': '#' + backcolor, 'padding-left': '0px', 'padding-right': '0px', 'borderColor': '#97d5fd', 'color': '#000', 'text-align': 'center', 'vertical-align': 'top' };

        return css_color;
    }

</script>

<style scoped>
.remoteTitle{
    width: 100%;
}

.card-content {
  display: flex;
  justify-content: space-between;
}

.demo-image {
    width: 70%;
    display: right;
    flex: 9;
}
.demo-image .block {
  padding: 1px 0;
  text-align: center;
  border-right: solid 1px var(--el-border-color);
  display: inline-block;
  width: 80px;
  box-sizing: border-box;
  vertical-align: top;
}
.demo-image .block:last-child {
  border-right: none;
}
.demo-image .demonstration {
  display: block;
  color: var(--el-text-color-secondary);
  font-size: 12px;
  margin-bottom: 0px;
}
</style>