<template>
  <div class="page">
    <div class="tool">
      <div class="search-wrap">
        <el-select v-model="field" @change="initData">
          <el-option
            v-for="(item, i) in keywords"
            :key="i"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
        <el-input class="keyword" :placeholder="'请输入' + keywords.find(e => e.id === field).name" v-model.trim="keyword" clearable></el-input>
      </div>
      <div class="actions">
        <el-button v-auth="'/site/list:内容管理:文章管理:删除'" @click="batchDel">批量删除</el-button>
        <el-button v-auth="'/site/list:内容管理:文章管理:新增'" type="primary" @click="add" >新增文章</el-button>
      </div>
    </div>
    <el-table :data="list" class="table" ref="table" header-align="center" @selection-change="handleSelectionChange" row-key="id" @sort-change="sortChange">
      <el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
      <el-table-column type="index" width="60" label="序号" align="center"></el-table-column>
      <el-table-column show-overflow-tooltip prop="title" label="标题" align="center" min-width="150"></el-table-column>
      <el-table-column prop="classificationName" label="所属分类" align="center" min-width="120" sortable="custom"></el-table-column>
      <el-table-column prop="founderName" label="录入人" align="center" min-width="80"></el-table-column>
      <el-table-column prop="editorName" label="修改人" align="center" min-width="80"></el-table-column>
      <el-table-column prop="updateTime" label="修改日期" align="center" min-width="150"></el-table-column>
      <el-table-column prop="createTime" label="发布日期" align="center" min-width="100"></el-table-column>
      <el-table-column prop="learnerNumber" label="已学习人数" align="center" min-width="70"></el-table-column>
      <el-table-column prop="workNumber" label="状态" align="center" min-width="80">
        <template slot-scope="scope">
          {{ scope.row.isRelease ? '已发布' : '草稿' }}
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" width="170">
        <template slot-scope="scope">
          <el-button v-auth="'/site/list:内容管理:文章管理:编辑'" type="text" @click="edit(scope.row)">编辑</el-button>
          <el-button v-auth="'/site/list:内容管理:文章管理:删除'" type="text" @click="handleDelete(scope.row)">删除</el-button>
          <el-switch
            class="m-l-10"
            v-model="scope.row.isDisable"
            :active-value="0"
            :inactive-value="1"
            @change="switchOff($event, scope.row, scope.$index)">
          </el-switch>
        </template>
      </el-table-column>
    </el-table>
    <div class="pagination">
      <el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" :total="total"></el-pagination>
    </div>
  </div>
</template>

<script>
import Setting from '@/setting'
import util from '@/libs/util'
import { mapMutations } from 'vuex'
export default {
    data() {
      return {
        field: 'title',
        keywords: [
          {
            id: 'title',
            name: '标题'
          },
          {
            id: 'founder',
            name: '录入人'
          },
          {
            id: 'editor',
            name: '修改人'
          }
        ],
        keyword: '',
        list: [],
        page: 1,
        pageSize: 10,
        total: 0,
        modifiedTimeSort: '',
        publicationTimeSort: '',
        classificationNameSort: '',
        editTimeSort: '',
        multipleSelection: [],
      };
    },
    watch: {
      keyword: function(val) {
        clearTimeout(this.searchTimer)
        this.searchTimer = setTimeout(() => {
          this.initData()
        }, 500)
      }
    },
    mounted() {
      this.getData()
    },
    methods: {
      // 文章列表
      getData() {
        const { keyword } = this
        const data = {
          pageNum: this.page,
          pageSize: this.pageSize,
          querySource: 3, //查询来源(3.中台 4.合伙人平台)
          classificationNameSort: this.classificationNameSort,
          editTimeSort: this.editTimeSort,
          releaseDateSort: this.releaseDateSort,
          title: this.field === 'title' ? keyword : '',
          founderName: this.field === 'founder' ? keyword : '',
          editorName: this.field === 'editor' ? keyword : ''
        }
        this.$post(this.api.schemeList, data).then(({ data }) => {
          this.list = data.records
          this.total = +data.total
        }).catch(err => {})
      },
      currentChange(val) {
        this.page = val
        this.getData()
      },
      handleSelectionChange(val) {
        this.multipleSelection = val
      },
      initData() {
        this.$refs.table.clearSelection()
        this.page = 1
        this.getData()
      },
      // 批量删除
      batchDel() {
        const list = this.multipleSelection
        if (list.length) {
          this.$confirm('确定要删除吗？', '提示', {
            type: 'warning'
          }).then(() => {
            const data = []
            list.map(e => {
              data.push('ids=' + e.id)
            })
            this.$post(`${this.api.batchDeletionScheme}?${data.join('&')}`).then(res => {
              this.$refs.table.clearSelection()
              util.successMsg("删除成功")
              this.getData()
            }).catch(res => {})
          }).catch(() => {})
        } else {
          util.errorMsg('请先选择数据 ！')
        }
      },
      // 删除
      handleDelete(row) {
        this.$confirm('确定要删除吗？', '提示', {
          type: 'warning'
        }).then(() => {
          this.$post(`${this.api.batchDeletionScheme}?ids=${row.id}`).then(res => {
            util.successMsg('删除成功')
            this.getData()
          }).catch(res => {})
        }).catch(() => {})
      },
      // 禁用启用
      switchOff(val, row) {
        this.$post(`${this.api.enableOrDisableScheme}?id=${row.id}&isDisable=${val}`).then(res => {}).catch((res) => {})
      },
      // 新增
      add() {
        this.$router.push(`/schemeSet`)
      },
      // 排序回调
      sortChange(column) {
        const { order } = column
        // 三个排序只能同时传1个，所以点了一个排序的时候要清除掉其余两个
        if (column.prop === 'classificationName') {
          this.classificationNameSort = order ? order === 'ascending' ? 'asc' : 'desc' : ''
          if (order) {
            this.editTimeSort = ''
            this.releaseDateSort = ''
            this.sequenceSort = ''
          }
        }
        if (column.prop === 'updateTime') {
          this.editTimeSort = order ? order === 'ascending' ? 'asc' : 'desc' : ''
          if (order) {
            this.classificationNameSort = ''
            this.releaseDateSort = ''
            this.sequenceSort = ''
          }
        }
        if (column.prop === 'releaseTime') {
          this.releaseDateSort = order ? order === 'ascending' ? 'asc' : 'desc' : ''
          if (order) {
            this.editTimeSort = ''
            this.classificationNameSort = ''
            this.sequenceSort = ''
          }
        }
        if (column.prop === 'sequence') {
          this.sequenceSort = order ? order === 'ascending' ? 'asc' : 'desc' : ''
          if (order) {
            this.editTimeSort = ''
            this.releaseDateSort = ''
            this.classificationNameSort = ''
          }
        }
        this.getData()
      },
      // 编辑
      edit(row) {
        this.$router.push(`/schemeSet?id=${row.id}`)
      },
    }
};
</script>

<style lang="scss" scoped>
.m-l-10 {
  margin-left: 10px;
}
</style>