Initial commit

This commit is contained in:
南宁网宿科技
2023-06-03 23:57:39 +08:00
commit 13bed2bafb
1017 changed files with 175796 additions and 0 deletions

View File

@@ -0,0 +1 @@
{"code":0,"data":[{"name":"软妹子","value":23},{"name":"汪星人","value":23},{"name":"长腿欧巴","value":23},{"name":"萝莉","value":22},{"name":"辣~","value":22},{"name":"K歌","value":22},{"name":"大长腿","value":21},{"name":"川妹子","value":21},{"name":"女神","value":21},{"name":"米粉","value":20},{"name":"专注设计","value":20},{"name":"逛街","value":20},{"name":"黑长直","value":20},{"name":"海纳百川","value":19},{"name":"萌萌哒","value":19},{"name":"坚持","value":19},{"name":"话唠","value":19},{"name":"果粉","value":18},{"name":"喵星人","value":18},{"name":"花粉","value":18},{"name":"衬衫控","value":18},{"name":"宅男","value":17},{"name":"小清新","value":17},{"name":"眼镜男","value":17},{"name":"琼瑶","value":17},{"name":"穷游党","value":16},{"name":"铲屎官","value":16},{"name":"正太","value":16},{"name":"中二病","value":16},{"name":"夜猫子","value":15},{"name":"逗比","value":15},{"name":"腹黑","value":15},{"name":"吃鸡","value":15},{"name":"为了联盟","value":14},{"name":"背包客","value":14},{"name":"民谣","value":14},{"name":"为了部落","value":14},{"name":"懒癌患者","value":13},{"name":"追剧","value":13},{"name":"IT民工","value":13},{"name":"CNB成员","value":13},{"name":"选择困难","value":12},{"name":"锤粉","value":12},{"name":"欧皇","value":12},{"name":"仙气十足","value":12}]}

View File

@@ -0,0 +1 @@
{"code":0,"data":[{"date":"2020-06-12","value":7},{"date":"2020-06-13","value":5},{"date":"2020-06-14","value":4},{"date":"2020-06-15","value":2},{"date":"2020-06-16","value":4},{"date":"2020-06-17","value":7},{"date":"2020-06-18","value":5},{"date":"2020-06-19","value":6},{"date":"2020-06-20","value":5},{"date":"2020-06-21","value":9},{"date":"2020-06-22","value":6},{"date":"2020-06-23","value":3},{"date":"2020-06-24","value":1},{"date":"2020-06-25","value":5},{"date":"2020-06-26","value":3},{"date":"2020-06-27","value":6},{"date":"2020-06-18","value":5}]}

View File

@@ -0,0 +1 @@
{"code":0,"data":{"list1":[{"month":"1月","value":816},{"month":"2月","value":542},{"month":"3月","value":914},{"month":"4月","value":781},{"month":"5月","value":355},{"month":"6月","value":796},{"month":"7月","value":714},{"month":"8月","value":1195},{"month":"9月","value":1055},{"month":"10月","value":271},{"month":"11月","value":384},{"month":"12月","value":1098}],"list2":[{"month":"1月","value":1098},{"month":"2月","value":384},{"month":"3月","value":271},{"month":"4月","value":1055},{"month":"5月","value":1195},{"month":"6月","value":714},{"month":"7月","value":796},{"month":"8月","value":355},{"month":"9月","value":781},{"month":"10月","value":914},{"month":"11月","value":542},{"month":"12月","value":816}]}}

View File

@@ -0,0 +1 @@
{"code":0,"data":[{"time":"16:00","visits":15,"views":45},{"time":"16:05","visits":39,"views":169},{"time":"16:10","visits":152,"views":400},{"time":"16:15","visits":94,"views":285},{"time":"16:20","visits":102,"views":316},{"time":"16:25","visits":86,"views":148},{"time":"16:30","visits":39,"views":150},{"time":"16:35","visits":38,"views":234},{"time":"16:40","visits":95,"views":158},{"time":"16:45","visits":30,"views":100},{"time":"16:50","visits":86,"views":266}]}

View File

