pengwei
2025-04-27 366612bd8e8b88d02a98edf508f96d7add23ff9f
功能新增
已修改14个文件
已添加3个文件
889 ■■■■ 文件已修改
项目代码/client/src/api/newapi/Putake.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/client/src/views/tts/TheCurrentJob/Startjob.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/client/src/views/tts/TheCurrentJob/Thecurrentjob.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/api/newapi/AlarmReset.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/api/newapi/Parameters.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/layout/index.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/router/viewGird.js 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/Index.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/system/Sys_User.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/AlarmReset/AlarmReset.vue 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/Enteroverhaul/Enteroverhaul.vue 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/PickAndDrop/Manualcontrol.vue 202 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/PickAndDrop/PickAndDrop.vue 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/可视化大屏/client/src/api/newapi/Maintenance.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/可视化大屏/client/src/assets/imgs/下一个.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/可视化大屏/client/src/layout/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/可视化大屏/client/src/views/Index.vue 202 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/client/src/api/newapi/Putake.js
@@ -12,4 +12,7 @@
//数据记录
export const Add = (data) => http.post("api/Putake/Add", data);
//数据记录查看详情
//套筒开门
export const ChanegOpenDoor = (data) => http.post(`/api/Putake/OpenDoor?group=${data}`);
//套筒关门
export const ChanegCloseDoor = (data) => http.post(`/api/Putake/ClosedDoor?group=${data}`);
ÏîÄ¿´úÂë/client/src/views/tts/TheCurrentJob/Startjob.vue
@@ -1047,7 +1047,7 @@
  clearInterval(timer.value);
  // åˆ›å»ºWebSocket连接
  //"ws://127.0.0.1:9295/admin"
  client.value = new WebSocket("ws://115.159.85.185:9098/");
  client.value = new WebSocket("ws://115.159.85.185:5173/");
  client.value.onopen = function () {
    console.log("WebSocket è¿žæŽ¥æˆåŠŸ");
ÏîÄ¿´úÂë/client/src/views/tts/TheCurrentJob/Thecurrentjob.vue
@@ -94,6 +94,20 @@
        <el-button size="small" style="height: 2rem" @click="resetQuery"
          >重置</el-button
        >
        <el-button
          @click="opendoor"
          type="primary"
          size="small"
          style="margin-left: 0.98rem; height: 2rem"
          >套筒柜开门</el-button
        >
        <el-button
          @click="closeDoor"
          type="primary"
          size="small"
          style="margin-left: 0.98rem; height: 2rem"
          >套筒柜关门</el-button
        >
      </div>
      <div class="btns">
        <div style="display: flex; align-items: center">
@@ -713,6 +727,7 @@
  GetPageDataNew,
} from "@/api/newapi/Thecurrentjob";
import { GetSleeveandStep } from "@/api/newapi/Process";
import { ChanegOpenDoor, ChanegCloseDoor } from "@/api/newapi/Putake";
import { GetUserInfo } from "@/api/user";
const router = useRouter();
@@ -871,8 +886,6 @@
    userId: JSON.parse(localStorage.getItem("user")).id,
    group: isactive.value,
  };
  console.log(obj);
  // GetPageDataNew(obj).then((res) => {
  //   tableData.value = res.data;
  //   pageTotal.value = res.data.length;
