| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <template>
- <div class="vent-table">
- <a-radio-group v-model:value="selectRowIndex" @change="setSelectedRowKeys" style="width: 100%">
- <a-table :columns="columns" :pagination="false" :data-source="dataTableSource" bordered style="margin-top: 5px">
- <template #bodyCell="{ column, record, index }">
- <template v-if="column.dataIndex === 'isCheck'">
- <a-radio :value="record.deviceID" />
- </template>
- <a-tag v-if="column.dataIndex === 'warnFlag'" :color="record.warnFlag == 0 ? 'green' : 'red'">{{
- record.warnFlag == 0 ? '正常' : '报警'
- }}</a-tag>
- <a-tag v-if="column.dataIndex === 'netStatus'" :color="record.netStatus == 0 ? 'default' : 'green'">{{
- record.netStatus == 0 ? '断开' : '连接'
- }}</a-tag>
- </template>
- </a-table>
- </a-radio-group>
- </div>
- </template>
- <script lang="ts" setup>
- //ts语法
- import { defineExpose, toRaw, watch, ref, onMounted, onUnmounted } from 'vue';
- import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
- const props = defineProps({
- columnsType: {
- type: String,
- required: true,
- },
- dataSource: {
- type: Array,
- required: true,
- },
- deviceType: {
- type: String,
- },
- designScope: {
- type: String,
- },
- title: {
- type: String,
- },
- });
- const emits = defineEmits(['selectRow']);
- const dataTableSource = ref<any[]>([]);
- const loading = ref(true);
- // 默认初始是第一行
- const selectRowIndex = ref(0);
- watch(
- () => {
- return props.dataSource;
- },
- (newVal, oldVal) => {
- const list: unknown[] = [];
- newVal.forEach((item) => {
- const data: any = toRaw(item);
- const emptyData = new Object();
- for (const key in data) {
- if (
- Object.prototype.hasOwnProperty.call(data, key) &&
- key !== 'deviceID' &&
- key !== 'fanStart1' &&
- key !== 'fanStart2' &&
- key !== 'strinstallpos' &&
- key !== 'readTime'
- ) {
- emptyData[key] = '-';
- } else {
- emptyData[key] = data[key];
- }
- }
- if (data.fanStart1 == 1) {
- // 主风机启动
- data['runDevice'] = '主机';
- emptyData['runDevice'] = '备机';
- list.push(data, emptyData);
- } else if (data.fanStart2 == 1) {
- // 备风机启动
- data['runDevice'] = '备机';
- emptyData['runDevice'] = '主机';
- list.push(emptyData, data);
- } else {
- list.push({ ...emptyData, runDevice: '主机' }, { ...emptyData, runDevice: '备机' });
- }
- });
- if (oldVal.length < 1) {
- // 第一次
- if (list[0] && list[0]['fanStart1'] == 1) {
- setSelectedRowKeys(list[0]['deviceID']);
- } else if (list[1] && list[1]['fanStart2'] == 1) {
- setSelectedRowKeys(list[1]['deviceID']);
- } else if (list[0]) {
- setSelectedRowKeys(list[0]['deviceID']);
- }
- }
- dataTableSource.value = list;
- loading.value = false;
- }
- );
- const setSelectedRowKeys = (target) => {
- console.log(target, Object.prototype.toString.call(target));
- if (Object.prototype.toString.call(target) === '[object String]') {
- selectRowIndex.value = target;
- emits('selectRow', target);
- } else if (Object.prototype.toString.call(target) === '[object Object]') {
- const data = target.target.value;
- selectRowIndex.value = data;
- emits('selectRow', data);
- }
- };
- /** 定义table Columns */
- function setColumns() {
- const isCheckColumn = {
- title: '',
- dataIndex: 'isCheck',
- width: 60,
- align: 'center',
- customCell: (_, index) => {
- if (index % 2 == 0) {
- return { rowSpan: 2 };
- } else {
- return { rowSpan: 0 };
- }
- },
- };
- const runDevice = {
- title: '运行风机',
- dataIndex: 'runDevice',
- width: 80,
- align: 'center',
- };
- let columns: any[] = getTableHeaderColumns(props.columnsType);
- const strinstallpos = columns.find((item) => {
- return item.dataIndex === 'strinstallpos' || item.dataIndex === 'strname';
- });
- if (strinstallpos) {
- strinstallpos.customCell = (_, index) => {
- if (index % 2 == 0) {
- return { rowSpan: 2 };
- } else {
- return { rowSpan: 0 };
- }
- };
- }
- columns.splice(1, 0, runDevice);
- columns = [isCheckColumn, ...columns];
- return columns;
- }
- const columns = setColumns();
- console.log('[ columns ] >', columns);
- onMounted(() => {
- // 如果是https
- // 反之是websocket
- });
- onUnmounted(() => {});
- </script>
- <style scoped lang="less">
- :deep(.ant-table-body) {
- height: auto !important;
- }
- :deep(.jeecg-basic-table .ant-table-wrapper .ant-table-title) {
- min-height: 0;
- }
- </style>
|