平台管理模块接口调试完成

This commit is contained in:
BianLzhaoMin 2025-09-23 17:57:18 +08:00
parent 6b7a9803f4
commit f5fe721ec3
6 changed files with 260 additions and 109 deletions

View File

@ -1,60 +1,50 @@
import request from '@/utils/request'
// 登录方法
export function login(username, password, code, uuid) {
const data = {
username,
password,
code,
uuid
}
return request({
url: '/login',
headers: {
isToken: false,
repeatSubmit: false
},
method: 'post',
data: data
})
export function loginAPI(data) {
return request({
url: '/system/login',
method: 'post',
data,
})
}
// 注册方法
export function register(data) {
return request({
url: '/register',
headers: {
isToken: false
},
method: 'post',
data: data
})
return request({
url: '/register',
headers: {
isToken: false,
},
method: 'post',
data: data,
})
}
// 获取用户详细信息
export function getInfo() {
return request({
url: '/getInfo',
method: 'get'
})
return request({
url: '/getInfo',
method: 'get',
})
}
// 退出方法
export function logout() {
return request({
url: '/logout',
method: 'post'
})
return request({
url: '/logout',
method: 'post',
})
}
// 获取验证码
export function getCodeImg() {
return request({
url: '/captchaImage',
headers: {
isToken: false
},
method: 'get',
timeout: 20000
})
}
return request({
url: '/captchaImage',
headers: {
isToken: false,
},
method: 'get',
timeout: 20000,
})
}

37
src/api/platform/index.js Normal file
View File

@ -0,0 +1,37 @@
import request from '@/utils/request'
// 获取平台管理列表数据
export function getPlatformListAPI() {
return request({
url: '/platform/list',
method: 'POST',
data: {},
})
}
// 新增平台
export function addPlatformAPI(data) {
return request({
url: '/platform/addPlantForm',
method: 'POST',
data,
})
}
// 编辑平台
export function editPlatformAPI(data) {
return request({
url: '/platform/updatePlantForm',
method: 'POST',
data,
})
}
// 删除平台
export function delPlatformAPI(data) {
return request({
url: '/platform/delete',
method: 'POST',
data,
})
}

View File

@ -38,6 +38,7 @@ import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
import { removeToken } from '@/utils/auth'
export default {
components: {
@ -80,9 +81,11 @@ export default {
type: 'warning',
})
.then(() => {
this.$store.dispatch('LogOut').then(() => {
location.href = '/login'
})
// this.$store.dispatch('LogOut').then(() => {
// location.href = '/login'
// })
removeToken()
location.href = '/login'
})
.catch(() => {})
},

View File

