<template>
  <div class="menuManagePage H100">
    <!-- <div class="head_box">
      <h6>内容管理&nbsp;/&nbsp;视频内容管理</h6>
      <h4>视频内容管理</h4>
    </div>-->
    <el-card class="head_box">
      <el-form :inline="true" :model="form" class="search-form" onsubmit="return false;">
        <el-form-item label="版权方名称">
          <el-input
            size="mini"
            placeholder="请输入版权方名称"
            v-model="form.name"
            @keyup.enter.native="Search"
            clearable
          ></el-input>
        </el-form-item>
        <el-form-item label="版权方有效期" required>
          <el-date-picker
            v-model="value1"
            type="daterange"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        <el-form-item>
          <el-button size="mini" type="primary" class="btn_form_search" @click="Search">查询</el-button>
          <el-button size="mini" class="btn_form_search" >重置</el-button>
        </el-form-item>
      </el-form>
      <div class="tipMsg">
        <p>页面说明：</p>
        <p>可通过版权方、视频分类及视频名称模糊搜索快速筛选视频信息，可对视频信息进行修改、删除。</p>
      </div>
    </el-card>
    <div class="content_box">
      <div class="form_box h778px">
          <el-button
            size="mini"
            type="primary"
            class="btn_form_add r-float"
            icon="el-icon-plus"
            @click="addPermis()"
          >新&nbsp;&nbsp;&nbsp;建</el-button>
        <div class="scrool">
          <el-table
            style="width:100%;"
            ref="multipleTable"
            :data="tableData"
            @selection-change="handleSelectionChange"
          >
            <el-table-column type="index" width="55" label="序号"></el-table-column>
            <el-table-column show-overflow-tooltip label="视频名称" prop="menuName"></el-table-column>
            <el-table-column show-overflow-tooltip label="版权方" prop="menuUrl"></el-table-column>
            <el-table-column label="视频分类" prop="sort"></el-table-column>
            <el-table-column label="审核状态" prop="sort"></el-table-column>
            <el-table-column label="操作" header-align="center" align="center">
              <template slot-scope="scope" width="220">
                <el-button-group>
                <el-button title="删除" type="text" size="mini" @click="handleDelete(scope.row)">删除</el-button>
                  <el-button
                    title="编辑"
                    size="mini"
                    type="text"
                    @click="openEdit(scope.row)"
                  >编辑&nbsp;&nbsp;</el-button>
                  <el-button
                    title="编辑"
                    size="mini"
                    type="text"
                    @click="openEdit(scope.row)"
                  >编辑&nbsp;&nbsp;</el-button>
                  
                </el-button-group>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <el-pagination
          small
          background
          @current-change="handleCurrentChange"
          :current-page="page.currentPage"
          :page-size="page.pageSize"
          layout="prev, pager, next"
          :total="page.total"
        ></el-pagination>
      </div>
      <!--新增弹框-->
      <el-dialog title="新建" class="newPermis" :visible.sync="FormVisible1" :before-close="close1">
        <div class="form_box">
          <el-form
            :model="permisform"
            ref="permisform"
            :rules="rules"
            id="ruleo"
            label-position="left"
          >
            <el-form-item label="排序值：" prop="sort" :label-width="formLabelWidth">
              <el-input
                size="small"
                v-model="permisform.sort"
                auto-complete="off"
                clearable
                placeholder="请输入排序值"
              ></el-input>
            </el-form-item>
            <el-form-item label="菜单名称：" prop="menuName" :label-width="formLabelWidth">
              <el-input
                size="small"
                v-model="permisform.menuName"
                onkeyup="this.value=this.value.replace(/\s+/g,'')"
                auto-complete="off"
                clearable
                placeholder="请输入您的菜单名称"
              ></el-input>
            </el-form-item>
            <el-form-item label="地址：" prop="menuUrl" :label-width="formLabelWidth">
              <el-input
                size="small"
                v-model="permisform.menuUrl"
                onkeyup="this.value=this.value.replace(/\s+/g,'')"
                auto-complete="off"
                clearable
                placeholder="请输入您的菜单地址"
              ></el-input>
            </el-form-item>
            <el-form-item label="父级菜单：" prop="parentId" :label-width="formLabelWidth">
              <el-select
                size="small"
                v-model="permisform.parentId"
                value-key="name"
                clearable
                placeholder="请选择父级菜单"
              >
                <el-option
                  v-for="(item,index) in typeList"
                  :key="index"
                  :label="item.name"
                  :value="item.id"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button class="r-float" size="mini" type="primary" @click="permisSave">确定</el-button>
            <el-button class="r-float" size="mini" @click="close1">取 消</el-button>
          </div>
        </div>
      </el-dialog>
      <!--编辑弹框-->
      <el-dialog title="编辑" :visible.sync="FormVisible" :before-close="close">
        <div class="form_box">
          <el-form :model="editform" ref="editform" :rules="rules">
            <el-form-item label="排序值：" prop="sort" :label-width="formLabelWidth">
              <el-input
                size="small"
                v-model="editform.sort"
                auto-complete="off"
                clearable
                placeholder="请输入排序值"
              ></el-input>
            </el-form-item>
            <el-form-item label="菜单名称：" prop="menuName" :label-width="formLabelWidth">
              <el-input
                size="small"
                v-model="editform.menuName"
                auto-complete="off"
                clearable
                onkeyup="this.value=this.value.replace(/^ +| +$/g,'')"
              ></el-input>
            </el-form-item>
            <el-form-item label="菜单地址：" prop="menuUrl" :label-width="formLabelWidth">
              <el-input
                size="small"
                v-model="editform.menuUrl"
                auto-complete="off"
                clearable
                onkeyup="this.value=this.value.replace(/^ +| +$/g,'')"
              ></el-input>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button class="r-float" size="mini" type="primary" @click="submitForm('editform')">确定</el-button>
            <el-button class="r-float" size="mini" @click="close">取 消</el-button>
          </div>
        </div>
      </el-dialog>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    var checkIsNull = (rule, value, callback) => {
      if (value) {
        if (value.trim() == "") {
          callback(new Error("不允许只输入空格"));
        } else {
          callback();
        }
      }
    };
    return {
      value1:'',
      page: { currentPage: 1, pageSize: 10, total: 0 },
      tableData: [],
      FormVisible: false,
      FormVisible1: false,
      formLabelWidth: "100px",
      form: {
        name: ""
      },
      editform: {
        menuName: "",
        menuUrl: "",
        parentId: "",
        sort: "",
        id: ""
      },
      permisform: {
        menuName: "",
        menuUrl: "",
        parentId: "",
        sort: ""
      },
      typeList: [],
      rules: {
        sort: [
          { required: true, message: "请输入顺序值", trigger: "change" },
          { pattern: /^(\d{1,5})?$/, message: "排序值为低于5位数的纯数字" }
        ],
        menuName: [
          { required: true, message: "请输入菜单名称", trigger: "change" },
          { max: 20, message: "不能超过20个字符", trigger: "change" },
          { validator: checkIsNull, trigger: "blur" }
        ],
        menuUrl: [
          { required: true, message: "请输入菜单地址", trigger: "change" },
          { validator: checkIsNull, trigger: "blur" }
        ],
        parentId: [
          { required: true, message: "请输入父级菜单", trigger: "change" }
        ]
      },
      value: "",
      name: ""
    };
  },
  computed: {},
  mounted() {
    this.onSearch();
    this.getPermis();
  },
  components: {},
  methods: {
    // 渲染父级权限
    getPermis() {
      let vm = this;
      vm.$https({
        method: "get",
        url: "menu/getRoleMenu?roleId=" + sessionStorage.getItem("roleId"),
        authType: this.backToken
      }).then(
        res => {
          let data = res.data;
          vm.typeList = data.map((e, i) => {
            return {
              id: e.id,
              name:
                e.menuName.indexOf("-") == -1
                  ? e.menuName
                  : e.menuName.split("-")[1]
            };
          });
        },
        error => {
          console.log(error);
        }
      );
    },
    // 获得数据接口
    getTableData(param) {
      let vm = this;
      vm.$https(
        {
          url: "menu/getMenuList",
          method: "get",
          authType: this.backToken
        },
        param
      )
        .then(res => {
          let data = res.data;
          vm.page.pageSize = data.size;
          vm.page.total = data.total;
          vm.tableData = data.records;
        })
        .catch(function(err) {
          console.log(err);
        });
    },
    // 分页
    handleCurrentChange(val) {
      let _this = this;
      _this.page.currentPage = val;
      _this.onSearch();
    },
    onSearch() {
      let _this = this;
      let param = _this.getSearchQuery();
      _this.getTableData(param);
    },
    Search() {
      let _this = this;
      _this.page.currentPage = 1;
      let searchObj = {
        _index: 1,
        _size: _this.page.pageSize,
        name: _this.form.name
      };
      this.getTableData(searchObj);
    },
    // // 获取当前查询参数
    getSearchQuery() {
      let _this = this;
      let searchObj = {
        _index: _this.page.currentPage,
        _size: _this.page.pageSize
      };
      for (let key in _this.form) {
        if (_this.form[key]) {
          searchObj[key] = _this.form[key];
        }
      }
      return searchObj;
    },
    // 添加
    addPermis() {
      this.$router.push({ path: "videoContentAdd", query: { type: "add" } });
      // $('.el-dialog__title').html('新建');
      // this.FormVisible1 = true;
    },
    // 添加权限
    permisSave() {
      let _this = this;
      _this.$refs.permisform.validate(valid => {
        if (valid) {
          _this
            .$https(
              { url: "menu/add", method: "post", authType: this.backToken },
              _this.$qs.stringify(_this.permisform)
            )
            .then(
              res => {
                if (res.data.status == 200 || res.data.status == 201) {
                  _this.$message({
                    type: "success",
                    message: res.data.message
                  });
                  //跳回用户列表
                  _this.onSearch();
                  _this.FormVisible1 = false;
                  for (let key in _this.permisform) {
                    _this.permisform[key] = null;
                  }
                  _this.$refs["permisform"].resetFields();
                } else {
                  _this.$message({
                    type: "error",
                    message: res.data.message
                  });
                }
              },
              error => {
                _this.$message({
                  type: "error",
                  message: error
                });
              }
            );
        }
      });
    },
    // 编辑关闭
    close() {
      this.FormVisible = false;
      this.$refs["editform"].resetFields();
    },
    // 新增关闭
    close1() {
      this.FormVisible1 = false;
      for (let key in this.permisform) {
        this.permisform[key] = null;
      }
      this.$refs["permisform"].resetFields();
    },
    // 编辑弹框
    openEdit(row) {
      this.$router.push({
        path: "videoContentUpdate",
        query: { type: "Update" }
      });
      // alert('编辑')
      // $('.el-dialog__title').html('编辑');
      // let  _this=this;
      // //成功之后清除数据
      // for (let key in this.editform) {
      //   _this.editform[key]=null;
      // }
      // _this.editform= Object.assign({}, row);
      // _this.FormVisible = true;
    },
    // 删除
    handleDelete(row) {
      let _this = this;
      this.$confirm("此操作将永久删除, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          // _this.$https({
          //   method: 'delete',
          //   url: 'menu/delete?menuId='+ row.id,
          //   authType: this.backToken
          // }).then((res) => {
          //     this.$message({type: 'success', message: '删除成功!'});
          //     _this.Search();
          //   }, (error) => {
          //     this.$message({type: 'fail', message: "删除失败!" + error.response.data});
          //   }
          // )
        })
        .catch(() => {});
    },
    // 保存编辑信息
    submitForm() {
      let _this = this;
      _this.$refs.editform.validate(valid => {
        if (valid) {
          let searchObj = {};
          for (let key in _this.editform) {
            if (this.editform[key]) {
              searchObj[key] = _this.editform[key];
            }
          }
          let str = _this.editform.menuName;
          let index = str.lastIndexOf("-");
          str = str.substring(index + 1, str.length);
          searchObj.menuName = str;
          _this
            .$https(
              {
                url: "menu/edit",
                method: "put",
                authType: this.backToken
              },
              _this.$qs.stringify(searchObj)
            )
            .then(
              res => {
                if (res.data.status == 200 || res.data.status == 201) {
                  _this.$message({
                    type: "success",
                    message: res.data.message
                  });
                  _this.onSearch();
                  _this.FormVisible = false;
                  _this.$refs["editform"].resetFields();
                } else {
                  _this.$message({
                    type: "error",
                    message: res.data.message
                  });
                }
              },
              error => {
                _this.$message({
                  type: "error",
                  message: error
                });
              }
            );
        }
      });
    },

    // 批量操作
    handleSelectionChange(selection) {
      let _this = this;
      _this.selection = selection;
    },
    getMultipleSelect() {
      let _this = this;
      let arr = [];
      let str = "";
      if (_this.selection) {
        _this.selection.forEach(function(e) {
          arr.push(e.id);
        });
        str = arr.join(",");
      } else {
        str = "";
      }
      return str;
    },
    // 批量删除
    multipleDelete() {
      let _this = this;
      let str = _this.getMultipleSelect();
      if (str) {
        this.$confirm("此操作将删除选中菜单, 是否继续?", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          _this
            .$https({
              url: "menu/batchDel?menuIds=" + str,
              method: "DELETE",
              authType: this.backToken
            })
            .then(
              res => {
                if (res.data.status == 201 || res.data.status == 200) {
                  this.$message({
                    type: "success",
                    message: "删除成功!"
                  });
                }
                //重新查询数据
                _this.onSearch();
              },
              error => {}
            );
        });
      } else {
        this.$message({
          type: "info",
          message: "请至少选择一个选项！"
        });
      }
    }
  }
};
</script>

