<template>
  <div class="sys">
    <div class="clear-both top">
      <el-button type="success" plain @click="add" style="float: right" v-if="!$store.state.readonly">添加配置</el-button>
      <el-form inline="">
        <el-form-item label="关键字">
          <el-input placeholder="输入关键字搜索" v-model="searchKey"></el-input>
        </el-form-item>
        <el-form-item >
          <el-button type="primary" @click="getList">搜索</el-button>
        </el-form-item>
      </el-form>
    </div>
    <el-table
      :data="list"
      style="width: 100%">
      <el-table-column type="expand">
        <template slot-scope="props">
          <el-form label-position="left"  class="demo-table-expand">
            <el-form-item label="Key">
              <span>{{ props.row.key }}</span>
            </el-form-item>
            <el-form-item label="关键词">
              <span>{{ props.row.value }}</span>
            </el-form-item>
            <el-form-item label="描述">
              <span>{{ props.row.desc }}</span>
            </el-form-item>
          </el-form>
        </template>
      </el-table-column>
      <el-table-column
        label="ID" sortable
        prop="id">
      </el-table-column>
      <el-table-column
        label="Key"
        prop="key">
      </el-table-column>
      <el-table-column
        label="关键词"
        prop="value">
      </el-table-column>
      <el-table-column
        prop="created_at"
        label="创建时间" sortable>
      </el-table-column>
      <el-table-column
        width="250"
        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="del(scope.row)" v-if="$store.state.deletePermission">
            删除
          </el-button>
        </template>
      </el-table-column>
    </el-table>
    <dialog-com :dialogObj="dialogObj" @changeShow="changeShow" @reflash="getList"/>
    <page :total="total" :limit="limit" @pageChange="onPageChange" @sizeChange="onSizeChange"/>
  </div>
</template>

<script>
  import dialogCom from './sysConfigDialog'
  import {getConfigListApi,deleteConfigApi,getConfigDetailApi} from "../../service/api";
  import page from '../framework/page'
  export default {
    name: "sysConfig",
    data() {
      return {
        total:0,
        nowPage:1,
        searchKey:"",
        limit: 10,
        dialogObj:{
          value:'',
          desc:'',
          show:false,
          id:''
        },
        list: []
      }
    },
    components:{
      dialogCom,
      page
    },
    mounted(){
      this.getList()
    },
    methods: {
      changeShow(data){
        this.dialogObj.show=data
      },
      getList(){
        let json = {
          limit: this.limit,
          page: this.nowPage
        };
        if(this.searchKey){
          json.key = this.searchKey
        }
        getConfigListApi(json).then(res => {
          this.list = res.list
          this.total = res.total
        })
      },
      onPageChange(val){
        this.nowPage = val;
        this.getList();
      },
      onSizeChange(val){
        this.nowPage = 1;
        this.limit = val;
        this.getList();
      },
      add(){
        this.dialogObj.id = '';
        this.dialogObj.key= '';
        this.dialogObj.value = '';
        this.dialogObj.desc = '';
        this.dialogObj.show = true
      },
      edit(data){
        getConfigDetailApi(data.id).then((res) => {
          this.dialogObj.id = res.id;
          this.dialogObj.key= res.key;
          this.dialogObj.value = res.value;
          this.dialogObj.desc = res.desc;
          this.dialogObj.show = true
        });
      },
      del(data){
        this.$confirm('此操作将删除该记录?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          deleteConfigApi(data.id).then(res=>{
            this.getList()
            this.$message({
              type: 'success',
              message: '删除成功!'
            });
          });
        });
      }
    }
  }
</script>

<style scoped lang="less">
  @import "../../util/public";
  .sys {
    padding: 20px 0;
  }
  .add-btn {
    margin: 10px 0;
  }
  .top {
    margin-bottom:10px;
  }
</style>
