<template>
  <div class="context">
    <div class="panel">
      <h5>身体节点</h5>
      <div class="likeTab">
        <el-button @click="goType('ratingManage')" size="mini" type>动作分组</el-button>
        <el-button @click="goType('actionExercise')" size="mini" type>锻炼动作</el-button>
        <el-button @click="goType('bodyNode')" size="mini" type="primary">身体节点</el-button>
      </div>
      <div class="panel-body">
        <div class="panel_control">
          <el-row :gutter="1">
            <el-col :span="5" align="center">
              <em>节点名称:</em>
              <el-input v-model="panel.str" placeholder="请输入名称" type="text" style="width: 150px"/>
            </el-col>
            <el-col :span="4">
              <em>状态:</em>
              <!--status-->
              <el-select v-model="panel.status" placeholder="请选择">
                <el-option
                    v-for="item in panel.statusOptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                </el-option>
              </el-select>
            </el-col>
            <el-col :span="2">
              <el-button size type="primary" @click="query" plain>查询</el-button>
            </el-col>
          </el-row>
        </div>
      </div>
    </div>
    <div class="change">
      <el-button @click="addBodyNode" size="mini" type="primary" >新增节点</el-button>
      <el-button @click="editBodyNode" size="mini">编辑节点</el-button>
      <el-button @click="deleteBodyNode" size="mini" type="danger">删除节点</el-button>
    </div>
    <div class="table">
      <el-table :data="tableData" border is-horizontal-resize
                :default-sort="{ prop: 'date', order: 'descending' }" element-loading-background="rgba(0, 0, 0, 0.8)"
                class @selection-change="handleSelectionChange" @current-change="clickChange">
        >
        <el-table-column label="选择" width="55">
          <template slot-scope="scope">
            <el-radio v-model="tableRadio" :label="scope.row">
              <i></i>
            </el-radio>
          </template>
        </el-table-column>
        <el-table-column type="index" label="序号" align="center" width="60"/>
        <el-table-column prop="BnName" label="身体节点名称" align="center" sortable/>
        <el-table-column prop="Memo" label="备注" align="center" sortable/>

        <el-table-column prop="id" label="操作">
          <template slot-scope="scope">
            <el-button type="success" v-if="scope.row.Status == 8" size="mini" @click="enableRow(scope.row,1)">
              启用
            </el-button>
            <el-button type="warning" v-if="scope.row.Status == 1" size="mini" @click="enableRow(scope.row,8)">
              禁用
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <br/>
      <el-pagination background :total="pagination.total" :page-size="pagination.pageItem"
                     @current-change="pageChange"
                     :current-page.sync="cur_page"
      ></el-pagination>
    </div>
    <el-dialog :title="dialogTitle" :visible.sync="addBodyNodeVisible" width="650px">
      <div class="dialogContent">
        <div class>
          <el-form ref="form" :model="form" label-width="160px">
            <el-form-item label="身体节点" :required="true">
              <el-input v-model="form.name"/>
            </el-form-item>
            <el-form-item label="备注">
              <el-input v-model="form.memo"/>
            </el-form-item>
          </el-form>
        </div>
      </div>
      <div class="dialogFooter">
        <el-button type="primary" size="small" v-if="form.btnType == 0" @click="confirmAddBodyNode">确定</el-button>
        <el-button type="primary" size="small" v-if="form.btnType == 1" @click="confirmEditBodyNode">确定</el-button>
        <el-button size="small" @click="addBodyNodeVisible = false">取消</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import Global from '../Global.js'
import {
  BodyNodeStatusEdit,
  BodyNodeEdit,
  BodyNodeQuery,
  BodyNodeAdd,
} from "../api/getApiRes";

