This commit is contained in:
2025-10-17 10:31:13 +08:00
commit e6e86f2ce0
1043 changed files with 1031839 additions and 0 deletions

96
src/App.vue Normal file
View File

@@ -0,0 +1,96 @@
<script lang="ts" setup>
import { isDark } from '@/utils/is'
import { useAppStore } from '@/store/modules/app'
import { useDesign } from '@/hooks/web/useDesign'
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
import routerSearch from '@/components/RouterSearch/index.vue'
defineOptions({ name: 'APP' })
const { getPrefixCls } = useDesign()
const prefixCls = getPrefixCls('app')
const appStore = useAppStore()
const currentSize = computed(() => appStore.getCurrentSize)
const greyMode = computed(() => appStore.getGreyMode)
const { wsCache } = useCache()
// 根据浏览器当前主题设置系统主题色
const setDefaultTheme = () => {
let isDarkTheme = wsCache.get(CACHE_KEY.IS_DARK)
if (isDarkTheme === null) {
isDarkTheme = isDark()
}
appStore.setIsDark(isDarkTheme)
}
setDefaultTheme()
const popperContainer = ref<Element | null>()
// 使用 ResizeObserver 监测尺寸变化
const resizeObserver = new ResizeObserver((entries) => {
entries.forEach((entry) => {
const popper = entry.target as HTMLElement
if (popper.offsetWidth > 0 && popper.offsetHeight > 0) {
const originalWidth = popper.offsetWidth
// 把节点的高度改为节点的宽度
popper.style.setProperty('height', `${originalWidth}px`, 'important')
// 停止观察(如果需要持续监测可保留)
resizeObserver.unobserve(popper)
}
})
})
onMounted(() => {
// body下el-popper-container里面的样式修改。这里功能不完善
if (appStore.getMobile) {
popperContainer.value = document.querySelector('[id^="el-popper-container"]')
}
})
watch(
() => popperContainer.value,
(value) => {
if (value) {
const poppers = value.querySelectorAll('.el-popper')
poppers.forEach((popper: HTMLElement) => {
resizeObserver.observe(popper)
})
}
}
)
</script>
<template>
<ConfigGlobal :size="currentSize">
<div class="h-100% w-100%" :class="greyMode ? `${prefixCls}-grey-mode` : ''">
<RouterView />
</div>
<routerSearch />
</ConfigGlobal>
</template>
<style lang="scss">
$prefix-cls: #{$namespace}-app;
.size {
width: 100%;
height: 100%;
}
html,
body {
@extend .size;
padding: 0 !important;
margin: 0;
overflow: hidden;
#app {
@extend .size;
}
}
.#{$prefix-cls}-grey-mode {
filter: grayscale(100%);
}
</style>

View File

@@ -0,0 +1,8 @@
import request from '@/config/axios'
export const getActivityList = async (params) => {
return await request.get({
url: '/bpm/activity/list',
params
})
}

View File

@@ -0,0 +1,21 @@
import request from '@/config/axios'
export const getProcessDefinitionBpmnXML = async (id: number) => {
return await request.get({
url: '/bpm/process-definition/get-bpmn-xml?id=' + id
})
}
export const getProcessDefinitionPage = async (params) => {
return await request.get({
url: '/bpm/process-definition/page',
params
})
}
export const getProcessDefinitionList = async (params) => {
return await request.get({
url: '/bpm/process-definition/list',
params
})
}

View File

@@ -0,0 +1,59 @@
import request from '@/config/axios'
export type ProcessDefinitionVO = {
id: string
version: number
deploymentTIme: string
suspensionState: number
}
export type ModelVO = {
id?: number
formName?: string
key: string
name: string
description: string
category?: string
formType: number
formId: string
formCustomCreatePath: string
formCustomViewPath: string
processDefinition?: ProcessDefinitionVO
status?: number
remark?: string
createTime?: string
bpmnXml?: string
}
export const getModelPage = async (params) => {
return await request.get({ url: '/bpm/model/page', params })
}
export const getModel = async (id: number) => {
return await request.get({ url: '/bpm/model/get?id=' + id })
}
export const updateModel = async (data: ModelVO) => {
return await request.put({ url: '/bpm/model/update', data: data })
}
// 任务状态修改
export const updateModelState = async (id: number, state: number) => {
const data = {
id: id,
state: state
}
return await request.put({ url: '/bpm/model/update-state', data: data })
}
export const createModel = async (data: ModelVO) => {
return await request.post({ url: '/bpm/model/create', data: data })
}
export const deleteModel = async (id: number) => {
return await request.delete({ url: '/bpm/model/delete?id=' + id })
}
export const deployModel = async (id: number) => {
return await request.post({ url: '/bpm/model/deploy?id=' + id })
}

View File

@@ -0,0 +1,70 @@
import request from '@/config/axios'
export type Task = {
id: string
name: string
}
export type ProcessInstanceVO = {
id: number
name: string
processDefinitionId: string
category: string
result: number
tasks: Task[]
fields: string[]
status: number
remark: string
businessKey: string
createTime: string
endTime: string
}
export type ProcessInstanceCCVO = {
type: number,
taskName: string,
taskKey: string,
processInstanceName: string,
processInstanceKey: string,
startUserId: string,
options:string [],
reason: string
}
export const getMyProcessInstancePage = async (params) => {
return await request.get({ url: '/bpm/process-instance/my-page', params })
}
export const createProcessInstance = async (data) => {
return await request.post({ url: '/bpm/process-instance/create', data: data })
}
export const cancelProcessInstance = async (id: number, reason: string) => {
const data = {
id: id,
reason: reason
}
return await request.delete({ url: '/bpm/process-instance/cancel', data: data })
}
export const getProcessInstance = async (id: number) => {
return await request.get({ url: '/bpm/process-instance/get?id=' + id })
}
/**
* 抄送
* @param data 抄送数据
* @returns 是否抄送成功
*/
export const createProcessInstanceCC = async (data) => {
return await request.post({ url: '/bpm/process-instance/cc/create', data: data })
}
/**
* 抄送列表
* @param params
* @returns
*/
export const getProcessInstanceCCPage = async (params) => {
return await request.get({ url: '/bpm/process-instance/cc/my-page', params })
}

81
src/api/bpm/task/index.ts Normal file
View File

@@ -0,0 +1,81 @@
import request from '@/config/axios'
export type TaskVO = {
id: number
}
export const getTodoTaskPage = async (params) => {
return await request.get({ url: '/bpm/task/todo-page', params })
}
export const getDoneTaskPage = async (params) => {
return await request.get({ url: '/bpm/task/done-page', params })
}
export const completeTask = async (data) => {
return await request.put({ url: '/bpm/task/complete', data })
}
export const approveTask = async (data) => {
return await request.put({ url: '/bpm/task/approve', data })
}
export const rejectTask = async (data) => {
return await request.put({ url: '/bpm/task/reject', data })
}
export const backTask = async (data) => {
return await request.put({ url: '/bpm/task/back', data })
}
export const updateTaskAssignee = async (data) => {
return await request.put({ url: '/bpm/task/update-assignee', data })
}
export const getTaskListByProcessInstanceId = async (processInstanceId) => {
return await request.get({
url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId
})
}
// 导出任务
export const exportTask = async (params) => {
return await request.download({ url: '/bpm/task/export', params })
}
// 获取所有可回退的节点
export const getReturnList = async (params) => {
return await request.get({ url: '/bpm/task/return-list', params })
}
// 回退
export const returnTask = async (data) => {
return await request.put({ url: '/bpm/task/return', data })
}
/**
* 委派
*/
export const delegateTask = async (data) => {
return await request.put({ url: '/bpm/task/delegate', data })
}
/**
* 加签
*/
export const taskAddSign = async (data) => {
return await request.put({ url: '/bpm/task/create-sign', data })
}
/**
* 获取减签任务列表
*/
export const getChildrenTaskList = async (id: string) => {
return await request.get({ url: '/bpm/task/children-list?taskId=' + id })
}
/**
* 减签
*/
export const taskSubSign = async (data) => {
return await request.delete({ url: '/bpm/task/delete-sign', data })
}

View File

@@ -0,0 +1,29 @@
import request from '@/config/axios'
export type TaskAssignVO = {
id: number
modelId: string
processDefinitionId: string
taskDefinitionKey: string
taskDefinitionName: string
options: string[]
type: number
}
export const getTaskAssignRuleList = async (params) => {
return await request.get({ url: '/bpm/task-assign-rule/list', params })
}
export const createTaskAssignRule = async (data: TaskAssignVO) => {
return await request.post({
url: '/bpm/task-assign-rule/create',
data: data
})
}
export const updateTaskAssignRule = async (data: TaskAssignVO) => {
return await request.put({
url: '/bpm/task-assign-rule/update',
data: data
})
}

View File

@@ -0,0 +1,47 @@
import request from '@/config/axios'
export type UserGroupVO = {
id: number
name: string
description: string
memberUserIds: number[]
status: number
remark: string
createTime: string
}
// 创建用户组
export const createUserGroup = async (data: UserGroupVO) => {
return await request.post({
url: '/bpm/user-group/create',
data: data
})
}
// 更新用户组
export const updateUserGroup = async (data: UserGroupVO) => {
return await request.put({
url: '/bpm/user-group/update',
data: data
})
}
// 删除用户组
export const deleteUserGroup = async (id: number) => {
return await request.delete({ url: '/bpm/user-group/delete?id=' + id })
}
// 获得用户组
export const getUserGroup = async (id: number) => {
return await request.get({ url: '/bpm/user-group/get?id=' + id })
}
// 获得用户组分页
export const getUserGroupPage = async (params) => {
return await request.get({ url: '/bpm/user-group/page', params })
}
// 获取用户组精简信息列表
export const getSimpleUserGroupList = async (): Promise<UserGroupVO[]> => {
return await request.get({ url: '/bpm/user-group/list-all-simple' })
}

257
src/api/dashboard.ts Normal file
View File

