<template>
  <div class="listPage H100">
    <div class="search-container">
      <el-form :inline="true" :model="form" ref="form" onsubmit="return false;">
        <el-form-item label>
          <el-input
            placeholder="请输入视频名称、提交人"
            v-model="form.name"
            @keyup.enter.native="Search"
            clearable
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-select v-model="form.status" placeholder="请选择审核状态">
            <el-option label="待初审" value="TBC"></el-option>
            <el-option label="已驳回" value="REFUSED"></el-option>
            <el-option label="待复审" value="TBCA"></el-option>
            <el-option label="通过" value="APPROVED_FINAL"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <div class="btn-group">
            <el-button type="primary" @click="Search">查询</el-button>
            <el-button @click="Reset">重置</el-button>
          </div>
        </el-form-item>
      </el-form>
      <div class="page-tip">
        <span class="page-tip-title">页面说明:</span>
        <span class="page-tips">可查看展板待审核的所有内容，可根据审核类别进行筛选</span>
      </div>
    </div>
    <div class="table-content">
      <div class="party-table noAdd">
        <el-table
          border
          style="width: 100%; height: 100%"
          height="100%"
          ref="multipleTable"
          :data="tableData"
          @selection-change="handleSelectionChange"
        >
          <el-table-column type="index" width="120" label="序号">
            <template slot-scope="scope">
              <span>{{ (page.currentPage - 1) * 10 + scope.$index + 1 }}</span>
            </template>
          </el-table-column>
          <el-table-column label="展板名称" prop="name"></el-table-column>
          <el-table-column label="提交人" prop="userName"></el-table-column>
          <el-table-column label="提交日期" prop="createTime"></el-table-column>
          <el-table-column label="审核项" prop="operation">
            <template slot-scope="scope">
              <span class="input-item">{{keyMap[scope.row.operation]}}</span>
            </template>
          </el-table-column>
          <el-table-column label="审核状态" prop="status">
            <template slot-scope="scope">
              <span v-if="scope.row.status === 'TBC'">待初审</span>
              <span v-else-if="scope.row.status === 'REFUSED'">已驳回</span>
              <span v-else-if="scope.row.status === 'TBCA'">待复审</span>
              <span v-else-if="scope.row.status === 'APPROVED_FINAL'">通过</span>
            </template>
          </el-table-column>
          <el-table-column label="操作" header-align="center" align="center">
            <template slot-scope="scope" width="220">
              <div class="table-btn-group">
                <el-tooltip content="详情" placement="top">
                  <el-button
                    :disabled="
                scope.row.operation === 'REMOVE' &&
                scope.row.status === 'APPROVED_FINAL'
              "
                    circle
                    @click="openDetails(scope.row)"
                  >
                    <i class="icon-table icon-detail"></i>
                  </el-button>
                </el-tooltip>
              </div>
            </template>
          </el-table-column>
          <el-table-column label="审核" width="220" header-align="center" align="center">
            <template slot-scope="scope">
              <!-- <div class="table-btn-group">
               
                <el-tooltip content="通过" placement="top">
                  <el-button circle @click="adopt(scope.row)">
                    <i class="icon-table icon-enable"></i>
                  </el-button>
                </el-tooltip>
                <el-tooltip content="驳回" placement="top">
                  <el-button circle @click="reject(scope.row)">
                    <i class="icon-table icon-disable"></i>
                  </el-button>
                </el-tooltip>
              </div>-->
              <div class="table-btn-group">
                <el-button
                  round
                  class="passed"
                  :disabled="
                scope.row.status === 'REFUSED' ||
                scope.row.status === 'APPROVED_FINAL'
              "
                  @click="adopt(scope.row)"
                >通过</el-button>
                <el-button
                  round
                  class="rejected"
                  :disabled="
                scope.row.status === 'REFUSED' ||
                scope.row.status === 'APPROVED_FINAL'
              "
                  @click="reject(scope.row)"
                >驳回</el-button>
              </div>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class="partyt-pagination">
        <el-pagination
          @current-change="handleCurrentChange"
          :current-page="page.currentPage"
          :page-size="page.pageSize"
          layout="prev, pager, next, jumper"
          :total="page.total"
        ></el-pagination>
      </div>
    </div>
    <!--新增弹框-->
    <el-dialog
      title="新建"
      custom-class="party-dialog"
      width="468px"
      :visible.sync="FormVisible1"
      :before-close="close1"
    >
      <div class="dialog-content">
        <el-form
          :model="classForm"
          ref="classForm"
          label-width="80px"
          label-position="top"
          :rules="rules"
          id="ruleo"
          class="party-form"
        >
          <el-form-item label="驳回原因：">
            <el-input type="textarea" v-model="classForm.remarks"></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div slot="footer" class="dialog-footer btn-group">
        <el-button size="mini" type="primary" @click="permisSave">确定</el-button>
        <!-- <el-button size="mini" v-show="!type" type="primary" @click="permisEdit">确定</el-button> -->
        <el-button size="mini" @click="close1">取 消</el-button>
      </div>
    </el-dialog>
    <!--请填写驳回原因-->
    <el-dialog
      custom-class="party-dialog"
      title="展板详情"
      width="468px"
      :visible.sync="FormVisible"
      :before-close="close"
    >
      <div class="dialog-content">
        <el-form
          :model="editForm"
          disabled
          class="party-form demo-form-inline"
          ref="editForm"
          label-width="80px"
          label-position="top"
          :rules="rules"
        >
          <el-form-item label="展板名称" :label-width="formLabelWidth">
            <el-input size="small" v-model="editForm.name" auto-complete="off"></el-input>
          </el-form-item>
          <el-form-item label="版权方" :label-width="formLabelWidth">
            <el-input
              size="small"
              v-model="editForm.boardCopyrightOwnerName"
              auto-complete="off"
              clearable
              onkeyup="this.value=this.value.replace(/^ +| +$/g,'')"
            ></el-input>
          </el-form-item>
          <el-form-item label="宣传图" :label-width="formLabelWidth">
            <img class="imgSize" :src="editForm.cover" alt />
          </el-form-item>
          <el-form-item label="二维码" :label-width="formLabelWidth">
            <img class="imgSize" :src="editForm.qrcodeUrl" alt />
          </el-form-item>
          <el-form-item label="简介" :label-width="formLabelWidth">
            <el-input type="textarea" v-model="editForm.remarks"></el-input>
          </el-form-item>
          <el-form-item label="展板视频" :label-width="formLabelWidth">
            <div class="video-box">
              <div class="video-item" v-for="(item, index) in editForm.videoList" :key="index">
                <video :src="item.fileUrl" controls  controlsList='nodownload noremote footbar' />
                <span>{{ item.fileName }}</span>
              </div>
            </div>
          </el-form-item>
          <el-form-item label="展板音频" :label-width="formLabelWidth">
            <div class="audio-box">
              <div class="audio-item" v-for="(item, index) in editForm.audioList" :key="index">
                <audio :src="item.fileUrl" controls />
                <span>{{ item.fileName }}</span>
              </div>
            </div>
          </el-form-item>
        </el-form>
      </div>
      <div slot="footer" class="dialog-footer btn-group">
        <el-button size="mini" type="primary" @click="close">关闭</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