@ -18,7 +18,7 @@
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px">记住密码</el-checkbox>
<el-checkbox v-model="rememberMe" style="margin: 0px 0px 25px 0px">记住密码</el-checkbox>
<el-form-item style="width: 100%">
<el-button
:loading="loading"
@ -37,6 +37,8 @@
<script>
import Cookies from 'js-cookie'
import { loginAPI } from '@/api/login'
import { setToken } from '@/utils/auth'
import { encrypt, decrypt } from '@/utils/jsencrypt'
export default {
@ -44,10 +46,10 @@ export default {
data() {
return {
title: process.env.VUE_APP_TITLE,
rememberMe: false,
loginForm: {
username: 'admin',
password: '000000',
rememberMe: false,
},
loginRules: {
username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
@ -76,31 +78,31 @@ export default {
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
}
this.rememberMe = rememberMe === undefined ? false : Boolean(rememberMe)
},
handleLogin() {
this.$router.push({ path: this.redirect || '/platform' }).catch(() => {})
// this.$refs.loginForm.validate((valid) => {
// if (valid) {
// this.loading = true
// if (this.loginForm.rememberMe) {
// Cookies.set('username', this.loginForm.username, { expires: 30 })
// Cookies.set('password', encrypt(this.loginForm.password), { expires: 30 })
// Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 })
// } else {
// Cookies.remove('username')
// Cookies.remove('password')
// Cookies.remove('rememberMe')
// }
// // token
// Cookies.set('Admin-Token', 'mock-token-' + Date.now())
// setTimeout(() => {
// this.loading = false
// this.$router.push({ path: this.redirect || '/platform' }).catch(() => {})
// }, 1000)
// }
// })
this.$refs.loginForm.validate(async (valid) => {
if (valid) {
this.loading = true
if (this.rememberMe) {
Cookies.set('username', this.loginForm.username, { expires: 30 })
Cookies.set('password', encrypt(this.loginForm.password), { expires: 30 })
Cookies.set('rememberMe', this.rememberMe, { expires: 30 })
} else {
Cookies.remove('username')
Cookies.remove('password')
Cookies.remove('rememberMe')
}
// token
const res = await loginAPI(this.loginForm)
setToken(res?.data)
if (res.code === 200) {
this.$router.push({ path: this.redirect || '/platform' }).catch(() => {})
}
}
})
},
},
}

View File

@ -11,8 +11,8 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="平台网址" prop="address">
<el-input v-model="platformForm.address" />
<el-form-item label="平台网址" prop="url">
<el-input v-model="platformForm.url" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -32,7 +32,7 @@
</h3>
<el-form
:key="item.id"
:key="item.sid"
:model="item"
label-width="120px"
class="account-form"
@ -42,8 +42,8 @@
>
<el-row>
<el-col :span="12">
<el-form-item label="登录账号" prop="loginAccount">
<el-input v-model="item.loginAccount" clearable placeholder="请输入登录账号" />
<el-form-item label="登录账号" prop="userName">
<el-input v-model="item.userName" clearable placeholder="请输入登录账号" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -62,13 +62,13 @@
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="登录密码" prop="loginPassword">
<el-input v-model="item.loginPassword" clearable placeholder="请输入登录密码" />
<el-form-item label="登录密码" prop="password">
<el-input v-model="item.password" clearable placeholder="请输入登录密码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="账号角色" prop="accountRole">
<el-input v-model="item.accountRole" clearable placeholder="请输入账号角色" />
<el-form-item label="账号角色" prop="roleName">
<el-input v-model="item.roleName" clearable placeholder="请输入账号角色" />
</el-form-item>
</el-col>
</el-row>
@ -77,30 +77,42 @@
</template>
<script>
import { addPlatformAPI, editPlatformAPI } from '@/api/platform/index'
export default {
name: 'AddAndEditForm',
props: {
editRow: {
type: Object,
default: () => {},
},
},
data() {
return {
platformForm: {},
platformForm: {
name: '',
url: '',
isLogin: '',
id: '',
},
accountForm: [
{
loginAccount: '',
loginPassword: '',
accountRole: '',
id: Date.now(), // id key
userName: '',
password: '',
roleName: '',
sid: Date.now(), // id key
},
],
//
platformFormRules: {
name: [{ required: true, message: '请输入平台名称', trigger: 'blur' }],
address: [{ required: true, message: '请输入平台网址', trigger: 'blur' }],
url: [{ required: true, message: '请输入平台网址', trigger: 'blur' }],
isLogin: [{ required: true, message: '请输入是否需要登录', trigger: 'blur' }],
},
accountFormRules: {
loginAccount: [{ required: true, message: '请输入登录账号', trigger: 'blur' }],
loginPassword: [{ required: true, message: '请输入登录密码', trigger: 'blur' }],
accountRole: [{ required: true, message: '请输入账号角色', trigger: 'blur' }],
userName: [{ required: true, message: '请输入登录账号', trigger: 'blur' }],
password: [{ required: true, message: '请输入登录密码', trigger: 'blur' }],
roleName: [{ required: true, message: '请输入账号角色', trigger: 'blur' }],
},
}
},
@ -126,9 +138,56 @@ export default {
return this.$refs[`accountFormRef${index}`][0].validate()
})
await Promise.all(promiseList)
//
const { name, url, isLogin, id } = this.platformForm
const params = {
name,
url,
isLogin,
list: this.accountForm.map((item) => {
return {
userName: item.userName,
password: item.password,
roleName: item.roleName,
}
}),
}
if (id) {
params.id = id
}
const API = id ? editPlatformAPI : addPlatformAPI
const res = await API(params)
if (res.code === 200) {
this.$modal.msgSuccess(id ? '编辑成功' : '新增成功')
this.$emit('addSuccess')
}
} catch (error) {}
},
},
watch: {
editRow: {
handler(newVal) {
if (Object.keys(newVal).length > 0) {
const { name, url, isLogin, id } = newVal
this.platformForm = { name, url, isLogin, id }
this.accountForm = newVal.list.map((item) => {
return {
...item,
sid: item.id,
}
})
}
},
deep: true,
immediate: true,
},
},
}
</script>