<style lang="less">
@import "../../../../style/common";
.tipMsg{
  height: 95px;
  width:500px;
  background:#ddd;
  position:absolute;
  right: 0;
  top: 63px;
}
.menuManagePage {
  .content_box {
    .btn_form_add {
      height: 32px;
      text-align: center;
      padding: 0 15px;
      margin-bottom: 15px;
    }
    .scrool {
      width: 100%;
      height: calc(100% - 100px);
      overflow-x: hidden;
      overflow-y: scroll;
      .el-table {
        .el-table__header-wrapper {
          .el-table__header {
            .has-gutter tr th {
              background: rgba(250, 250, 250, 1);
            }
          }
        }
        .el-table__body-wrapper {
          width: 100%;
          table tbody tr td {
            padding: 6px 0px;
          }
        }
      }
    }

    /*!*编辑弹框*!*/
    .el-dialog {
      width: 600px;
      background: rgba(255, 255, 255, 1);
      box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.2);
      border-radius: 4px;
      .el-dialog__header {
        padding: 15px;
        border-bottom: 1px solid rgba(0, 0, 0, 0.09);
      }
      .el-dialog__body {
        padding: 0px !important;
        border: 1px solid transparent;
        .form_box {
          padding-bottom: 40px;
          .el-form {
            margin-bottom: 20px;
            .el-form-item {
              margin: 10px 50px 20px;
              .el-form-item__content {
                width: 280px;
              }
            }
            .el-input {
              width: 100%;
            }
          }
          .dialog-footer {
            border-top: 1px solid rgba(0, 0, 0, 0.09);
            padding-top: 8px;
            .el-button {
              margin-right: 10px;
              padding: 8px 16px;
            }
          }
        }
      }
    }
  }
}
</style>
