shikeying
2023-04-11 bfee44c01a3f5f6de96c9dfa1e12cef4700eaf5b
测试引入的组件列表,修改响应参数
1个文件已添加
7个文件已修改
614 ■■■■ 已修改文件
public/static/config.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/index.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/activiti/definition/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/components/myButtonV2.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/components/myTableV3.vue 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/config/index.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/config/index_bak.vue 343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/login.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/static/config.js
@@ -23,4 +23,7 @@
  timeout: 15 // 请求超时时间、
}
const globalConf = dev
const globalConf = dev;
/** 平台统一分页大小,2023-04-11 */
const platformPageSize = 10;
src/layout/index.vue
@@ -108,4 +108,65 @@
  .mobile .fixed-header {
    width: 100%;
  }
  // mike, 2023-04-11
  .noselect {
    -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Chrome/Safari/Opera */
    -khtml-user-select: none; /* Konqueror */
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* Internet Explorer/Edge */
    user-select: none; /* Non-prefixed version, currently not supported by any browser */
  }
  .main {
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 25px;
  }
  .app-main {
    width: 100%;
    display: flex;
  }
  .base-container {
    /*50 = navbar  */
    flex: 1;
    height: calc(100vh - 198px);
    border-radius:10px;
    overflow: auto;
    scrollbar-width: none; /* Firefox */
    -ms-overflow-style: none; /* IE 10+ */
    &::-webkit-scrollbar {
      display: none; /* Chrome Safari */
    }
    .box-card{
      .el-card__body{
        padding-top: 0;
        .el-form-item--small.el-form-item{
          margin-top: 20px;
          margin-bottom: 0;
        }
        .el-form-item--mini.el-form-item{
          margin-top: 20px;
          margin-bottom: 0;
        }
      }
    }
  }
  .sidebar-box {
    margin: 0 20px 0 0 ;
    .box-card{
      min-height: 300px;
      max-height: calc(100vh - 198px);
      overflow: auto;
      scrollbar-width: none; /* Firefox */
      -ms-overflow-style: none; /* IE 10+ */
      &::-webkit-scrollbar {
        display: none; /* Chrome Safari */
      }
    }
  }
</style>
src/views/activiti/definition/index.vue
@@ -71,7 +71,6 @@
            type="text"
            icon="el-icon-edit"
            @click="OnlineModificationProcess(scope.row)"
            v-hasPermi="['activiti:modeler']"
          >查看
          </el-button>
          <el-button