@@ -0,0 +1,257 @@
// 模拟大屏数据接口
export interface DashboardData {
totalCount: number
formalEmployeeCount: number
externalStaffCount: number
visitorCount: number
parkStatistics: {
name: string
formal: number
external: number
visitor: number
}[]
riskStatistics: {
overdue: number
processed: number
pending: number
processing: number
other: number
}
alertData: {
total: number
processed: number
pending: number
processing: number
details: Array<{
description: string
alarm_level_code: string
alarm_status: string
alarm_biz_id: string
}>
}
timeoutWorkOrders: {
total: number
details: Array<{
description: string
alarm_level_code: string
alarm_status: string
alarm_biz_id: string
}>
}
hiddenDangerData: {
general: number
major: number
progress: {
overdue: number
processed: number
pending: number
processing: number
}
top3Types: {
access: number
consumption: number
inspection: number
}
safetyIndex: number
}
}
// 模拟数据
const mockData: DashboardData = {
totalCount: 0,
formalEmployeeCount: 0,
externalStaffCount: 0,
visitorCount: 0,
parkStatistics: [
// { name: '雄安', formal: 320, external: 120, visitor: 220 },
// { name: '北京丰台', formal: 302, external: 132, visitor: 182 },
// { name: '北京恒毅', formal: 301, external: 101, visitor: 191 },
// { name: '上海', formal: 334, external: 134, visitor: 234 },
// { name: '重庆', formal: 390, external: 90, visitor: 290 },
// { name: '成都', formal: 330, external: 230, visitor: 330 }
],
riskStatistics: {
overdue: 0,
processed: 0,
pending: 0,
processing: 0,
other: 0
},
alertData: {
total: 0,
processed: 0,
pending: 0,
processing: 0,
details: [
// {
// description: '2024-07-10 上午8:00 雄安园区隐患内容管理 状态 处理',
// alarm_level_code: 'major',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283935'
// },
// {
// description: '2025-07-09 上海XXX区域A1门禁告警 处理中 紧急',
// alarm_level_code: 'major',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283936'
// },
// {
// description: '2025-07-09 上海XXX区域A1门禁告警 处理中 紧急',
// alarm_level_code: 'major',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// }, {
// description: '2024-07-10 上午8:00 雄安园区隐患内容管理 状态 处理',
// alarm_level_code: 'major',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283935'
// },
// {
// description: '2025-07-09 上海XXX区域A1门禁告警 处理中 紧急',
// alarm_level_code: 'major',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283936'
// },
// {
// description: '2025-07-09 上海XXX区域A1门禁告警 处理中 紧急',
// alarm_level_code: 'major',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// }
]
},
timeoutWorkOrders: {
total: 0,
details: [
// {
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
// alarm_level_code: 'general',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// },
// {
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
// alarm_level_code: 'general',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// }, {
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
// alarm_level_code: 'general',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// }, {
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
// alarm_level_code: 'general',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// }, {
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
// alarm_level_code: 'general',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// }, {
// description: '2025-08-10 上午8:00 武汉园区隐患内容管理 状态 处理',
// alarm_level_code: 'general',
// alarm_status: '已关闭',
// alarm_biz_id: '20250827164305283937'
// },
]
},
hiddenDangerData: {
general: 0,
major: 0,
progress: {
overdue: 0,
processed: 0,
pending: 0,
processing: 0
},
top3Types: {
access: 0,
consumption: 0,
inspection: 0
},
safetyIndex: 1
}
}
// 模拟接口延迟
const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms))
// 模拟获取大屏数据
export const getDashboardData = async (): Promise<DashboardData> => {
// await delay(500) // 模拟网络延迟
return {...mockData}
}
// 模拟更新数据(用于动画演示)
export const updateDashboardData = async (): Promise<DashboardData> => {
await delay(300)
// 生成随机数据
const newData: DashboardData = {
...mockData,
totalCount: Math.floor(Math.random() * 20000) + 20000,
formalEmployeeCount: Math.floor(Math.random() * 200) + 100,
externalStaffCount: Math.floor(Math.random() * 100) + 30,
visitorCount: Math.floor(Math.random() * 500) + 400,
parkStatistics: mockData.parkStatistics.map(park => ({
...park,
formal: Math.floor(Math.random() * 200) + 200,
external: Math.floor(Math.random() * 100) + 50,
visitor: Math.floor(Math.random() * 200) + 150
})),
alertData: {
...mockData.alertData,
total: Math.floor(Math.random() * 200) + 300,
processed: Math.floor(Math.random() * 200) + 300,
pending: Math.floor(Math.random() * 200) + 300
},
timeoutWorkOrders: {
...mockData.timeoutWorkOrders,
total: Math.floor(Math.random() * 20) + 5
},
hiddenDangerData: {
...mockData.hiddenDangerData,
general: Math.floor(Math.random() * 500) + 1000,
major: Math.floor(Math.random() * 500) + 1000,
safetyIndex: Math.floor(Math.random() * 20) + 70
}
}
return newData
}
// 模拟获取告警详情数据
export const getAlertDetails = async (type: 'risk' | 'timeout'): Promise<Array<{
description: string
alarm_level_code: string
alarm_status: string
alarm_biz_id: string
}>> => {
await delay(200)
if (type === 'risk') {
return mockData.alertData.details
} else {
return mockData.timeoutWorkOrders.details
}
}
// 模拟获取园区统计数据
export const getParkStatistics = async (): Promise<DashboardData['parkStatistics']> => {
await delay(300)
return mockData.parkStatistics
}
// 模拟获取风险统计数据
export const getRiskStatistics = async (): Promise<DashboardData['riskStatistics']> => {
await delay(200)
return mockData.riskStatistics
}
// 模拟获取隐患治理数据
export const getHiddenDangerData = async (): Promise<DashboardData['hiddenDangerData']> => {
await delay(250)
return mockData.hiddenDangerData
}

View File

@@ -0,0 +1,31 @@
import request from '@/config/axios'
//获取字典表格选择器配置
export const getDicTableConfig = (tableId, dicConfigStr) => {
return request.post({
url: `/jeelowcode/dbform/get/dict-table-web-config/${tableId}`, data: {
jeeLowCode_dictTableField: dicConfigStr
}
})
}
//获取字典表格选择器值回显文本
export const getDicTableText = (data) => {
return request.post({ url: `/jeelowcode/dbform/get/table-label`, data })
}
//获取用户选择器列表数据
export const getUserSelectList = (data) => {
return request.post({ url: `/jeelowcode/adapter/user/list`, data })
}
//获取用户选择器的部门列表
export const getUserSelectDeptList = (type) => {
return request.get({ url: `/jeelowcode/adapter/dept/list?type=${type}` })
}
//获取用户选择器的角色列表
export const getUserSelectRoleList = () => {
return request.get({ url: `/jeelowcode/adapter/role/list` })
}

View File

@@ -0,0 +1,63 @@
import request from '@/config/axios'
import { encryptAES } from '@/components/LowDesign/src/utils/aes'
//获取表单设计列表
export const getFormList = (params) => {
return request.post({ url: `/jeelowcode/desform/page`, params })
}
//获取模板表单列表
export const getTemplateFormList = () => {
return request.get({ url: `/jeelowcode/desform/get/template` })
}
//新增表单设计
export const saveFormData = (data) => {
data = encryptAES(JSON.stringify(data))
return request.post({ url: '/jeelowcode/desform/save', data })
}
//修改表单设计
export const updateFormData = (data) => {
data = encryptAES(JSON.stringify(data))
return request.put({ url: '/jeelowcode/desform/update', data })
}
//获取表单设计详情数据
export const getFormDetail = (params) => {
return request.get({ url: `/jeelowcode/desform/detail`, params })
}
//外部链接访问获取详情数据
export const getOpenFormDetail = (params) => {
return request.get({ url: `/jeelowcode/open/desform/get/detail`, params })
}
//删除表单设计数据
export const deleteFormData = (ids) => {
return request.delete({ url: `/jeelowcode/desform/delete`, data: ids })
}
//解除表单设计锁定
export const unlockForm = (id) => {
return request.post({ url: `/jeelowcode/desform/unlock/${id}` })
}
//获取表单设计分组数据
export const getGroupData = (params) => {
return request.get({ url: `/jeelowcode/group/desform/list`, params })
}
//新增表单设计分组
export const saveGroupData = (data) => {
return request.post({ url: `/jeelowcode/group/desform/save`, data })
}
//修改表单设计分组
export const updateGroupData = (data) => {
return request.put({ url: `/jeelowcode/group/desform/update`, data })
}
//删除表单设计分组
export const deleteGroupData = (ids) => {
return request.delete({ url: '/jeelowcode/group/desform/delete', data: ids })
}

View File

@@ -0,0 +1,37 @@
import request from '@/config/axios'
export const getActionApi = (url, option) => {
return request.get({ url, ...option })
}
export const postActionApi = (url, option) => {
return request.post({ url, ...option })
}
export const putActionApi = (url, option) => {
return request.put({ url, ...option })
}
export const deleteActionApi = (url, option) => {
return request.delete({ url, ...option })
}
export const downloadActionApi = (url, option) => {
return request.download({ url, ...option })
}
export const uploadActionApi = (url, option) => {
return request.upload({ url, ...option })
}
// 获取历史Js增强/SQL增强/表单设计版本列表 type: desform js sql
export const getHistoryList = (params) => {
return request.get({ url: `/jeelowcode/history/page`, params })
}
//获取历史Js增强/SQL增强/表单设计版本详情
export const getHistoryDetail = (params) => {
return request.get({ url: `/jeelowcode/history/getDetail`, params })
}

View File

@@ -0,0 +1,24 @@
import request from '@/config/axios'
export const getImportList = (params) => {
return request.post({ url: `/jeelowcode/i18n/page`, params })
}
//导出Excel表数据
export const exportExcelData = (data) => {
return request.download({ url: `/jeelowcode/i18n/export`, method: 'POST', data })
}
//导入的数据
export const uploadExcelData = (data) => {
return request.upload({ url: `/jeelowcode/i18n/import`, data })
}
//查询导入进度
export const getImportProgress = (batchCode) => {
return request.get({ url: `/jeelowcode/i18n/import/progress?batchCode=${batchCode}` })
}
//上传文件
export const uploadFile = (data) => {
return request.upload({ url: '/infra/file/jeelowcode/upload', data: data })
}

View File

@@ -0,0 +1,83 @@
import request from '@/config/axios'
import { encryptAES } from '@/components/LowDesign/src/utils/aes'
//获取多模块组合列表
export const getModuleList = (data) => {
const url = `/jeelowcode/tab/page?pageNo=${data.pageNo}&pageSize=${data.pageSize}`
delete data.pageNo
delete data.pageSize
return request.post({ url, data })
}
//新增多模块组合配置
export const saveModuleData = (data) => {
return request.post({ url: '/jeelowcode/tab/save', data })
}
//修改多模块组合配置
export const updateModuleData = (data) => {
return request.put({ url: '/jeelowcode/tab/update', data })
}
//删除多模块组合配置
export const deleteModuleData = (ids) => {
return request.delete({ url: '/jeelowcode/tab/delete', data: ids })
}
/**
* 获取多模块组合详情数据
* @param id
*/
export const getModuleDetail = (id) => {
return request.post({ url: `/jeelowcode/tab/detail?id=${id}` })
}
//获取多模块组合分组数据
export const getGroupData = (params) => {
return request.get({ url: `/jeelowcode/group/tab/list`, params })
}
//新增多模块组合分组
export const saveGroupData = (data) => {
return request.post({ url: `/jeelowcode/group/tab/save`, data })
}
//修改多模块组合分组
export const updateGroupData = (data) => {
return request.put({ url: `/jeelowcode/group/tab/update`, data })
}
//删除多模块组合分组
export const deleteGroupData = (ids) => {
return request.delete({ url: '/jeelowcode/group/tab/delete', data: ids })
}
//新增Js增强
export const saveJsData = (data) => {
data = encryptAES(JSON.stringify(data))
return request.post({ url: '/jeelowcode/tab/js/save', data })
}
//修改Js增强
export const updateJsData = (data) => {
data = encryptAES(JSON.stringify(data))
return request.put({ url: '/jeelowcode/tab/js/update', data })
}
//获取Js增强详情数据
export const getJsDetail = (params) => {
return request.get({ url: `/jeelowcode/tab/js/detail`, params })
}
//解除Js增强锁定
export const unlockJs = (moduleId, type) => {
return request.post({ url: `/jeelowcode/tab/js/unlock/${moduleId}?type=${type}` })
}
//获取显示配置
export const getModelViewData = (moduleId) => {
return request.get({ url: `/jeelowcode/tab/get/web-config?tabId=${moduleId}` })
}

View File

