2024-01-23 17:24:37 +08:00

427 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<style scoped>
.addinput{
//display: flex;
//flex-direction: column;
//justify-content: center;
//align-content: center;
}
.addinput>div>input{
/*width:300px ;*/
/*height: 30px;*/
/*border-radius: 5px;*/
//margin: 0 auto;
//outline-color: #94beae;
}
</style>
<template>
<div style="width: 87vw;height:90vh;position: relative;margin: 0;padding: 0">
<div style="padding:20px 10px;">
<Space>
<span>项目名称</span>
<Input v-model="searchData.username" prefix="ios-contact" placeholder="projectName" clearable style="width: 200px" />
<span>接口地址</span>
<Input v-model="searchData.phone" placeholder="Enter address" style="width: auto" />
<Button @click="searchUser" type="primary" shape="circle" icon="ios-search">查询</Button>
<Button type="primary" ghost @click="showAddDialog">新增</Button>
</Space>
</div>
<!-- 表格内容-->
<div style="width: 87vw; height: 78vh; margin: 0; padding: 0">
<Table border :loading="loadingTable" ref="selection" :columns="columns" :data="states.data" style="height: 72vh ;text-align: center;" :row-class-name="setRowClassName" >
<template #status="{ row, index }">
<Switch size="large" v-model="states.data[index].accountNoLocked" :before-change="handleBeforeSwitchChange">
<template #open>
<span>开启</span>
</template>
<template #close>
<span>关闭</span>
</template>
</Switch>
</template>
<template #action="{ row, index }">
<Button type="primary" size="small" style="margin-right: 5px" @click="showEditDialog(index, row)">详情</Button>
<Button type="error" size="small" @click="showDeleteDialog(index, row)">删除</Button>
</template>
</Table>
<div style="height: 6vh ;text-align: left;padding-top: 20px">
<Page :total="states.data.length" size="small" show-elevator show-sizer />
</div>
</div>
<!-- 对话框-->
<div>
<Modal
v-model="editDialog"
title="编辑"
@on-ok="editOk"
@on-cancel="editCancel">
<div style="">
<div style="margin-bottom: 10px">
<span>
项目名<Input v-model="updateData.username" placeholder="Enter something..." style="width: 180px" />
</span>
<span>
状态
<RadioGroup v-model="sex">
<Radio label="正常"></Radio>
<Radio label="停用"></Radio>
</RadioGroup>
</span>
<span style="margin-left: 20px;">
<div style="margin-bottom: 10px">接口地址<Input v-model="updateData.email" placeholder="Enter something..." style="width: 435px" /></div>
</span>
</div>
<div style="margin-bottom: 10px">
<!-- <span style="margin-left: 98px">-->
<!-- 角色-->
<!-- <Select v-model="roleSingle" style="width:200px">-->
<!-- <Option v-for="item in cityList" :value="item.value" :key="item.value">{{ item.label }}</Option>-->
<!-- </Select>-->
<!-- </span>-->
</div>
<div style="margin-bottom: 10px">响应状态<Input v-model="updateData.email" placeholder="Enter something..." style="width: 435px" /></div>
<div style="margin-bottom: 10px">响应耗时<Input v-model="updateData.address" placeholder="Enter something..." style="width: 435px" /></div>
<div style="margin-bottom: 10px">发起时间<Input v-model="updateData.address" placeholder="Enter something..." style="width: 435px" /></div>
<div style="margin-bottom: 10px">响应时间<Input v-model="updateData.address" placeholder="Enter something..." style="width: 435px" /></div>
<div style="margin-bottom: 10px">日志详情<Input v-model="updateData.description" type="textarea" placeholder="Enter something..." style="width: 435px" /></div>
</div>
</Modal>
<Modal
v-model="deleteDialog"
title="删除"
@on-ok="deleteOk"
@on-cancel="deleteCancel">
<p>请问是否要删除xxx数据</p>
</Modal>
<Modal v-model="addDialog" title="新增日志信息" @on-ok="addOk" @on-cancel="addCancel" >
<div>
<div style="margin-left: 15px">接口地址<Input v-model="addData.address" placeholder="Enter something..." style="width: 250px; margin-bottom: 10px" /></div>
<div style="margin-left: 15px">响应状态<Input v-model="addData.password" placeholder="Enter something..." style="width: 250px; margin-bottom: 10px" type="password"/></div>
<div style="margin-left: 15px">响应耗时<Input v-model="addData.address" placeholder="Enter something..." style="width: 250px; margin-bottom: 10px" /></div>
<div style="margin-left: 15px">发起时间<Input v-model="addData.phone" placeholder="Enter something..." style="width: 250px; margin-bottom: 10px" /></div>
<div style="margin-left: 15px">响应时间<Input v-model="addData.email" placeholder="Enter something..." style="width: 250px; margin-bottom: 10px" /></div>
<!-- <div style="margin-left: 15px"> <RadioGroup v-model="sex" style="margin-bottom: 10px">-->
<!-- <Radio label='男'></Radio>-->
<!-- <Radio label='女'></Radio>-->
<!-- </RadioGroup></div>-->
<div style="margin-left: 15px">项目名称<Input v-model="addData.age" placeholder="Enter something..." style="width: 250px" type="number" /></div>
</div>
</Modal>
</div>
</div>
</template>
<script setup>
import {Page, Radio, RadioGroup, Space, Switch} from "view-ui-plus";
import requests from "../../public/request.js"
import {reactive, ref} from "vue";
import message from "view-ui-plus/src/components/message/index.js";
import {onMounted, onBeforeUpdate} from "vue";
import modal from "view-ui-plus/src/components/modal/index.js";
const currentPage = ref(1) // 当前页码
const pageSize = ref(10) // 每页显示的数据条数
const addDialog = ref(false)
const deleteDialog = ref(false)
const editDialog = ref(false)
const token = window.localStorage.getItem('token')
const AllUser = reactive({
page:1,
limit: 10,
search: null,
role: null
})
const columns = reactive( [
{
type: "selection",
width: 60,
align: "center"
},
{
title: "接口地址",
key: "username",
align: "center"
},
{
title: "响应状态",
key: "jobId",
width: 150,
align: "center"
},
{
title: "响应耗时",
key: "phone",
width: 150,
align: "center"
},
{
title: "发起时间",
key: "email",
align: "center"
},
{
title: "响应时间",
key: "email",
align: "center"
},
{
title: "项目名称",
key: "",
align: "center"
},
{
title: "状态",
slot: "status",
width: 100,
align: "center",
},
{
title: "操作",
slot: "action",
width: 150,
align: "center"
}
])
const states = reactive({
data:[]
})
const loadingTable = ref(true)
const sex = ref('男')
const roleSingle = ref(1)
const updateData = reactive({
id: 0,
username: '',
address: '',
phone: '',
email: '',
age: '',
signature: '',
sex: '',
avatar: '',
nickname: '',
description: '',
enabled: true,
isExpired: false,
passwordExpired: false,
recommend: false,
isLocked: false
})
const cityList= reactive([
{
value: 1,
label: '管理员'
},
{
value: 2,
label: '老师'
},
{
value: 3,
label: '学生'
}
])
const userLock = reactive({
id: -1,
isLock: 1
})
/**
* 配置代码
*/
message.config({
background: true
})
function setRowClassName(row, index) {
return 'custom-row';
}
onMounted(() => {
getAll()
})
/**
* 方法函数
*/
function getAll() {
requests.userAllCurrent(AllUser,token).then((res)=>{
console.log(res)
// states.data = res.data.data
// console.log(res.data.data)
loadingTable.value = false
for (let i = 0; i < res.data.data.length; i++) {
states.data[i] = res.data.data[i].user
}
console.log("getAll:",states.data)
})
}
function handleBeforeSwitchChange(index, row) {
return new Promise((resolve) => {
this.$Modal.confirm({
title: '切换确认',
content: '您确认要切换开关状态吗?',
onOk: () => {
resolve();
message.success('切换成功')
}
})
})
}
function handlePageChange(newPage) {
this.currentPage = newPage; // 更新当前页码
}
const addData = reactive({
username: '',
password: '',
address: '',
phone: '',
email: '',
sex: 1,
age: ''
})
function showAddDialog(){
addDialog.value = true
}
function addOk () {
if (sex.value === '男') {
addData.sex = 1
}else {
addData.sex = 0
}
requests.userAdd(addData, token).then((res)=>{
if (res.data.code===200) {
message.success('新增成功')
getAll()
}
else {
message.error('新增失败')
}
})
}
function addCancel () {
message.info('取消新增')
}
const deleteId = ref(0)
function showDeleteDialog(index, row){
deleteDialog.value = true
deleteId.value = row.id
}
function deleteOk(){
deleteDialog.value = false;
console.log(deleteId.value)
requests.userDelete(deleteId.value, token).then((res)=>{
console.log("deleteResult:",res)
if (res.data.code === 200) {
message.success('删除成功')
}else {
message.error('删除失败')
}
})
}
function deleteCancel(){
deleteDialog.value = false;
message.info('取消删除')
}
function showEditDialog(index, row){
editDialog.value = true
updateData.id = row.id
updateData.username = row.username
updateData.address = row.address
updateData.phone = row.phone
updateData.email = row.email
updateData.age = row.age
updateData.signature = row.signature
updateData.sex = row.sex
updateData.avatar = row.avatar
updateData.nickname = row.nickname
updateData.description = row.description
if (row.sex === 1) {
sex.value = '男'
}else {
sex.value = '女'
}
}
function editOk(){
loadingTable.value = true
editDialog.value = false;
requests.userEdit(updateData,token).then((res)=>{
console.log("editResult:",res)
console.log("updateData:",updateData)
if (res.data.code === 200) {
getAll()
message.success('修改成功')
}
else {
loadingTable.value = false
message.error('修改失败')
}
})
}
function editCancel(){
editDialog.value = false;
}
const searchData = reactive({
username: '',
phone: ''
})
function searchUser(){
loadingTable.value = true
if (searchData.username === '' && searchData.phone === '') {
getAll()
}
else {
requests.userCurrent(searchData,token).then((res)=>{
loadingTable.value = false
console.log("searchResult:",res)
if (res.data.code === 200) {
states.data = []
states.data[0] = res.data.data.user
message.success('查询成功')
console.log(loadingTable.value)
}
else {
message.error(res.data.message)
}
})
}
}
</script>