| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 | <template>  <div id="app" style="width: 100%">    <div class="page-header" style="margin-bottom: 0">      <div class="page-title">        <el-page-header @back="goBack" content="ApiKey列表"></el-page-header>      </div>      <div class="page-header-btn">        <el-button icon="el-icon-plus" size="mini" style="margin-right: 1rem;" type="primary" @click="addUserApiKey">          添加ApiKey        </el-button>      </div>    </div>    <!--ApiKey列表-->    <el-table :data="userList" style="width: 100%;font-size: 12px;" :height="winHeight"              header-row-class-name="table-header">      <el-table-column prop="user.username" label="用户名" min-width="120"/>      <el-table-column prop="app" label="应用名" min-width="160"/>      <el-table-column label="ApiKey" :show-overflow-tooltip="true" min-width="300">        <template #default="scope"><!--          <el-button style="float: right;" type="primary" size="mini" icon="el-icon-document-copy"  title="点击拷贝" v-clipboard="scope.row.apiKey" @success="$message({type:'success', message:'成功拷贝到粘贴板'})"></el-button>-->          <i class="cpoy-btn el-icon-document-copy"  title="点击拷贝" v-clipboard="scope.row.apiKey" @success="$message({type:'success', message:'成功拷贝到粘贴板'})"></i>          <span>{{scope.row.apiKey}}</span>        </template>      </el-table-column>      <el-table-column prop="enable" label="启用" width="120">        <template #default="scope">          <el-tag v-if="scope.row.enable">            启用          </el-tag>          <el-tag v-else type="info">            停用          </el-tag>        </template>      </el-table-column>      <el-table-column prop="expiredAt" label="过期时间" width="160"/>      <el-table-column prop="remark" label="备注信息" min-width="160"/>      <el-table-column label="操作" min-width="260" fixed="right">        <template #default="scope">          <el-button v-if="scope.row.enable"                     size="medium" icon="el-icon-circle-close" type="text" @click="disableUserApiKey(scope.row)">            停用          </el-button>          <el-button v-else                     size="medium" icon="el-icon-circle-check" type="text" @click="enableUserApiKey(scope.row)">            启用          </el-button>          <el-divider direction="vertical"></el-divider>          <el-button size="medium" icon="el-icon-refresh" type="text" @click="resetUserApiKey(scope.row)">            重置          </el-button>          <el-divider direction="vertical"></el-divider>          <el-button size="medium" icon="el-icon-edit" type="text" @click="remarkUserApiKey(scope.row)">            备注          </el-button>          <el-divider direction="vertical"></el-divider>          <el-button size="medium" icon="el-icon-delete" type="text" @click="deleteUserApiKey(scope.row)"                     style="color: #f56c6c">            删除          </el-button>        </template>      </el-table-column>    </el-table>    <addUserApiKey ref="addUserApiKey"></addUserApiKey>    <remarkUserApiKey ref="remarkUserApiKey"></remarkUserApiKey>    <el-pagination      style="float: right"      @size-change="handleSizeChange"      @current-change="currentChange"      :current-page="currentPage"      :page-size="count"      :page-sizes="[15, 25, 35, 50]"      layout="total, sizes, prev, pager, next"      :total="total">    </el-pagination>  </div></template><script>import uiHeader from '../layout/UiHeader.vue'import addUserApiKey from "./dialog/addUserApiKey.vue";import remarkUserApiKey from './dialog/remarkUserApiKey.vue'export default {  name: 'userApiKeyManager',  components: {    uiHeader,    addUserApiKey,    remarkUserApiKey  },  data() {    return {      userList: [], //设备列表      currentUser: {}, //当前操作设备对象      winHeight: window.innerHeight - 200,      currentPage: 1,      count: 15,      total: 0,      getUserApiKeyListLoading: false    };  },  mounted() {    this.initParam();    this.initData();  },  methods: {    goBack() {      this.$router.back()    },    initParam() {      this.userId = this.$route.params.userId;    },    initData() {      this.getUserApiKeyList();    },    currentChange(val) {      this.currentPage = val;      this.getUserApiKeyList();    },    handleSizeChange(val) {      this.count = val;      this.getUserApiKeyList();    },    getUserApiKeyList() {      let that = this;      this.getUserApiKeyListLoading = true;      this.$axios({        method: 'get',        url: `/api/userApiKey/userApiKeys`,        params: {          page: that.currentPage,          count: that.count        }      }).then((res) => {        if (res.data.code === 0) {          that.total = res.data.data.total;          that.userList = res.data.data.list;        }        that.getUserApiKeyListLoading = false;      }).catch((error) => {        that.getUserApiKeyListLoading = false;      });    },    addUserApiKey() {      this.$refs.addUserApiKey.openDialog(this.userId, () => {        this.$refs.addUserApiKey.close();        this.$message({          showClose: true,          message: "ApiKey添加成功",          type: "success",        });        setTimeout(this.getUserApiKeyList, 200)      })    },    remarkUserApiKey(row) {      this.$refs.remarkUserApiKey.openDialog(row.id, () => {        this.$refs.remarkUserApiKey.close();        this.$message({          showClose: true,          message: "备注修改成功",          type: "success",        });        setTimeout(this.getUserApiKeyList, 200)      })    },    enableUserApiKey(row) {      let msg = "确定启用此ApiKey?"      if (row.online !== 0) {        msg = "<strong>确定启用此ApiKey?</strong>"      }      this.$confirm(msg, '提示', {        dangerouslyUseHTMLString: true,        confirmButtonText: '确定',        cancelButtonText: '取消',        center: true,        type: 'warning'      }).then(() => {        this.$axios({          method: 'post',          url: `/api/userApiKey/enable?id=${row.id}`        }).then((res) => {          this.$message({            showClose: true,            message: '启用成功',            type: 'success'          });          this.getUserApiKeyList();        }).catch((error) => {          this.$message({            showClose: true,            message: '启用失败',            type: 'error'          });          console.error(error);        });      }).catch(() => {      });    },    disableUserApiKey(row) {      let msg = "确定停用此ApiKey?"      if (row.online !== 0) {        msg = "<strong>确定停用此ApiKey?</strong>"      }      this.$confirm(msg, '提示', {        dangerouslyUseHTMLString: true,        confirmButtonText: '确定',        cancelButtonText: '取消',        center: true,        type: 'warning'      }).then(() => {        this.$axios({          method: 'post',          url: `/api/userApiKey/disable?id=${row.id}`        }).then((res) => {          this.$message({            showClose: true,            message: '停用成功',            type: 'success'          });          this.getUserApiKeyList();        }).catch((error) => {          this.$message({            showClose: true,            message: '停用失败',            type: 'error'          });          console.error(error);        });      }).catch(() => {      });    },    resetUserApiKey(row) {      let msg = "确定重置此ApiKey?"      if (row.online !== 0) {        msg = "<strong>确定重置此ApiKey?</strong>"      }      this.$confirm(msg, '提示', {        dangerouslyUseHTMLString: true,        confirmButtonText: '确定',        cancelButtonText: '取消',        center: true,        type: 'warning'      }).then(() => {        this.$axios({          method: 'post',          url: `/api/userApiKey/reset?id=${row.id}`        }).then((res) => {          this.$message({            showClose: true,            message: '重置成功',            type: 'success'          });          this.getUserApiKeyList();        }).catch((error) => {          this.$message({            showClose: true,            message: '重置失败',            type: 'error'          });          console.error(error);        });      }).catch(() => {      });    },    deleteUserApiKey(row) {      let msg = "确定删除此ApiKey?"      if (row.online !== 0) {        msg = "<strong>确定删除此ApiKey?</strong>"      }      this.$confirm(msg, '提示', {        dangerouslyUseHTMLString: true,        confirmButtonText: '确定',        cancelButtonText: '取消',        center: true,        type: 'warning'      }).then(() => {        this.$axios({          method: 'delete',          url: `/api/userApiKey/delete?id=${row.id}`        }).then((res) => {          this.$message({            showClose: true,            message: '删除成功',            type: 'success'          });          this.getUserApiKeyList();        }).catch((error) => {          this.$message({            showClose: true,            message: '删除失败',            type: 'error'          });          console.error(error);        });      }).catch(() => {      });    },  }}</script><style></style>
 |