export default {
  data() {
    var checkIsNull = (rule, value, callback) => {
      if (value) {
        if (value.trim() == "") {
          callback(new Error("不允许只输入空格"));
        } else {
          callback();
        }
      }
    };
    const keyMap = {
      ADD: "新增",
      EDIT: "修改",
      REMOVE: "删除",
      DISABLE: "禁用",
      ENABLE: "启用",
      UPPER: "上架",
      LOWER: "下架"
    };

    return {
      keyMap: keyMap,
      type: true,
      value1: "",
      page: { currentPage: 1, pageSize: 10, total: 0 },
      tableData: [],
      FormVisible: false,
      FormVisible1: false,
      formLabelWidth: "100px",
      form: {
        name: "",
        type: "EXHIBITION_BOARD"
      },
      editForm: {
        name: "",
        cover: "",
        sort: ""
      },
      classForm: {
        status: "",
        remarks: "",
        id: ""
      },
      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: "audit/getPageAllList",
          method: "get",
          authType: this.backToken
        },
        // vm.$qs.stringify(param)
        param
      )
        .then(res => {
          let data = res.data.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,
        status: _this.form.status,
        type: "EXHIBITION_BOARD"
      };
      this.getTableData(searchObj);
    },
    // 重置
    Reset() {
      // this.$refs["form"].resetFields();
      this.form = { type: "EXHIBITION_BOARD" };
      this.Search();
    },
    // // 获取当前查询参数
    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;
      this.type = true;
    },

    // 请填写驳回原因视频分类确认保存
    permisEdit() {
      let _this = this;
      _this.$refs.classForm.validate(valid => {
        if (valid) {
          _this
            .$https(
              {
                url: "videoContentCat/update",
                method: "put",
                authType: this.backToken
              },
              _this.$qs.stringify(_this.classForm)
              // _this.classForm
            )
            .then(
              res => {
                if (res.data.resultCode == 200 || res.data.resultCode == 201) {
                  _this.$message({
                    type: "success",
                    message: "新建成功！"
                  });
                  //跳回用户列表
                  _this.onSearch();
                  _this.FormVisible1 = false;
                  for (let key in _this.classForm) {
                    _this.classForm[key] = null;
                  }
                  _this.$refs["classForm"].resetFields();
                } else {
                  _this.$message({
                    type: "error",
                    message: res.data.msg
                  });
                }
              },
              error => {
                _this.$message({
                  type: "error",
                  message: error
                });
              }
            );
        }
      });
    },
    // 请填写驳回原因关闭
    close() {
      this.editForm = {};
      this.FormVisible = false;
      // for (let key in this.classForm) {
      //   this.classForm[key] = null;
      // }
      // this.$refs["classForm"].resetFields();
      // this.FormVisible = false;
      // this.$refs["editForm"].resetFields();
    },
    // 新增关闭
    close1() {
      this.FormVisible1 = false;
      for (let key in this.classForm) {
        this.classForm[key] = null;
      }
      this.$refs["classForm"].resetFields();
    },
    // 通过
    adopt(row) {
      this.classForm.id = row.id;
      this.classForm.status = "APPROVED_FINAL";
      this.classForm.remarks = "";
      this.permisSave("classForm");
    },
    // 请填写驳回原因弹框
    reject(row) {
      this.type = false;
      $(".el-dialog__title").html("请填写驳回原因");
      let _this = this;
      _this.classForm.id = row.id;
      _this.classForm.status = "REFUSED";
      _this.FormVisible1 = true;
    },
    // 驳回原因保存
    permisSave() {
      let _this = this;
      _this
        .$https(
          {
            url: "audit/updateAuditAllById",
            headers: { "Content-Type": "application/json" },
            method: "put",
            authType: this.backToken
          },
          // _this.$qs.stringify(_this.classForm)
          _this.classForm
        )
        .then(
          res => {
            if (res.data.resultCode == 200 || res.data.resultCode == 201) {
              _this.$message({
                type: "success",
                message: "操作成功！"
              });
              //跳回用户列表
              _this.onSearch();
              _this.FormVisible1 = false;
              for (let key in _this.classForm) {
                _this.classForm[key] = null;
              }
              _this.$refs["classForm"].resetFields();
            } else {
              _this.$message({
                type: "error",
                message: res.data.msg
              });
            }
          },
          error => {
            _this.$message({
              type: "error",
              message: error
            });
          }
        );
      // _this.$refs.classForm.validate(valid => {
      //   if (valid) {

      //   }
      // });
    },
    // 获取视频分类详情
    getAssetTypeInfo(id) {
      let vm = this;
      vm.$https(
        {
          url: "videoContentCat/get/" + id,
          method: "get",
          authType: this.backToken
        }
        // param
      )
        .then(res => {
          let data = res.data.data;
          this.classForm = data;
        })
        .catch(function(err) {
          console.log(err);
        });
    },
    openDetails(row) {
      let _this = this;
      _this.FormVisible = true;
      _this.getInfo(row.refItemId);
      $(".el-dialog__title").html(row.name + "展板详情");
    },
    //  获取版权方详情
    getInfo(id) {
      let vm = this;
      vm.$https(
        {
          url: "exhibitionBoard/get/" + id,
          method: "get",
          authType: this.backToken
        }
        // param
      )
        .then(res => {
          let resData = res.data.data;
          this.editForm = resData;
          // this.ruleForm = data;
          // this.ruleForm = {
          //   videoContentCopyrightOwnerId :data.videoContentCopyrightOwnerId,
          //   assetId:data.assetId,
          //   assetTypeId:data.assetTypeId,
          //   boardCopyrightOwnerId:data.boardCopyrightOwnerId,
          //   cover:data.cover,
          //   exhibitionBoardCatId:data.exhibitionBoardCatId,
          //   guideAudioUrl:data.guideAudioUrl,
          //   id:data.id,
          //   name:data.name,
          //   qrcodeUrl:data.qrcodeUrl,
          //   refMaterialUrl:data.refMaterialUrl,
          //   remarks:data.remarks,
          //   audioUrlList:data.audioUrlList,
          //   materialUrlList:data.materialUrlList

          // }
        })
        .catch(function(err) {
          console.log(err);
        });
    },
    // 删除
    handleDelete(row) {
      let _this = this;
      this.$confirm("此操作将永久删除, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          _this
            .$https({
              method: "delete",
              url: "videoContentCat/delete/" + 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">
.imgSize {
  width: 160px;
  height: 100px;
}
.iconImg {
  height: 32px;
  width: 32px;
  margin-right: 8px;
}
// @import "../../../../style/common";
// @import "../../style/list";
@import "../../../style/dialog.less";
@import "../../../style/table.less";
@import "../../../style/pagination.less";
.video-box {
  width: 100%;
  .video-item {
    width: 100%;
  }
  video {
    width: 100%;
    height: 200px;
  }
}
audio:focus {
  outline: none;
}
</style>