@@ -0,0 +1,56 @@
import request from '@/utils/request';
import type { ApiResult } from '@/api';
import type { PayNumData, SaleroomResult, VisitData, CloudData } from './model';
/**
* 获取支付笔数数据
*/
export async function getPayNumList() {
const res = await request.get<ApiResult<PayNumData[]>>(
'https://oa.gxwebsoft.com/20230508/analysis-pay-num.json'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取销售量数据
*/
export async function getSaleroomList() {
const res = await request.get<ApiResult<SaleroomResult>>(
'https://oa.gxwebsoft.com/20230508/analysis-saleroom.json'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取最近 1 小时访问情况数据
* @returns {Promise<Object>}
*/
export async function getVisitHourList() {
const res = await request.get<ApiResult<VisitData[]>>(
'https://oa.gxwebsoft.com/20230508/analysis-visits.json'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取词云数据
*/
export async function getWordCloudList() {
const res = await request.get<ApiResult<CloudData[]>>(
'https://oa.gxwebsoft.com/20230508/analysis-hot-search.json'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -0,0 +1,46 @@
/**
* 支付笔数数据格式
*/
export interface PayNumData {
// 日期
date?: string;
// 支付笔数
value?: number;
}
/**
* 销售量数据格式
*/
export interface SaleroomData {
// 月份
month?: string;
// 销售量
value?: number;
}
export interface SaleroomResult {
list1: SaleroomData[];
list2: SaleroomData[];
}
/**
* 访问情况数据格式
*/
export interface VisitData {
// 时间
time?: string;
// 访问量
visits?: number;
// 浏览量
views?: number;
}
/**
* 词云数据格式
*/
export interface CloudData {
// 标题
name: string;
// 数量
value: number;
}

View File

@@ -0,0 +1,114 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api';
import type { App, AppParam } from './model';
import { Menu } from '@/api/system/menu/model';
/**
* 分页查询应用
*/
export async function pageApp(params: AppParam) {
const res = await request.get<ApiResult<PageResult<App>>>('/oa/app/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 查询应用列表
*/
export async function listApp(params?: AppParam) {
const res = await request.get<ApiResult<App[]>>('/oa/app', {
params
});
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 添加应用
*/
export async function addApp(data: App) {
const res = await request.post<ApiResult<unknown>>('/oa/app', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 修改应用
*/
export async function updateApp(data: App) {
const res = await request.put<ApiResult<unknown>>('/oa/app', data);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 删除应用
*/
export async function removeApp(id?: number) {
const res = await request.delete<ApiResult<unknown>>('/oa/app/' + id);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 批量删除应用
*/
export async function removeBatchApp(data: (number | undefined)[]) {
const res = await request.delete<ApiResult<unknown>>('/oa/app/batch', {
data
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 检查IP是否存在
*/
export async function checkExistence(
field: string,
value: string,
id?: number
) {
const res = await request.get<ApiResult<unknown>>('/oa/app/existence', {
params: { field, value, id }
});
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
// 添加菜单
export async function saveMenu(data: App) {
const res = await request.post<ApiResult<unknown>>('/oa/app/saveMenu', data);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
// 添加菜单按钮
export async function saveAuthority(data: Menu[]) {
const res = await request.post<ApiResult<unknown>>(
'/oa/app/saveAuthority',
data
);
if (res.data.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -0,0 +1,97 @@
import type { PageParam } from '@/api';
/**
* 应用
*/
export interface App {
// 应用id
appId?: number;
// 应用名称
appName?: string;
// 上级id, 0是顶级
parentId?: number;
// 应用编号
appCode?: string;
// 应用图标
appIcon?: string;
// 应用类型
appType?: string;
// 菜单类型
menuType?: number;
// 应用地址
appUrl?: string;
// 下载地址
downUrl?: string;
// 应用包名
packageName?: string;
// 点击次数
clicks?: string;
// 安装次数
installs?: string;
// 应用介绍
content?: string;
// 开发者(个人)
developer?: string;
// 软件定价
price?: string;
// 评分
score?: string;
// 星级
star?: string;
// 菜单组件地址
component?: string;
// 菜单路由地址
path?: string;
// 权限标识
authority?: string;
// 打开位置
target?: string;
// 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)
hide?: number;
// 菜单侧栏选中的path
active?: string;
// 其它路由元信息
meta?: string;
// 版本
edition?: string;
// 版本号
version?: string;
// 是否已安装
isUse?: number;
// 排序
sortNumber?: number;
// 备注
comments?: string;
// 创建时间
createTime?: string;
// 状态
status?: number;
// 发布者
userId?: any;
// 发布者昵称
nickname?: string;
// 子菜单
children?: App[];
// 权限树回显选中状态, 0未选中, 1选中
checked?: boolean;
//
key?: number;
//
value?: number;
//
parentIds?: number[];
//
openType?: number;
}
/**
* 应用搜索条件
*/
export interface AppParam extends PageParam {
appName?: string;
appCode?: string;
developer?: string;
parentId?: number;
// 商户编号
merchantCode?: string;
}

View File

@@ -0,0 +1,44 @@
import request from '@/utils/request';
import type { ApiResult } from '@/api';
import type { UserCount, BrowserCount } from './model';
const BASE_URL = import.meta.env.BASE_URL;
/**
* 获取中国地图geo数据
*/
export async function getChinaMapData() {
const res = await request.get<any>(
BASE_URL + 'json/china-provinces.geo.json',
{ baseURL: '' }
);
if (res.data) {
return res.data;
}
return Promise.reject(new Error('获取地图数据失败'));
}
/**
* 获取用户分布数据
*/
export async function getUserCountList() {
const res = await request.get<ApiResult<UserCount[]>>(
'https://cdn.eleadmin.com/20200610/monitor-user-count.json'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 获取用户浏览器分布数据
*/
export async function getBrowserCountList() {
const res = await request.get<ApiResult<BrowserCount[]>>(
'https://cdn.eleadmin.com/20200610/monitor-browser-count.json'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}

View File

@@ -0,0 +1,21 @@
/**
* 用户分布数据格式
*/
export interface UserCount {
// 省份
name: string;
// 用户数量
value: number;
// 百分比
percent?: number;
}
/**
* 浏览器分布数据格式
*/
export interface BrowserCount {
// 浏览器
name: string;
// 用户数量
value: number;
}