let qs = require('qs');
export default {
  data() {
    return {
      activeName: 'comm',
      dialogVisible: false,//其他dialog
      addBodyNodeVisible: false,//新增身体节点弹窗
      dialogTitle: '新增心率设备',
      BtnGetAllPower: false,
      tableRadio: [],
      cur_page: 1,
      // panel 配置项目
      panel: {
        str: '',
        status: "",
        draw: 1,
        start: 0,
        recordsTotal: 0,
        tableData: [],
        allTableData: [],
        loading: false,
        statusOptions: [
          {value: "", label: '全部'},
          {value: 1, label: '启用'},
          {value: 8, label: '禁用'},
        ]
      },
      multipleSelection: [],
      pagination: {
        pageItem: 10,
        pageOptions: pageOptions(),
        total: 100,
        pageIndex: 1,
      },
      form: {
        agId: '',
        name: '',
        memo: '',
        btnType: 0,//0新建，1编辑编辑
        dialogData: [],//穿梭待选
        dialogValue: [],//穿梭已选
      },
      tableData: []
    }
  },
  mounted() {
    this.getTableQuery();
  },
  methods: {
    //顶部菜单项切换
    goType(url) {
      this.$router.push({path: '/' + url});
    },
    //tableData中的行点击事件
    clickChange(item) {
      this.tableRadio = item
    },
    //tableData中的行选择事件
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    //身体节点动作管理
    manageBodyNode(row) {
      this.$router.push({path: '/bindRecord', query: {hrId: row.HrId}});
    },
    // 关闭所有弹窗
    allDialogClose() {
      this.dialogVisible = false;
    },
    //清除弹窗输入项
    clearForm() {
      this.form.name = '';
      this.form.memo = "";
      this.form.bnId = '';
    },
    // 新增动作
    addBodyNode() {
      this.clearForm();
      this.addBodyNodeVisible = true;
      this.form.btnType = 0;
      this.dialogTitle = '新增身体节点'
    },
    //确认提交新动作
    confirmAddBodyNode() {
      let that = this;
      if (!that.form.name) {
        this.$message.error('错了哦，身体节点名称不能为空');
        return false
      }
      if (that.form.name.length > 20) {
        this.$message.error('身体节点名称过长，请重新编辑');
        return false
      }
      let param = {
        token: localStorage.token,
        shopId: localStorage.shopId,
        bnName: that.form.name,
        memo: that.form.memo
      };
      let postdata = qs.stringify(param);
      BodyNodeAdd(postdata).then(res => {
        let json = res;
        if (json.Code == 0) {
          // 关闭弹窗
          that.addBodyNodeVisible = false;
          // 重载列表
          that.getTableQuery();
          that.$message({
            showClose: true,
            message: '身体节点添加成功！',
            type: 'success'
          });
        } else {
          that.$message.error(json.Memo + ' 错误码：' + json.Code);
        }
      })
    },
    //编辑身体节点
    editBodyNode() {
      let that = this;
      this.clearForm();
      if (this.tableRadio.length == 0) {
        this.$message.error("请先选中一条记录");
        return false
      }
      this.dialogVisible = true;
      this.addBodyNodeVisible = true
      this.dialogTitle = '编辑身体节点';

      let row = this.tableRadio;
      this.form.shopid = row.ShopId;
      this.form.bnId = row.BnId;
      this.form.name = row.BnName;
      this.form.memo = row.Memo;
      this.form.btnType = 1;
    },
    //提交编辑身体节点
    confirmEditBodyNode() {
      let that = this;
      if (!that.form.name) {
        this.$message.error('错了哦，身体节点名称不能为空');
        return false
      }
      if (that.form.name.length > 20) {
        this.$message.error('身体节点名称过长，请重新编辑');
        return false
      }

      let param = {
        token: localStorage.token,
        shopId: localStorage.shopId,
        bnId: that.form.bnId,
        bnName: that.form.name,
        memo: that.form.memo
      };
      let postdata = qs.stringify(param);
      BodyNodeEdit(postdata).then(res => {
        let json = res;
        if (json.Code == 0) {
          // 关闭弹窗
          that.addBodyNodeVisible = false;
          // 重载列表
          that.getTableQuery();
          that.$message({
            showClose: true,
            message: '身体节点编辑信息编辑成功！',
            type: 'success'
          });
        } else {
          that.$message.error(json.Memo + ' 错误码：' + json.Code);
        }
      })
    },
    //删除身体节点
    deleteBodyNode() {
      let that = this;
      let row = this.tableRadio;
      let param = {
        token: localStorage.token,
        shopId: localStorage.ShopId,
        bnId: row.BnId,
        bnName: row.BnName,
        status: 9 //1：启用，8：禁用，9：删除
      };
      let postdata = qs.stringify(param);

      this.$confirm('此操作将永久删除该身体节点, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        BodyNodeStatusEdit(postdata).then(res => {
          let json = res;
          if (json.Code == 0) {
            // table 重载
            that.getTableQuery();
            that.$message({
              showClose: true,
              message: '删除成功',
              type: 'success'
            });
          } else {
            that.$message.error(json.Memo);
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    //设置行状态
    enableRow(row, status) {
      let that = this;
      let param = {
        token: localStorage.token,
        bnId: row.BnId,
        bnName: row.BnName,
        status: status,//1：启用 8：暂停 9：删除
      };
      let postdata = qs.stringify(param);
      BodyNodeStatusEdit(postdata).then(res => {
        let json = res;
        if (json.Code == 0) {
          that.$message({
            showClose: true,
            message: '执行成功！',
            type: 'success'
          });
          // table 重载
          that.getTableQuery();
        } else {
          that.$message.error(json.Memo + ' 错误码：' + json.Code);
        }
      })
    },
    // 查询按钮
    query() {
      let that = this;
      that.start = 0;
      that.cur_page = 1;
      this.getTableQuery();
      this.$message.success('查询完毕');
    },
    // 页面数据查询
    getTableQuery() {
      let that = this;
      that.loading = true;
      let param = {
        token: localStorage.token,
        shopId: localStorage.shopId,
        bnName: that.panel.str,
        status: that.panel.status,
      };
      let postdata = qs.stringify(param);
      BodyNodeQuery(postdata).then(res => {
        let json = res;
        if (json.Code == 0) {
          that.loading = false;
          if (json.Rs) {
            that.allTableData = json.Rs;
            that.recordsTotal = json.Rs.length;
          } else {
            that.allTableData = [];
            that.recordsTotal = 0;
          }
          // 设置分页数据
          that.setPaginations();
        } else {
          that.$message.error(json.Memo + ' 错误码：' + json.Code);
        }
      })
    },
    // 设置分页数据
    setPaginations() {
      // 分页属性
      let that = this;
      that.pagination.total = that.recordsTotal;

      // 默认分页
      that.tableData = that.allTableData.filter((item, index) => {
        return index < that.pagination.pageItem;
      });
    },
    // 每页显示数量
    handleSizeChange() {
      let that = this;
      that.tableData = that.allTableData.filter((item, index) => {
        return index < that.pagination.pageItem;
      });
      that.draw = that.pagination.pageItem;
      // that.getTableQuery();
    },
    // 翻页
    pageChange(pageIndex) {
      let that = this;
      // 获取当前页
      let index = that.pagination.pageItem * (pageIndex - 1);
      // 数据总数
      let nums = that.pagination.pageItem * pageIndex;
      // 容器
      let tables = [];
      for (var i = index; i < nums; i++) {
        if (that.allTableData[i]) {
          tables.push(that.allTableData[i])
        }
        this.tableData = tables;
      }
      that.start = index * that.draw;
      // that.getTableQuery();
    },
    // 自动排序
    sortChange(params) {
      console.log(params)
    },
    //            过滤时间
    filterFmtDate(value, row, column) {
      let that = this;
      if (column == 0) {
        return '未获得'
      } else {
        return nonTfmtDatetoLength(new Date(column * 1000), 16);
      }
    },
  },
}
</script>

<style scoped>
@import "../assets/css/panel.css";

.context {
  /* height: 770px; */
  overflow-y: scroll;

  display: block;
  margin: 0 auto;
  background-color: #fff !important;
  padding: 30px;
}

.panel-body {
  padding: 20px;
  background: #f0f2f5;
}

.change {
  width: 100%;
  overflow: hidden;
  display: block;
  margin: 0 auto;
  padding-top: 10px;
  padding-bottom: 10px;
}

.change button {
  float: left;
}

.change button.pull-right {
  float: right;
}

.likeTab {
  width: 100%;
  overflow: hidden;
  display: block;
  margin: 0 auto;
  padding-top: 10px;
  padding-bottom: 0;
  border-bottom: 1px solid #ccc;
  margin-bottom: 10px;
}

.likeTab button {
  float: left;
  border-radius: 0;
}

.likeTab button.pull-right {
  float: right;
}

.dialogTitle {
  width: 100%;
  overflow: hidden;
  display: block;
  margin: 0 auto;
  color: #000000;
  font-size: 18px;
  text-align: center;
}

.dialogTitle em {
  float: none;
  font-style: normal;
  color: #3799ff;
  margin: 0;
}

/deep/ .el-transfer-panel__item .el-checkbox__input {
  left: 40px;
}

.dialogFooter {
  width: 90%;
  overflow: hidden;
  display: block;
  margin: 0 auto;
  margin-top: 10px;
}

.dialogFooter button {
  float: right;
  margin-left: 10px;
}

.dialogContent {
  width: 100%;
  overflow: hidden;
  display: block;
  margin: 0 auto;
}

.dialogContent .pull-left {
  width: 30%;
  float: left;
}

.dialogContent .pull-right {
  width: 70%;
  float: right;
}

.panel_control /deep/ .el-input {
  width: 90px;
  float: left;
}

.panel-body em {
  /*float: left;*/
  line-height: 40px;
  margin-right: 10px;
}

</style>