src/views/components/myButtonV2.vue
@@ -376,9 +376,16 @@
    }
  },
  created() {
    if (this.checkPermission != '' && this.$store.getters.myButtonPermission.indexOf(this.checkPermission) < 0) {
      this.show = false
      return
    // console.log(this.$store.getters.permissions);
    if (this.checkPermission != '') {
      let userPermission = this.$store.getters.permissions;
      if(userPermission.indexOf("*:*:*") >= 0){
        // 有所有权限
        this.show = true;
      } else if(userPermission.indexOf(this.checkPermission) < 0){
        this.show = false
        return
      }
    }
    this.myName = this.name
    if (this.site == 'filter') {
src/views/components/myTableV3.vue
@@ -24,7 +24,7 @@
              <el-radio label="2">全部</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="页码" style="display: none;" prop="pageNumber"><el-input v-model="exportParams.pageNumber" /></el-form-item>
          <el-form-item label="页码" style="display: none;" prop="pageNum"><el-input v-model="exportParams.pageNum" /></el-form-item>
          <el-form-item label="步长" style="display: none;" prop="pageSize"><el-input v-model="exportParams.pageSize" /></el-form-item>
        </el-form>
        <div style="text-align: right; margin: 0">
@@ -80,7 +80,7 @@
      <!--序号 有分页时-->
      <el-table-column v-if="myTable.showIndex && myTable.paging.page.pageSize != undefined" label="序号" align="center" width="60">
        <template slot-scope="scope">
          <span>{{ scope.$index + (myTable.paging.page.pageNumber - 1) * myTable.paging.page.pageSize + 1 }}</span>
          <span>{{ scope.$index + (myTable.paging.page.pageNum - 1) * myTable.paging.page.pageSize + 1 }}</span>
        </template>
      </el-table-column>
@@ -175,7 +175,7 @@
    </el-table>
    <el-pagination
      :small="myTable.paging.page.small"
      :current-page="myTable.paging.page.pageNumber"
      :current-page="myTable.paging.page.pageNum"
      :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
      :page-size="myTable.paging.page.pageSize"
      layout="total, sizes, prev, pager, next, jumper"
@@ -213,9 +213,9 @@
  },
  data() {
    const validatepageNumber = (rule, value, callback) => {
      if (!valid.isNotEmpty(this.exportParams.pageNumber)) {
      if (!valid.isNotEmpty(this.exportParams.pageNum)) {
        callback(new Error('请输入页码'))
      } else if (!valid.isInteger(this.exportParams.pageNumber)) {
      } else if (!valid.isInteger(this.exportParams.pageNum)) {
        callback(new Error('页码为正整数'))
      } else {
        callback()
@@ -282,7 +282,7 @@
          // 分页信息
          page: {
            small: false,
            pageNumber: 1,
            pageNum: 1,
            pageSize: 10,
            total: 0
          }
@@ -295,13 +295,13 @@
        fileName: '',
        fileFormat: '.xls',
        page: '2',
        pageNumber: 1,
        pageNum: 1,
        pageSize: 20000
      },
      // 导出表单校验
      rules: {
        fileName: [{ required: true, validator: validatefileName, trigger: 'blur' }],
        pageNumber: [{ required: true, validator: validatepageNumber, trigger: 'blur' }],
        pageNum: [{ required: true, validator: validatepageNumber, trigger: 'blur' }],
        pageSize: [{ required: true, validator: validatepageSize, trigger: 'blur' }]
      },
      timeStamp: new Date().getTime()
@@ -336,7 +336,7 @@
  },
  watch: {
    filter(val) {
      this.search({ pageNumber: 1 })
      this.search({ pageNum: 1 })
    }
  },
  created() {
@@ -354,7 +354,7 @@
        if (this.myTable.paging.page === undefined) {
          this.$set(this.myTable.paging, 'page', {
            small: false,
            pageNumber: 1,
            pageNum: 1,
            pageSize: 10,
            total: 0
          })
@@ -366,7 +366,7 @@
        })
        this.$nextTick(() => {
          if (this.myTable.autoLoad) {
            this.search({ pageNumber: 1 })
            this.search({ pageNum: 1 })
          }
        })
      }
@@ -381,25 +381,25 @@
        this.myTable.loading = true
        const params = Object.assign({}, this.filter)
        params.pageSize = this.myTable.paging.page.pageSize
        if (param && param.pageNumber) {
          this.myTable.paging.page.pageNumber = param.pageNumber
        if (param && param.pageNum) {
          this.myTable.paging.page.pageNum = param.pageNum
        }
        params.pageNumber = this.myTable.paging.page.pageNumber
        params.pageNum = this.myTable.paging.page.pageNum
        request({
          url: this.myTable.url,
          method: 'get',
          params: params
        }).then(res => {
          if (res.data.rows) {
            this.$set(this.myTable, 'rows', res.data.rows)
          if (res.data) {
            this.$set(this.myTable, 'rows', res.data.datas);
          }
          this.$set(
            this.myTable.paging,
            'page',
            Object.assign(this.myTable.paging.page, {
              pageSize: res.data.pageSize,
              pageNumber: res.data.pageNumber,
              total: res.data.total
              pageNum: res.data.pageIndex,
              total: res.data.totalRows
            })
          )
          this.myTable.loading = false
@@ -474,16 +474,16 @@
         */
    handleSizeChange(pageSize) {
      this.myTable.paging.page.pageSize = pageSize
      this.search({ pageNumber: 1 })
      this.search({ pageNum: 1 })
    },
    /*
         * @Author : liu.q [916000612@qq.com]
         * @Date : 2019-07-17 14:22
         * @Description :切换pageNumber
         */
    handleCurrentChange(pageNumber) {
      this.myTable.paging.page.pageNumber = pageNumber
      this.search({ pageNumber: pageNumber })
    handleCurrentChange(pageNum) {
      this.myTable.paging.page.pageNum = pageNum
      this.search({ pageNum: pageNum })
    },
    /*
         * @Author : liu.q [916000612@qq.com]
@@ -571,7 +571,7 @@
        JSON.stringify(
          Object.assign(
            {
              pageNumber: this.exportParams.pageNumber,
              pageNum: this.exportParams.pageNum,
              pageSize: this.exportParams.pageSize
            },
            this.filter
src/views/system/config/index.vue
@@ -13,7 +13,7 @@
      <el-form-item label="参数键名" prop="configKey">
        <el-input
          v-model="queryParams.configKey"
          placeholder="请输入参数键名"
          placeholder="请输入参数 KEY"
          clearable
          style="width: 240px"
          @keyup.enter.native="handleQuery"
@@ -102,50 +102,8 @@
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
<!--      <el-table-column label="参数主键" align="center" prop="configId" />-->
      <el-table-column label="KEY" align="left" prop="config_key" :show-overflow-tooltip="true" />
      <el-table-column label="VALUE" align="left" prop="config_value" />
      <el-table-column label="描述" align="left" prop="config_name" :show-overflow-tooltip="true" />
      <el-table-column label="内置" align="center" prop="config_type">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.config_type"/>
        </template>
      </el-table-column>
      <el-table-column label="备注" align="left" prop="remark" :show-overflow-tooltip="true" />
      <el-table-column label="创建时间" align="center" prop="create_time" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.create_time) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['system:config:edit']"
          >修改</el-button>
<!--          <el-button-->
<!--            size="mini"-->
<!--            type="text"-->
<!--            icon="el-icon-delete"-->
<!--            @click="handleDelete(scope.row)"-->
<!--            v-hasPermi="['system:config:remove']"-->
<!--          >删除</el-button>-->
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!--列表-->
    <my-table-v3 ref="myTable" :filter="filterFrom" :table="table" />
    <!-- 添加或修改参数配置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
@@ -181,9 +139,11 @@
</template>
<script>
import { listConfig, getConfig, delConfig, addConfig, updateConfig, refreshCache } from "@/api/system/config";
  import {addConfig, delConfig, getConfig, listConfig, refreshCache, updateConfig} from "@/api/system/config";
  import myTableV3 from '@/views/components/myTableV3';
export default {
  export default {
  components: {myTableV3},
  name: "Config",
  dicts: ['sys_yes_no'],
  data() {
@@ -229,13 +189,90 @@
        config_value: [
          { required: true, message: "参数键值不能为空", trigger: "blur" }
        ]
      },
      /** 搜索条件*/
      filterFrom: {
        title: null
      },
      table: {
        showIndex: true, // 是否显示序号
        expand: false, // 是否显示详情数据
        checkBox: false, // 是否显示复选框
        url: globalConf.baseUrl + '/system/config/list', // 请求地址
        // 工具条
        tools: {
          columnsCtrl: {// 列控制按钮
            show: false
          },
          generalExport: {// 通用导出按钮
            show: false
          },
          custom: [ // 自定义工具条按钮
          ]
        },
        columns: [
          { title: 'KEY', field: 'config_key', align: 'left', width: 190 },
          { title: 'VALUE', field: 'config_value', align: 'left', width: 200 },
          { title: '描述', field: 'config_name', align: 'left', width: 240 },
          { title: '内置', field: 'config_type', align: 'left', width: 60, formatter: row => {
              let title = '';
              switch (row.config_type) {
                case 'Y':
                  title = '是'
                  break
                case 'N':
                  title = '否'
                  break
              }
              return { value: title }
            }
          },
          { title: '创建时间', field: 'create_time', align: 'left', width: 170 },
          { title: '备注', field: 'remark', align: 'left', width: 260 }
        ],
        // 操作信息
        operation: {
          show: true, // 显示操作列
          width: '100', // 列宽
          attr: [
            {
              title: '编辑',
              checkPermission: 'system:config:edit',
              events: row => {
                this.handleUpdate(row)
              }
            }
          ]
        },
        paging: {
          show: true, // 显示分页
          // 分页信息
          page: {
            small: false,
            pageNum: 1,
            pageSize: platformPageSize,
            total: 0
          }
        }
      }
    };
  },
  created() {
    this.getList();
    // this.getList();
  },
  methods: {
    // 查询table列表
    search(pageNum) {
      if (pageNum != undefined) {
        this.$refs.myTable.search({ pageNum: pageNum })
      } else {
        this.$refs.myTable.search()
      }
    },
    /** 查询参数列表 */
    getList() {
      this.loading = true;
@@ -337,6 +374,11 @@
      refreshCache().then(() => {
        this.$modal.msgSuccess("刷新成功");
      });
    },
    /** 显示配置详情 */
    showDetail(row){
    }
  }
};
src/views/system/config/index_bak.vue
New file
@@ -0,0 +1,343 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="参数名称" prop="configName">
        <el-input
          v-model="queryParams.configName"
          placeholder="请输入参数名称"
          clearable
          style="width: 240px"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="参数键名" prop="configKey">
        <el-input
          v-model="queryParams.configKey"
          placeholder="请输入参数键名"
          clearable
          style="width: 240px"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="系统内置" prop="configType">
        <el-select v-model="queryParams.configType" placeholder="系统内置" clearable>
          <el-option
            v-for="dict in dict.type.sys_yes_no"
            :key="dict.value"
            :label="dict.label"
            :value="dict.value"
          />
        </el-select>
      </el-form-item>
<!--      <el-form-item label="创建时间">-->
<!--        <el-date-picker-->
<!--          v-model="dateRange"-->
<!--          style="width: 240px"-->
<!--          value-format="yyyy-MM-dd"-->
<!--          type="daterange"-->
<!--          range-separator="-"-->
<!--          start-placeholder="开始日期"-->
<!--          end-placeholder="结束日期"-->
<!--        ></el-date-picker>-->
<!--      </el-form-item>-->
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['system:config:add']"
        >新增</el-button>
      </el-col>
<!--      <el-col :span="1.5">-->
<!--        <el-button-->
<!--          type="success"-->
<!--          plain-->
<!--          icon="el-icon-edit"-->
<!--          size="mini"-->
<!--          :disabled="single"-->
<!--          @click="handleUpdate"-->
<!--          v-hasPermi="['system:config:edit']"-->
<!--        >修改</el-button>-->
<!--      </el-col>-->
<!--      <el-col :span="1.5">-->
<!--        <el-button-->
<!--          type="danger"-->
<!--          plain-->
<!--          icon="el-icon-delete"-->
<!--          size="mini"-->
<!--          :disabled="multiple"-->
<!--          @click="handleDelete"-->
<!--          v-hasPermi="['system:config:remove']"-->
<!--        >删除</el-button>-->
<!--      </el-col>-->
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['system:config:export']"
        >导出</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-refresh"
          size="mini"
          @click="handleRefreshCache"
          v-hasPermi="['system:config:remove']"
        >刷新缓存</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
<!--      <el-table-column label="参数主键" align="center" prop="configId" />-->
      <el-table-column label="KEY" align="left" prop="config_key" :show-overflow-tooltip="true" />
      <el-table-column label="VALUE" align="left" prop="config_value" />
      <el-table-column label="描述" align="left" prop="config_name" :show-overflow-tooltip="true" />
      <el-table-column label="内置" align="center" prop="config_type">
        <template slot-scope="scope">
          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.config_type"/>
        </template>
      </el-table-column>
      <el-table-column label="备注" align="left" prop="remark" :show-overflow-tooltip="true" />
      <el-table-column label="创建时间" align="center" prop="create_time" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.create_time) }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['system:config:edit']"
          >修改</el-button>
<!--          <el-button-->
<!--            size="mini"-->
<!--            type="text"-->
<!--            icon="el-icon-delete"-->
<!--            @click="handleDelete(scope.row)"-->
<!--            v-hasPermi="['system:config:remove']"-->
<!--          >删除</el-button>-->
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- 添加或修改参数配置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="参数名称" prop="config_name">
          <el-input v-model="form.config_name" placeholder="请输入参数名称" />
        </el-form-item>
        <el-form-item label="KEY" prop="config_key">
          <el-input v-model="form.config_key" placeholder="请输入参数键名" />
        </el-form-item>
        <el-form-item label="VALUE" prop="config_value">
          <el-input v-model="form.config_value" placeholder="请输入参数键值" />
        </el-form-item>
        <el-form-item label="系统内置" prop="config_type">
          <el-radio-group v-model="form.config_type">
            <el-radio
              v-for="dict in dict.type.sys_yes_no"
              :key="dict.value"
              :label="dict.value"
            >{{dict.label}}</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { listConfig, getConfig, delConfig, addConfig, updateConfig, refreshCache } from "@/api/system/config";
export default {
  name: "Config",
  dicts: ['sys_yes_no'],
  data() {
    return {
      // 遮罩层
      loading: true,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 参数表格数据
      configList: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 日期范围
      dateRange: [],
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        configName: undefined,
        configKey: undefined,
        configType: undefined
      },
      // 表单参数
      form: {},
      // 表单校验
      rules: {
        config_name: [
          { required: true, message: "参数名称不能为空", trigger: "blur" }
        ],
        config_key: [
          { required: true, message: "参数键名不能为空", trigger: "blur" }
        ],
        config_value: [
          { required: true, message: "参数键值不能为空", trigger: "blur" }
        ]
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** 查询参数列表 */
    getList() {
      this.loading = true;
      listConfig(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
          this.configList = response.data;
          this.total = response.total;
          this.loading = false;
        }
      );
    },
    // 取消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // 表单重置
    reset() {
      this.form = {
        config_id: undefined,
        config_name: undefined,
        config_key: undefined,
        config_value: undefined,
        config_type: "Y",
        remark: undefined
      };
      this.resetForm("form");
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.dateRange = [];
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 新增按钮操作 */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加参数";
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.configId)
      this.single = selection.length!=1
      this.multiple = !selection.length
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.reset();
      const configId = row.config_id || this.ids
      getConfig(configId).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改参数";
      });
    },
    /** 提交按钮 */
    submitForm: function() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.config_id != undefined) {
            updateConfig(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addConfig(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const configIds = row.config_id || this.ids;
      this.$modal.confirm('是否确认删除参数编号为"' + configIds + '"的数据项?').then(function() {
          return delConfig(configIds);
        }).then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        }).catch(() => {});
    },
    /** 导出按钮操作 */
    handleExport() {
      this.download('system/config/export', {
        ...this.queryParams
      }, `config_${new Date().getTime()}.xlsx`)
    },
    /** 刷新缓存按钮操作 */
    handleRefreshCache() {
      refreshCache().then(() => {
        this.$modal.msgSuccess("刷新成功");
      });
    }
  }
};
</script>
src/views/user/login.vue
@@ -94,7 +94,7 @@
        code:'',
        uuid: '',
        loginType: 'user_pass',  // 用户名、密码方式登录
        verifyType: 'jigsaw'//  'code': 验证码  'slide':滑块  'jigsaw':拼图
        verifyType: 'slide'//  'code': 验证码  'slide':滑块  'jigsaw':拼图
        // rememberMe: false,
      },
      loginRules: {
@@ -176,8 +176,9 @@
      this.loginForm.rememberMe = rememberMe === undefined ? this.loginForm.rememberMe : rememberMe
    },
    handleLogin(param) {
      // console.log(param);
      if(param != null){
      if(this.loginForm.verifyType==='jigsaw' && param != null){
        // console.log(param);
        // console.log("拼图提交参数");
        // 拼图验证码时,调用方会传入code(用户验证码位置),uuid
        this.loginForm.code = param.x;
        this.loginForm.uuid = param.uuid;