View File

@ -11,27 +11,57 @@
</el-form-item>
</el-form>
<el-table :data="tableData" style="width: 100%">
<el-table-column align="center" prop="name" label="平台名称" />
<el-table-column align="center" prop="description" label="平台地址" />
<el-table-column align="center" prop="status" label="是否需要登录" />
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="handleEdit(scope.row)"> 编辑</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
:total="total"
@pagination="getPlatformList"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
/>
<el-row :gutter="8">
<el-col :span="14">
<el-table :data="tableData" style="width: 100%" @row-click="handleRowClick">
<el-table-column align="center" prop="name" label="平台名称" />
<el-table-column align="center" show-overflow-tooltip prop="url" label="平台地址" />
<el-table-column align="center" label="是否需要登录">
<template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.isLogin === 1" type="success"></el-tag>
<el-tag size="mini" v-else type="warning"></el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
size="mini"
type="primary"
style="padding: 4px 6px"
@click.stop="handleEdit(scope.row)"
>
编辑
</el-button>
<el-button
size="mini"
type="danger"
style="padding: 4px 6px"
@click="handleDelete(scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
:total="total"
@pagination="getPlatformList"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
/>
</el-col>
<el-col :span="10">
<el-table :data="rightTableData" style="width: 100%">
<el-table-column align="center" prop="userName" label="账号名称" />
<el-table-column align="center" prop="password" label="登录密码" />
<el-table-column align="center" prop="roleName" label="角色" />
</el-table>
</el-col>
</el-row>
<DialogModal :dialogConfig="dialogConfig" @closeDialogOuter="handleCloseDialogOuter">
<template #outerContent>
<AddAndEditForm ref="addAndEditFormRef" />
<AddAndEditForm :editRow="editRow" ref="addAndEditFormRef" @addSuccess="onHandleAddSuccess" />
<el-row class="dialog-footer-btns">
<el-button size="mini" type="info" @click="onHandleCancel">取消</el-button>
<el-button size="mini" type="primary" @click="onHandleSave">保存</el-button>
@ -44,6 +74,8 @@
<script>
import AddAndEditForm from './components/addAndEditForm.vue'
import DialogModal from '@/components/DialogModel'
import { getPlatformListAPI, delPlatformAPI } from '@/api/platform/index'
export default {
name: 'Platform',
components: {
@ -54,6 +86,7 @@ export default {
return {
total: 0,
tableData: [],
rightTableData: [],
//
queryParams: {
name: '',
@ -65,21 +98,40 @@ export default {
outerVisible: false,
outerWidth: '70%',
},
editRow: {},
}
},
created() {
this.getPlatformList()
},
methods: {
handleEdit(row) {
console.log(row)
this.editRow = row
this.dialogConfig.outerVisible = true
},
handleDelete(row) {
console.log(row)
this.$modal
.confirm('确定删除该平台吗?')
.then(async () => {
const res = await delPlatformAPI({ id: row.id })
console.log(res, '删除平台结果')
if (res.code === 200) {
this.$modal.msgSuccess('删除平台成功')
this.getPlatformList()
}
})
.catch(() => {})
},
getPlatformList() {
console.log(this.queryParams)
async getPlatformList() {
const res = await getPlatformListAPI()
this.tableData = res?.data
this.total = res?.data?.length
this.rightTableData = res?.data[0].list
},
handleAdd() {
console.log('新增')
this.editRow = {}
this.dialogConfig.outerVisible = true
},
@ -94,9 +146,17 @@ export default {
//
onHandleSave() {
console.log('保存')
this.$refs.addAndEditFormRef.submitForm()
},
handleRowClick(row) {
this.rightTableData = row.list
},
//
onHandleAddSuccess() {
this.dialogConfig.outerVisible = false
this.getPlatformList()
},
},
}
</script>