@@ -0,0 +1,92 @@
import request from '@/config/axios'
//获取报表列表
export const getDbList = (data) => {
let url = `/jeelowcode/report/page`
if (data.pageSize !== undefined) {
url = url + `?pageNo=${data.pageNo}&pageSize=${data.pageSize}`
delete data.pageNo
delete data.pageSize
}
return request.post({ url, data })
}
//新增报表配置
export const saveDbData = (data) => {
return request.post({ url: '/jeelowcode/report/save', data })
}
//修改报表配置
export const updateDbData = (data) => {
return request.put({ url: '/jeelowcode/report/update', data })
}
//删除报表配置
export const deleteDbData = (ids) => {
return request.delete({ url: '/jeelowcode/report/delete', data: ids })
}
//获取报表详情数据
export const getDbDetail = (id) => {
return request.post({ url: `/jeelowcode/report/detail?reportId=${id}`, data: ['all'] })
}
//获取报表分组数据
export const getGroupData = (params) => {
return request.get({ url: `/jeelowcode/group/report/list`, params })
}
//新增报表分组
export const saveGroupData = (data) => {
return request.post({ url: `/jeelowcode/group/report/save`, data })
}
//修改报表分组
export const updateGroupData = (data) => {
return request.put({ url: `/jeelowcode/group/report/update`, data })
}
//删除报表分组
export const deleteGroupData = (ids) => {
return request.delete({ url: '/jeelowcode/group/report/delete', data: ids })
}
//校验报表编码是否存在
export const verifyReportCode = (code) => {
return request.get({ url: '/jeelowcode/report/check/report-code?reportCode=' + code })
}
//复制报表
export const copyReportData = (reportCode, newReportCode) => {
return request.get({ url: `/jeelowcode/report/copy/${reportCode}?reportCode=${newReportCode}` })
}
//获取报表Web配置数据
export const getWebConfig = (reportCode) => {
return request.get({ url: '/jeelowcode/report/get/web-config?reportCode=' + reportCode })
}
//导出报表数据
export const exportExcelData = (reportCode, data?) => {
return request.download({ url: `/jeelowcode/excel/exportReport/${reportCode}`, method: 'POST', data })
}
//获取报表数据
export const getTableList = (reportCode, data?, isOpen?) => {
return request.post({ url: `/jeelowcode/${isOpen ? 'open/report' : 'report-data'}/list/${reportCode}`, data })
}
/**
* 批量获取报表数据
* reportCodes:报表编码 多个用逗号隔开 xxx,xxx
* data:报表对应的搜索值
* 格式 {
* 报表编码:{搜索配置}
* }
* */
export const batchGetTableList = (reportCodes: string, data?) => {
return request.post({ url: `/jeelowcode/report-data/batch/list/${reportCodes}`, data })
}

View File

@@ -0,0 +1,6 @@
import request from '@/config/axios'
//获取表单设计详情数据
export const clearCache = () => {
return request.get({ url: '/jeelowcode/dbform/clear-cache' })
}

View File

@@ -0,0 +1,57 @@
import request from '@/config/axios'
interface FieldData {
tenantId: string | number
dbformId: string
fieldCode: string
listIsView?: 'Y' | 'N'
formIsView?: 'Y' | 'N'
formIsEdit?: 'Y' | 'N'
enableState?: 'Y' | 'N'
}
//获取权限租户列表数据
export const getAllTenant = () => {
return request.get({ url: `/jeelowcode/adapter/tenant/list` })
}
//获取字段权限列表
export const getFieldAuth = (tenantId, dbFormId) => {
return request.post({ url: `/jeelowcode/dbform-role/list-field?tenantId=${tenantId}&dbFormId=${dbFormId}` })
}
//保存字段权限配置
export const saveFieldAuth = (data: FieldData) => {
return request.post({ url: `/jeelowcode/dbform-role/save-field`, data })
}
//获取按钮权限列表
export const getButtonAuth = (tenantId, dbFormId) => {
return request.post({ url: `/jeelowcode/dbform-role/list-button?tenantId=${tenantId}&dbFormId=${dbFormId}` })
}
//保存字段权限配置
export const saveButtonAuth = (data) => {
return request.post({ url: `/jeelowcode/dbform-role/save-button`, data })
}
//获取规则列表
export const getDataAuth = (tenantId, dbFormId) => {
return request.post({ url: `/jeelowcode/dbform-role/list-data?tenantId=${tenantId}&dbFormId=${dbFormId}` })
}
//保存数据规则配置
export const saveDataAuth = (data) => {
return request.post({ url: `/jeelowcode/dbform-role/save-data-tenant`, data })
}
//添加、修改数据规则数据
export const saveRuleData = (data) => {
return request.post({ url: `/jeelowcode/dbform-role/save-data-rule`, data })
}
//删除数据规则
export const deleteRuleData = (ruleId) => {
return request.delete({ url: `/jeelowcode/dbform-role/del-data-rule?ruleId=${ruleId}` })
}

View File

@@ -0,0 +1,27 @@
import request from '@/config/axios'
//获取自定义按钮列表
export const getBtnList = (params) => {
return request.get({ url: `/jeelowcode/enhance/button/${params.pageSize ? 'page' : 'list'}`, params })
}
//新增自定义按钮
export const saveBtnData = (data) => {
return request.post({ url: '/jeelowcode/enhance/button/save', data })
}
//修改自定义按钮
export const updateBtnData = (data) => {
return request.put({ url: '/jeelowcode/enhance/button/update', data })
}
//获取自定义按钮详情数据
export const getBtnDetail = (id) => {
return request.get({ url: `/jeelowcode/enhance/button/detail?id=${id}` })
}
//删除自定义按钮数据
export const deleteBtnData = (ids) => {
return request.delete({ url: `/jeelowcode/enhance/button/delete`, data: ids })
}

View File

@@ -0,0 +1,237 @@
import request from '@/config/axios'
import { encryptAES } from '@/components/LowDesign/src/utils/aes'
//获取表单开发列表
export const getDbList = (data) => {
const url = `/jeelowcode/dbform/page?pageNo=${data.pageNo}&pageSize=${data.pageSize}`
delete data.pageNo
delete data.pageSize
return request.post({ url, data })
}
//新增表单开发配置
export const saveDbData = (data) => {
return request.post({ url: '/jeelowcode/dbform/save', data })
}
//修改表单开发配置
export const updateDbData = (data) => {
return request.put({ url: '/jeelowcode/dbform/update', data })
}
//删除表单开发配置
export const deleteDbData = (ids) => {
return request.delete({ url: '/jeelowcode/dbform/delete', data: ids })
}
/**
* 获取表单开发详情数据
* @param id
* @param typeList Array[string] 查询类型 all dict export foreignkey web
*/
export const getDbDetail = (id, typeList) => {
return request.post({ url: `/jeelowcode/dbform/detail?dbFormId=${id}`, data: typeList })
}
//获取表单开发分组数据
export const getGroupData = (params) => {
return request.get({ url: `/jeelowcode/group/dbform/list`, params })
}
//新增表单开发分组
export const saveGroupData = (data) => {
return request.post({ url: `/jeelowcode/group/dbform/save`, data })
}
//修改表单开发分组
export const updateGroupData = (data) => {
return request.put({ url: `/jeelowcode/group/dbform/update`, data })
}
//删除表单开发分组
export const deleteGroupData = (ids) => {
return request.delete({ url: '/jeelowcode/group/dbform/delete', data: ids })
}
//校验表明是否存在
export const verifyDbName = (name) => {
return request.get({ url: '/jeelowcode/dbform/check/table?tableName=' + name })
}
//同步数据库
export const asyncDbData = (tableId, syncModel) => {
return request.post({ url: `/jeelowcode/dbform/sync-db/${tableId}?syncModel=${syncModel}` })
}
//复制表单开发
export const copyDbData = (tableId, tableName) => {
return request.get({ url: `/jeelowcode/dbform/copy/${tableId}?tableName=${tableName}` })
}
//获取Web配置数据
export const getWebConfig = (tableId) => {
return request.get({ url: '/jeelowcode/dbform/get/web-config?dbformId=' + tableId })
}
/**
* 获取所有表名和表字段(字典配置用)
* @param systemFlag 'Y' 是否查询系统表
* @param dataSourcesCode 数据源
* @param onlyTableName 'Y' 是否只查表
*/
export const getAllDbDicData = (params = {}) => {
return request.get({ url: '/jeelowcode/dbform/get/all-table', params })
}
//获取表单懒加载控件回显结构数据
export const getLazyStructureData = (data) => {
return request.post({ url: `/jeelowcode/dbform/get/tree-parent`, data: { jeeLowCode_treeParent: encryptAES(JSON.stringify(data)) } })
}
//视图表数据源SQL测试
export const viewDataOriginTest = (data) => {
return request.post({ url: `/jeelowcode/dbform/explain/datasource-sql`, data })
}
//视图表数据源SQL解析
export const viewDataOriginAnalysis = (data) => {
return request.post({ url: `/jeelowcode/dbform/explain/sqlfield`, data })
}
//获取未在表单开发的数据库表
export const getSqlFormDicData = () => {
return request.get({ url: `/jeelowcode/dbform/get/not-in-dbform-tables` })
}
//获取通过数据库表反向生成的配置数据
export const getSqlFormConfig = (tableName) => {
return request.get({ url: `/jeelowcode/dbform/get/tables-field?tableName=${tableName}` })
}
//通过AI生成表信息
export const getAiCreatedTable = (prompt) => {
return request.get({ url: `/jeelowcode/dbform/ai/create-table?prompt=${prompt}`, moerData: { timeout: 120000 } })
}
//上传文件/图片
export const upLoadData = (data) => {
return request.upload({ url: '/infra/file/jeelowcode/upload', data })
}
//获取表数据
export const getTableList = (tableId, data, isOpen?) => {
return request.post({ url: `/jeelowcode/${isOpen ? 'open' : 'dbform-data'}/list/${tableId}`, data })
}
//新增表数据
export const saveTableData = (tableId, data, isOpen?) => {
return request.post({ url: `/jeelowcode/${isOpen ? 'open' : 'dbform-data'}/save/${tableId}`, data })
}
//批量新增表数据
export const batchSaveTableData = (tableId, data: object[], isOpen?) => {
return request.post({ url: `/jeelowcode/${isOpen ? 'open' : 'dbform-data'}/save/batch/${tableId}`, data })
}
//修改表数据
export const updateTableData = (tableId, data) => {
return request.put({ url: `/jeelowcode/dbform-data/edit/${tableId}`, data })
}
//批量修改表数据
export const batchUpdateTableData = (tableId, data) => {
return request.put({ url: `/jeelowcode/dbform-data/edit/batch/${tableId}`, data })
}
//删除表数据
export const deleteTableData = (tableId, ids) => {
return request.delete({ url: `/jeelowcode/dbform-data/delete/${tableId}`, data: ids })
}
//获取表数据详情
export const getTableDetail = (tableId, id, isOpen) => {
return request.post({ url: `/jeelowcode/${isOpen ? 'open' : 'dbform-data'}/detail/${tableId}/${id}` })
}
//导出Excel表数据
export const exportExcelData = (tableId, data) => {
return request.download({ url: `/jeelowcode/excel/exportExcel/${tableId}`, method: 'POST', data })
}
//下载导入模板
export const downloadImportTemplate = (tableId) => {
return request.download({ url: `/jeelowcode/excel/exportExcelTemplate/${tableId}` })
}
//上传需要导入的数据
export const uploadViewExcelData = (tableId, data) => {
return request.upload({ url: `/jeelowcode/excel/viewExcel/${tableId}`, data: data })
}
//查询预览导入进度
export const getViewImportProgress = (tableId, batchCode) => {
return request.get({ url: `/jeelowcode/excel/viewProgress/${tableId}?batchCode=${batchCode}` })
}
//获取上传的导入数据
export const getUploadImportData = (tableId, params) => {
return request.post({ url: `/jeelowcode/excel/view/page/${tableId}`, params })
}
//修改上传的导入数据
export const updateUploadImportData = (tableId, data) => {
return request.post({ url: `/jeelowcode/excel/update/fileData/${tableId}`, data })
}
//删除上传的导入数据
export const deleteUploadImportData = (tableId, id) => {
return request.post({ url: `/jeelowcode/excel/del/fileData/${tableId}`, data: { id } })
}
//导入上传数据
export const importUploadData = (tableId, batchCode) => {
return request.post({ url: `/jeelowcode/excel/run/import/${tableId}?batchCode=${batchCode}` })
}
//获取历史导入记录
export const getHistoryImportData = (tableId, params) => {
return request.post({ url: `/jeelowcode/excel/file/list/${tableId}`, params })
}
//撤销导入
export const cancelImportData = (tableId, batchCode) => {
return request.post({ url: `/jeelowcode/excel/rollback/${tableId}?batchCode=${batchCode}` })
}
//获取导入进度
export const getImportProgress = (tableId, params) => {
return request.get({ url: `/jeelowcode/excel/importProgress/${tableId}`, params })
}
//设置导入状态
export const setImportState = (tableId, params) => {
return request.get({ url: `/jeelowcode/excel/importOpTask/${tableId}`, params })
}
//下载导入失败的excel
export const downloadImportError = (tableId, batchCode) => {
return request.download({ url: `/jeelowcode/excel/downloadErrorExcel/${tableId}?batchCode=${batchCode}` })
}
//校验值是否唯一
export const verifyDataOnly = (tableId, data) => {
return request.post({ url: `/jeelowcode/dbform-data/unique/${tableId}`, data })
}
//获取表数据统计信息
export const getTableDataSummary = (tableId, data) => {
return request.post({ url: `/jeelowcode/dbform-data/summary/${tableId}`, data })
}
//获取地区控件回显数据
export const getRegionEchoData = (data) => {
return request.post({ url: `/system/area/view-parent-list`, data })
}

