英雄信息案例

152 阅读1分钟

html

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>我们的69-英雄管理</title>
  <link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.min.css" />
  <style>
    .panel {
      width: 900px;
      margin: 10px auto;
    }

    .table img {
      width: 40px;
      height: 40px;
    }
  </style>
</head>

<body>
  <div class="container">
    <div class="panel panel-primary">
      <div class="panel-heading">英雄列表管理</div>
      <div class="panel-body">
        <div class="row">
          <div class="col-lg-6">
            <div class="input-group">
              <input type="text" id="hname" class="form-control" placeholder="输入英雄信息..." autocomplete="true" />
              <span class="input-group-btn">
                <button class="btn btn-default" id="btn_search" type="button">
                  搜索
                </button>
              </span>
            </div>
          </div>

          <div class="col-lg-3 col-lg-offset-3">
            <!-- data-toggle:这个控制元素控制的是模态框的显示和隐藏 -->
            <!-- data-target:指定当前按钮所控制的模态框是那一个,通过id对应 -->
            <button type="button" class="btn btn-success openDialog" data-toggle="modal" data-target="#addHeroModal">
              添加英雄
            </button>
          </div>
        </div>
      </div>

      <table class="table">
        <thead>
          <tr>
            <th>编号</th>
            <th>英雄名称</th>
            <th>英雄性别</th>
            <th>头像</th>
            <th>操作区</th>
          </tr>
        </thead>
        <!-- 表格主体 -->
        <tbody id="tbody">
          <!-- <tr>
            <td>1</td>
            <td>73期小伙伴</td>
            <td>男/女</td>
            <td>
              <img src="https://img1.baidu.com/it/u=1146390613,1184997859&fm=26&fmt=auto" alt="" />
            </td>
            <td>
              <button type="button" class="btn btn-info">
                上传头像
              </button>
              <button type="button" class="btn btn-warning">
                删除
              </button>
            </td>
          </tr> -->
        </tbody>
      </table>
    </div>
  </div>
  <!-- 新增英雄模态框 -->
  <div class="modal fade" id="addHeroModal" tabindex="-1" role="dialog">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
          <h4 class="modal-title">添加英雄</h4>
        </div>
        <div class="modal-body">
          <form class="form-horizontal">
            <div class="form-group">
              <label for="heroname" class="col-sm-2 control-label">英雄名称</label>
              <div class="col-sm-10">
                <input type="text" class="form-control" id="heroname" placeholder="请输入英雄名称" />
              </div>
            </div>
            <div class="form-group">
              <label for="gender" class="col-sm-2 control-label">英雄性别</label>
              <div class="col-sm-10">
                <select class="form-control" id="gender">
                  <option></option>
                  <option></option>
                </select>
              </div>
            </div>
          </form>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">
            取消
          </button>
          <button type="button" class="btn btn-success btnAdd">确定</button>
        </div>
      </div>
    </div>
  </div>
  <!-- 上传文件的模态框 -->
  <div class="modal fade" id="uploadImgModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
          <h4 class="modal-title" id="myModalLabel">上传头像</h4>
        </div>
        <div class="modal-body">
          <input type="file" id="heroImg" />
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">
            取消
          </button>
          <button type="button" class="btn btn-primary btnHeroEdit">
            确定
          </button>
        </div>
      </div>
    </div>
  </div>

  <script src="./libs/jquery/jquery.min.js"></script>
  <script src="./libs/bootstrap/js/bootstrap.min.js"></script>

  <!-- 引入页面js -->
  <script src="./js/axios.js"></script>
  <script src="./js/index.js"></script>
</body>

</html>

js

window.onload = function () {
    // 获取元素
    let tbody = document.querySelector('tbody')
    let btn_search = document.querySelector('#btn_search')
    let hname = document.querySelector('#hname')
    let btnAdd = document.querySelector('.btnAdd')
    let heroname = document.querySelector('#heroname')
    let hrogender = document.querySelector('#gender')
    let heroImg = document.querySelector('#heroImg')
    let btnHeroEdit = document.querySelector('.btnHeroEdit')
    // 封装渲染
    function init(key = '') {
        // 发送请求
        axios({
            url: 'http://127.0.0.1:3001/getHeroList',
            params: {
                heroName: key
            }
        }).then(res => {
            let data = res.data.data
            // 设置新字符串
            let newStr = ''
            // 遍历拼接
            data.forEach(function (v, i) {
                newStr += `
                <tr>
                <td>${i + 1}</td>
                <td>${v.name}</td>
                <td>${v.gender}</td>
                <td>
                  <img src="${v.img}" alt="" />
                </td>
                <td>
                  <button type="button" class="btn btn-info btn-updata" data-id="${v.id}">
                    上传头像
                  </button>
                  <button type="button" class="btn btn-warning btndel" data-id="${v.id}">
                    删除
                  </button>
                </td>
              </tr>
                `
            })
            tbody.innerHTML = newStr
        })
    }
    init()
    // 查找
    btn_search.addEventListener('click', function () {
        let key = hname.value
        init(key)

    })

    // 新增
    btnAdd.addEventListener('click', function () {
        let name = heroname.value
        let gender = hrogender.value
        axios.post('http://127.0.0.1:3001/addHero', `name=${name}&gender=${gender}&img=''`
        ).then(res => {
            if (res.data.code == 200) {
                // 消除模态框
                $('#addHeroModal').modal('hide')
                init()
            }

        })
    })

    // 点击上传头像,打开模态框
    let editId
    tbody.addEventListener('click', function (e) {
        if (e.target.classList.contains('btn-updata')) {
            // 打开模态框
            $('#uploadImgModal').modal('show')
            // 获取id
            editId = e.target.dataset.id
        }
    })
    // 上传文件
    btnHeroEdit.addEventListener('click', function () {
        let myfile = heroImg.files[0]
        if (!myfile) return
        let fd = new FormData
        fd.append('file_data', myfile)
        // 发送axios请求
        axios.post('http://127.0.0.1:3001/uploadFile', fd).then(res => {
            if (res.data.code == 200) {

                // 打开模态框

                axios.post('http://127.0.0.1:3001/updateHero', `id=${editId}&img=${res.data.src}`).then(res => {
                    if (res.data.code == 200) {

                        // 消除模态框
                        $('#uploadImgModal').modal('hide')
                        init()
                    }

                })
            }
        })
    })

    // 删除文件
    tbody.addEventListener('click', function (e) {
        if (e.target.classList.contains('btndel')) {
            let id = e.target.dataset.id
            // console.log(id);
            axios.get('http://127.0.0.1:3001/delHeroById', { params: { id } }).then(res => {
                // alert('res.data.msg')
                if (res.data.code == 200) {
                    init()
                }
            })
        }

    })

}