@@ -974,6 +987,39 @@
  });
};
const opendoor = () => {
  ChanegOpenDoor(isactive.value).then((res) => {
    if (res.status == true) {
      ElMessage({
        message: "开门成功",
        type: "success",
      });
    } else {
      ElMessage({
        message: res.msg,
        type: "error",
      });
    }
  });
  initData();
};
const closeDoor = () => {
  ChanegCloseDoor(isactive.value).then((res) => {
    if (res.status == true) {
      ElMessage({
        message: "关门成功",
        type: "success",
      });
    } else {
      ElMessage({
        message: res.msg,
        type: "error",
      });
    }
  });
  initData();
};
//数据初始化
onMounted(() => {
  initData();
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/api/newapi/AlarmReset.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
import http from "../http";
//登录记录
export const BecomeTrue = (data) => http.post(`/api/AlarmResetHsy/BecomeTrue`);
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/api/newapi/Parameters.js
@@ -1,3 +1,7 @@
import http from "../http";
export const AddData = (data) => http.post("/api/Parameters/AddData", data);
//自动伸出缩回
export const AutoPickAndDrop = (data) => http.post(`/api/Parameters/automation?ExtendedState=${data.ExtendedState}`);
//手动伸出缩回
export const ManualOperation = (data) => http.post(`/api/Parameters/ManualOperation?position=${data.position}&ExtendedState=${data.ExtendedState}`);
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/layout/index.vue
@@ -76,6 +76,17 @@
                padding: 0 0.69rem 0 0;
              "
            >
              <span
                style="
                  font-size: 1.25rem;
                  font-weight: bold;
                  color: #fff;
                  margin-right: 0.69rem;
                  cursor: pointer;
                "
                @click="router.push({ path: '/AlarmReset' })"
                >报警复位</span
              >
              <img
                v-if="!isFullscreen"
                style="
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/router/viewGird.js
@@ -70,36 +70,7 @@
    name: "PDAAuth",
    component: () => import("@/views/system/PDAAuth.vue"),
  },
  // //工艺中心
  // {
  //   path: "/Craftcenter",
  //   name: "Craftcenter",
  //   component: () => import("@/views/tts/CraftCenter/Craftcenter.vue"),
  // },
  // //任务管理
  // {
  //   path: "/Taskmanagement",
  //   name: "Taskmanagement",
  //   component: () => import("@/views/tts/TaskManagement/Taskmanagement.vue"),
  // },
  // //任务模板
  // {
  //   path: "/Tasktemplates",
  //   name: "Tasktemplates",
  //   component: () => import("@/views/tts/TaskManagement/Tasktemplates.vue"),
  // },
  // //当前作业
  // {
  //   path: "/Thecurrentjob",
  //   name: "Thecurrentjob",
  //   component: () => import("@/views/tts/TheCurrentJob/Thecurrentjob.vue"),
  // },
  // //开始作业
  // {
  //   path: "/Startjob",
  //   name: "Startjob",
  //   component: () => import("@/views/tts/TheCurrentJob/Startjob.vue"),
  // },
  //数据记录
  {
    path: "/Datalogging",
@@ -142,13 +113,18 @@
    name: "Enteroverhaul",
    component: () => import("@/views/tts/Enteroverhaul/Enteroverhaul.vue"),
  },
  // //数字大屏
  // æ•°å­—大屏
  {
    path: "/LargeScreen",
    name: "LargeScreen",
    component: () => import("@/views/tts/LargeScreen/Largescreen.vue"),
  },
  //报警复位
  {
    path: "/AlarmReset",
    name: "AlarmReset",
    component: () => import("@/views/tts/AlarmReset/AlarmReset.vue"),
  }
];
export default viewgird;
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/Index.vue
@@ -73,26 +73,6 @@
            <img src="@/assets/index/icon/icon6.png" alt="" />
          </div>
        </div>
        <!-- <div
          class="item"
          style="background-color: #78909c"
          @click="router.push('/Basicinformation')"
        >
          <span>基础信息</span>
          <div class="count">
            <img src="@/assets/index/icon/icon6.png" alt="" />
          </div>
        </div>
        <div
          class="item"
          style="background-color: #2200de"
          @click="router.push('/Largescreen')"
        >
          <span>数字大屏</span>
          <div class="count">
            <img src="@/assets/index/icon/icon6.png" alt="" />
          </div>
        </div> -->
      </div>
    </div>
    <div v-else class="mian_mobile">