View File

@@ -0,0 +1,28 @@
import request from '@/config/axios'
//获取Java增强列表
export const getJavaList = (params) => {
return request.get({ url: `/jeelowcode/enhance/java/${params.pageSize ? 'page' : 'list'}`, params })
}
//新增Java增强
export const saveJavaData = (data) => {
return request.post({ url: '/jeelowcode/enhance/java/save', data })
}
//修改Java增强
export const updateJavaData = (data) => {
return request.put({ url: '/jeelowcode/enhance/java/update', data })
}
//获取Java增强详情数据
export const getJavaDetail = (id) => {
return request.get({ url: `/jeelowcode/enhance/java/detail?id=${id}` })
}
//删除Java增强数据
export const deleteJavaData = (ids) => {
return request.delete({ url: '/jeelowcode/enhance/java/delete', data: ids })
}

View File

@@ -0,0 +1,24 @@
import request from '@/config/axios'
import { encryptAES } from '@/components/LowDesign/src/utils/aes'
//新增Js增强
export const saveJsData = (data) => {
data = encryptAES(JSON.stringify(data))
return request.post({ url: '/jeelowcode/enhance/js/save', data })
}
//修改Js增强
export const updateJsData = (data) => {
data = encryptAES(JSON.stringify(data))
return request.put({ url: '/jeelowcode/enhance/js/update', data })
}
//获取Js增强详情数据
export const getJsDetail = (params) => {
return request.get({ url: `/jeelowcode/enhance/js/detail`, params })
}
//解除Js增强锁定
export const unlockJs = (dbformId, type) => {
return request.post({ url: `/jeelowcode/enhance/js/unlock/${dbformId}?type=${type}` })
}

View File

@@ -0,0 +1,27 @@
import request from '@/config/axios'
//获取SQL增强列表
export const getSqlList = (params) => {
return request.get({ url: `/jeelowcode/enhance/sql/${params.pageSize ? 'page' : 'list'}`, params })
}
//新增SQL增强
export const saveSqlData = (data) => {
return request.post({ url: '/jeelowcode/enhance/sql/save', data })
}
//修改SQL增强
export const updateSqlData = (data) => {
return request.put({ url: '/jeelowcode/enhance/sql/update', data })
}
//获取SQL增强详情数据
export const getSqlDetail = (id) => {
return request.get({ url: `/jeelowcode/enhance/sql/detail?id=${id}` })
}
//删除SQL增强数据
export const deleteSqlData = (ids) => {
return request.delete({ url: '/jeelowcode/enhance/sql/delete', data: ids })
}

View File

@@ -0,0 +1,48 @@
import request from '@/config/axios'
export interface ConfigVO {
id: number | undefined
category: string
name: string
key: string
value: string
type: number
visible: boolean
remark: string
createTime: Date
}
// 查询参数列表
export const getConfigPage = (params: PageParam) => {
return request.get({ url: '/infra/config/page', params })
}
// 查询参数详情
export const getConfig = (id: number) => {
return request.get({ url: '/infra/config/get?id=' + id })
}
// 根据参数键名查询参数值
export const getConfigKey = (configKey: string) => {
return request.get({ url: '/infra/config/get-value-by-key?key=' + configKey })
}
// 新增参数
export const createConfig = (data: ConfigVO) => {
return request.post({ url: '/infra/config/create', data })
}
// 修改参数
export const updateConfig = (data: ConfigVO) => {
return request.put({ url: '/infra/config/update', data })
}
// 删除参数
export const deleteConfig = (id: number) => {
return request.delete({ url: '/infra/config/delete?id=' + id })
}
// 导出参数
export const exportConfig = (params) => {
return request.download({ url: '/infra/config/export', params })
}

View File

@@ -0,0 +1,38 @@
import request from '@/config/axios'
export interface DataSourceConfigVO {
id: number | undefined
dbCode: string,
name: string
dbType: string,
driverClass: string,
url: string
username: string
password: string
createTime?: Date
}
// 新增数据源配置
export const createDataSourceConfig = (data: DataSourceConfigVO) => {
return request.post({ url: '/infra/data-source-config/create', data })
}
// 修改数据源配置
export const updateDataSourceConfig = (data: DataSourceConfigVO) => {
return request.put({ url: '/infra/data-source-config/update', data })
}
// 删除数据源配置
export const deleteDataSourceConfig = (id: number) => {
return request.delete({ url: '/infra/data-source-config/delete?id=' + id })
}
// 查询数据源配置详情
export const getDataSourceConfig = (id: number) => {
return request.get({ url: '/infra/data-source-config/get?id=' + id })
}
// 查询数据源配置列表
export const getDataSourceConfigList = () => {
return request.get({ url: '/infra/data-source-config/list' })
}

View File

@@ -0,0 +1,16 @@
import request from '@/config/axios'
// 导出Html
export const exportHtml = () => {
return request.download({ url: '/infra/db-doc/export-html' })
}
// 导出Word
export const exportWord = () => {
return request.download({ url: '/infra/db-doc/export-word' })
}
// 导出Markdown
export const exportMarkdown = () => {
return request.download({ url: '/infra/db-doc/export-markdown' })
}

View File

@@ -0,0 +1,46 @@
import request from '@/config/axios'
export interface FilePageReqVO extends PageParam {
path?: string
type?: string
createTime?: Date[]
}
// 文件预签名地址 Response VO
export interface FilePresignedUrlRespVO {
// 文件配置编号
configId: number
// 文件上传 URL
uploadUrl: string
// 文件 URL
url: string
}
// 查询文件列表
export const getFilePage = (params: FilePageReqVO) => {
return request.get({ url: '/infra/file/page', params })
}
// 删除文件
export const deleteFile = (id: number) => {
return request.delete({ url: '/infra/file/delete?id=' + id })
}
// 获取文件预签名地址
export const getFilePresignedUrl = (path: string) => {
return request.get<FilePresignedUrlRespVO>({
url: '/infra/file/presigned-url',
params: { path }
})
}
// 创建文件
export const createFile = (data: any) => {
return request.post({ url: '/infra/file/create', data })
}
// 上传文件
export const updateFile = (data: any) => {
return request.upload({ url: '/infra/file/upload', data })
}

View File

@@ -0,0 +1,61 @@
import request from '@/config/axios'
export interface FileClientConfig {
basePath: string
host?: string
port?: number
username?: string
password?: string
mode?: string
endpoint?: string
bucket?: string
accessKey?: string
accessSecret?: string
domain: string
}
export interface FileConfigVO {
id: number
name: string
storage?: number
master: boolean
visible: boolean
config: FileClientConfig
remark: string
createTime: Date
}
// 查询文件配置列表
export const getFileConfigPage = (params: PageParam) => {
return request.get({ url: '/infra/file-config/page', params })
}
// 查询文件配置详情
export const getFileConfig = (id: number) => {
return request.get({ url: '/infra/file-config/get?id=' + id })
}
// 更新文件配置为主配置
export const updateFileConfigMaster = (id: number) => {
return request.put({ url: '/infra/file-config/update-master?id=' + id })
}
// 新增文件配置
export const createFileConfig = (data: FileConfigVO) => {
return request.post({ url: '/infra/file-config/create', data })
}
// 修改文件配置
export const updateFileConfig = (data: FileConfigVO) => {
return request.put({ url: '/infra/file-config/update', data })
}
// 删除文件配置
export const deleteFileConfig = (id: number) => {
return request.delete({ url: '/infra/file-config/delete?id=' + id })
}
// 测试文件配置
export const testFileConfig = (id: number) => {
return request.get({ url: '/infra/file-config/test?id=' + id })
}

View File

@@ -0,0 +1,63 @@
import request from '@/config/axios'
export interface JobVO {
id: number
name: string
status: number
handlerName: string
handlerParam: string
cronExpression: string
retryCount: number
retryInterval: number
monitorTimeout: number
createTime: Date
}
// 任务列表
export const getJobPage = (params: PageParam) => {
return request.get({ url: '/infra/job/page', params })
}
// 任务详情
export const getJob = (id: number) => {
return request.get({ url: '/infra/job/get?id=' + id })
}
// 新增任务
export const createJob = (data: JobVO) => {
return request.post({ url: '/infra/job/create', data })
}
// 修改定时任务调度
export const updateJob = (data: JobVO) => {
return request.put({ url: '/infra/job/update', data })
}
// 删除定时任务调度
export const deleteJob = (id: number) => {
return request.delete({ url: '/infra/job/delete?id=' + id })
}
// 导出定时任务调度
export const exportJob = (params) => {
return request.download({ url: '/infra/job/export-excel', params })
}
// 任务状态修改
export const updateJobStatus = (id: number, status: number) => {
const params = {
id,
status
}
return request.put({ url: '/infra/job/update-status', params })
}
// 定时任务立即执行一次
export const runJob = (id: number) => {
return request.put({ url: '/infra/job/trigger?id=' + id })
}
// 获得定时任务的下 n 次执行时间
export const getJobNextTimes = (id: number) => {
return request.get({ url: '/infra/job/get_next_times?id=' + id })
}

View File

@@ -0,0 +1,33 @@
import request from '@/config/axios'
export interface JobLogVO {
id: number
jobId: number
handlerName: string
handlerParam: string
cronExpression: string
executeIndex: string
beginTime: Date
endTime: Date
duration: string
status: number
createTime: string
}
// 任务日志列表
export const getJobLogPage = (params: PageParam) => {
return request.get({ url: '/infra/job-log/page', params })
}
// 任务日志详情
export const getJobLog = (id: number) => {
return request.get({ url: '/infra/job-log/get?id=' + id })
}
// 导出定时任务日志
export const exportJobLog = (params) => {
return request.download({
url: '/infra/job-log/export-excel',
params
})
}

View File

@@ -0,0 +1,8 @@
import request from '@/config/axios'
/**
* 获取redis 监控信息
*/
export const getCache = () => {
return request.get({ url: '/infra/redis/get-monitor-info' })
}

View File

