<template>
  <el-dialog
    :visible.sync="visible"
    title="字典数据"
    width="80%"
    :close-on-click-modal="false"
    :close-on-press-escape="false"
    custom-class="el-dialog-s"
    append-to-body
  >
    <el-card shadow="never" class="aui-card--fill">
      <div class="mod-sys__dict">
        <el-form
          :inline="true"
          :model="dataForm"
          @keyup.enter.native="getDataList()"
        >
          <el-form-item>
            <el-input
              v-model="dataForm.dictValue"
              :placeholder="$t('dict.dictValue')"
              clearable
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-input
              v-model="dataForm.dictLabel"
              :placeholder="$t('dict.dictLabel')"
              clearable
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="getDataList()">{{
              $t("query")
            }}</el-button>
          </el-form-item>
        </el-form>

        <el-form
          v-if="
            $hasPermission('sys:dict:save') || $hasPermission('sys:dict:delete')
          "
          :inline="true"
        >
          <el-form-item>
            <el-button
              v-if="$hasPermission('sys:dict:save')"
              plain
              icon="el-icon-plus"
              type="primary"
              @click="addOrUpdateHandle()"
              >{{ $t("add") }}</el-button
            >
          </el-form-item>
          <el-form-item>
            <el-button
              v-if="$hasPermission('sys:dict:delete')"
              plain
              icon="el-icon-delete"
              type="danger"
              @click="deleteHandle()"
              >{{ $t("deleteBatch") }}</el-button
            >
          </el-form-item>
        </el-form>
        <el-table
          v-loading="dataListLoading"
          :data="dataList"
          border
          @selection-change="dataListSelectionChangeHandle"
          @sort-change="dataListSortChangeHandle"
          style="width: 100%"
        >
          <el-table-column
            type="selection"
            header-align="center"
            align="center"
            width="50"
          ></el-table-column>
          <el-table-column
            prop="dictValue"
            label="字典值"
            header-align="center"
            align="center"
          ></el-table-column>
          <el-table-column
            prop="dictLabel"
            label="字典标签"
            header-align="center"
            align="center"
          ></el-table-column>
          <el-table-column
            prop="sort"
            label="排序"
            header-align="center"
            align="center"
          ></el-table-column>
          <el-table-column
            prop="remark"
            label="备注"
            header-align="center"
            align="center"
          ></el-table-column>
          <el-table-column
            prop="createDate"
            label="创建时间"
            header-align="center"
            align="center"
            width="180"
          ></el-table-column>
          <el-table-column
            label="操作"
            :resizable="false"
            fixed="right"
            header-align="center"
            align="center"
          >
            <template slot-scope="scope">
              <el-tooltip content="编辑" effect="light">
                <el-button
                  v-if="$hasPermission('sys:dict:update')"
                  type="text"
                  @click="addOrUpdateHandle(scope.row.id)"
                  >编辑</el-button
                ></el-tooltip
              >
              <el-tooltip content="删除" effect="light">
                <el-button
                  v-if="$hasPermission('sys:dict:delete')"
                  type="text"
                  @click="deleteHandle(scope.row.id)"
                  >删除</el-button
                ></el-tooltip
              >
            </template>
          </el-table-column>
        </el-table>
        <el-pagination
          :current-page="page"
          :page-sizes="[10, 20, 50, 100]"
          :page-size="limit"
          :total="total"
          background
          layout="total, sizes, prev, pager, next, jumper"
          @size-change="pageSizeChangeHandle"
          @current-change="pageCurrentChangeHandle"
        >
        </el-pagination>
        <!-- 弹窗, 新增 / 修改 -->
        <add-or-update
          v-if="addOrUpdateVisible"
          ref="addOrUpdate"
          @refreshDataList="getDataList"
        ></add-or-update>
      </div>
    </el-card>
  </el-dialog>
</template>

<script>
import mixinViewModule from "@/mixins/view-module";
import AddOrUpdate from "./dict-data-add-or-update";
export default {
  mixins: [mixinViewModule],
  data() {
    return {
      mixinViewModuleOptions: {
        createdIsNeed: false,
        getDataListURL: "/sys/dict/data/page",
        getDataListIsPage: true,
        deleteURL: "/sys/dict/data",
        deleteIsBatch: true,
      },
      dataForm: {
        dictTypeId: "0",
        dictLabel: "",
        dictValue: "",
      },
      visible: false,
    };
  },
  components: {
    AddOrUpdate,
  },
  methods: {
    // 新增 / 修改
    addOrUpdateHandle(id) {
      this.addOrUpdateVisible = true;
      this.$nextTick(() => {
        this.$refs.addOrUpdate.dataForm.id = id;
        this.$refs.addOrUpdate.dataForm.dictTypeId = this.dataForm.dictTypeId;
        this.$refs.addOrUpdate.init();
      });
    },
  },
};
</script>
