zhangzengfei
2023-04-10 69cfa80854939d9c62cf9c954dc83613710b2eae
添加短信推送日志查询
1个文件已添加
3个文件已修改
440 ■■■■■ 已修改文件
src/api/report.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataPush/components/alarmPush.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataPush/components/dataPush.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataPush/components/smsLog.vue 412 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/report.ts
@@ -166,3 +166,15 @@
    params: query
  })
}
/**
 *
 * 短信推送日志
 */
export const smsLog = (query: any) => {
  return request({
    url: "/api-a/v1/smsLog/list",
    method: "get",
    params: query
  })
}
src/views/dataPush/components/alarmPush.vue
@@ -59,7 +59,7 @@
  },
  async created() {
    this.lookUp()
    //     GET    /api-a/v1/cameras/reportLog
    // GET    /api-a/v1/cameras/reportLog
    // 分页查询上报日志
    // alarmDate   string // 报警日期
    // channelName string // 设备的真实报警通道名称
src/views/dataPush/components/dataPush.vue
@@ -2,16 +2,20 @@
  <div style="padding: 20px;">
    <el-tabs v-model="activeName" @tab-click="handleClick">
      <el-tab-pane name="device">
        <span slot="label"><i class="el-icon-s-home"></i> 设备信息维护</span>
        <span slot="label"><i class="el-icon-coin"></i> 设备信息维护</span>
        <device></device>
      </el-tab-pane>
      <el-tab-pane name="point">
        <span slot="label"><i class="el-icon-s-platform"></i> 点位信息维护</span>
        <span slot="label"><i class="el-icon-place"></i> 点位信息维护</span>
        <point></point>
      </el-tab-pane>
      <el-tab-pane name="alarmPush">
        <span slot="label"><i class="el-icon-phone"></i> 报警上报日志</span>
        <span slot="label"><i class="el-icon-position"></i> 报警上报日志</span>
        <alarmPush></alarmPush>
      </el-tab-pane>
      <el-tab-pane name="smsLog">
        <span slot="label"><i class="el-icon-chat-line-square"></i> 短信推送日志</span>
        <smsLog></smsLog>
      </el-tab-pane>
    </el-tabs>
  </div>
@@ -21,12 +25,14 @@
import device from "./device.vue"
import point from "./point.vue"
import alarmPush from "./alarmPush.vue"
import smsLog from "./smsLog.vue"
export default {
  components: {
    device,
    point,
    alarmPush
    alarmPush,
    smsLog
  },
  data() {
    return {
src/views/dataPush/components/smsLog.vue
New file
@@ -0,0 +1,412 @@
<template>
  <div class="sub-account">
    <div class="search">
      <div class="left">
        <div class="id">
          点位名称/任务名称/姓名/手机号
          <el-input v-model="inputText" placeholder="请输入" clearable></el-input>
        </div>
      </div>
      <div class="right">
        <div class="button searchBtn" @click="lookUp()">搜索</div>
      </div>
    </div>
    <div class="table-area">
      <el-table
        id="multipleTable"
        ref="multipleTable"
        :data="dataList"
        :fit="true"
        :default-sort="{ prop: 'createTime', order: 'descending' }"
      >
        <el-table-column type="index" label="#" width="50px"></el-table-column>
        <el-table-column prop="cameraName" label="点位名称" show-overflow-tooltip></el-table-column>
        <el-table-column prop="taskName" label="任务名称" show-overflow-tooltip></el-table-column>
        <el-table-column prop="level" label="报警等级" show-overflow-tooltip></el-table-column>
        <el-table-column prop="person" label="人员姓名" width="100px"></el-table-column>
        <el-table-column prop="tel" label="手机号码" show-overflow-tooltip></el-table-column>
        <el-table-column prop="state" label="状态" width="100px">
          <template slot-scope="scope">
            <div v-if="scope.row.state == 1" class="status green">成功</div>
            <div v-else class="status">失败</div>
          </template>
        </el-table-column>
        <el-table-column prop="createdAt" label="推送日期" width="170px"></el-table-column>
        <!-- <el-table-column label="操作" align="center" width="100px">
          <template slot-scope="scope">
            <span class="iconfont option" @click="editUser(scope.row)">编辑</span>
            <span class="iconfont option" style="color:red" @click="delUser(scope.row)">删除</span>
          </template>
        </el-table-column> -->
      </el-table>
      <div>
        <el-pagination
          @current-change="refrash"
          @size-change="handleSizeChange"
          :current-page="page"
          :page-size="size"
          layout="total, sizes, prev, pager, next, jumper"
          :page-sizes="[5, 10, 15, 20, 25]"
          :total="total"
          background
        ></el-pagination>
      </div>
    </div>
  </div>
</template>
<script>
import { smsLog } from "@/api/report"
export default {
  data() {
    return {
      dataList: [],
      inputText: "",
      page: 1,
      size: 10, //分页相关
      total: 0 //总数,
    }
  },
  async created() {
    this.lookUp()
    // GET    /api-a/v1/sms/logs
    // 分页查询上报日志
    // taskName   string  //事件名称
    // cameraName string  //摄像机
    // level      string  //事件等级
    // person     string  //责任人
    // tel        string  //手机号
    // state      int     //状态
  },
  mounted() {},
  methods: {
    handleSizeChange(size) {
      this.size = size
      this.lookUp()
    },
    //分页功能
    refrash(page) {
      this.page = page
      this.lookUp()
    },
    async lookUp() {
      let res = await smsLog({ keyword: this.inputText, pageIndex: this.page, pageSize: this.size })
      this.dataList = res.data
      this.total = res.total
    }
  }
}
</script>
<style scoped lang="scss">
.sub-account {
  padding: 20px;
  .head-name {
    font-weight: 700;
    font-size: 16px;
    line-height: 22px;
    color: #3d3d3d;
    border-left: 4px solid #0065ff;
    padding-left: 10px;
  }
  .add-title {
    font-weight: 700;
    font-size: 16px;
    cursor: pointer;
    line-height: 22px;
    color: #3d3d3d;
    margin-bottom: 30px;
    .iconfont {
      margin-right: 10px;
    }
  }
  .add-ruleForm::v-deep {
    .el-input__inner {
      color: #3d3d3d;
      border-radius: 4px;
      border-color: #c0c5cc;
      height: 32px;
      line-height: 32px;
      border-color: #c0c5cc;
    }
    .user-tree {
      .el-form-item__label:before {
        content: "*";
        color: #f52323;
        margin-right: 4px;
      }
      .el-form-item__content {
        display: flex;
        .tree-box {
          .t {
            height: 32px;
            background: #f0f5fa;
            border-radius: 3px 3px 0px 0px;
            line-height: 32px;
            text-align: center;
            border-bottom: 1px solid #c0c5cc;
          }
          width: 336px;
          height: 480px;
          border: 1px solid #c0c5cc;
          margin-right: 20px;
          box-sizing: border-box;
        }
      }
    }
  }
  .searchBtn {
    width: 50px;
    height: 25px;
    line-height: 25px;
    font-size: 14px;
    text-align: center;
    color: #fff;
    background: #0065ff;
    margin-right: 20px;
  }
  .right {
    display: flex;
  }
  .resetBtn {
    width: 50px;
    height: 25px;
    line-height: 25px;
    font-size: 14px;
    text-align: center;
    color: #0065ff;
    box-sizing: border-box;
    border: 1px solid #0065ff;
  }
  .search {
    display: flex;
    font-size: 14px;
    border-bottom: 1px solid #e9ebee;
    margin-top: 30px;
    padding-bottom: 20px;
    .left,
    .right,
    .id,
    .time,
    .cluster {
      display: flex;
      align-items: center;
      .el-select {
        width: auto;
      }
    }
    .id .el-input ::v-deep {
      width: 200px;
    }
    .cluster::v-deep .el-input {
      width: 300px;
      margin-left: 10px;
      margin-right: 20px;
      .el-input__icon {
        line-height: 32px;
      }
      input {
        border-radius: 0;
        &::-webkit-input-placeholder {
          color: #999;
        }
        &:focus {
          border-color: #0065ff;
        }
      }
    }
    .el-input ::v-deep {
      width: 200px;
      margin-left: 10px;
      margin-right: 20px;
      height: 32px;
      line-height: 32px;
      input {
        border-radius: 0;
        height: 32px;
        line-height: 32px;
        &::-webkit-input-placeholder {
          color: #999;
        }
        &:focus {
          border-color: #0065ff;
        }
      }
    }
    .el-date-editor {
      width: 318px;
      height: 40px;
      margin-left: 10px;
      margin-right: 20px;
      border-radius: 0;
      &::-webkit-input-placeholder {
        color: #999;
      }
      &.is-active {
        border-color: #0065ff;
      }
    }
  }
  .btns {
    display: flex;
    margin: 20px 0;
    text-align: center;
    .add {
      margin-right: 20px;
      width: 126px;
      height: 32px;
      background: #0065ff;
      color: #fff;
      span {
        margin-right: 5px;
        line-height: 32px;
        font-size: 14px;
      }
    }
    .export {
      width: 126px;
      height: 32px;
      border: 1px solid #0065ff;
      color: #0065ff;
      box-sizing: border-box;
      span {
        margin-right: 5px;
        line-height: 32px;
        font-size: 14px;
      }
    }
  }
  .el-table ::v-deep {
    background-color: rgb(233, 235, 238);
    padding: 1px;
    &::after {
      display: none;
    }
    td.index .cell {
      padding-left: 16px;
      padding-right: 4px;
    }
    .has-gutter tr th {
      background: #f0f3f5;
      font-size: 16px;
      color: #3d3d3d;
      font-weight: 700;
    }
    td .cell {
      color: #3d3d3d;
    }
    tr:hover > td.el-table__cell {
      background-color: #fff;
    }
    .el-table__row--striped .el-table__cell {
      background-color: #f0f5fa !important;
    }
    tr:hover > td.el-table__cell {
      background-color: #fff;
    }
    .el-table__row--striped .el-table__cell {
      background-color: #f0f5fa !important;
    }
    .status {
      color: #ff4b33;
      &.green {
        color: #36b24a;
      }
    }
    .option {
      margin-right: 10px;
      font-size: 14px;
      color: rgb(0, 101, 255);
      cursor: pointer;
    }
  }
  .el-pagination ::v-deep {
    margin-top: 30px;
    text-align: center;
    height: 24px;
    .el-pagination__sizes {
      margin-right: 0;
    }
    button {
      margin: 0;
      background-color: #fff;
      border: 1px solid #c0c5cc;
      border-radius: 2px;
    }
    .number {
      background-color: #fff;
      &:not(.disabled):hover {
        color: #0065ff;
      }
      &:not(.disabled).active {
        background-color: #0065ff;
        color: #fff;
      }
    }
    .el-input .el-input__inner {
      padding-left: 0;
      &:hover,
      &:focus {
        border-color: #0065ff;
      }
    }
  }
  .el-select ::v-deep {
    .el-select__tags-text {
      color: #3d3d3d;
    }
  }
}
</style>
<style>
.el-date-table td.start-date span,
.el-date-table td.end-date span {
  background-color: #0065ff;
}
.el-button--text span {
  color: #0065ff;
}
.el-button.is-plain:hover,
.el-button.is-plain:focus {
  color: #0065ff;
  border-color: #0065ff;
}
</style>