@@ -0,0 +1,176 @@
export interface RedisMonitorInfoVO {
info: RedisInfoVO
dbSize: number
commandStats: RedisCommandStatsVO[]
}
export interface RedisInfoVO {
io_threaded_reads_processed: string
tracking_clients: string
uptime_in_seconds: string
cluster_connections: string
current_cow_size: string
maxmemory_human: string
aof_last_cow_size: string
master_replid2: string
mem_replication_backlog: string
aof_rewrite_scheduled: string
total_net_input_bytes: string
rss_overhead_ratio: string
hz: string
current_cow_size_age: string
redis_build_id: string
errorstat_BUSYGROUP: string
aof_last_bgrewrite_status: string
multiplexing_api: string
client_recent_max_output_buffer: string
allocator_resident: string
mem_fragmentation_bytes: string
aof_current_size: string
repl_backlog_first_byte_offset: string
tracking_total_prefixes: string
redis_mode: string
redis_git_dirty: string
aof_delayed_fsync: string
allocator_rss_bytes: string
repl_backlog_histlen: string
io_threads_active: string
rss_overhead_bytes: string
total_system_memory: string
loading: string
evicted_keys: string
maxclients: string
cluster_enabled: string
redis_version: string
repl_backlog_active: string
mem_aof_buffer: string
allocator_frag_bytes: string
io_threaded_writes_processed: string
instantaneous_ops_per_sec: string
used_memory_human: string
total_error_replies: string
role: string
maxmemory: string
used_memory_lua: string
rdb_current_bgsave_time_sec: string
used_memory_startup: string
used_cpu_sys_main_thread: string
lazyfree_pending_objects: string
aof_pending_bio_fsync: string
used_memory_dataset_perc: string
allocator_frag_ratio: string
arch_bits: string
used_cpu_user_main_thread: string
mem_clients_normal: string
expired_time_cap_reached_count: string
unexpected_error_replies: string
mem_fragmentation_ratio: string
aof_last_rewrite_time_sec: string
master_replid: string
aof_rewrite_in_progress: string
lru_clock: string
maxmemory_policy: string
run_id: string
latest_fork_usec: string
tracking_total_items: string
total_commands_processed: string
expired_keys: string
errorstat_ERR: string
used_memory: string
module_fork_in_progress: string
errorstat_WRONGPASS: string
aof_buffer_length: string
dump_payload_sanitizations: string
mem_clients_slaves: string
keyspace_misses: string
server_time_usec: string
executable: string
lazyfreed_objects: string
db0: string
used_memory_peak_human: string
keyspace_hits: string
rdb_last_cow_size: string
aof_pending_rewrite: string
used_memory_overhead: string
active_defrag_hits: string
tcp_port: string
uptime_in_days: string
used_memory_peak_perc: string
current_save_keys_processed: string
blocked_clients: string
total_reads_processed: string
expire_cycle_cpu_milliseconds: string
sync_partial_err: string
used_memory_scripts_human: string
aof_current_rewrite_time_sec: string
aof_enabled: string
process_supervised: string
master_repl_offset: string
used_memory_dataset: string
used_cpu_user: string
rdb_last_bgsave_status: string
tracking_total_keys: string
atomicvar_api: string
allocator_rss_ratio: string
client_recent_max_input_buffer: string
clients_in_timeout_table: string
aof_last_write_status: string
mem_allocator: string
used_memory_scripts: string
used_memory_peak: string
process_id: string
master_failover_state: string
errorstat_NOAUTH: string
used_cpu_sys: string
repl_backlog_size: string
connected_slaves: string
current_save_keys_total: string
gcc_version: string
total_system_memory_human: string
sync_full: string
connected_clients: string
module_fork_last_cow_size: string
total_writes_processed: string
allocator_active: string
total_net_output_bytes: string
pubsub_channels: string
current_fork_perc: string
active_defrag_key_hits: string
rdb_changes_since_last_save: string
instantaneous_input_kbps: string
used_memory_rss_human: string
configured_hz: string
expired_stale_perc: string
active_defrag_misses: string
used_cpu_sys_children: string
number_of_cached_scripts: string
sync_partial_ok: string
used_memory_lua_human: string
rdb_last_save_time: string
pubsub_patterns: string
slave_expires_tracked_keys: string
redis_git_sha1: string
used_memory_rss: string
rdb_last_bgsave_time_sec: string
os: string
mem_not_counted_for_evict: string
active_defrag_running: string
rejected_connections: string
aof_rewrite_buffer_length: string
total_forks: string
active_defrag_key_misses: string
allocator_allocated: string
aof_base_size: string
instantaneous_output_kbps: string
second_repl_offset: string
rdb_bgsave_in_progress: string
used_cpu_user_children: string
total_connections_received: string
migrate_cached_sockets: string
}
export interface RedisCommandStatsVO {
command: string
calls: number
usec: number
}

99
src/api/login/index.ts Normal file
View File

@@ -0,0 +1,99 @@
import request from '@/config/axios'
import { getRefreshToken } from '@/utils/auth'
import type { UserLoginVO } from './types'
export interface SmsCodeVO {
mobile: string
scene: number
}
export interface SmsLoginVO {
mobile: string
code: string
}
// 登录
export const login = (data: UserLoginVO) => {
return request.post({ url: '/system/auth/login', data })
}
// 刷新访问令牌
export const refreshToken = () => {
return request.post({ url: '/system/auth/refresh-token?refreshToken=' + getRefreshToken() })
}
/**
* 切换部门/角色
* @param loginDeptId 部门id
* @param loginRoleId 角色id
*/
export const switchLogin = (data) => {
return request.post({ url: '/system/auth/switch-login', data })
}
/**
* 切换租户
* @param tenantId 租户id
*/
export const switchTenant = (data) => {
return request.post({ url: '/system/auth/switch-tenant', data })
}
// 使用租户名,获得租户编号
export const getTenantIdByName = (name: string) => {
return request.get({ url: '/system/tenant/get-id-by-name?name=' + name })
}
// 使用租户域名,获得租户信息
export const getTenantByWebsite = (website: string) => {
return request.get({ url: '/system/tenant/get-by-website?website=' + website })
}
// 登出
export const loginOut = () => {
return request.post({ url: '/system/auth/logout' })
}
// 获取用户权限信息
export const getInfo = () => {
return request.get({ url: '/system/auth/get-permission-info' })
}
//获取登录验证码
export const sendSmsCode = (data: SmsCodeVO) => {
return request.post({ url: '/system/auth/send-sms-code', data })
}
// 短信验证码登录
export const smsLogin = (data: SmsLoginVO) => {
return request.post({ url: '/system/auth/sms-login', data })
}
// 社交快捷登录,使用 code 授权码
export function socialLogin(type: string, code: string, state: string) {
return request.post({
url: '/system/auth/social-login',
data: {
type,
code,
state
}
})
}
// 社交授权的跳转
export const socialAuthRedirect = (type: number, redirectUri: string) => {
return request.get({
url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri
})
}
// 获取验证图片以及 token
export const getCode = (data) => {
return request.postOriginal({ url: 'system/captcha/get', data })
}
// 滑动或者点选验证
export const reqCheck = (data) => {
return request.postOriginal({ url: 'system/captcha/check', data })
}

View File

@@ -0,0 +1,41 @@
import request from '@/config/axios'
// 获得授权信息
export const getAuthorize = (clientId: string) => {
return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId })
}
// 发起授权
export const authorize = (
responseType: string,
clientId: string,
redirectUri: string,
state: string,
autoApprove: boolean,
checkedScopes: string[],
uncheckedScopes: string[]
) => {
// 构建 scopes
const scopes = {}
for (const scope of checkedScopes) {
scopes[scope] = true
}
for (const scope of uncheckedScopes) {
scopes[scope] = false
}
// 发起请求
return request.post({
url: '/system/oauth2/authorize',
headers: {
'Content-type': 'application/x-www-form-urlencoded'
},
params: {
response_type: responseType,
client_id: clientId,
redirect_uri: redirectUri,
state: state,
auto_approve: autoApprove,
scope: JSON.stringify(scopes)
}
})
}

31
src/api/login/types.ts Normal file
View File

@@ -0,0 +1,31 @@
export type UserLoginVO = {
username: string
password: string
captchaVerification: string
socialType?: string
socialCode?: string
socialState?: string
}
export type TokenType = {
id: number // 编号
accessToken: string // 访问令牌
refreshToken: string // 刷新令牌
userId: number // 用户编号
userType: number //用户类型
clientId: string //客户端编号
expiresTime: number //过期时间
}
export type UserVO = {
id: number
username: string
nickname: string
deptId: number
email: string
mobile: string
sex: number
avatar: string
loginIp: string
loginDate: string
}

View File

@@ -0,0 +1,19 @@
import request from '@/config/axios'
type LogType = 'info' | 'error'
// 获取请求日志列表
export const getLogPage = (logType: LogType, params) => {
return request.get({ url: `/jeelowcode/apilog/page`, params: { logType, ...params } })
}
// 获取日志详情
export const getLogDetail = (logType: LogType, id: string) => {
return request.get({ url: `/jeelowcode/apilog/detail?logType=${logType}&id=${id}`, })
}
// 清除日志记录
export const deleteLog = (logType: LogType, delDate: string) => {
return request.delete({ url: `/jeelowcode/apilog/delete?logType=${logType}&delDate=${delDate}`, })
}

View File

@@ -0,0 +1,11 @@
import request from '@/config/axios'
// 获得地区树
export const getAreaTree = async () => {
return await request.get({ url: '/system/area/tree' })
}
// 获得 IP 对应的地区名
export const getAreaByIp = async (ip: string) => {
return await request.get({ url: '/system/area/get-by-ip?ip=' + ip })
}

View File

@@ -0,0 +1,43 @@
import request from '@/config/axios'
export interface DeptVO {
id?: number
name: string
parentId: number
status: number
sort: number
leaderUserId: number
phone: string
email: string
createTime: Date
}
// 查询部门(精简)列表
export const getSimpleDeptList = async (): Promise<DeptVO[]> => {
return await request.get({ url: '/system/dept/simple-list' })
}
// 查询部门列表
export const getDeptPage = async (params: PageParam) => {
return await request.get({ url: '/system/dept/list', params })
}
// 查询部门详情
export const getDept = async (id: number) => {
return await request.get({ url: '/system/dept/get?id=' + id })
}
// 新增部门
export const createDept = async (data: DeptVO) => {
return await request.post({ url: '/system/dept/create', data: data })
}
// 修改部门
export const updateDept = async (params: DeptVO) => {
return await request.put({ url: '/system/dept/update', data: params })
}
// 删除部门
export const deleteDept = async (id: number) => {
return await request.delete({ url: '/system/dept/delete?id=' + id })
}

View File

@@ -0,0 +1,49 @@
import request from '@/config/axios'
export type DictDataVO = {
id: number | undefined
sort: number | undefined
label: string
value: string
dictType: string
status: number
colorType: string
cssClass: string
remark: string
createTime: Date
}
// 查询字典数据(精简)列表
export const getSimpleDictDataList = () => {
return request.get({ url: '/system/dict-data/simple-list' })
}
// 查询字典数据列表
export const getDictDataPage = (params: PageParam) => {
return request.get({ url: '/system/dict-data/page', params })
}
// 查询字典数据详情
export const getDictData = (id: number) => {
return request.get({ url: '/system/dict-data/get?id=' + id })
}
// 新增字典数据
export const createDictData = (data: DictDataVO) => {
return request.post({ url: '/system/dict-data/create', data })
}
// 修改字典数据
export const updateDictData = (data: DictDataVO) => {
return request.put({ url: '/system/dict-data/update', data })
}
// 删除字典数据
export const deleteDictData = (id: number) => {
return request.delete({ url: '/system/dict-data/delete?id=' + id })
}
// 导出字典类型数据
export const exportDictData = (params) => {
return request.download({ url: '/system/dict-data/export', params })
}

View File

