单应用项目,可以创建很多独立工具类页面 ,不用登录 初始化的页面
chenyc
2025-06-19 43eda7e0ebca2130d5714dcf4005530a2824b3f1
src/views/deviceWindoes2.vue
@@ -1531,6 +1531,8 @@
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="centerDialogVisible = false">取消</el-button>
          <el-button @click="test">测试播报</el-button>
          <el-button @click="playAlarm">测试报警</el-button>
          <el-button type="primary" @click="saveSet"> 确认 </el-button>
          <el-button type="success" @click="shuaxin"> 刷新 </el-button>
        </div>
@@ -1663,6 +1665,8 @@
import cljd from "../img/cljd.png";
import tizhong from "../img/tizhong.png";
import { EventSourcePolyfill } from "event-source-polyfill";
import alertbaojin from '../assets/alert.wav'
import {
  computed,
  getCurrentInstance,
@@ -1677,6 +1681,16 @@
import * as echarts from "echarts";
import { jgTime4 } from "../utils/formatTime";
import { setTimeoutAlert } from "../utils/httpApi";
// 创建 Audio 对象,指向 public 目录下的音频文件
const alarmSound = new Audio(alertbaojin)
// 播放报警声的方法
const playAlarm = () => {
  alarmSound.currentTime = 0 // 重置到开头,以便可以重复播放
  alarmSound.play().catch((err) => {
    console.error('播放失败:', err)
  })
}
// 语音播报
import Speech from "speak-tts";
const speech = ref(null);
@@ -1925,10 +1939,7 @@
};
// 保存定时任务
const setDingshi = () => {
  if (!formInline.value.alertText) {
    ElMessage.warning("设置报警消息不能为空");
    return true;
  }
  console.log("--------------------");
  console.log(formInline.value);
  console.log(deviceCode.value);
@@ -1939,6 +1950,10 @@
  } else {
    alertText = formInline.value.alertText;
  }
  if (alertText==='') {
    ElMessage.warning("设置报警消息不能为空");
    return true;
  }
  setTimeoutAlert({
    deviceCode: deviceCode.value,
    minutes: minutes,
@@ -1948,6 +1963,7 @@
    if (res.data === "OK") {
      倒计时.value = minutes * 60;
      centerDialogVisible2.value = false;
      倒计时告警文本.value = alertText
    } else {
      ElMessage.warning(res.message);
    }
@@ -2108,7 +2124,7 @@
  return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
};
const 倒计时 = ref(0);
const 倒计时 = ref(-100);
const 倒计时显示 = ref("00:00:00");
const 倒计时告警文本 = ref("");
// 定时器回调函数
@@ -2116,7 +2132,16 @@
  if (倒计时.value > 0) {
    倒计时显示.value = formatSecondsToTime(倒计时.value);
    倒计时.value--;
  } else {
  } else if(倒计时.value!==-100) {
    倒计时显示.value = "";
    // 只有没触发的时候才触发他
    if(centerDialogVisible3.value===false){
      centerDialogVisible3.value = true;
      关闭弹框警告();
      播报警告文本(倒计时告警文本.value);
    }
  }else{
    倒计时显示.value = "";
  }
};
@@ -2253,7 +2278,7 @@
          if (dataBody.倒计时?.提醒文本) {
            倒计时.value = dataBody.倒计时?.设定提醒倒计时;
            console.log("设置了倒计时值", 倒计时.value);
            if (倒计时.value <= 0 && 倒计时.value >= -60) {
            if (倒计时.value <= 0 && 倒计时.value >= -60&& centerDialogVisible3.value===false) {
              centerDialogVisible3.value = true;
              倒计时告警文本.value = dataBody.倒计时?.提醒文本;
              关闭弹框警告();
@@ -2322,10 +2347,12 @@
  setTimeout(function () {
    console.log("30秒已过,关闭报警设置弹框。");
    centerDialogVisible3.value = false;
    倒计时.value=-100
  }, 30000); // 30000 毫秒 = 30 秒
};
const 播报警告文本 = (tex) => {
  if (centerDialogVisible3.value) {
    console.log(centerDialogVisible3.value,'播报')
    speech.value
      .speak({
        text: tex,
@@ -2349,6 +2376,26 @@
      });
  }
};
const test=()=>{
  speech.value
      .speak({
        text: '你好,我现在在测试播报内容',
        listeners: {
          //开始播放
          onstart: () => {
            console.log("开始播报");
          },
          //判断播放是否完毕
          onend: () => {
            console.log("播报完成");
          },
          //恢复播放
          onresume: () => {
            console.log("Resume utterance");
          },
        },
      })
}
//初始化
const sourceInit = () => {
  console.log("初始化see");