@@ -139,26 +119,6 @@
            <img src="@/assets/index/icon/icon3.png" alt="" />
          </div>
        </div>
        <!-- <div
          class="item"
          style="background-color: #78909c"
          @click="router.push('/Basicinformation')"
        >
          <span>基础信息</span>
          <div class="count">
            <img src="@/assets/index/icon/icon6.png" alt="" />
          </div>
        </div>
        <div
          class="item"
          style="background-color: #2200de"
          @click="router.push('/Largescreen')"
        >
          <span>数字大屏</span>
          <div class="count">
            <img src="@/assets/index/icon/icon6.png" alt="" />
          </div>
        </div> -->
      </div>
      <div class="main_c">
        <div
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/system/Sys_User.vue
@@ -404,7 +404,7 @@
import {
  GetPageDataApi,
  GetAddUserApi,
  UpdateUserApi,
  Upuserbase,
  DelApi,
} from "@/api/user.js";
import { GetRoleInfo } from "@/api/role.js";
@@ -620,7 +620,7 @@
        return ElMessage({ message: "两次密码不一致", type: "error" });
      if (formUser.value.userId != undefined) {
        const formData = objToFormData(formUser.value);
        UpdateUserApi(formData).then((res) => {
        Upuserbase(formData).then((res) => {
          ElMessage({ message: res.message, type: "success" });
          drawer.open = false;
          reset();
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/AlarmReset/AlarmReset.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,135 @@
<template>
  <div class="AlarmReset">
    <div style="width: 100%; text-align: center; font-size: 5rem; color: #fff">
      æŠ¥è­¦å¤ä½
    </div>
    <div style="margin-top: 3rem">
      <el-table :data="tableData" style="width: 100%" height="800">
        <el-table-column prop="Id" label="序号" />
        <el-table-column prop="AlarmContent" label="报警内容" />
        <el-table-column prop="ResetStatus" label="复位状态" />
        <el-table-column prop="AlarmTime" label="报警时间">
          <template #default="scope">
            {{ formatTime(scope.row.AlarmTime) }}
          </template>
        </el-table-column>
        <el-table-column prop="ResetTime" label="复位时间">
          <template #default="scope">
            {{ formatTime(scope.row.ResetTime) }}
          </template>
        </el-table-column>
      </el-table>
    </div>
    <div
      style="
        width: 100%;
        display: flex;
        justify-content: center;
        margin-top: 2rem;
      "
    >
      <el-pagination
        size="large"
        :page-size="10"
        layout="prev, pager, next"
        :total="total"
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        class="mt-4"
        background
      />
    </div>
    <div
      style="
        width: 100%;
        display: flex;
        justify-content: center;
        margin-top: 4rem;
      "
    >
      <el-button
        type="primary"
        style="width: 10rem; height: 3rem"
        @click="handleBecomeTrue"
        >报警复位</el-button
      >
    </div>
  </div>
</template>
<script setup>
import { ref, onMounted, onUnmounted } from "vue";
import { ElMessage } from "element-plus";
import { BecomeTrue } from "@/api/newapi/AlarmReset.js";
import { formatTime } from "@/utils/index.js";
const timer = ref(null);
const client = ref(null);
const tableData = ref([]);
const pageSize = ref(10); // æ¯é¡µæ˜¾ç¤ºçš„æ¡æ•°
const currentPage = ref(0); // å½“前页码
const total = ref(0); // æ€»æ¡æ•°
const createSocket = (url) => {
  clearInterval(timer.value);
  // åˆ›å»ºWebSocket连接
  //"ws://127.0.0.1:9295/admin"
  client.value = new WebSocket("ws://192.168.0.80:5173/");
  client.value.onopen = function () {
    console.log("WebSocket è¿žæŽ¥æˆåŠŸ");
  };
  client.value.onmessage = function (event) {
    let data = JSON.parse(event.data);
    tableData.value = data.Data.slice(
      currentPage.value * pageSize.value,
      (currentPage.value + 1) * pageSize.value
    );
    total.value = data.Data.length; // æ›´æ–°æ€»æ¡æ•°
    console.log("WebSocket æŽ¥æ”¶åˆ°æ¶ˆæ¯", tableData.value);
  };
  client.value.onclose = function () {
    console.log("WebSocket è¿žæŽ¥å…³é—­");
    timer.value = setTimeout(createSocket, 1000);
  };
  client.value.onerror = function () {};
};
const handleCurrentChange = (val) => {
  currentPage.value = val - 1; // æ›´æ–°å½“前页码
};
//复位按钮方法
const handleBecomeTrue = (val) => {
  BecomeTrue().then((res) => {
    if (res.data.code == 0) {
      ElMessage({
        message: "复位成功",
        type: "success",
      });
    } else {
      ElMessage({
        message: "复位失败",
        type: "error",
      });
    }
  });
};
onMounted(() => {
  createSocket();
});
onUnmounted(() => {
  clearInterval(timer.value);
  if (client.value) {
    client.value.close();
  }
});
</script>
<style lang="scss" scoped>
.AlarmReset {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  background-color: rgba(0, 0, 0, 0.2);
  box-sizing: border-box;
}
</style>
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/Enteroverhaul/Enteroverhaul.vue
@@ -2,59 +2,107 @@
  <div class="Enteroverhaul">
    <div class="btns">
      <el-button class="btn" type="primary" @click="startMaintenceTask">
        <div style="
        <div
          style="
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
          ">
          <img style="width: 4.75rem; height: 4.75rem" src="@/assets/Enteroverhaul/start.png" alt="" />
          <span style="
          "
        >
          <img
            style="width: 4.75rem; height: 4.75rem"
            src="@/assets/Enteroverhaul/start.png"
            alt=""
          />
          <span
            style="
              color: rgba(0, 239, 248, 1);
              font-size: 1.25rem;
              margin-top: 1.6rem;
            ">开始检修</span>
            "
            >开始检修</span
          >
        </div>
      </el-button>
      <el-button class="btn" type="primary" style="margin-left: 6.81rem" @click="stopMaintenceTask">
        <div style="
      <el-button
        class="btn"
        type="primary"
        style="margin-left: 6.81rem"
        @click="stopMaintenceTask"
      >
        <div
          style="
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
          ">
          <img style="width: 4.75rem; height: 4.75rem" src="@/assets/Enteroverhaul/pause.png" alt="" />
          <span style="
          "
        >
          <img
            style="width: 4.75rem; height: 4.75rem"
            src="@/assets/Enteroverhaul/pause.png"
            alt=""
          />
          <span
            style="
              color: rgba(0, 239, 248, 1);
              font-size: 1.25rem;
              margin-top: 1.6rem;
            ">结束检修</span>
            "
            >结束检修</span
          >
        </div>
      </el-button>
    </div>
    <div v-if="isStart" class="content_box">
      <el-table empty-text="暂无数据" :data="tableData" style="width: 100%" :header-cell-style="{
      <el-table
        empty-text="暂无数据"
        :data="tableData"
        style="width: 100%"
        :header-cell-style="{
        height: '1.61rem',
        color: '#1AC8FE',
        background: '#0A5B91',
        fontSize: '0.88rem',
      }" :cell-style="{
        }"
        :cell-style="{
        color: '#fff',
        background: '#147BAF',
      }">
        }"
      >
        <el-table-column prop="userAccount" label="用户账号" align="center" />
        <el-table-column prop="modifier" label="修改人" />
        <el-table-column prop="modifyDate" label="修改时间" align="center" />
        <el-table-column prop="maintenanceStatus" label="检修状态" align="center">
        <el-table-column
          prop="maintenanceStatus"
          label="检修状态"
          align="center"
        >
          <template #default="scope">
            <span v-if="scope.row.maintenanceStatus === 0">未开始</span>
            <span v-else-if="scope.row.maintenanceStatus === 1">进行中</span>
            <span v-else-if="scope.row.maintenanceStatus === 2">已结束</span></template>
            <span v-else-if="scope.row.maintenanceStatus === 2"
              >已结束</span
            ></template
          >
        </el-table-column>
        <el-table-column prop="maintenanceDate" label="派发任务时间" align="center" />
        <el-table-column
          prop="maintenanceDate"
          label="派发任务时间"
          align="center"
        />
        <el-table-column prop="maintenancStartTime" label="开始检修时间" align="center" />
        <el-table-column prop="maintenancEendTime" label="结束检修时间" align="center" />
        <el-table-column
          prop="maintenancStartTime"
          label="开始检修时间"
          align="center"
        />
        <el-table-column
          prop="maintenancEendTime"
          label="结束检修时间"
          align="center"
        />
      </el-table>
    </div>
  </div>
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/PickAndDrop/Manualcontrol.vue
@@ -1,25 +1,38 @@
<template>
  <div class="Manualcontrol">
    <div class="button">
      <el-button @click="jumpRouter('/PickAndDrop')" class="btn" type="primary" size="small"
        style="width: 27.52rem; height: 4.29rem; color: rgba(255, 255, 255, 1)">
        <span class="Aspan" style="font-size: 2.25rem; text-align: center">返回</span>
      <el-button
        @click="jumpRouter('/PickAndDrop')"
        class="btn"
        type="primary"
        size="small"
        style="width: 27.52rem; height: 4.29rem; color: rgba(255, 255, 255, 1)"
      >
        <span class="Aspan" style="font-size: 2.25rem; text-align: center"
          >返回</span
        >
      </el-button>
    </div>
    <div v-if="isMobile" class="content">
      <div class="content_l">
        <div class="model">
          <div class="model_btn">
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('å·¦', '伸出')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -30,20 +43,28 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">伸出</span>
            </el-button>
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('å·¦', '缩回')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -54,7 +75,9 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">缩回</span>
            </el-button>
@@ -78,16 +101,22 @@
      <div class="content_r">
        <div class="model">
          <div class="model_btn">
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('右', '伸出')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -98,20 +127,28 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">伸出</span>
            </el-button>
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('右', '缩回')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -122,12 +159,13 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">缩回</span>
            </el-button>
          </div>
        </div>
        <div class="operate">
          <div class="item">伸到位</div>
@@ -149,16 +187,22 @@
      <div class="content_l">
        <div class="model">
          <div class="model_btn">
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('å·¦', '伸出')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -169,20 +213,28 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">伸出</span>
            </el-button>
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('å·¦', '缩回')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -193,12 +245,16 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">缩回</span>
            </el-button>
          </div>
          <div style="color:#fff;font-size:2rem;margin-left:20rem">左侧伸缩杆</div>
          <div style="color: #fff; font-size: 2rem; margin-left: 20rem">
            å·¦ä¾§ä¼¸ç¼©æ†
          </div>
        </div>
        <div class="operate">
          <div class="item">伸到位</div>
@@ -218,16 +274,22 @@
      <div class="content_r">
        <div class="model">
          <div class="model_btn">
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('右', '伸出')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -238,20 +300,28 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">伸出</span>
            </el-button>
            <el-button type="primary" size="small" style="
            <el-button
              @click="handManualOperation('右', '缩回')"
              type="primary"
              size="small"
              style="
                width: 14.69rem;
                height: 5.06rem;
                color: rgba(64, 253, 240, 1);
                background-color: rgba(6, 229, 231, 0.3);
                border: none;
                border-top: 0.25rem solid rgba(6, 229, 231, 1);
              ">
              "
            >
              <div class="btnicon">
                <span style="
                <span
                  style="
                    width: 1rem;
                    height: 1rem;
                    display: flex;
@@ -262,12 +332,16 @@
                    color: rgb(0, 0, 0);
                    font-size: 0.75rem;
                    margin-left: 0.1rem;
                  ">i</span>
                  "
                  >i</span
                >
              </div>
              <span style="font-size: 2.25rem; text-align: center">缩回</span>
            </el-button>
          </div>
          <div style="color:#fff;font-size:2rem;margin-left:20rem">右侧伸缩杆</div>
          <div style="color: #fff; font-size: 2rem; margin-left: 20rem">
            å³ä¾§ä¼¸ç¼©æ†
          </div>
        </div>
        <div class="operate">
          <div class="item">伸到位</div>
@@ -290,12 +364,40 @@
<script setup>
import { ref, onMounted, nextTick } from "vue";
import { useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { ManualOperation } from "@/api/newapi/Parameters.js";
const router = useRouter();
const isMobile = ref(false);
const jumpRouter = (path) => {
  router.push(path);
};
const handManualOperation = async (position, ExtendedState) => {
  try {
    const res = await ManualOperation({
      position: position,
      ExtendedState: ExtendedState,
    });
    if (res.code === 0) {
      ElMessage({
        message: `${position}ä¾§${ExtendedState}成功`,
        type: "success",
      });
    } else {
      ElMessage({
        message: `${position}ä¾§${ExtendedState}失败`,
        type: "error",
      });
    }
  } catch (error) {
    ElMessage({
      message: "操作失败",
      type: "error",
    });
  }
  console.log(res);
};
onMounted(() => {
  // ç›‘听窗口大小变化
  window.addEventListener("resize", () => {
@@ -452,10 +554,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
@@ -598,10 +702,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
@@ -747,10 +853,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
@@ -893,10 +1001,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/PickAndDrop/PickAndDrop.vue
@@ -2,16 +2,22 @@
  <div class="PickAndDrop">
    <div class="button">
      <div class="button_l">
        <el-button type="primary" size="small" style="
        <el-button
          @click="handleAutoPickAndDrop('伸出')"
          type="primary"
          size="small"
          style="
            width: 14.69rem;
            height: 5.06rem;
            color: rgba(64, 253, 240, 1);
            background-color: rgba(6, 229, 231, 0.3);
            border: none;
            border-top: 0.25rem solid rgba(6, 229, 231, 1);
          ">
          "
        >
          <div class="btnicon">
            <span style="
            <span
              style="
                width: 1rem;
                height: 1rem;
                display: flex;
@@ -22,20 +28,28 @@
                color: rgb(0, 0, 0);
                font-size: 0.75rem;
                margin-left: 0.1rem;
              ">i</span>
              "
              >i</span
            >
          </div>
          <span style="font-size: 2.25rem; text-align: center">伸出</span>
        </el-button>
        <el-button type="primary" size="small" style="
        <el-button
          @click="handleAutoPickAndDrop('缩回')"
          type="primary"
          size="small"
          style="
            width: 14.69rem;
            height: 5.06rem;
            color: rgba(64, 253, 240, 1);
            background-color: rgba(6, 229, 231, 0.3);
            border: none;
            border-top: 0.25rem solid rgba(6, 229, 231, 1);
          ">
          "
        >
          <div class="btnicon">
            <span style="
            <span
              style="
                width: 1rem;
                height: 1rem;
                display: flex;
@@ -46,18 +60,28 @@
                color: rgb(0, 0, 0);
                font-size: 0.75rem;
                margin-left: 0.1rem;
              ">i</span>
              "
              >i</span
            >
          </div>
          <span style="font-size: 2.25rem; text-align: center">缩回</span>
        </el-button>
      </div>
      <div class="button_r">
        <el-button @click="jumpRouter('/Manualcontrol')" class="btn" type="primary" size="small" style="
        <el-button
          @click="jumpRouter('/Manualcontrol')"
          class="btn"
          type="primary"
          size="small"
          style="
            width: 27.52rem;
            height: 4.29rem;
            color: rgba(255, 255, 255, 1);
          ">
          <span class="Aspan" style="font-size: 2.25rem; text-align: center">手动控制</span>
          "
        >
          <span class="Aspan" style="font-size: 2.25rem; text-align: center"
            >手动控制</span
          >
        </el-button>
      </div>
    </div>
@@ -138,13 +162,30 @@
<script setup>
import { ref, onMounted, nextTick } from "vue";
import { useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { AutoPickAndDrop } from "@/api/newapi/Parameters.js";
const router = useRouter();
const isMobile = ref(false);
const jumpRouter = (path) => {
  router.push(path);
};
const handleAutoPickAndDrop = async (val) => {
  try {
    const response = await AutoPickAndDrop({
      ExtendedState: val,
    });
    if (response.code === 0) {
      ElMessage.success(`${val}成功`);
    } else {
      ElMessage.error(`${val}失败`);
    }
  } catch (error) {
    console.error(error);
    ElMessage.error("操作失败");
  }
};
onMounted(() => {
  // ç›‘听窗口大小变化
  window.addEventListener("resize", () => {
@@ -305,10 +346,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
@@ -435,10 +478,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
@@ -569,10 +614,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
@@ -699,10 +746,12 @@
          width: 8.75rem;
          height: 4.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(90deg,
          background: linear-gradient(
            90deg,
              rgba(0, 224, 255, 0.74) 0%,
              rgba(0, 224, 255, 0.4) 60%,
              rgba(235, 242, 243, 0.13) 100%);
            rgba(235, 242, 243, 0.13) 100%
          );
          color: rgba(16, 16, 16, 1);
          color: rgb(255, 255, 255);
          font-size: 1.13rem;
ÏîÄ¿´úÂë/¿ÉÊÓ»¯´óÆÁ/client/src/api/newapi/Maintenance.js
@@ -7,3 +7,5 @@
//允许数据
export const RunOperation = (id, ispossible) => http.post(`/api/Maintenance/RunOperation?id=${id}&ispossible=${ispossible}`);
export const ChangeTasState = (data) => http.post("/api/Maintenance/ChangeTasState", data);
//
export const UpstreamInspectionRoad = (data) => http.post("/api/AlarmResetHsy/UpstreamInspectionRoad", data);
ÏîÄ¿´úÂë/¿ÉÊÓ»¯´óÆÁ/client/src/assets/imgs/ÏÂÒ»¸ö.png
ÏîÄ¿´úÂë/¿ÉÊÓ»¯´óÆÁ/client/src/layout/index.vue
@@ -183,8 +183,8 @@
        <router-view
          style="
            height: calc(100vh - 4.38rem - 1.61rem);
            width: calc(100vw - 1.61rem);
            height: calc(100vh - 4.38rem - 10rem);
            width: calc(100vw - 10rem);
          "
          v-slot="{ Component }"
        >
@@ -781,10 +781,11 @@
.main {
  width: 100%;
  flex: 1;
  background-image: url("../assets/index/bg.png");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  padding: 0.81rem 0.81rem;
  // background-image: url("../assets/index/bg.png");
  // background-repeat: no-repeat;
  // background-size: 100% 100%;
  background: linear-gradient(to bottom, #0072c6, #2e6aa7);
  padding: 5rem 5rem;
  box-sizing: border-box;
}
ÏîÄ¿´úÂë/¿ÉÊÓ»¯´óÆÁ/client/src/views/Index.vue
@@ -5,10 +5,12 @@
        display: flex;
        justify-content: center;
        color: #fff;
        font-size: 5rem;
        font-size: 15rem;
        letter-spacing: 5rem;
        font-weight: bold;
      "
    >
      æ£€ä¸€é“检修监控
      æ£€13道
    </div>
    <div
      style="
@@ -21,53 +23,51 @@
        margin-top: 3rem;
      "
    >
      <span>股道电源状态</span>
      <div
        style="
          width: 8rem;
          height: 8rem;
          border-radius: 50% 50%;
          margin-top: 2rem;
          display: flex;
          justify-content: center;
          align-items: center;
          width: 50%;
          height: 3rem;
          background-color: #95f204;
          margin-top: 1rem;
          border-radius: 1.5rem;
        "
        :class="true ? 'shadow' : ''"
      >
        <img
          style="width: 8rem; height: 8rem"
          src="@/assets/TheCurrentJob/pouer.png"
          alt=""
        />
      ></div>
      </div>
    </div>
    <!-- <div
    <div
      style="
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        height: 20rem;
        color: #fff;
        font-size: 3rem;
        font-weight: bold;
        margin-top: 5rem;
        font-size: 10rem;
      "
    >
      <span>管理人员状态</span>
    </div> -->
      <span> CR400AF</span>
      <span>G7237</span>
    </div>
    <div
      style="
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        align-items: center;
        margin-top: 10%;
        margin-top: 6%;
        padding-bottom: 10%;
        border: 0.15rem solid #fff;
        height: 70%;
        box-sizing: border-box;
        border-radius: 2rem;
        background-color: rgba(39, 136, 214, 0.5);
        box-shadow: 0px 0px 1rem 0rem rgba(18, 150, 219, 0.5);
      "
    >
      <span style="color: #fff; font-size: 3rem; margin-top: 2rem"
        >检修人员状态</span
      >
      <div
        style="
          display: flex;
@@ -79,27 +79,115 @@
          margin-top: 3rem;
        "
      >
        <div style="color: #fff; font-size: 3rem; width: 90%">
        <div style="display: flex; flex-direction: column; width: 100%">
          <div
            style="
              height: 5rem;
              font-size: 6rem;
              font-weight: bold;
              display: flex;
              align-items: center;
              padding-left: 2rem;
              box-sizing: border-box;
            "
          >
            <img
              style="width: 6rem; height: 6rem"
              src="@/assets/imgs/下一个.png"
              alt=""
            />
            <div
              style="
                width: 30%;
                text-align: justify;
                text-justify: distribute-all-lines;
                text-align-last: justify;
                margin-left: 2rem;
                color: #fff;
              "
            >
              ç™»é¡¶äººæ•°
            </div>
          </div>
          <div
            style="
              margin-left: 2rem;
              display: flex;
              justify-content: space-around;
              align-items: center;
              margin-top: 5rem;
            "
          >
            <div
              style="
                width: 40%;
                font-size: 6rem;
                color: #fff;
                background-color: #058f66;
                border-radius: 1.5rem;
                padding: 0.5rem 1rem;
                text-align: center;
              "
            >
              å·²ç™»è®° <span>2人</span>
            </div>
            <div
              style="
                width: 40%;
                font-size: 6rem;
                color: #fff;
                background-color: #d9001b;
                border-radius: 1.5rem;
                padding: 0.5rem 1rem;
                text-align: center;
              "
            >
              å·²ç™»é¡¶ <span>2人</span>
            </div>
          </div>
        </div>
        <div
          style="
            color: #fff;
            font-size: 5rem;
            display: flex;
            width: 90%;
            justify-content: space-between;
            align-items: center;
            margin-top: 5rem;
          "
        >
          <div style="color: #fff">检修人员列表</div>
          <div style="color: #fff">
          æ­£åœ¨æ£€ä¿®äººå‘˜æ•°é‡:
          <span style="font-size: 4rem">{{ totalCount }}</span
          >位
          </div>
        </div>
        <div style="width: 90%; margin-top: 2rem">
          <el-table
            empty-text="暂无数据"
            :data="tableData"
            style="width: 100%"
            height="750"
            :header-cell-style="{
              height: '1.61rem',
              color: '#1AC8FE',
              background: '#0A5B91',
              fontSize: '0.88rem',
              color: '#fff',
              background: '#1860A8',
              fontSize: '2rem',
            }"
            :cell-style="{
              color: '#fff',
              background: '#147BAF',
              background: 'rgba(23, 87, 149, 0.9)',
            }"
          >
            <el-table-column
              prop="userTrueName"
              label="序号"
              align="center"
              min-width="1%"
            />
            <el-table-column
              prop="userTrueName"
              label="姓名"
@@ -135,15 +223,38 @@
              align="center"
              min-width="2%"
            />
            <el-table-column
              prop="maintenanceDate"
              label="上线时间"
              align="center"
              min-width="2%"
            />
          </el-table>
        </div>
        <div
          style="
            position: absolute;
            bottom: 4%;
            color: #fff;
            font-weight: bold;
            font-size: 3rem;
            margin-top: 2rem;
          "
        >
          {{ currentTime }}
        </div>
      </div>
    </div>
  </div>
</template>
<script setup>
import { onMounted, reactive, ref, toRef } from "vue";
import { PersonnelMonitoring } from "@/api/newapi/Maintenance";
import { onMounted, reactive, ref, toRef, onUnmounted } from "vue";
import {
  PersonnelMonitoring,
  UpstreamInspectionRoad,
} from "@/api/newapi/Maintenance";
import { formatTime } from "@/utils/index";
const tableData = ref([]);
const pageTotal = ref(0);
@@ -175,17 +286,36 @@
    ).length;
  });
};
onMounted(() => {
const currentTime = ref("");
const timer = ref(null);
onMounted(async () => {
  clearInterval(timer.value);
  initData();
  //获取当前时间
  const date = new Date();
  await UpstreamInspectionRoad();
  timer.value = setInterval(() => {
    currentTime.value = formatTime(date, "yyyy-MM-dd hh:mm:ss");
    date.setSeconds(date.getSeconds() + 1);
  }, 1000);
});
onUnmounted(() => {
  clearInterval(timer.value);
});
</script>
<style lang="scss" scoped>
.Largescreen {
  display: flex;
  flex-direction: column;
  background-color: rgba($color: #000000, $alpha: 0.2);
  // background-color: rgba($color: #000000, $alpha: 0.2);
  .shadow {
    box-shadow: 0px 0px 1rem 0.5rem rgb(18, 150, 219);
  }
}
:deep(.el-table__empty-block) {
  background-color: rgba(23, 87, 149, 0.9);
}
:deep(.el-scrollbar__wrap) {
  background-color: rgba(23, 87, 149, 0.9);
}
</style>