dictionaries.vue 4.48 KB
<!--
 * @Description  :字典
 * @Autor        : miaofang
 * @LastEditTime : 2023-05-18 13:23:33
-->
<template>
  <div class="from-clues">
    <!-- 表单部分 -->
    <div class="from-clues-header">
      <el-form @submit.native.prevent :model="ruleForm" label-width="120px">
        <Breadcrumb />
        <el-row :gutter="20" class="mb-5">
          <el-col :span="6">
            <el-form-item label="字典类型编码">
              <el-input v-model="ruleForm.dcode" @clear="queryClick" clearable placeholder="字典类型编码"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="字典类型名称">
              <el-input v-model="ruleForm.dname" @clear="queryClick" clearable placeholder="字典类型名称"></el-input>
            </el-form-item>
          </el-col>
          <!-- 操作按钮 -->
          <el-col :span="12" class="btnColRight">
            <btn nativeType="cx" @click="handleSearch">查询</btn>
            <btn nativeType="cx" @click="handleRefresh">刷新缓存</btn>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <!-- 表格 -->
    <div class="from-clues-content">
      <lb-table :page-size="pageData.pageSize" class="loadingtext" :current-page.sync="pageData.currentPage"
        :total="tableData.total" @size-change="handleSizeChange" @p-current-change="handleCurrentChange"
        :column="tableData.columns" :data="tableData.data">
      </lb-table>
    </div>
    <editDialog v-model="isDialog" :details="details" />
  </div>
</template>
<script>
  import table from "@/utils/mixin/table"
  import { getQlxxDictList, refreshDictCache } from "@/api/dict.js"
  import { datas, sendThis } from "./dictionaries"
  import editDialog from "./components/editDialog.vue"
  export default {
    name: "djbcx",
    components: {
      editDialog
    },
    mixins: [table],
    mounted () {
      sendThis(this);
      this.queryClick()
    },
    data () {
      return {
        isDialog: false,
        details: {
          dictid: '',
          isenable: 1,
          rowData: {}
        },
        ruleForm: {
          dcode: '',
          dname: ''
        },
        // 表格数据
        tableData: {
          total: 0,
          columns: datas.columns().concat([
            {
              label: "操作",
              render: (h, scope) => {
                return (
                  <el-button type="text"
                    class='successColor'
                    onClick={() => { this.editClick(scope.row, 1) }}>修改</el-button>
                )
              }
            }
          ]),
          data: []
        }
      }
    },
    methods: {
      // 初始化数据
      /**
       * @description: 初始化数据
       * @author: renchao
       */
      queryClick () {
        getQlxxDictList({ ...this.ruleForm, ...this.pageData }).then(res => {
          let { records, total } = res.result
          this.tableData.data = records ? records : []
          this.tableData.total = total ? total : 0
        })
      },
      /**
       * @description: handleSearch
       * @author: renchao
       */
      handleSearch () {
        this.pageData.currentPage = 1
        this.tableData.data = []
        this.queryClick()
      },
      /**
       * @description: handleRefresh
       * @author: renchao
       */
      handleRefresh () {
        this.$confirm('是否确认刷新', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          refreshDictCache().then(res => {
            if (res.code == 200) {
              let refech = this.$store.dispatch('dict/generateDic')
              this.$endLoading()
              refech && this.$message({
                message: '刷新成功',
                type: 'success'
              });
            } else {
              this.$message.error(res.message)
            }
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '取消刷新'
          });
        });
      },
      /**
       * @description: editClick
       * @param {*} row
       * @param {*} val
       * @author: renchao
       */
      editClick (row, val) {
        this.details.rowData = row
        this.details.isenable = val
        this.details.dictid = row.dictid
        this.isDialog = true
      }
    }
  };
</script>
<style scoped lang="scss">
  /deep/.dialogBox .dialog_title {
    top: 0;
    margin-left: 5px;
  }
</style>