| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template>
|
| | | <div class="app-container">
|
| | | <el-form :model="queryParams" ref="queryRef" :inline="true">
|
| | | <el-form-item label="ç»å½å°å" prop="ipaddr">
|
| | | <el-input
|
| | | v-model="queryParams.ipaddr"
|
| | | placeholder="请è¾å
¥ç»å½å°å"
|
| | | clearable
|
| | | style="width: 200px"
|
| | | @keyup.enter="handleQuery"
|
| | | />
|
| | | </el-form-item>
|
| | | <el-form-item label="ç¨æ·åç§°" prop="userName">
|
| | | <el-input
|
| | | v-model="queryParams.userName"
|
| | | placeholder="请è¾å
¥ç¨æ·åç§°"
|
| | | clearable
|
| | | style="width: 200px"
|
| | | @keyup.enter="handleQuery"
|
| | | />
|
| | | </el-form-item>
|
| | | <el-form-item>
|
| | | <el-button type="primary" icon="Search" @click="handleQuery">æç´¢</el-button>
|
| | | <el-button icon="Refresh" @click="resetQuery">éç½®</el-button>
|
| | | </el-form-item>
|
| | | </el-form>
|
| | | <el-table
|
| | | v-loading="loading"
|
| | | :data="onlineList.slice((pageNum - 1) * pageSize, pageNum * pageSize)"
|
| | | style="width: 100%;"
|
| | | >
|
| | | <el-table-column label="åºå·" width="50" type="index" align="center">
|
| | | <template #default="scope">
|
| | | <span>{{ (pageNum - 1) * pageSize + scope.$index + 1 }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="ä¼è¯ç¼å·" align="center" prop="tokenId" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="ç»å½åç§°" align="center" prop="userName" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="æå±é¨é¨" align="center" prop="deptName" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="主æº" align="center" prop="ipaddr" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="ç»å½å°ç¹" align="center" prop="loginLocation" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="æä½ç³»ç»" align="center" prop="os" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="æµè§å¨" align="center" prop="browser" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="ç»å½æ¶é´" align="center" prop="loginTime" width="180">
|
| | | <template #default="scope">
|
| | | <span>{{ parseTime(scope.row.loginTime) }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="æä½" align="center" class-name="small-padding fixed-width">
|
| | | <template #default="scope">
|
| | | <el-button link type="primary" icon="Delete" @click="handleForceLogout(scope.row)" v-hasPermi="['monitor:online:forceLogout']">强é</el-button>
|
| | | </template>
|
| | | </el-table-column>
|
| | | </el-table>
|
| | |
|
| | | <pagination v-show="total > 0" :total="total" v-model:page="pageNum" v-model:limit="pageSize" />
|
| | | </div>
|
| | | </template>
|
| | |
|
| | | <script setup name="Online">
|
| | | import { forceLogout, list as initData } from "@/api/monitor/online"
|
| | |
|
| | | const { proxy } = getCurrentInstance()
|
| | |
|
| | | const onlineList = ref([])
|
| | | const loading = ref(true)
|
| | | const total = ref(0)
|
| | | const pageNum = ref(1)
|
| | | const pageSize = ref(10)
|
| | |
|
| | | const queryParams = ref({
|
| | | ipaddr: undefined,
|
| | | userName: undefined
|
| | | })
|
| | |
|
| | | /** æ¥è¯¢ç»å½æ¥å¿å表 */
|
| | | function getList() {
|
| | | loading.value = true
|
| | | initData(queryParams.value).then(response => {
|
| | | onlineList.value = response.rows
|
| | | total.value = response.total
|
| | | loading.value = false
|
| | | })
|
| | | }
|
| | |
|
| | | /** æç´¢æé®æä½ */
|
| | | function handleQuery() {
|
| | | pageNum.value = 1
|
| | | getList()
|
| | | }
|
| | |
|
| | | /** éç½®æé®æä½ */
|
| | | function resetQuery() {
|
| | | proxy.resetForm("queryRef")
|
| | | handleQuery()
|
| | | }
|
| | |
|
| | | /** 强éæé®æä½ */
|
| | | function handleForceLogout(row) {
|
| | | proxy.$modal.confirm('æ¯å¦ç¡®è®¤å¼ºéå称为"' + row.userName + '"çç¨æ·?').then(function () {
|
| | | return forceLogout(row.tokenId)
|
| | | }).then(() => {
|
| | | getList()
|
| | | proxy.$modal.msgSuccess("å 餿å")
|
| | | }).catch(() => {})
|
| | | }
|
| | |
|
| | | getList()
|
| | | </script>
|