wuyouming666
2023-09-13 eb967d7573a8297e493d455dfce2c77319215990
CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -2,23 +2,27 @@
  <div class="app">
    <!--面包屑导航区域-->
    <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
      <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
      <el-button type="text">设备管理</el-button>
      <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
      <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
      <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
      <router-link to="/Electrical/State" tag="el-button" type="text">State</router-link>
      <router-link to="/Electrical/alarm" tag="el-button" type="text">Alarm</router-link>
      <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link>
    <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
    <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
    <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') }}</router-link>
    <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') }}</router-link>
    </el-breadcrumb>
    <div>Alarm</div>
    <!-- <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="{ messagepack }">
        <div class="kuai_div" v-for="item in this.record.xyData" :key="item[1]">
          <el-input v-model="item[1]" style="width: 240px;" class="in_mc"></el-input>
          <el-switch v-model="item[0]" active-value="0" inactive-value="1"></el-switch>
        </div>
      </el-form> -->
    <div class="block">
      <span class="demonstration">时间:</span>
      <el-date-picker v-model="shijian1" type="datetime" placeholder="选择日期时间" align="right"
        :picker-options="pickerOptions">
      </el-date-picker>
      ~
      <el-date-picker v-model="shijian2" type="datetime" placeholder="选择日期时间" align="right"
        :picker-options="pickerOptions">
      </el-date-picker>
      &nbsp;&nbsp;
      <el-button type="primary" @click="selectTime()">{{ $t('Search') }}</el-button>
    </div>
    <el-table :data="tableData" style="width: 100%;" height="590">
    <el-table :data="localizedRoles" style="width: 100%;" height="550">
      <el-table-column prop="id" label="id" width="80">
      </el-table-column>
      <el-table-column prop="content" label="content">
@@ -32,19 +36,27 @@
</template>
<script >
import { setAll } from "../../api/alarm";
import { setAll, setTime } from "../../api/alarm";
import moment from 'moment';
//setTime
import LanguageMixin from '../../lang/LanguageMixin'
let socket;
export default {
  name: "alarm",
  mixins: [LanguageMixin],
  data () {
    return {
      activeButton: '',
      record: {
        params: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        // xyData: [],
      },
      tableData: [],
      roles: [],
      localizedRoles: [],
      messagepack: {
        data: { taskname: "" }
@@ -53,21 +65,95 @@
        data: "1",
        pageSize: 10
      },
      pickerOptions: {
        shortcuts: [{
          text: '今天',
          onClick (picker) {
            picker.$emit('pick', new Date());
          }
        }, {
          text: '昨天',
          onClick (picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24);
            picker.$emit('pick', date);
          }
        }, {
          text: '一周前',
          onClick (picker) {
            const date = new Date();
            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
            picker.$emit('pick', date);
          }
        }],
      },
      shijian1: "",
      shijian2: "",
    }
  },
  created () {
    this.init();
    this.load();
    if (this.shijian1 == "" || this.shijian2 == "") {
      //查询当天报警信息
      this.load();
    }
    else {
      //根据时间查询报警信息
      this.selectTime();
    }
  },
  methods: {
    onButtonClick() {
      this.isButtonClicked = true; // 将按钮颜色设置为蓝色
      setTimeout(() => {
        this.isButtonClicked = false; // 重置按钮颜色
      }, 500); // 这里的500毫秒是根据您希望按钮颜色持续多长时间来定的,可以根据需求进行调整
    },
    load () {
      setAll().then(res => {
        this.tableData = res.data.list;
        //console.log(this.tableData);
        this.roles = res.data.list;
        const language = this.$i18n.locale;
        if (language === 'zh-CN') {
          this.replaceChineseWithEnglish();
        } else {
          this.localizedRoles = [...this.roles];
        }
        //console.log(this.localizedRoles);
      });
    },
    selectTime () {
      //moment需要单独安转依赖,npm install moment
      let sj1 = moment(this.shijian1).format('YYYY-MM-DD%20HH:mm');
      let sj2 = moment(this.shijian2).format('YYYY-MM-DD%20HH:mm')
      //调用setTime方法给roles赋值
      setTime(sj1, sj2).then(res => {
        this.roles = res.data.list;
        //table中的内容进行语言转换
        const language = this.$i18n.locale;
        if (language === 'zh-CN') {
          this.replaceChineseWithEnglish();
        } else {
          this.localizedRoles = [...this.roles];
        }
      });
    },
    //语言转换
    replaceChineseWithEnglish () {
      const translation = this.$t('translation');
      this.localizedRoles = this.roles.map(role => ({
        ...role,
        content: translation[role.content] || role.content
      }));
    },
    init () {
      let viewname = "alarm";
@@ -89,13 +175,16 @@
        };
        //  浏览器端收消息,获得从服务端发送过来的文本消息
        socket.onmessage = function (msg) {
          //console.log("收到数据====" + msg.data);
          let obj = JSON.parse(msg.data);
          this.record.params[0] = obj.arm;
          //每次请求更新数据
          this.load();
          if (this.shijian1 == "" || this.shijian2 == "") {
            this.load();
          }
          else {
            this.selectTime();
          }
          this.$forceUpdate();
        }.bind(this);
        //关闭事件
@@ -109,10 +198,6 @@
      }
    },
    send () {
      this.messagepack.data = { taskname: "前端到后台" };
      socket?.send(JSON.stringify(this.messagepack));  // 将组装好的json发送给服务端,由服务端进行转发
    }
  }
@@ -152,4 +237,7 @@
th div {
  text-align: center;
}
.blue-button {
  background-color: skyblue;
}
</style>