From f0cecbee64935be0d5140d999c0046eacec6bc05 Mon Sep 17 00:00:00 2001
From: 安宇轩1 <11369407+an-yuxuan-1@user.noreply.gitee.com>
Date: 星期五, 22 十一月 2024 17:30:03 +0800
Subject: [PATCH] 1122_推演任务控制

---
 se-index/src/router/index.js                                      |    7 
 se-index/src/components/home.vue                                  |    2 
 se-index/src/assets/images/InferentialTaskControl/bg.png          |    0 
 se-index/src/components/door.vue                                  |    2 
 se-index/src/components/TableComponent.vue                        |  253 +++++++++++++++++++++++++
 se-index/src/assets/images/InferentialTaskControl/computeNode.png |    0 
 se-index/src/components/InferentialTaskControl.vue                |  301 ++++++++++++++++++++++++++++++
 7 files changed, 563 insertions(+), 2 deletions(-)

diff --git a/se-index/src/assets/images/InferentialTaskControl/bg.png b/se-index/src/assets/images/InferentialTaskControl/bg.png
new file mode 100644
index 0000000..37be7ed
--- /dev/null
+++ b/se-index/src/assets/images/InferentialTaskControl/bg.png
Binary files differ
diff --git a/se-index/src/assets/images/InferentialTaskControl/computeNode.png b/se-index/src/assets/images/InferentialTaskControl/computeNode.png
new file mode 100644
index 0000000..01501a0
--- /dev/null
+++ b/se-index/src/assets/images/InferentialTaskControl/computeNode.png
Binary files differ
diff --git a/se-index/src/components/InferentialTaskControl.vue b/se-index/src/components/InferentialTaskControl.vue
new file mode 100644
index 0000000..2571927
--- /dev/null
+++ b/se-index/src/components/InferentialTaskControl.vue
@@ -0,0 +1,301 @@
+<template>
+  <div class="box">
+    <el-form style="margin-bottom: 20px" label-width="100px">
+      <el-row style="height: 40px">
+        <el-button type="primary">娣诲姞鎺ㄦ紨</el-button>
+        <el-button
+          style="float: right"
+          icon="el-icon-video-pause"
+          type="primary"
+          >涓�閿仠姝�</el-button
+        >
+        <el-button style="float: right" icon="el-icon-video-play" type="primary"
+          >涓�閿惎鍔�</el-button
+        >
+        <el-button style="float: right" icon="el-icon-search" type="primary"
+          >鏌ヨ</el-button
+        >
+        <el-form-item style="float: right" label="浠诲姟鍚嶇О">
+          <el-select
+            :popper-append-to-body="false"
+            v-model="task.value"
+            placeholder="璇烽�夋嫨浠诲姟"
+          >
+            <el-option
+              v-for="item in task.options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item style="float: right" label="鏂规鍚嶇О">
+          <el-select
+            :popper-append-to-body="false"
+            v-model="scheme.value"
+            placeholder="璇烽�夋嫨鏂规"
+          >
+            <el-option
+              v-for="item in scheme.options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item style="float: right" label="鍦烘櫙锛堟兂瀹氾級">
+          <el-select
+            :popper-append-to-body="false"
+            v-model="scene.value"
+            placeholder="璇烽�夋嫨鍦烘櫙"
+          >
+            <el-option
+              v-for="item in scene.options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-row>
+    </el-form>
+    <el-table :data="table.data">
+      <el-table-column align="center" type="selection" width="55">
+      </el-table-column>
+      <el-table-column
+        v-for="(item, index) in table.tableTh"
+        :key="index"
+        :label="item.label"
+        :prop="item.prop"
+        align="center"
+      >
+      </el-table-column>
+      <el-table-column label="璁$畻鑺傜偣" prop="computeNode" align="center">
+        <template>
+          <div class="computeNode"></div>
+        </template>
+      </el-table-column>
+      <el-table-column label="瀛樺偍鏁版嵁" prop="storeData" align="center">
+        <template>
+          <div
+            style="
+              width: 31px;
+              height: 20px;
+              background: #ffffff;
+              border-radius: 10px;
+              margin: 0 auto;
+            "
+          ></div> </template
+      ></el-table-column>
+      <el-table-column label="鐘舵��" prop="status" align="center">
+        <template>
+            <div
+            style="
+              width: 20px;
+              height: 20px;
+              background: #ffffff;
+              border-radius: 10px;
+              margin: 0 auto;
+            "
+          ></div> </template
+      ></el-table-column>
+      <el-table-column label="鎿嶄綔" min-width="100" align="center">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleClick(scope.row)" size="small"
+            >鍚姩</el-button
+          >
+          <el-button type="text" @click="handleClick(scope.row)" size="small"
+            >鍋滄</el-button
+          >
+          <el-button type="text" @click="handleClick(scope.row)" size="small"
+            >缁х画</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "InferentialTaskControl",
+  data() {
+    return {
+      task: {
+        options: [
+          {
+            value: "qx102stect1",
+            label: "qx102stect1",
+          },
+          {
+            value: "qx102stect2",
+            label: "qx102stect2",
+          },
+        ],
+        value: "",
+      },
+      scheme: {
+        options: [
+          {
+            value: "qx102stect1",
+            label: "qx102stect1",
+          },
+          {
+            value: "qx102stect2",
+            label: "qx102stect2",
+          },
+        ],
+        value: "",
+      },
+      scene: {
+        options: [
+          {
+            value: "qx102stect1",
+            label: "qx102stect1",
+          },
+          {
+            value: "qx102stect2",
+            label: "qx102stect2",
+          },
+        ],
+        value: "",
+      },
+      table: {
+        data: [
+          {
+            task: "qx102stect1浠诲姟",
+            scheme: "qx102stect1",
+            scene: "qx102stect1-鍦烘櫙",
+            computeNode: "",
+            startTime: "2023-06-01 00:00:00",
+            endTime: "2027-06-01 00:00:00",
+            storeData: "",
+            status: "",
+          },
+          {
+            task: "qx102stect2浠诲姟",
+            scheme: "qx102stect2",
+            scene: "qx102stect2-鍦烘櫙",
+            computeNode: "",
+            startTime: "2023-06-01 00:00:00",
+            endTime: "2027-06-01 00:00:00",
+            storeData: "",
+            status: "",
+          },
+        ],
+        tableTh: [
+          {
+            label: "浠诲姟鍚嶇О",
+            prop: "task",
+          },
+          {
+            label: "鏂规鍚嶇О",
+            prop: "scheme",
+          },
+          {
+            label: "鍦烘櫙鍚嶇О",
+            prop: "scene",
+          },
+          {
+            label: "寮�濮嬫椂闂�",
+            prop: "startTime",
+          },
+          {
+            label: "缁撴潫鏃堕棿",
+            prop: "endTime",
+          },
+        ],
+      },
+    };
+  },
+  methods: {
+    handleClick(row) {},
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.box {
+  width: 88%;
+  height: 85%;
+  background-image: url("~@/assets/images/InferentialTaskControl/bg.png");
+  background-size: 100% 100%;
+  margin: 5% 5% 0;
+  padding: 10px 1% 20px;
+}
+/deep/ .el-form-item__label {
+  color: #fff;
+}
+
+/deep/ .el-table {
+  background-color: rgba(0, 0, 0, 0);
+  .computeNode{
+    background-image: url("~@/assets/images/InferentialTaskControl/computeNode.png");
+    background-size: 100% 100%;
+    width: 35px;
+    height: 35px;
+    margin: 0 auto;
+  }
+  thead {
+    tr {
+      th {
+        background-color: #2d4c9e;
+        border-bottom: 0px;
+        .cell {
+          font-weight: 400;
+          font-size: 20px;
+          color: #fff;
+          text-shadow: 0px 0px 2px #00fbff;
+        }
+      }
+    }
+  }
+  tbody {
+    tr {
+      background-color: rgba(0, 0, 0, 0);
+      td {
+        background-color: rgba(0, 0, 0, 0);
+        border-bottom: 0px;
+        .cell {
+          font-size: 16px;
+          color: #fff;
+        }
+      }
+    }
+    tr:hover {
+      border: 2px solid #4b96dd;
+      td {
+        background-color: #2d4c9e;
+        .cell {
+          color: #fff;
+        }
+      }
+    }
+  }
+}
+/deep/ .el-table::before {
+  height: 0px;
+}
+/deep/ .el-select {
+  input {
+    border: 1px solid #4b96dd;
+    background-color: rgba(0, 0, 0, 0);
+    color: #ddd;
+  }
+}
+/deep/ .el-select-dropdown {
+  border: 1px solid #4b96dd;
+  background-color: #091631;
+  .el-select-dropdown__item.hover,
+  .el-select-dropdown__item:hover {
+    background-color: #2d4c9e;
+    color: #fff;
+  }
+  .el-select-dropdown__item {
+    color: #bbb;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/se-index/src/components/TableComponent.vue b/se-index/src/components/TableComponent.vue
new file mode 100644
index 0000000..28246c3
--- /dev/null
+++ b/se-index/src/components/TableComponent.vue
@@ -0,0 +1,253 @@
+<!-- 璇︽儏琛ㄦ牸寮圭獥 -->
+<template>
+  <div class="dataBox">
+    <el-table :data="data" style="width: 100%" height="100%"
+        :row-class-name="tableRowClassName">
+      <el-table-column
+      :title="item.label"
+        v-for="(item, index) in tableTh"
+        :key="index"
+        :prop="item.prop"
+        show-overflow-tooltip
+        :label="item.label"
+        :width="item.width"
+        placement="top"
+      >
+      <!-- <template slot-scope="scope">
+        <div :title="item.label" @click="handleClick(scope.row)"></div>
+      </template> -->
+      </el-table-column>
+      <el-table-column v-if="operate" :label="action" width="45">
+        <template slot-scope="scope">
+          <div @click="handleClick(scope.row)" class="more"></div>
+        </template>
+      </el-table-column>
+      <el-table-column v-if="deleteBut" label="鍒犻櫎" width="45">
+        <template slot-scope="scope">
+          <div @click="deleteClick(scope.row)" class="deleteBut"></div>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    tableData: {
+      type: Array,
+    },
+    tableTh: {
+      type: Array,
+    },
+    operate: {
+      type: Boolean,
+      default: false,
+    },
+    deleteBut: {
+      type: Boolean,
+      default: false,
+    },
+    action:{
+      type: String,
+      default: '鏇村',
+    }
+  },
+  data() {
+    return {
+      boxShow: true,
+      login: false,
+      data: ["test"],
+    }
+  },
+  watch: {
+    tableData: {
+      handler: function (newVal, oldVal) {
+        this.data = newVal
+      },
+      immediate: true,
+    },
+  },
+  methods: {
+    //瑙﹀彂璇︽儏浜嬩欢
+    handleClick(data) {
+      console.log(this.$parent)
+      this.$parent.handleClick(data)
+    },
+    //瑙﹀彂璇︽儏浜嬩欢
+    deleteClick(data) {
+      this.$parent.deleteClick(data)
+    },
+    // rowDblclick(row) {
+      // this.$parent.rowDblclick(row)
+    // },
+    //鏍峰紡鎺у埗
+    tableRowClassName({row, rowIndex}){
+        if (row.lx && row.lx != '闈為噸鐐逛汉') {
+          // return 'zdr-row'
+          let className = ''
+          switch (row.lx) {
+            case '鐙眳鑰佷汉':
+              className = 'zdr-row-1'
+              break;
+            case '閫�浼嶅啗浜�':
+              className = 'zdr-row-2'
+              break;
+            case '楂橀緞鑰佷汉':
+              className = 'zdr-row-3'
+              break;
+            case '鍥伴毦浜哄憳':
+              className = 'zdr-row-4'
+              break;
+            case '瀛曞':
+              className = 'zdr-row-6'
+              break;
+            default:
+              break;
+          }
+          return className;
+        }
+        return ''
+    }
+  },
+  mounted(){
+    //tooltip鑷�傚簲閫傞厤
+    // function bodyScale() {
+    //   var deviceHeight = document.documentElement.clientHeight;//鑾峰彇褰撳墠鍒嗚鲸鐜囦笅鐨勫彲鏄尯鍩熼珮搴�
+    //   var scale = deviceHeight/1080;
+    //   let tooltip = document.getElementsByClassName('el-tooltip__popper')
+    //   for(let i in tooltip){
+    //     if(typeof tooltip[i] == 'object'){
+    //       // tooltip[i].style.zoom = scale
+    //       // clearInterval(tooltipTime)
+    //     }
+    //   }
+    // }
+    // //鍔ㄦ�佺洃鍚綋鍓嶅垎杈ㄧ巼鏄惁鏀瑰彉
+    // window.addEventListener('resize',function() {
+    //     bodyScale();
+    // })
+    // let tooltipTime = setInterval(() => {
+    //   bodyScale();
+    // }, 500);
+  }
+}
+</script>
+
+<style lang="less" scoped>
+.dataBox {
+  width: 100%;
+  height: 100%;
+  .more {
+    width: 23px;
+    height: 23px;
+    background-image: url("~@/assets/images/button/Arrow.png");
+    background-size: 100% 100%;
+    cursor: pointer;
+    margin: 0 auto;
+  }
+  .deleteBut {
+    width: 23px;
+    height: 23px;
+    background-image: url("~@/assets/images/button/delete.png");
+    background-size: 100% 100%;
+    cursor: pointer;
+    margin: 0 auto;
+  }
+  ::v-deep .el-table {
+    background-color: rgba(0, 0, 0, 0);
+    border-bottom: 0px;
+    color: #fff;
+  }
+  ::v-deep .el-table::before {
+    height: 0px;
+  }
+  ::v-deep .el-table thead tr {
+    background-color: rgba(0, 0, 0, 0);
+    background-image: url("~@/assets/images/button/tr.png");
+    background-size: 100% 100%;
+    font-size: 16px;
+  }
+  ::v-deep .el-table thead tr th {
+    background-color: rgba(0, 0, 0, 0);
+    border-bottom: 0px;
+    text-align: center;
+    .cell {
+      padding: 0;
+      color: #e1f8ff;
+    }
+  }
+  ::v-deep .el-table tbody {
+    tr:nth-child(2n-1) {
+      margin-top: 5px;
+      background-color: rgba(0, 0, 0, 0);
+      border-bottom: 0px;
+      background-image: url("~@/assets/images/button/single.png");
+      background-size: 100% 100%;
+      font-size: 13px;
+      max-height: 30px;
+    }
+    tr:nth-child(2n) {
+      margin-top: 5px;
+      background-color: rgba(0, 0, 0, 0);
+      border-bottom: 0px;
+      background-image: url("~@/assets/images/button/double.png");
+      background-size: 100% 100%;
+      font-size: 13px;
+      max-height: 30px;
+    }
+    tr:hover {
+      margin-top: 5px;
+      background-color: rgba(0, 0, 0, 0);
+      border-bottom: 0px;
+      background-image: url("~@/assets/images/button/hover.png");
+      td {
+        .cell {
+          color: #fff;
+        }
+      }
+    }
+  }
+  ::v-deep .el-table tbody tr td {
+    background-color: rgba(0, 0, 0, 0);
+    border-bottom: 0px;
+    text-align: center;
+    .cell {
+      font-size: 14px;
+      padding: 0 2px 0 2px;
+      color: #dbdbdb;
+    }
+  }
+  ::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell {
+    background-color: rgba(0, 0, 0, 0);
+  }
+  ::v-deep .el-table {
+    .zdr-row-1{ td { .cell { color: #32db87;}}}
+    .zdr-row-1:hover{ td{ .cell{color: #00FF7F;}}}
+    .zdr-row-2{ td { .cell { color: #8b7fd3;}}}
+    .zdr-row-2:hover{ td{ .cell{color: #8470FF;}}}
+    .zdr-row-3{ td { .cell { color: #db7575;}}}
+    .zdr-row-3:hover{ td{ .cell{color: #FF6A6A;}}}
+    .zdr-row-4{ td { .cell { color: #c9be48;}}}
+    .zdr-row-4:hover{ td{ .cell{color: #FFF68F;}}}
+    .zdr-row-6{ td { .cell { color: #25b2e0;}}}
+    .zdr-row-6:hover{ td{ .cell{color: #00BFFF;}}}
+  }
+
+  ::v-deep .el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar {
+    /* 瀵瑰簲绾靛悜婊氬姩鏉$殑瀹藉害 */
+    width: 10px;
+    /* 瀵瑰簲妯悜婊氬姩鏉$殑瀹藉害 */
+    height: 0px;
+  }
+  ::v-deep .el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-thumb {
+    background-image: url("~@/assets/images/button/scrollBar.png");
+    background-size: 100% 100%;
+    cursor: pointer;
+  }
+  ::v-deep .el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar-track {
+    background: #41494c;
+    background-size: 100% 100%;
+  }
+}
+</style>
diff --git a/se-index/src/components/door.vue b/se-index/src/components/door.vue
index 7ea1bea..85265bc 100644
--- a/se-index/src/components/door.vue
+++ b/se-index/src/components/door.vue
@@ -33,7 +33,7 @@
             },
             {
               name: "鎺ㄦ紨浠诲姟鎺у埗",
-              url: ""
+              url: "/home/InferentialTaskControl"
             },
             {
               name: "鍒嗙郴缁熺姸鎬佺洃鎺�",
diff --git a/se-index/src/components/home.vue b/se-index/src/components/home.vue
index 5ec2ac0..99650e9 100644
--- a/se-index/src/components/home.vue
+++ b/se-index/src/components/home.vue
@@ -116,6 +116,8 @@
     }
   }
   .content {
+    width: 100%;
+    height:calc(100vh - 183px);
     margin-top: 60px;
   }
 }
diff --git a/se-index/src/router/index.js b/se-index/src/router/index.js
index 2cfc4c3..8f57c4a 100644
--- a/se-index/src/router/index.js
+++ b/se-index/src/router/index.js
@@ -36,7 +36,12 @@
         path: "interactive",
         name:'鍒嗙郴缁熶氦浜掔鐞�',
         component: () => import("@/components/interactive.vue")
-      }
+      },
+      {
+        path: "InferentialTaskControl",
+        name:'鎺ㄦ紨浠诲姟鎺у埗',
+        component: () => import("@/components/InferentialTaskControl.vue")
+      },
     ]
   }
 ];

--
Gitblit v1.9.3