<!--
  @description:短信模板管理列表
  @Modifier: haofengxian
  @routerPath: /SMS/SMSTemplate-list
  @date: 2020-11-24-13:31
-->
<template>
  <div>
    <table-crud
      ref="tableCrud"
      :menu="true"
      :advanced-search="false"
      :search-form="searchForm"
      search-label-width="100px"
      @on-load="loadData"
    >
      <template v-slot:header>
        模板管理
      </template>
      <template v-slot:search="search">
        <el-form-item ref="templateName" label="模板名称" prop="templateName">
          <el-input
            v-model.trim="searchForm.templateName"
            placeholder="模板名称"
            @keyup.enter.native="search.onSearch"
          />
        </el-form-item>
      </template>
      <template v-slot:menuLeft>
        <el-button type="primary" plain @click="addSMSTemp('')">
          新增模板
        </el-button>
        <el-button plain @click="deleteSMSTemp">
          删除
        </el-button>
      </template>
      <template v-slot:GXTable>
        <el-table
          ref="smallTable"
          v-loading="loading"
          :data="tableData"
          @selection-change="selectionChange"
        >
          <el-table-column
            type="selection"
            width="60px"
            align="center"
          />
          <el-table-column
            type="index"
            label="序号"
            width="60px"
            align="center"
          />
          <el-table-column
            header-align="center"
            prop="templateCode"
            label="模板编号"
            min-width="100"
          />
          <el-table-column
            header-align="center"
            label="模板名称"
            prop="templateName"
            align="left"
            min-width="130"
          />
          <el-table-column
            header-align="center"
            label="模板类型"
            prop="templateName"
            align="left"
            min-width="130"
          />
          <el-table-column
            header-align="center"
            label="模板内容"
            prop="templateContent"
            min-width="200"
          />
          <el-table-column
            :formatter="formatterUseStatus"
            header-align="center"
            label="使用状态"
            prop="useStatus"
            width="130"
            align="center"
          />
          <el-table-column
            header-align="center"
            label="操作"
            width="90"
            align="center"
          >
            <template slot-scope="scope">
              <el-link
                type="primary"
                @click.stop="addSMSTemp(scope.row)"
              >
                [编辑]
              </el-link>
            </template>
          </el-table-column>
        </el-table>
      </template>
    </table-crud>
    <!--新增/编辑模板管理-->
    <addSMSTemplate ref="SMSTemplateAdd" @call-back="SMSTemplateChange" />
  </div>
</template>
<script>
/* 接口*/
import { selectSmsSendTemplateList, deleteSmsTemplateInfoById } from '@api/common/tools'
// 组件
import addSMSTemplate from './SMSTemplateAdd-dialog'
import { filterDictText } from '@/assets/js/utils'// 常用方法
/* 混入开发 */
import { SMSTemplateGroup } from './../mixins/SMSGroupMixin'// 短信-字典信息
export default {
  name: 'SMSTemplateList',
  components: {
    addSMSTemplate
  },
  data() {
    return {
      /* 字典信息-start */
      ...SMSTemplateGroup, // 字典信息
      /* 字典信息-end */
      loading: true,
      searchForm: {
        templateName: ''// 模板名称
      },
      tableData: [],
      checkedTr: [] // 表格已选数据
    }
  },
  methods: {
    filterDictText, // 字典值替换文本通用方法
    // 表格字典值替换文本-使用状态
    formatterUseStatus(row, column, cellValue) {
      return filterDictText(this.useStatusList, cellValue)
    },
    // 表格复选框已选数据
    selectionChange(val) {
      this.checkedTr = val
    },
    // 获取数据
    loadData(params, callback) {
      selectSmsSendTemplateList(params).then(response => {
        this.loading = false
        this.tableData = response.data.records
        callback(response.data.total)
      }).catch(() => {
        this.loading = false
      })
    },
    // 删除模板
    deleteSMSTemp() {
      if (this.checkedTr.length) {
        this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          confirmButtonClass: 'confirmBtn',
          cancelButtonClass: 'cancelBtn',
          type: 'warning'
        }).then(() => {
          const ids = this.checkedTr.map(row => row.id).join(',')
          this.deleteSmsTemplateInfo(ids)
        }).catch(() => {
        })
      } else {
        this.$message({ message: '请选择一条记录!', type: 'warning' })
      }
    },
    // 根据id批量删除短信模板
    deleteSmsTemplateInfo(ids) {
      deleteSmsTemplateInfoById(ids).then(() => {
        this.$message({
          message: '删除成功',
          type: 'success'
        })
        this.$refs.tableCrud.onSearchChange()
      })
    },
    // 新增/编辑模板
    addSMSTemp(row) {
      this.$refs.SMSTemplateAdd.open(row)
    },
    // 新增保存获取列表数据
    SMSTemplateChange() {
      this.$refs.tableCrud.onSearchChange()
    }
  }
}
</script>
<style lang="less" scoped>

</style>
