<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
  <title>Redis 操作平台</title>
  <script src="https://unpkg.com/vue@3"></script>
  <!-- 导入 Element Plus CSS -->
  <link rel="stylesheet" href="https://unpkg.com/element-plus/dist/index.css">
  <!-- 导入 Element Plus JavaScript -->
  <script src="https://unpkg.com/element-plus"></script>
  <!-- 导入 Axios -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
  <form>
    
    <div id="app" style="margin: 0 auto; width: 80%;padding-top: 120px; padding-bottom: 100px; ">
      <!-- 页面突出部分 -->
      <div style="padding-top: 80px; padding-bottom: 120px;border-radius: 30px;box-shadow: 0px 0px 100px rgba(0, 0, 0, 0.5) ; background-color: rgb(219, 203, 203);">
        <!-- 左边距200px -->
        <div style="margin: 0 200px;">
          <!-- 标题 -->
          <div style="margin: 0 300px;"><h1>Redis 操作平台</h1></div>
          
      <!-- 自动匹配框 -->
      <el-text class="mx-1" type="primary" style="font-size: 16px;">主机: </el-text>
      <!-- 自动匹配框 state变量、querySearchAsync函数、label标签、handleHostSelect函数-->
      <el-autocomplete
        v-model="state"
        :fetch-suggestions="querySearchAsync"
        placeholder="输入host"
        value-key="label"
        @select="handleHostSelect"   
      >
    </el-autocomplete>
    
     <!-- 端口页面 -->
      <div style="padding-top: 10px; padding-bottom: 10px; ">
        <el-text class="mx-1" type="primary"  style="font-size: 16px;" >端口: </el-text>
        <!-- 端口页面input、port变量 -->
        <el-input v-model="port" style="width: 200px;" placeholder="输入端口"></el-input>
      </div>
 
       <!-- 库名 select选择、selectedDatabase变量 -->
      <div >
        <el-text class="mx-1" type="primary" style="font-size: 16px;">库名: </el-text>
        <el-select
        v-model="selectedDatabase"
    clearable
    placeholder="库"
    style="width: 200px"
  >
  <!-- databaseOptions循环 -->
    <el-option
    v-for="item in databaseOptions"
      :key="item.value"
      :label="item.label"
      :value="item.value"
    />
  </el-select>
      </div>


     <!-- key标签 key变量 -->
      <div style="padding-top: 10px; padding-bottom: 10px;">
        <el-text class="mx-1" type="primary"style="font-size: 16px;" >Key: </el-text>
        <el-input v-model="key" style="width: 200px;" placeholder="输入key"></el-input>
      </div>

     <!-- 选中标签 checked2变量、checkboxChanged函数 -->
      <el-checkbox v-model="checked2" @change="checkboxChanged" style="padding-top: 10px; padding-bottom: 10px;">Md5计算</el-checkbox>

      <!-- 表格 -->
      <div  style="padding-top: 10px; padding-bottom: 10px;">
        <!-- tableData变量、tableRowClassName函数 -->
        <el-table
          :data="tableData"
          style="width: 70%"
          :row-class-name="tableRowClassName"
        >
          <!-- 表格数据对其内容 -->
          <el-table-column prop="name" label="Name" width="180"></el-table-column>
          <el-table-column prop="vaule" label="Vaule" width="260"></el-table-column>
          <el-table-column prop="TTL" label="TTL" width="180"></el-table-column>
        </el-table>
      </div>

      <!-- 查询按钮 chaxun 函数 -->
      <el-button type="primary"  @click="chaxun" round style="margin-right: 150px;">查询</el-button>

 
      
        <!-- 点击确认按钮触发更新表格数据的逻辑 handleConfirm 函数 -->
        <el-popconfirm title="确定删除吗?" @confirm="handleConfirm">
          <template #reference>
            <el-button type="danger" round>删除</el-button>
          </template>
        </el-popconfirm>
      </div>
    </div>
  </div>
  </form>



  <script>
    const App = {
      data() {
        return {
      selectedDatabase: '', // 用户选择的库名
      checked2: false,   // 选中标签
      port: '6379',  // 端口默认值
      key: '', // key 输入框数据
     

          // 自动匹配框
          state: '',  //可以手动写入内容的值
          suggestions: [
            { value: '192.168.14.66', label: 'test' },
            { value: 'tk_test1', label: '测试环境redis' },

          ],
            // 库的循环数据
          databaseOptions:  [
  {
    value: '0',
    label: '0',
  },
  {
    value: '1',
    label: '1',
  },
  {
    value: '2',
    label: '2',
  },
  {
    value: '3',
    label: '3',
  },

],
          // 表格数据
          tableData: [
          {
              date: '2016-05-03',
              name: 'Tom',
              address: 'No. 189, Grove St, Los Angeles',
            },
            {
              date: '2016-05-02',
              name: 'Jerry',
              address: 'No. 212, Elm St, Springfield',
            },
            {
              date: '2016-05-04',
              name: 'John',
              address: 'No. 503, Park Ave, New York',
            },
          ],
        };
      },
      //执行体
      methods: {
       //勾选框
        checkboxChanged(newValue) {
      if (newValue) {
        // 复选框被选中时执行的逻辑
        console.log('Checkbox is checked');
        // 自定义变量
        this.md5_gouxuan = "yes"
      } else {
        // 自定义变量
        console.log('Checkbox is unchecked');
        this.md5_gouxuan = "no"
      }
    },

        // 自动匹配框:异步搜索建议
        querySearchAsync(queryString, cb) {
          cb(this.suggestions.filter(item => item.value.toLowerCase().includes(queryString.toLowerCase())));
        },
    //  自动匹配框,转换值把label转为对应的value值,如把test转为192.168.14.66
    handleHostSelect(item) {
          this.state = item.value;
        },
      //  表单函数执行体
        tableRowClassName({ rowIndex }) {
          if (rowIndex === 1) {
            return 'warning-row';
          } else if (rowIndex === 3) {
            return 'success-row';
          }
          return '';
        },

        // 删除确认函数执行体
        handleConfirm() {
          // 变量自定义this开头
           const host = this.state;
            const kuname = this.selectedDatabase;
            const duankou = this.port;
            const keyzhi = this.key;
            const md5_gouxuan = this.md5_gouxuan;
            //post请求,data参数值
            axios.post('http://192.168.14.253/api/deltle', { 
              host: host,
            key: keyzhi,
           prod: duankou,
           db: kuname,
          authentication: "7a87edec6bfbba42805e3ff53194",
          md5_gouxuan: md5_gouxuan, 
          })
          .then(response => {
            alert('删除成功');
            })
            .catch(error => {
 // 获取响应状态码
 const statusCode = error.response.status;
   console.log(statusCode)
    if (statusCode === 500) {
      alert('删除失败');
    } else if (statusCode === 400) {
      alert('不能使用*');
    } else {
      alert('删除失败');
    }
                
              console.error(error);
            });
        },

        // 确认时的处理
        chaxun() {
            const host = this.state;
            const kuname = this.selectedDatabase;
            const duankou = this.port;
            const keyzhi = this.key;
            const md5_gouxuan = this.md5_gouxuan;
            

          // console.log(host,kuname,duankou,keyzhi,md5_gouxuan)
          axios.post('https://192.168.14.66/api/select', { 
            host: host,
            key: keyzhi,
           prod: duankou,
           db: kuname,
        authentication: "7a87edec6bfb1b805e3ffd553194",
        md5_gouxuan: md5_gouxuan, 
          
          })
            .then(response => {
              console.log(response.data);
              // 增加表格数据
              this.tableData = this.tableData.concat(response.data);
              console.log(this.tableData);
            })
            .catch(error => {
 // 获取响应状态码
 const statusCode = error.response.status;
   console.log(statusCode)
    if (statusCode === 408) {
      alert('没有key');
    } else if (statusCode === 502) {
      alert('不能使用*');
    } else {
      alert('获取失败');
    }
                
              console.error(error);
            });
        },
      },
    };

    const app = Vue.createApp(App);
    app.use(ElementPlus);
    app.mount("#app");


  </script>


  <!-- 表格:颜色等属性 -->
  <style>
    .el-table .warning-row {
      --el-table-tr-bg-color: var(--el-color-warning-light-9);
    }
    .el-table .success-row {
      --el-table-tr-bg-color: var(--el-color-success-light-9);
    }
  </style>

</body>
</html>

2024-04-10T02:56:03.png