接口对接

This commit is contained in:
Mrtangl 2022-04-13 17:38:53 +08:00
parent 3a613b5b23
commit ccefdde865
12 changed files with 196 additions and 163 deletions

View File

@ -1,7 +1,7 @@
import request from '@/utils/request'
export function apiFileCateAdd(params: any) {
return request.post('/file/addCate', params)
return request.post('/album/cateAdd', params)
}
export function apiFileCateEdit(params: { id: number; name: string }) {
@ -10,32 +10,32 @@ export function apiFileCateEdit(params: { id: number; name: string }) {
// 文件分类删除
export function apiFileCateDelete(params: { id: number }) {
return request.post('/file/delCate', params)
return request.post('/album/albumDel', params)
}
// 文件分类列表
export function apiFileCateLists(params: any) {
return request.get('/file/listCate', { params })
return request.get('/album/cateList', { params })
}
// 文件列表
export function apiFileList(params: any) {
return request.get('/file/lists', { params })
return request.get('/album/albumList', { params })
}
// 文件删除
export function apiFileDelete(params: { ids: any[] }) {
return request.post('/file/delete', params)
return request.post('/album/albumDel', params)
}
// 文件移动
export function apiFileMove(params: { ids: any[]; cid: number }) {
return request.post('/file/move', params)
return request.post('/album/albumMove', params)
}
// 文件重命名
export function apiFileRename(params: { id: number; name: string }) {
return request.post('/file/rename', params)
return request.post('/album/albumRename', params)
}
// 配置

View File

@ -24,25 +24,26 @@ export function apiAdminDetail(params: any) {
return request.get('/system/admin/detail', { params })
}
/* 角色 */
// 角色列表
export function apiRoleLists(params: any) {
return request.get('/system/role/lists', { params })
}
// 添加角色
export function apiRoleAdd(params: any) {
return request.post('/auth.role/add', { ...params })
return request.post('/system/role/add', { ...params })
}
// 编辑角色
export function apiRoleEdit(params: any) {
return request.post('/auth.role/edit', { ...params })
return request.post('/system/role/edit', { ...params })
}
// 删除角色
export function apiRoleDel(params: any) {
return request.post('/auth.role/delete', { ...params })
return request.post('/system/role/del', { ...params })
}
// 角色详情
export function apiRoleDetail(params: any) {
return request.get('/auth.role/detail', { params })
return request.get('/system/role/detail', { params })
}
// 角色权限菜单

View File

@ -2,11 +2,11 @@ import request from '@/utils/request'
// 获取备案信息
export function apiGetCopyright() {
return request.get('/setting.web.web_setting/getCopyright')
return request.get('/setting/copyright')
}
// 设置备案信息
export function apiSetCopyright(params: any) {
return request.post('/setting.web.web_setting/setCopyright', { ...params })
return request.post('/setting/copyright', { ...params })
}
// 获取网站信息
@ -15,7 +15,7 @@ export function apiGetWebsite() {
}
// 设置网站信息
export function apiSetWebsite(params: any) {
return request.post('/setting.web.web_setting/setWebsite', { ...params })
return request.post('/setting/website', { ...params })
}
// 获取政策协议
@ -29,7 +29,7 @@ export function apiSetProtocol(params: any) {
// 获取系统环境
export function apiSystemInfo() {
return request.get('/setting.system.system/info')
return request.get('/monitor/server')
}
/** S 在线客服 **/

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -5,26 +5,24 @@ import {
apiFileCateLists,
apiFileDelete,
apiFileList,
apiFileMove,
} from "@/api/app"
import { usePages } from "@/core/hooks/pages"
import { ElMessage } from "element-plus"
import { computed, inject, reactive, ref, Ref } from "vue"
apiFileMove
} from '@/api/app'
import { usePages } from '@/core/hooks/pages'
import { ElMessage } from 'element-plus'
import { computed, inject, reactive, ref, Ref } from 'vue'
// 左侧分组的钩子函数
export function useCate(typeValue: Ref<any>) {
// 分组列表
const cateLists: Ref<any[]> = ref([])
// 选中的分组id
const cateId = ref("")
const cateId = ref('')
// 添加分组
const handleAddCate = (val: string) => {
apiFileCateAdd({
type: typeValue.value,
pid: 0,
name: val,
name: val
}).then(() => {
getCateLists()
})
@ -33,7 +31,7 @@ export function useCate(typeValue: Ref<any>) {
const handleEditCate = (val: string, id: number) => {
apiFileCateEdit({
id,
name: val,
name: val
}).then(() => {
getCateLists()
})
@ -41,7 +39,7 @@ export function useCate(typeValue: Ref<any>) {
// 删除分组
const handleDeleteCate = (id: number) => {
apiFileCateDelete({
id,
id
}).then(() => {
getCateLists()
})
@ -51,17 +49,17 @@ export function useCate(typeValue: Ref<any>) {
return new Promise((resolve, reject) => {
apiFileCateLists({
type: typeValue.value,
page_type: 1,
page_type: 1
}).then((res: any) => {
const item: any[] = [
{
name: "全部",
id: "",
name: '全部',
id: ''
},
{
name: "未分组",
id: 0,
},
name: '未分组',
id: 0
}
]
cateLists.value = res?.lists
cateLists.value.unshift(...item)
@ -75,25 +73,23 @@ export function useCate(typeValue: Ref<any>) {
handleAddCate,
handleEditCate,
handleDeleteCate,
getCateLists,
getCateLists
}
}
// 处理文件的钩子函数
export function useFile(cateId: Ref<string>, type: Ref<any>, limit: Ref<number>) {
const moveId = ref(0)
const select: Ref<any[]> = ref([])
const fileParams = reactive({
name: "",
name: '',
type: type,
cid: cateId,
cid: cateId
})
const { pager, requestApi, resetPage } = usePages({
callback: apiFileList,
params: fileParams
})
const selectStatus = computed(
() => (id: number) => select.value.find((item: any) => item.id == id)
@ -108,8 +104,8 @@ export function useFile(cateId: Ref<string>, type: Ref<any>, limit: Ref<number>)
const batchFileDelete = (id?: number[]) => {
let ids = id ? id : select.value.map((item: any) => item.id)
apiFileDelete({
ids,
}).then((res) => {
ids
}).then(res => {
getFileList()
clearSelect()
})
@ -118,8 +114,8 @@ export function useFile(cateId: Ref<string>, type: Ref<any>, limit: Ref<number>)
let ids = select.value.map((item: any) => item.id)
apiFileMove({
ids,
cid: moveId.value,
}).then((res) => {
cid: moveId.value
}).then(res => {
moveId.value = 0
getFileList()
clearSelect()
@ -138,7 +134,7 @@ export function useFile(cateId: Ref<string>, type: Ref<any>, limit: Ref<number>)
select.value.push(item)
return
}
ElMessage.warning("已达到选择上限")
ElMessage.warning('已达到选择上限')
return
}
select.value.push(item)
@ -147,7 +143,7 @@ export function useFile(cateId: Ref<string>, type: Ref<any>, limit: Ref<number>)
select.value = []
}
const cancelSelete = (id: number) => {
select.value = select.value.filter((item) => item.id != id)
select.value = select.value.filter(item => item.id != id)
}
return {
moveId,

View File

@ -76,7 +76,7 @@ export default defineComponent({
setup(props, { emit }) {
const store = useStore()
const uploadRefs: Ref<typeof ElUpload | null> = ref(null)
const action = ref(`${import.meta.env.VITE_APP_BASE_URL}/adminapi/upload/${props.type}`)
const action = ref(`${import.meta.env.VITE_APP_BASE_URL}/api/upload/${props.type}`)
const headers = computed(() => ({
token: store.getters.token,
version: version

View File

@ -13,8 +13,8 @@
size="small"
>
<!-- 账号输入框 -->
<el-form-item label="账号:" prop="account">
<el-input v-model="formData.account" placeholder="请输入账号"></el-input>
<el-form-item label="账号:" prop="username">
<el-input v-model="formData.username" placeholder="请输入账号"></el-input>
</el-form-item>
<!-- 管理员头像 -->
<el-form-item label="头像:">
@ -23,13 +23,13 @@
</el-form-item>
<!-- 名称输入框 -->
<el-form-item label="名称:" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称"></el-input>
<el-form-item label="名称:" prop="nickname">
<el-input v-model="formData.nickname" placeholder="请输入名称"></el-input>
</el-form-item>
<!-- 角色选择框 -->
<el-form-item label="角色:" prop="role_id">
<el-select v-model="formData.role_id" placeholder="请选择角色">
<el-form-item label="角色:" prop="role">
<el-select v-model="formData.role" placeholder="请选择角色">
<el-option
v-for="(item, index) in roleList"
:key="index"
@ -59,13 +59,13 @@
<!-- 管理员状态 -->
<el-form-item label="管理员状态">
<el-switch v-model="formData.disable" :active-value="0" :inactive-value="1" />
<el-switch v-model="formData.isDisable" :active-value="0" :inactive-value="1" />
</el-form-item>
<!-- 多处登录 -->
<el-form-item label="支持多处登录">
<el-switch
v-model="formData.multipoint_login"
v-model="formData.isMultipoint"
:active-value="1"
:inactive-value="0"
/>
@ -100,31 +100,31 @@ export default defineComponent({
const { formData, rules } = toRefs(
reactive({
formData: {
account: '',
name: '',
role_id: '',
username: '',
nickname: '',
role: '',
avatar: '',
password: '',
password_confirm: '',
disable: 0,
multipoint_login: 0
isDisable: 0,
isMultipoint: 0
},
rules: {
account: [
username: [
{
required: true,
message: '请输入账号',
trigger: ['blur']
}
],
name: [
nickname: [
{
required: true,
message: '请输入名称',
trigger: ['blur']
}
],
role_id: [
role: [
{
required: true,
message: '请选择角色',

View File

@ -18,9 +18,9 @@
<el-input v-model="formData.name" placeholder="请输入名称"></el-input>
</el-form-item>
<!-- 备注 -->
<el-form-item label="备注" prop="desc">
<el-form-item label="备注" prop="remark">
<el-input
v-model="formData.desc"
v-model="formData.remark"
placeholder="请输入备注"
type="textarea"
:autosize="{ minRows: 4, maxRows: 6 }"
@ -85,7 +85,7 @@ export default defineComponent({
reactive({
formData: {
name: '', //
desc: '', //
remark: '', //
auth_keys: [] //
},

View File

@ -1,54 +1,67 @@
<!-- 系统环境 -->
<template>
<div class="system-environment">
<el-card shadow="never">
<div class="flex">
<el-card class="flex-1 m-r-15" shadow="never">
<div>CPU</div>
<div class="m-t-15">
<el-table :data="info.cpu" size="medium">
<el-table-column prop="cpuNum" label="核心数"> </el-table-column>
<el-table-column prop="value" label="值"> </el-table-column>
</el-table>
</div>
</el-card>
<el-card class="flex-1" shadow="never">
<div>内存</div>
<div class="m-t-15">
<el-table :data="info.mem" size="medium">
<el-table-column prop="param" label="属性"> </el-table-column>
<el-table-column prop="value" label="内存"> </el-table-column>
<el-table-column prop="value" label="JVM"> </el-table-column>
</el-table>
</div>
</el-card>
</div>
<el-card shadow="never" class="m-t-15">
<div>服务器信息</div>
<div class="m-t-15">
<el-table :data="info.server" size="medium">
<el-table-column prop="param" label="参数"> </el-table-column>
<el-table-column prop="value" label="值"> </el-table-column>
<el-table-column prop="computerName" label="服务器名称"> </el-table-column>
<el-table-column prop="computerIp" label="服务器IP"> </el-table-column>
<el-table-column prop="osName" label="操作系统"> </el-table-column>
<el-table-column prop="osArch" label="系统架构"> </el-table-column>
</el-table>
</div>
</el-card>
<el-card shadow="never" class="m-t-15">
<div>PHP环境要求</div>
<div>Java虚拟机信息</div>
<div class="m-t-15">
<el-table :data="info.env" size="medium">
<el-table-column prop="option" label="选项"> </el-table-column>
<el-table-column prop="require" label="要求"> </el-table-column>
<el-table-column prop="status" label="状态">
<template #default="scope">
<el-icon v-show="scope.row.status" color="#67C23A">
<Select />
</el-icon>
<el-icon v-show="!scope.row.status" color="#DB2828">
<close-bold />
</el-icon>
</template>
</el-table-column>
<el-table-column prop="remark" label="说明及帮助"> </el-table-column>
<el-table :data="info.server" size="medium">
<el-table-column prop="option" label="Java名称"> </el-table-column>
<el-table-column prop="require" label="启动时间"> </el-table-column>
<el-table-column prop="remark" label="安装路径"> </el-table-column>
<el-table-column prop="remark" label="项目路径"> </el-table-column>
<el-table-column prop="remark" label="运行参数"> </el-table-column>
<el-table-column prop="remark" label="Java版本"> </el-table-column>
<el-table-column prop="remark" label="运行时长"> </el-table-column>
</el-table>
</div>
</el-card>
<el-card shadow="never" class="m-t-15">
<div>目录权限</div>
<div>硬盘状态</div>
<div class="m-t-15">
<el-table :data="info.auth" size="medium">
<el-table-column prop="dir" label="选项"> </el-table-column>
<el-table-column prop="require" label="要求"> </el-table-column>
<el-table-column prop="status" label="状态">
<template #default="scope">
<el-icon v-show="scope.row.status" color="#67C23A">
<Select />
</el-icon>
<el-icon v-show="!scope.row.status" color="#DB2828">
<close-bold />
</el-icon>
</template>
</el-table-column>
<el-table-column prop="remark" label="说明及帮助"> </el-table-column>
<el-table :data="info.disk" size="medium">
<el-table-column prop="dirName" label="盘符路径"> </el-table-column>
<el-table-column prop="sysTypeName" label="文件系统"> </el-table-column>
<el-table-column prop="typeName" label="盘符类型"> </el-table-column>
<el-table-column prop="total" label="总大小"> </el-table-column>
<el-table-column prop="free" label="可以大小"> </el-table-column>
<el-table-column prop="used" label="已用大小"> </el-table-column>
<el-table-column prop="usage" label="已用百分比"> </el-table-column>
</el-table>
</div>
</el-card>
@ -61,17 +74,20 @@ import { apiSystemInfo } from '@/api/setting'
export default defineComponent({
setup() {
const info = reactive({
cpu: [], // cpu
mem: [], //
server: [], //
env: [], // PHP
auth: [] //
auth: [], //
disk: [] //
})
const getSystemInfo = () => {
apiSystemInfo().then((res: any) => {
console.log('res', res)
info.cpu = res.cpu
info.server = res.server
info.env = res.env
info.auth = res.auth
info.disk = res.disk
})
}

View File

@ -11,23 +11,20 @@
size="small"
>
<!-- 版权信息输入框 -->
<el-form-item label="版权信息" prop="info">
<el-input v-model="formData.info" placeholder="请输入版权信息"></el-input>
<el-form-item label="版权信息" prop="privilege">
<el-input v-model="formData.privilege" placeholder="请输入版权信息"></el-input>
<div class="muted xs m-r-16">例如填写Copyright © 2019-2020 公司名称</div>
</el-form-item>
<!-- ICP备案号输入框 -->
<el-form-item label="ICP备案号" prop="icp_number">
<el-input
v-model="formData.icp_number"
placeholder="请输入ICP备案号"
></el-input>
<el-form-item label="ICP备案号" prop="icpNumber">
<el-input v-model="formData.icpNumber" placeholder="请输入ICP备案号"></el-input>
</el-form-item>
<!-- ICP备案号链接输入框 -->
<el-form-item label="ICP备案号链接" prop="icp_link">
<el-form-item label="ICP备案号链接" prop="icpLink">
<el-input
v-model="formData.icp_link"
v-model="formData.icpLink"
placeholder="请输入ICP备案号链接"
></el-input>
<div class="muted xs m-r-16">
@ -36,17 +33,14 @@
</el-form-item>
<!--公安备案号输入框 -->
<el-form-item label="公安备案号" prop="public_number">
<el-input
v-model="formData.public_number"
placeholder="请输入公安备案号"
></el-input>
<el-form-item label="公安备案号" prop="gaNumber">
<el-input v-model="formData.gaNumber" placeholder="请输入公安备案号"></el-input>
</el-form-item>
<!-- 公安备案号链接输入框 -->
<el-form-item label="公安备案号链接" prop="public_link">
<el-form-item label="公安备案号链接" prop="gaLink">
<el-input
v-model="formData.public_link"
v-model="formData.gaLink"
placeholder="请输入公安备案号链接"
></el-input>
<div class="muted xs m-r-16">
@ -73,16 +67,16 @@ export default defineComponent({
setup() {
//
const formData = reactive({
info: '', //
icp_number: '', // icp
icp_link: '', // icp
public_number: '', //
public_link: '' //
privilege: '', //
icpNumber: '', // icp
icpLink: '', // icp
gaNumber: '', //
gaLink: '' //
})
//
const rules = {
// info: [
// privilege: [
// {
// required: true,
// message: '',
@ -95,22 +89,22 @@ export default defineComponent({
const getCopyright = () => {
apiGetCopyright().then((res: any) => {
console.log('res', res)
formData.info = res.info
formData.icp_number = res.icp_number
formData.icp_link = res.icp_link
formData.public_number = res.public_number
formData.public_link = res.public_link
formData.privilege = res.privilege
formData.icpNumber = res.icpNumber
formData.icpLink = res.icpLink
formData.gaNumber = res.gaNumber
formData.gaLink = res.gaLink
})
}
//
const setCopyright = () => {
apiSetCopyright({
info: formData.info,
icp_number: formData.icp_number,
icp_link: formData.icp_link,
public_number: formData.public_number,
public_link: formData.public_link
privilege: formData.privilege,
icpNumber: formData.icpNumber,
icpLink: formData.icpLink,
gaNumber: formData.gaNumber,
gaLink: formData.gaLink
})
.then((res: any) => {
console.log('res', res)

View File

@ -18,8 +18,8 @@
show-word-limit
></el-input>
</el-form-item>
<el-form-item label="网站图标" prop="web_favicon" required>
<material-select v-model="formData.web_favicon" :limit="1" />
<el-form-item label="网站图标" prop="favicon" required>
<material-select v-model="formData.favicon" :limit="1" />
<div class="flex">
<div class="muted xs m-r-16">
建议尺寸100*100像素支持jpgjpegpng格式
@ -32,8 +32,8 @@
</el-popover>
</div>
</el-form-item>
<el-form-item label="网站LOGO" prop="web_logo" required>
<material-select v-model="formData.web_logo" :limit="1" />
<el-form-item label="网站LOGO" prop="logo" required>
<material-select v-model="formData.logo" :limit="1" />
<div class="flex">
<div class="muted xs m-r-16">
建议尺寸100*100像素支持jpgjpegpng格式
@ -46,8 +46,8 @@
</el-popover>
</div>
</el-form-item>
<el-form-item label="登录页广告图" prop="login_image" required>
<material-select v-model="formData.login_image" :limit="1" />
<el-form-item label="登录页广告图" prop="backdrop" required>
<material-select v-model="formData.backdrop" :limit="1" />
<div class="flex">
<div class="muted xs m-r-16">
建议尺寸100*100像素支持jpgjpegpng格式
@ -86,9 +86,9 @@ export default defineComponent({
//
const formData = reactive({
name: '', //
web_favicon: '', //
web_logo: '', // logo
login_image: '' // 广
favicon: '', //
logo: '', // logo
backdrop: '' // 广
})
//
@ -107,9 +107,9 @@ export default defineComponent({
apiGetWebsite().then((res: any) => {
console.log('res', res)
formData.name = res.name
formData.web_favicon = res.web_favicon
formData.web_logo = res.web_logo
formData.login_image = res.login_image
formData.favicon = res.favicon
formData.logo = res.logo
formData.backdrop = res.backdrop
})
}
@ -123,9 +123,9 @@ export default defineComponent({
console.log('fasdfasd')
apiSetWebsite({
name: formData.name,
web_favicon: formData.web_favicon,
web_logo: formData.web_logo,
login_image: formData.login_image
favicon: formData.favicon,
logo: formData.logo,
backdrop: formData.backdrop
})
.then((res: any) => {
console.log('res', res)

View File

@ -24,25 +24,23 @@
<div class="flex-1">
<div class="lighter m-b-10">访问量</div>
<div class="f-s-32 m-b-10">
{{ workbenchData.today.today_visitor }}
{{ workbenchData.today.todayVisits }}
</div>
<div class="lighter">总访问量{{ workbenchData.today.total_visitor }}</div>
<div class="lighter">总访问量{{ workbenchData.today.totalVisits }}</div>
</div>
<div class="flex-1">
<div class="lighter m-b-10">销售额</div>
<div class="f-s-32 m-b-10">
{{ workbenchData.today.today_sales }}
{{ workbenchData.today.todaySales }}
</div>
<div class="lighter">总销售额{{ workbenchData.today.total_sales }}</div>
<div class="lighter">总销售额{{ workbenchData.today.totalSales }}</div>
</div>
<div class="flex-1">
<div class="lighter m-b-10">新增用户</div>
<div class="f-s-32 m-b-10">
{{ workbenchData.today.today_new_user }}
</div>
<div class="lighter">
总访用户{{ workbenchData.today.total_new_user }}
{{ workbenchData.today.todayUsers }}
</div>
<div class="lighter">总访用户{{ workbenchData.today.totalUsers }}</div>
</div>
</div>
</el-card>
@ -53,18 +51,46 @@
<span class="card-title">常用功能</span>
</template>
<div class="nav-lists">
<div
<!-- <div
v-for="item in workbenchData.menu"
:key="item"
class="nav-item flex-col m-t-10"
>
<router-link :to="item.url">
> -->
<router-link to="">
<div class="nav-item flex-col m-t-10">
<view class="flex flex-center">
<el-image style="width: 48px; height: 48px" :src="item?.image"></el-image>
<img
style="width: 48px; height: 48px"
src="@/assets/images/avatar.png"
/>
</view>
<div class="m-t-8 normal text-center">{{ item.name }}</div>
</router-link>
</div>
<div class="m-t-8 normal text-center">工作台</div>
</div>
</router-link>
<router-link to="/setting/website/information">
<div class="nav-item flex-col m-t-10">
<view class="flex flex-center">
<img
style="width: 48px; height: 48px"
src="@/assets/images/avatar.png"
/>
</view>
<div class="m-t-8 normal text-center">网站信息</div>
</div>
</router-link>
<router-link to="/setting/website/environment">
<div class="nav-item flex-col m-t-10">
<view class="flex flex-center">
<img
style="width: 48px; height: 48px"
src="@/assets/images/avatar.png"
/>
</view>
<div class="m-t-8 normal text-center">系统环境</div>
</div>
</router-link>
</div>
</el-card>
</div>
@ -114,8 +140,8 @@
</div>
</template>
</el-table-column>
<el-table-column prop="name" label="文章名称"> </el-table-column>
<el-table-column prop="read" label="阅读量"> </el-table-column>
<el-table-column prop="title" label="文章名称"> </el-table-column>
<el-table-column prop="visit" label="阅读量"> </el-table-column>
</el-table>
</div>
</el-card>