@@ -0,0 +1,44 @@
import request from '@/config/axios'
export type DictTypeVO = {
id: number | undefined
name: string
type: string
status: number
remark: string
createTime: Date
}
// 查询字典(精简)列表
export const getSimpleDictTypeList = () => {
return request.get({ url: '/system/dict-type/list-all-simple' })
}
// 查询字典列表
export const getDictTypePage = (params: PageParam) => {
return request.get({ url: '/system/dict-type/page', params })
}
// 查询字典详情
export const getDictType = (id: number) => {
return request.get({ url: '/system/dict-type/get?id=' + id })
}
// 新增字典
export const createDictType = (data: DictTypeVO) => {
return request.post({ url: '/system/dict-type/create', data })
}
// 修改字典
export const updateDictType = (data: DictTypeVO) => {
return request.put({ url: '/system/dict-type/update', data })
}
// 删除字典
export const deleteDictType = (id: number) => {
return request.delete({ url: '/system/dict-type/delete?id=' + id })
}
// 导出字典类型
export const exportDictType = (params) => {
return request.download({ url: '/system/dict-type/export', params })
}

View File

@@ -0,0 +1,45 @@
import request from '@/config/axios'
export interface DutyVO {
id?: number
name: string
sort: number
status: number
remark: string
createTime?: Date
}
// 查询职务列表
export const getDutyPage = async (params: PageParam) => {
return await request.get({ url: '/system/duty/page', params })
}
// 获取职务精简信息列表
export const getSimpleDutyList = async (): Promise<DutyVO[]> => {
return await request.get({ url: '/system/duty/simple-list' })
}
// 查询职务详情
export const getDuty = async (id: number) => {
return await request.get({ url: '/system/duty/get?id=' + id })
}
// 新增职务
export const createDuty = async (data: DutyVO) => {
return await request.post({ url: '/system/duty/create', data })
}
// 修改职务
export const updateDuty = async (data: DutyVO) => {
return await request.put({ url: '/system/duty/update', data })
}
// 删除职务
export const deleteDuty = async (id: number) => {
return await request.delete({ url: '/system/duty/delete?id=' + id })
}
// 导出职务
export const exportDuty = async (params) => {
return await request.download({ url: '/system/duty/export', params })
}

View File

@@ -0,0 +1,40 @@
import request from '@/config/axios'
export interface ErrorCodeVO {
id: number | undefined
type: number
applicationName: string
code: number | undefined
message: string
memo: string
createTime: Date
}
// 查询错误码列表
export const getErrorCodePage = (params: PageParam) => {
return request.get({ url: '/system/error-code/page', params })
}
// 查询错误码详情
export const getErrorCode = (id: number) => {
return request.get({ url: '/system/error-code/get?id=' + id })
}
// 新增错误码
export const createErrorCode = (data: ErrorCodeVO) => {
return request.post({ url: '/system/error-code/create', data })
}
// 修改错误码
export const updateErrorCode = (data: ErrorCodeVO) => {
return request.put({ url: '/system/error-code/update', data })
}
// 删除错误码
export const deleteErrorCode = (id: number) => {
return request.delete({ url: '/system/error-code/delete?id=' + id })
}
// 导出错误码
export const excelErrorCode = (params) => {
return request.download({ url: '/system/error-code/export-excel', params })
}

View File

@@ -0,0 +1,25 @@
import request from '@/config/axios'
export interface LoginLogVO {
id: number
logType: number
traceId: number
userId: number
userType: number
username: string
result: number
status: number
userIp: string
userAgent: string
createTime: Date
}
// 查询登录日志列表
export const getLoginLogPage = (params: PageParam) => {
return request.get({ url: '/system/login-log/page', params })
}
// 导出登录日志
export const exportLoginLog = (params) => {
return request.download({ url: '/system/login-log/export', params })
}

View File

@@ -0,0 +1,41 @@
import request from '@/config/axios'
export interface MailAccountVO {
id: number
mail: string
username: string
password: string
host: string
port: number
sslEnable: boolean
}
// 查询邮箱账号列表
export const getMailAccountPage = async (params: PageParam) => {
return await request.get({ url: '/system/mail-account/page', params })
}
// 查询邮箱账号详情
export const getMailAccount = async (id: number) => {
return await request.get({ url: '/system/mail-account/get?id=' + id })
}
// 新增邮箱账号
export const createMailAccount = async (data: MailAccountVO) => {
return await request.post({ url: '/system/mail-account/create', data })
}
// 修改邮箱账号
export const updateMailAccount = async (data: MailAccountVO) => {
return await request.put({ url: '/system/mail-account/update', data })
}
// 删除邮箱账号
export const deleteMailAccount = async (id: number) => {
return await request.delete({ url: '/system/mail-account/delete?id=' + id })
}
// 获得邮箱账号精简列表
export const getSimpleMailAccountList = async () => {
return request.get({ url: '/system/mail-account/simple-list' })
}

View File

@@ -0,0 +1,30 @@
import request from '@/config/axios'
export interface MailLogVO {
id: number
userId: number
userType: number
toMail: string
accountId: number
fromMail: string
templateId: number
templateCode: string
templateNickname: string
templateTitle: string
templateContent: string
templateParams: string
sendStatus: number
sendTime: Date
sendMessageId: string
sendException: string
}
// 查询邮件日志列表
export const getMailLogPage = async (params: PageParam) => {
return await request.get({ url: '/system/mail-log/page', params })
}
// 查询邮件日志详情
export const getMailLog = async (id: number) => {
return await request.get({ url: '/system/mail-log/get?id=' + id })
}

View File

@@ -0,0 +1,50 @@
import request from '@/config/axios'
export interface MailTemplateVO {
id: number
name: string
code: string
accountId: number
nickname: string
title: string
content: string
params: string
status: number
remark: string
}
export interface MailSendReqVO {
mail: string
templateCode: string
templateParams: Map<String, Object>
}
// 查询邮件模版列表
export const getMailTemplatePage = async (params: PageParam) => {
return await request.get({ url: '/system/mail-template/page', params })
}
// 查询邮件模版详情
export const getMailTemplate = async (id: number) => {
return await request.get({ url: '/system/mail-template/get?id=' + id })
}
// 新增邮件模版
export const createMailTemplate = async (data: MailTemplateVO) => {
return await request.post({ url: '/system/mail-template/create', data })
}
// 修改邮件模版
export const updateMailTemplate = async (data: MailTemplateVO) => {
return await request.put({ url: '/system/mail-template/update', data })
}
// 删除邮件模版
export const deleteMailTemplate = async (id: number) => {
return await request.delete({ url: '/system/mail-template/delete?id=' + id })
}
// 发送邮件
export const sendMail = (data: MailSendReqVO) => {
return request.post({ url: '/system/mail-template/send-mail', data })
}

View File

@@ -0,0 +1,54 @@
import request from '@/config/axios'
export interface MenuVO {
id: number
name: string
permission: string
type: number
sort: number
parentId: number
path: string
icon: string
component: string
componentName?: string
status: number
visible: boolean
keepAlive: boolean
alwaysShow?: boolean
createTime: Date
}
// 查询菜单(精简)列表
export const getSimpleMenusList = () => {
return request.get({ url: '/system/menu/simple-list' })
}
// 查询菜单列表
export const getMenuList = (params) => {
return request.get({ url: '/system/menu/list', params })
}
// 获取菜单详情
export const getMenu = (id: number) => {
return request.get({ url: '/system/menu/get?id=' + id })
}
// 新增菜单
export const createMenu = (data: MenuVO) => {
return request.post({ url: '/system/menu/create', data })
}
//批量新增菜单
export const batchCreateMenu = (data: Array<MenuVO>) => {
return request.post({ url: '/system/menu/batch/create', data })
}
// 修改菜单
export const updateMenu = (data: MenuVO) => {
return request.put({ url: '/system/menu/update', data })
}
// 删除菜单
export const deleteMenu = (ids: number[], type?: number) => {
return request.delete({ url: '/system/menu/delete', params: { type }, data: ids })
}

View File

@@ -0,0 +1,42 @@
import request from '@/config/axios'
export interface NoticeVO {
id: number | undefined
title: string
type: number
content: string
status: number
remark: string
creator: string
createTime: Date
}
// 查询公告列表
export const getNoticePage = (params: PageParam) => {
return request.get({ url: '/system/notice/page', params })
}
// 查询公告详情
export const getNotice = (id: number) => {
return request.get({ url: '/system/notice/get?id=' + id })
}
// 新增公告
export const createNotice = (data: NoticeVO) => {
return request.post({ url: '/system/notice/create', data })
}
// 修改公告
export const updateNotice = (data: NoticeVO) => {
return request.put({ url: '/system/notice/update', data })
}
// 删除公告
export const deleteNotice = (id: number) => {
return request.delete({ url: '/system/notice/delete?id=' + id })
}
// 推送公告
export const pushNotice = (id: number) => {
return request.post({ url: '/system/notice/push?id=' + id })
}

View File

@@ -0,0 +1,49 @@
import request from '@/config/axios'
import qs from 'qs'
export interface NotifyMessageVO {
id: number
userId: number
userType: number
templateId: number
templateCode: string
templateNickname: string
templateContent: string
templateType: number
templateParams: string
readStatus: boolean
readTime: Date
createTime: Date
}
// 查询站内信消息列表
export const getNotifyMessagePage = async (params: PageParam) => {
return await request.get({ url: '/system/notify-message/page', params })
}
// 获得我的站内信分页
export const getMyNotifyMessagePage = async (params: PageParam) => {
return await request.get({ url: '/system/notify-message/my-page', params })
}
// 批量标记已读
export const updateNotifyMessageRead = async (ids) => {
return await request.put({
url: '/system/notify-message/update-read?' + qs.stringify({ ids: ids }, { indices: false })
})
}
// 标记所有站内信为已读
export const updateAllNotifyMessageRead = async () => {
return await request.put({ url: '/system/notify-message/update-all-read' })
}
// 获取当前用户的最新站内信列表
export const getUnreadNotifyMessageList = async () => {
return await request.get({ url: '/system/notify-message/get-unread-list' })
}
// 获得当前用户的未读站内信数量
export const getUnreadNotifyMessageCount = async () => {
return await request.get({ url: '/system/notify-message/get-unread-count' })
}

View File

@@ -0,0 +1,50 @@
import request from '@/config/axios'
export interface NotifyTemplateVO {
id?: number
name: string
nickname: string
code: string
content: string
type?: number
params: string
status: number
remark: string
}
export interface NotifySendReqVO {
userIdList: number[]
userType: number | string
templateCode: string
templateParams: Map<String, Object>
}
// 查询站内信模板列表
export const getNotifyTemplatePage = async (params: PageParam) => {
return await request.get({ url: '/system/notify-template/page', params })
}
// 查询站内信模板详情
export const getNotifyTemplate = async (id: number) => {
return await request.get({ url: '/system/notify-template/get?id=' + id })
}
// 新增站内信模板
export const createNotifyTemplate = async (data: NotifyTemplateVO) => {
return await request.post({ url: '/system/notify-template/create', data })
}
// 修改站内信模板
export const updateNotifyTemplate = async (data: NotifyTemplateVO) => {
return await request.put({ url: '/system/notify-template/update', data })
}
// 删除站内信模板
export const deleteNotifyTemplate = async (id: number) => {
return await request.delete({ url: '/system/notify-template/delete?id=' + id })
}
// 发送站内信
export const sendNotify = (data: NotifySendReqVO) => {
return request.post({ url: '/system/notify-template/send-notify', data })
}

View File

@@ -0,0 +1,47 @@
import request from '@/config/axios'
export interface OAuth2ClientVO {
id: number
clientId: string
secret: string
name: string
logo: string
description: string
status: number
accessTokenValiditySeconds: number
refreshTokenValiditySeconds: number
redirectUris: string[]
autoApprove: boolean
authorizedGrantTypes: string[]
scopes: string[]
authorities: string[]
resourceIds: string[]
additionalInformation: string
isAdditionalInformationJson: boolean
createTime: Date
}
// 查询 OAuth2 客户端的列表
export const getOAuth2ClientPage = (params: PageParam) => {
return request.get({ url: '/system/oauth2-client/page', params })
}
// 查询 OAuth2 客户端的详情
export const getOAuth2Client = (id: number) => {
return request.get({ url: '/system/oauth2-client/get?id=' + id })
}
// 新增 OAuth2 客户端
export const createOAuth2Client = (data: OAuth2ClientVO) => {
return request.post({ url: '/system/oauth2-client/create', data })
}
// 修改 OAuth2 客户端
export const updateOAuth2Client = (data: OAuth2ClientVO) => {
return request.put({ url: '/system/oauth2-client/update', data })
}
// 删除 OAuth2
export const deleteOAuth2Client = (id: number) => {
return request.delete({ url: '/system/oauth2-client/delete?id=' + id })
}

