<template>
  <div class="content">
    <div class="topSearch">
      <div class="left">
        <Input style="width:280px" search enter-button placeholder="" @on-search='search'/>
      </div>
      <div class="right">
        <Button class='success-btn' type="success"  @click="seq">排序</Button>
        <Button @click="add" type="primary">新增</Button>
        <Button type="error" @click="del">删除</Button>
      </div>
    </div>
     <Stable :data='data' @edit='edit' @select='select'/>
     <Forms :visible.sync="visible" :search='search' :row='row' :treeData='treeData'/>
       <draggableList :visible.sync="draggableVisible" :list='data' @ok='ok'/>
  </div>
</template>

<script>
import Stable from './table.vue'
import Forms from './form.vue'
import draggableList from '@/view/common/draggable.vue'
import {
  getAdvertisements,
  delAdvertisements,
  editAdvertisements
} from '@/api/advertisement'
import {
  getTreeCategorie2
} from '@/api/categories'
export default {
  name: 'sections',
  components: {
    Stable,
    Forms,
    draggableList
  },
  data () {
    return {
      treeData: [],
      selectList: [],
      visible: false,
      draggableVisible: false,
      row: {},
      data: []
    }
  },
  methods: {
    edit (row) {
      this.visible = true
      this.row = row
    },
    add () {
      this.visible = true
      this.row = {
        id: 'add'
      }
    },
    select (val) {
      this.selectList = val
    },
    seq () {
      this.draggableVisible = true
    },
    ok (list) {
      editAdvertisements(list).then((res) => {
        if (res.code === 200 && res.data.length > 0) {
          this.$Message.success('操作成功')
          this.draggableVisible = false
          this.search()
        }
      })
    },
    del () {
      delAdvertisements(this.selectList).then((res) => {
        if (res.code === 200) {
          this.$Message.success('删除成功')
          this.search()
        } else {
          this.$Message.error('删除失败')
        }
      })
    },
    getTree () {
      getTreeCategorie2('course').then((res) => {
        this.treeData = res.data.categories.map((p) => {
          p.label = p.name
          p.value = p.id
          p.children = p.courses
          if (p.courses.length > 0) {
            this.recursion(p.children)
          }
          return p
        })
      })
    },
    recursion (data) {
      data = data.map((p) => {
        p.label = p.name
        p.value = p.id
        return p
      })
    },
    search () {
      getAdvertisements({}).then((res) => {
        this.data = res.data
      })
    }
  },
  mounted () {
    this.search()
    this.getTree()
  }
}
</script>

<style lang="less"></style>
