<template>
  <div class="single">
    <el-form ref="searchFrom" :model="searchFrom" label-width="80px">
      <el-row>
        <el-col :span="4">
          <el-form-item label="分类名称">
            <el-input v-model="searchFrom.category_name" placeholder="名称"
                      size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="4">
          <el-form-item label="单品名称">
            <el-input v-model="searchFrom.name" placeholder="名称"
                      size="small"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="4">
          <el-form-item>
            <el-button type="primary" plain size="small" @click="initPage">
              搜索
            </el-button>
          </el-form-item>
        </el-col>
        <el-col :span="4" :offset="8">
          <el-form-item>
            <el-button type="success" plain size="small" @click="onAdd" v-if="!$store.state.readonly">
              添加单品
            </el-button>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <el-table
      :data="tableData"
      :default-sort = "{prop: 'num', order: 'descending'}"
      style="width: 100%">
      <el-table-column
        prop="id"
        label="id">
      </el-table-column>
      <el-table-column
        prop="name"
        label="名称">
      </el-table-column>
      <el-table-column
        prop="category_name"
        label="分类">
      </el-table-column>
      <el-table-column
        prop="num"
        sortable
        label="库存">
      </el-table-column>
      <el-table-column
        width="200"
        v-if="!$store.state.readonly"
        label="操作">
        <template slot-scope="scope">
          <el-button size="mini" plain type="warning" @click="edit(scope.row)">
            编辑
          </el-button>
          <el-button size="mini" plain type="danger" @click="delthat(scope.row)" v-if="$store.state.deletePermission">
            删除
          </el-button>
        </template>
      </el-table-column>
    </el-table>
    <page :total="total" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
    <dialog-com :dialogObj="dialogObj" @changeShow="changeShow" @reflash="initPage"/>
  </div>
</template>

<script>
  import {getSingleListApi,delSingleApi} from "../../service/api";
  import page from '../framework/page'
  import dialogCom from './dialog'
  export default {
    name: "index",
    components:{
      page,
      dialogCom
    },
    data(){
      return {
        total:0,
        nowPage:1,
        limit: 10,
        searchFrom: {
          name:''
        },
        tableData:[],
        dialogObj:{
          type:0,
          show:false,
          id:''
        },
      }
    },
    created(){
      this.initPage()
    },
    methods:{
      initPage(){
        let json = {
          limit: this.limit,
          page: this.nowPage
        }
        if (this.searchFrom.name) {
            json.name = this.searchFrom.name
        }
        if (this.searchFrom.category_name) {
          json.category_name = this.searchFrom.category_name
        }
        getSingleListApi(json).then(res=>{
          this.tableData = res.list;
          this.total = res.total
        })
      },
      onPageChange(val){
        this.nowPage = val
        this.initPage()
      },
      onSizeChange(val){
        this.nowPage = 1
        this.limit = val
        this.initPage()
      },
      changeShow() {

      },
      delthat(data){
        this.$confirm('此操作将删除该单品?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          delSingleApi(data.id).then(res=>{
            this.$message({
              type: 'success',
              message: '删除成功!'
            });
          });
          this.initPage()
        });
      },
      onAdd(){
        this.dialogObj = {
          type: 0,
          show: true,
        }
      },
      edit(data) {
        this.dialogObj = {
          type: 1,
          show: true,
          id: data.id
        }
      },
    }
  }
</script>

<style scoped lang="less">
  @import "../../util/public";
  .single{
    .main-block
  }
</style>