View File

@@ -0,0 +1,22 @@
import request from '@/config/axios'
export interface OAuth2TokenVO {
id: number
accessToken: string
refreshToken: string
userId: number
userType: number
clientId: string
createTime: Date
expiresTime: Date
}
// 查询 token列表
export const getAccessTokenPage = (params: PageParam) => {
return request.get({ url: '/system/oauth2-token/page', params })
}
// 删除 token
export const deleteAccessToken = (accessToken: string) => {
return request.delete({ url: '/system/oauth2-token/delete?accessToken=' + accessToken })
}

View File

@@ -0,0 +1,59 @@
import request from '@/config/axios'
export type OperateLogVO = {
id: number
userNickname: string
traceId: string
userId: number
module: string
name: string
type: number
content: string
exts: Map<String, Object>
requestMethod: string
requestUrl: string
userIp: string
userAgent: string
javaMethod: string
javaMethodArgs: string
startTime: Date
duration: number
resultCode: number
resultMsg: string
resultData: string
}
export type OperateLogV2VO = {
id: number
userNickname: string
traceId: string
userType: number
userId: number
userName: string
type: string
subType: string
bizId: number
action: string
extra: string
requestMethod: string
requestUrl: string
userIp: string
userAgent: string
creator: string
creatorName: string
createTime: Date
// 数据扩展,渲染时使用
title: string // 操作标题(如果为空则取 name 值)
colSize: number // 变更记录行数
contentStrList: string[]
tagsContentList: string[]
}
// 查询操作日志列表
export const getOperateLogPage = (params: PageParam) => {
return request.get({ url: '/system/operate-log/page', params })
}
// 导出操作日志
export const exportOperateLog = (params) => {
return request.download({ url: '/system/operate-log/export', params })
}

View File

@@ -0,0 +1,42 @@
import request from '@/config/axios'
export interface PermissionAssignUserRoleReqVO {
userId: number
roleIds: number[]
}
export interface PermissionAssignRoleMenuReqVO {
roleId: number
menuIds: number[]
}
export interface PermissionAssignRoleDataScopeReqVO {
roleId: number
dataScope: number
dataScopeDeptIds: number[]
}
// 查询角色拥有的菜单权限
export const getRoleMenuList = async (roleId: number) => {
return await request.get({ url: '/system/permission/list-role-menus?roleId=' + roleId })
}
// 赋予角色菜单权限
export const assignRoleMenu = async (data: PermissionAssignRoleMenuReqVO) => {
return await request.post({ url: '/system/permission/assign-role-menu', data })
}
// 赋予角色数据权限
export const assignRoleDataScope = async (data: PermissionAssignRoleDataScopeReqVO) => {
return await request.post({ url: '/system/permission/assign-role-data-scope', data })
}
// 查询用户拥有的角色数组
export const getUserRoleList = async (userId: number) => {
return await request.get({ url: '/system/permission/list-user-roles?userId=' + userId })
}
// 赋予用户角色
export const assignUserRole = async (data: PermissionAssignUserRoleReqVO) => {
return await request.post({ url: '/system/permission/assign-user-role', data })
}

View File

@@ -0,0 +1,45 @@
import request from '@/config/axios'
export interface PositionVO {
id?: number
name: string
sort: number
status: number
remark: string
createTime?: Date
}
// 查询职位列表
export const getPositionPage = async (params: PageParam) => {
return await request.get({ url: '/system/position/page', params })
}
// 获取职位精简信息列表
export const getSimplePositionList = async (): Promise<PositionVO[]> => {
return await request.get({ url: '/system/position/simple-list' })
}
// 查询职位详情
export const getPosition = async (id: number) => {
return await request.get({ url: '/system/position/get?id=' + id })
}
// 新增职位
export const createPosition = async (data: PositionVO) => {
return await request.post({ url: '/system/position/create', data })
}
// 修改职位
export const updatePosition = async (data: PositionVO) => {
return await request.put({ url: '/system/position/update', data })
}
// 删除职位
export const deletePosition = async (id: number) => {
return await request.delete({ url: '/system/position/delete?id=' + id })
}
// 导出职位
export const exportPosition = async (params) => {
return await request.download({ url: '/system/position/export', params })
}

View File

@@ -0,0 +1,45 @@
import request from '@/config/axios'
export interface PostVO {
id?: number
name: string
sort: number
status: number
remark: string
createTime?: Date
}
// 查询岗位列表
export const getPostPage = async (params: PageParam) => {
return await request.get({ url: '/system/post/page', params })
}
// 获取岗位精简信息列表
export const getSimplePostList = async (): Promise<PostVO[]> => {
return await request.get({ url: '/system/post/simple-list' })
}
// 查询岗位详情
export const getPost = async (id: number) => {
return await request.get({ url: '/system/post/get?id=' + id })
}
// 新增岗位
export const createPost = async (data: PostVO) => {
return await request.post({ url: '/system/post/create', data })
}
// 修改岗位
export const updatePost = async (data: PostVO) => {
return await request.put({ url: '/system/post/update', data })
}
// 删除岗位
export const deletePost = async (id: number) => {
return await request.delete({ url: '/system/post/delete?id=' + id })
}
// 导出岗位
export const exportPost = async (params) => {
return await request.download({ url: '/system/post/export', params })
}

View File

@@ -0,0 +1,45 @@
import request from '@/config/axios'
export interface RankVO {
id?: number
name: string
sort: number
status: number
remark: string
createTime?: Date
}
// 查询职级列表
export const getRankPage = async (params: PageParam) => {
return await request.get({ url: '/system/rank/page', params })
}
// 获取职级精简信息列表
export const getSimpleRankList = async (): Promise<RankVO[]> => {
return await request.get({ url: '/system/rank/simple-list' })
}
// 查询职级详情
export const getRank = async (id: number) => {
return await request.get({ url: '/system/rank/get?id=' + id })
}
// 新增职级
export const createRank = async (data: RankVO) => {
return await request.post({ url: '/system/rank/create', data })
}
// 修改职级
export const updateRank = async (data: RankVO) => {
return await request.put({ url: '/system/rank/update', data })
}
// 删除职级
export const deleteRank = async (id: number) => {
return await request.delete({ url: '/system/rank/delete?id=' + id })
}
// 导出职级
export const exportRank = async (params) => {
return await request.download({ url: '/system/rank/export', params })
}

View File

@@ -0,0 +1,6 @@
import request from '@/config/axios'
// 下载用户导入模板
export const importRiskTemplate = () => {
return request.download({ url: '/system/user/get-import-template' })
}

View File

@@ -0,0 +1,61 @@
import request from '@/config/axios'
export interface RoleVO {
id: number
name: string
code: string
sort: number
status: number
type: number
dataScope: number
dataScopeDeptIds: number[]
createTime: Date
}
export interface UpdateStatusReqVO {
id: number
status: number
}
// 查询角色列表
export const getRolePage = async (params: PageParam) => {
return await request.get({ url: '/system/role/page', params })
}
// 查询角色(精简)列表
export const getSimpleRoleList = async (): Promise<RoleVO[]> => {
return await request.get({ url: '/system/role/simple-list' })
}
// 查询角色详情
export const getRole = async (id: number) => {
return await request.get({ url: '/system/role/get?id=' + id })
}
// 新增角色
export const createRole = async (data: RoleVO) => {
return await request.post({ url: '/system/role/create', data })
}
// 修改角色
export const updateRole = async (data: RoleVO) => {
return await request.put({ url: '/system/role/update', data })
}
// 修改角色状态
export const updateRoleStatus = async (data: UpdateStatusReqVO) => {
return await request.put({ url: '/system/role/update-status', data })
}
// 删除角色
export const deleteRole = async (id: number) => {
return await request.delete({ url: '/system/role/delete?id=' + id })
}
// 导出角色
export const exportRole = (params) => {
return request.download({
url: '/system/role/export-excel',
params
})
}

View File

@@ -0,0 +1,58 @@
import request from '@/config/axios'
import qs from 'qs'
export interface SensitiveWordVO {
id: number
name: string
status: number
description: string
tags: string[]
createTime: Date
}
export interface SensitiveWordTestReqVO {
text: string
tag: string[]
}
// 查询敏感词列表
export const getSensitiveWordPage = (params: PageParam) => {
return request.get({ url: '/system/sensitive-word/page', params })
}
// 查询敏感词详情
export const getSensitiveWord = (id: number) => {
return request.get({ url: '/system/sensitive-word/get?id=' + id })
}
// 新增敏感词
export const createSensitiveWord = (data: SensitiveWordVO) => {
return request.post({ url: '/system/sensitive-word/create', data })
}
// 修改敏感词
export const updateSensitiveWord = (data: SensitiveWordVO) => {
return request.put({ url: '/system/sensitive-word/update', data })
}
// 删除敏感词
export const deleteSensitiveWord = (id: number) => {
return request.delete({ url: '/system/sensitive-word/delete?id=' + id })
}
// 导出敏感词
export const exportSensitiveWord = (params) => {
return request.download({ url: '/system/sensitive-word/export-excel', params })
}
// 获取所有敏感词的标签数组
export const getSensitiveWordTagList = () => {
return request.get({ url: '/system/sensitive-word/get-tags' })
}
// 获得文本所包含的不合法的敏感词数组
export const validateText = (query: SensitiveWordTestReqVO) => {
return request.get({
url: '/system/sensitive-word/validate-text?' + qs.stringify(query, { arrayFormat: 'repeat' })
})
}

View File

@@ -0,0 +1,43 @@
import request from '@/config/axios'
export interface SmsChannelVO {
id: number
code: string
status: number
signature: string
remark: string
apiKey: string
apiSecret: string
callbackUrl: string
createTime: Date
}
// 查询短信渠道列表
export const getSmsChannelPage = (params: PageParam) => {
return request.get({ url: '/system/sms-channel/page', params })
}
// 获得短信渠道精简列表
export function getSimpleSmsChannelList() {
return request.get({ url: '/system/sms-channel/simple-list' })
}
// 查询短信渠道详情
export const getSmsChannel = (id: number) => {
return request.get({ url: '/system/sms-channel/get?id=' + id })
}
// 新增短信渠道
export const createSmsChannel = (data: SmsChannelVO) => {
return request.post({ url: '/system/sms-channel/create', data })
}
// 修改短信渠道
export const updateSmsChannel = (data: SmsChannelVO) => {
return request.put({ url: '/system/sms-channel/update', data })
}
// 删除短信渠道
export const deleteSmsChannel = (id: number) => {
return request.delete({ url: '/system/sms-channel/delete?id=' + id })
}

View File

@@ -0,0 +1,37 @@
import request from '@/config/axios'
export interface SmsLogVO {
id: number | null
channelId: number | null
channelCode: string
templateId: number | null
templateCode: string
templateType: number | null
templateContent: string
templateParams: Map<string, object> | null
apiTemplateId: string
mobile: string
userId: number | null
userType: number | null
sendStatus: number | null
sendTime: Date | null
apiSendCode: string
apiSendMsg: string
apiRequestId: string
apiSerialNo: string
receiveStatus: number | null
receiveTime: Date | null
apiReceiveCode: string
apiReceiveMsg: string
createTime: Date | null
}
// 查询短信日志列表
export const getSmsLogPage = (params: PageParam) => {
return request.get({ url: '/system/sms-log/page', params })
}
// 导出短信日志
export const exportSmsLog = (params) => {
return request.download({ url: '/system/sms-log/export-excel', params })
}

View File

@@ -0,0 +1,60 @@
import request from '@/config/axios'
export interface SmsTemplateVO {
id?: number
type?: number
status: number
code: string
name: string
content: string
remark: string
apiTemplateId: string
channelId?: number
channelCode?: string
params?: string[]
createTime?: Date
}
export interface SendSmsReqVO {
mobile: string
templateCode: string
templateParams: Map<String, Object>
}
// 查询短信模板列表
export const getSmsTemplatePage = (params: PageParam) => {
return request.get({ url: '/system/sms-template/page', params })
}
// 查询短信模板详情
export const getSmsTemplate = (id: number) => {
return request.get({ url: '/system/sms-template/get?id=' + id })
}
// 新增短信模板
export const createSmsTemplate = (data: SmsTemplateVO) => {
return request.post({ url: '/system/sms-template/create', data })
}
// 修改短信模板
export const updateSmsTemplate = (data: SmsTemplateVO) => {
return request.put({ url: '/system/sms-template/update', data })
}
// 删除短信模板
export const deleteSmsTemplate = (id: number) => {
return request.delete({ url: '/system/sms-template/delete?id=' + id })
}
// 导出短信模板
export const exportSmsTemplate = (params) => {
return request.download({
url: '/system/sms-template/export-excel',
params
})
}
// 发送短信
export const sendSms = (data: SendSmsReqVO) => {
return request.post({ url: '/system/sms-template/send-sms', data })
}

View File

@@ -0,0 +1,37 @@
import request from '@/config/axios'
export interface SocialClientVO {
id: number
name: string
socialType: number
userType: number
clientId: string
clientSecret: string
agentId: string
status: number
}
// 查询社交客户端列表
export const getSocialClientPage = async (params) => {
return await request.get({ url: `/system/social-client/page`, params })
}
// 查询社交客户端详情
export const getSocialClient = async (id: number) => {
return await request.get({ url: `/system/social-client/get?id=` + id })
}
// 新增社交客户端
export const createSocialClient = async (data: SocialClientVO) => {
return await request.post({ url: `/system/social-client/create`, data })
}
// 修改社交客户端
export const updateSocialClient = async (data: SocialClientVO) => {
return await request.put({ url: `/system/social-client/update`, data })
}
// 删除社交客户端
export const deleteSocialClient = async (id: number) => {
return await request.delete({ url: `/system/social-client/delete?id=` + id })
}

View File

@@ -0,0 +1,24 @@
import request from '@/config/axios'
export interface SocialUserVO {
id: number
type: number
openid: string
token: string
rawTokenInfo: string
nickname: string
avatar: string
rawUserInfo: string
code: string
state: string
}
// 查询社交用户列表
export const getSocialUserPage = async (params) => {
return await request.get({ url: `/system/social-user/page`, params })
}
// 查询社交用户详情
export const getSocialUser = async (id: number) => {
return await request.get({ url: `/system/social-user/get?id=` + id })
}

View File

@@ -0,0 +1,67 @@
import request from '@/config/axios'
export interface TenantVO {
id: number
name: string
contactName: string
contactMobile: string
status: number
domain: string
packageId: number
username: string
password: string
expireTime: Date
accountCount: number
createTime: Date
}
export interface TenantPageReqVO extends PageParam {
name?: string
contactName?: string
contactMobile?: string
status?: number
createTime?: Date[]
}
export interface TenantExportReqVO {
name?: string
contactName?: string
contactMobile?: string
status?: number
createTime?: Date[]
}
// 查询租户列表
export const getTenantPage = (params: TenantPageReqVO) => {
return request.get({ url: '/system/tenant/page', params })
}
// 查询所有租户
export const getTenantAll = () => {
return request.get({ url: '/system/tenant/all' })
}
// 查询租户详情
export const getTenant = (id: number) => {
return request.get({ url: '/system/tenant/get?id=' + id })
}
// 新增租户
export const createTenant = (data: TenantVO) => {
return request.post({ url: '/system/tenant/create', data })
}
// 修改租户
export const updateTenant = (data: TenantVO) => {
return request.put({ url: '/system/tenant/update', data })
}
// 删除租户
export const deleteTenant = (id: number) => {
return request.delete({ url: '/system/tenant/delete?id=' + id })
}
// 导出租户
export const exportTenant = (params: TenantExportReqVO) => {
return request.download({ url: '/system/tenant/export-excel', params })
}

View File

@@ -0,0 +1,42 @@
import request from '@/config/axios'
export interface TenantPackageVO {
id: number
name: string
status: number
remark: string
creator: string
updater: string
updateTime: string
menuIds: number[]
createTime: Date
}
// 查询租户套餐列表
export const getTenantPackagePage = (params: PageParam) => {
return request.get({ url: '/system/tenant-package/page', params })
}
// 获得租户
export const getTenantPackage = (id: number) => {
return request.get({ url: '/system/tenant-package/get?id=' + id })
}
// 新增租户套餐
export const createTenantPackage = (data: TenantPackageVO) => {
return request.post({ url: '/system/tenant-package/create', data })
}
// 修改租户套餐
export const updateTenantPackage = (data: TenantPackageVO) => {
return request.put({ url: '/system/tenant-package/update', data })
}
// 删除租户套餐
export const deleteTenantPackage = (id: number) => {
return request.delete({ url: '/system/tenant-package/delete?id=' + id })
}
// 获取租户套餐精简信息列表
export const getTenantPackageList = () => {
return request.get({ url: '/system/tenant-package/simple-list' })
}

View File

@@ -0,0 +1,81 @@
import request from '@/config/axios'
export interface UserVO {
id: number
username: string
nickname: string
deptId: number
postIds: string[]
email: string
mobile: string
sex: number
avatar: string
loginIp: string
status: number
remark: string
loginDate: Date
createTime: Date
}
// 查询用户管理列表
export const getUserPage = (params: PageParam) => {
return request.get({ url: '/system/user/page', params })
}
// 查询所有用户列表
export const getAllUser = () => {
return request.get({ url: '/system/user/all' })
}
// 查询用户详情
export const getUser = (id: number) => {
return request.get({ url: '/system/user/get?id=' + id })
}
// 新增用户
export const createUser = (data: UserVO) => {
return request.post({ url: '/system/user/create', data })
}
// 修改用户
export const updateUser = (data: UserVO) => {
return request.put({ url: '/system/user/update', data })
}
// 删除用户
export const deleteUser = (id: number) => {
return request.delete({ url: '/system/user/delete?id=' + id })
}
// 导出用户
export const exportUser = (params) => {
return request.download({ url: '/system/user/export', params })
}
// 下载用户导入模板
export const importUserTemplate = () => {
return request.download({ url: '/system/user/get-import-template' })
}
// 用户密码重置
export const resetUserPwd = (id: number, password: string) => {
const data = {
id,
password
}
return request.put({ url: '/system/user/update-password', data: data })
}
// 用户状态修改
export const updateUserStatus = (id: number, status: number) => {
const data = {
id,
status
}
return request.put({ url: '/system/user/update-status', data: data })
}
// 获取用户精简信息列表
export const getSimpleUserList = (): Promise<UserVO[]> => {
return request.get({ url: '/system/user/simple-list' })
}

View File

@@ -0,0 +1,84 @@
import request from '@/config/axios'
interface DicVo {
name: string
id: number
}
export interface ProfileVO {
id: number
username: string
nickname: string
rankInfoList: DicVo[]
deptInfoList: {
deptId: number
deptName: string
dutyInfoList: DicVo[]
positionInfoList: DicVo[]
postInfoList: DicVo[]
roleInfoList: DicVo[]
dutyStr?: string
positionStr?: string
postStr?: string
roleStr?: string
}[]
dept: {
id: number
name: string
}
roles: {
id: number
name: string
}[]
posts: {
id: number
name: string
}[]
socialUsers: {
type: number
openid: string
}[]
email: string
mobile: string
sex: number
avatar: string
status: number
remark: string
loginIp: string
loginDate: Date
createTime: Date
}
export interface UserProfileUpdateReqVO {
nickname: string
email: string
mobile: string
sex: number
}
// 查询用户个人信息
export const getUserProfile = () => {
return request.get({ url: '/system/user/profile/get' })
}
// 修改用户个人信息
export const updateUserProfile = (data: UserProfileUpdateReqVO) => {
return request.put({ url: '/system/user/profile/update', data })
}
// 用户密码重置
export const updateUserPassword = (oldPassword: string, newPassword: string) => {
return request.put({
url: '/system/user/profile/update-password',
data: {
oldPassword: oldPassword,
newPassword: newPassword
}
})
}
// 用户头像上传
export const uploadAvatar = (data) => {
// return request.upload({ url: '/system/user/profile/update-avatar', data: data })
return request.upload({ url: '/infra/file/jeelowcode/upload', data: data })
}

View File

@@ -0,0 +1,31 @@
import request from '@/config/axios'
// 社交绑定,使用 code 授权码
export const socialBind = (type, code, state) => {
return request.post({
url: '/system/social-user/bind',
data: {
type,
code,
state
}
})
}
// 取消社交绑定
export const socialUnbind = (type, openid) => {
return request.delete({
url: '/system/social-user/unbind',
data: {
type,
openid
}
})
}
// 社交授权的跳转
export const socialAuthRedirect = (type, redirectUri) => {
return request.get({
url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

View File

View File

@@ -0,0 +1 @@
<svg width="876" height="445" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient gradientUnits="userSpaceOnUse" x1="107.75" y1="-107.75" x2="768.25" y2="552.75" id="a"><stop stop-color="#0e226e" offset="0"/><stop stop-color="#000847" offset="1"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" x1="107.75" y1="-107.75" x2="768.25" y2="552.75" id="b"><stop stop-color="#135db3" offset="0"/><stop stop-color="#0ff" offset=".38"/><stop stop-color="#90d2f0" offset=".68"/><stop stop-color="#104277" offset="1"/></linearGradient><mask fill="#fff" id="c"><path d="M0 445V29h549.6L578.4.6 876 2v443H0Z" fill-rule="evenodd"/></mask></defs><path d="M0 445V29h549.6L578.4.6 876 2v443H0Z" fill="url(#a)"/><path d="M0 445V29h549.6L578.4.6 876 2v443H0Z" stroke-width="4" stroke="url(#b)" fill="none" mask="url(#c)"/></svg>

After

Width:  |  Height:  |  Size: 831 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -0,0 +1 @@
<svg width="876" height="443" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient gradientUnits="userSpaceOnUse" x1="601.069" y1="-128.202" x2="274.931" y2="571.202" id="a"><stop stop-color="#030d4f" offset="0"/><stop stop-color="#030d4f" offset=".02"/><stop stop-color="#05176a" offset=".75"/><stop stop-color="#05176a" offset="1"/></linearGradient><linearGradient gradientUnits="userSpaceOnUse" x1="108.25" y1="-108.25" x2="767.75" y2="551.25" id="b"><stop stop-color="#135db3" offset="0"/><stop stop-color="#0ff" offset=".38"/><stop stop-color="#90d2f0" offset=".68"/><stop stop-color="#104277" offset="1"/></linearGradient><mask fill="#fff" id="c"><path d="M0 443V27h655l19-27h202v443H0Z" fill-rule="evenodd"/></mask></defs><path d="M0 443V27h655l19-27h202v443H0Z" fill="url(#a)"/><path d="M0 443V27h655l19-27h202v443H0Z" stroke-width="4" stroke="url(#b)" fill="none" mask="url(#c)"/></svg>

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More