first commit

This commit is contained in:
2026-03-05 16:52:12 +08:00
commit 8ca2e6d52f
1899 changed files with 321565 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
import request from '@/config/axios'
// AI 聊天对话 VO
export interface ChatConversationVO {
id: number // ID 编号
userId: number // 用户编号
title: string // 对话标题
pinned: boolean // 是否置顶
roleId: number // 角色编号
modelId: number // 模型编号
model: string // 模型标志
temperature: number // 温度参数
maxTokens: number // 单条回复的最大 Token 数量
maxContexts: number // 上下文的最大 Message 数量
createTime?: Date // 创建时间
// 额外字段
systemMessage?: string // 角色设定
modelName?: string // 模型名字
roleAvatar?: string // 角色头像
modelMaxTokens?: string // 模型的单条回复的最大 Token 数量
modelMaxContexts?: string // 模型的上下文的最大 Message 数量
}
// AI 聊天对话 API
export const ChatConversationApi = {
// 获得【我的】聊天对话
getChatConversationMy: async (id: number) => {
return await request.get({ url: `/ai/chat/conversation/get-my?id=${id}` })
},
// 新增【我的】聊天对话
createChatConversationMy: async (data?: ChatConversationVO) => {
return await request.post({ url: `/ai/chat/conversation/create-my`, data })
},
// 更新【我的】聊天对话
updateChatConversationMy: async (data: ChatConversationVO) => {
return await request.put({ url: `/ai/chat/conversation/update-my`, data })
},
// 删除【我的】聊天对话
deleteChatConversationMy: async (id: string) => {
return await request.delete({ url: `/ai/chat/conversation/delete-my?id=${id}` })
},
// 删除【我的】所有对话,置顶除外
deleteChatConversationMyByUnpinned: async () => {
return await request.delete({ url: `/ai/chat/conversation/delete-by-unpinned` })
},
// 获得【我的】聊天对话列表
getChatConversationMyList: async () => {
return await request.get({ url: `/ai/chat/conversation/my-list` })
},
// 获得对话分页
getChatConversationPage: async (params: any) => {
return await request.get({ url: `/ai/chat/conversation/page`, params })
},
// 管理员删除消息
deleteChatConversationByAdmin: async (id: number) => {
return await request.delete({ url: `/ai/chat/conversation/delete-by-admin?id=${id}` })
}
}

View File

@@ -0,0 +1,89 @@
import request from '@/config/axios'
import { fetchEventSource } from '@microsoft/fetch-event-source'
import { config } from '@/config/axios/config'
import { buildSseHeaders, validateSseHandshake } from '@/utils/sse'
// 聊天VO
export interface ChatMessageVO {
id: number // 编号
conversationId: number // 对话编号
type: string // 消息类型
userId: string // 用户编号
roleId: string // 角色编号
model: number // 模型标志
modelId: number // 模型编号
content: string // 聊天内容
tokens: number // 消耗 Token 数量
segmentIds?: number[] // 段落编号
segments?: {
id: number // 段落编号
content: string // 段落内容
documentId: number // 文档编号
documentName: string // 文档名称
}[]
createTime: Date // 创建时间
roleAvatar: string // 角色头像
userAvatar: string // 用户头像
}
// AI chat 聊天
export const ChatMessageApi = {
// 消息列表
getChatMessageListByConversationId: async (conversationId: number | null) => {
return await request.get({
url: `/ai/chat/message/list-by-conversation-id?conversationId=${conversationId}`
})
},
// 发送 Stream 消息
// 为什么不用 axios 呢?因为它不支持 SSE 调用
sendChatMessageStream: async (
conversationId: number,
content: string,
ctrl,
enableContext: boolean,
onMessage,
onError,
onClose
) => {
return fetchEventSource(`${config.base_url}/ai/chat/message/send-stream`, {
method: 'post',
headers: buildSseHeaders(),
openWhenHidden: true,
body: JSON.stringify({
conversationId,
content,
useContext: enableContext
}),
async onopen(response) {
await validateSseHandshake(response)
},
onmessage: onMessage,
onerror: onError,
onclose: onClose,
signal: ctrl.signal
})
},
// 删除消息
deleteChatMessage: async (id: string) => {
return await request.delete({ url: `/ai/chat/message/delete?id=${id}` })
},
// 删除指定对话的消息
deleteByConversationId: async (conversationId: number) => {
return await request.delete({
url: `/ai/chat/message/delete-by-conversation-id?conversationId=${conversationId}`
})
},
// 获得消息分页
getChatMessagePage: async (params: any) => {
return await request.get({ url: '/ai/chat/message/page', params })
},
// 管理员删除消息
deleteChatMessageByAdmin: async (id: number) => {
return await request.delete({ url: `/ai/chat/message/delete-by-admin?id=${id}` })
}
}

102
src/api/ai/image/index.ts Normal file
View File

@@ -0,0 +1,102 @@
import request from '@/config/axios'
// AI 绘图 VO
export interface ImageVO {
id: number // 编号
platform: string // 平台
model: string // 模型
prompt: string // 提示词
width: number // 图片宽度
height: number // 图片高度
status: number // 状态
publicStatus: boolean // 公开状态
picUrl: string // 任务地址
errorMessage: string // 错误信息
options: any // 配置 Map<string, string>
taskId: number // 任务编号
buttons: ImageMidjourneyButtonsVO[] // mj 操作按钮
createTime: Date // 创建时间
finishTime: Date // 完成时间
}
export interface ImageDrawReqVO {
prompt: string // 提示词
modelId: number // 模型
style: string // 图像生成的风格
width: string // 图片宽度
height: string // 图片高度
options: object // 绘制参数Map<String, String>
}
export interface ImageMidjourneyImagineReqVO {
prompt: string // 提示词
modelId: number // 模型
base64Array: string[] // size不能为空
width: string // 图片宽度
height: string // 图片高度
version: string // 版本
}
export interface ImageMidjourneyActionVO {
id: number // 图片编号
customId: string // MJ::JOB::upsample::1::85a4b4c1-8835-46c5-a15c-aea34fad1862 动作标识
}
export interface ImageMidjourneyButtonsVO {
customId: string // MJ::JOB::upsample::1::85a4b4c1-8835-46c5-a15c-aea34fad1862 动作标识
emoji: string // 图标 emoji
label: string // Make Variations 文本
style: number // 样式: 2Primary、3Green
}
// AI 图片 API
export const ImageApi = {
// 获取【我的】绘图分页
getImagePageMy: async (params: any) => {
return await request.get({ url: `/ai/image/my-page`, params })
},
// 获取【我的】绘图记录
getImageMy: async (id: number) => {
return await request.get({ url: `/ai/image/get-my?id=${id}` })
},
// 获取【我的】绘图记录列表
getImageListMyByIds: async (ids: number[]) => {
return await request.get({ url: `/ai/image/my-list-by-ids`, params: { ids: ids.join(',') } })
},
// 生成图片
drawImage: async (data: ImageDrawReqVO) => {
return await request.post({ url: `/ai/image/draw`, data })
},
// 删除【我的】绘画记录
deleteImageMy: async (id: number) => {
return await request.delete({ url: `/ai/image/delete-my?id=${id}` })
},
// ================ midjourney 专属 ================
// 【Midjourney】生成图片
midjourneyImagine: async (data: ImageMidjourneyImagineReqVO) => {
return await request.post({ url: `/ai/image/midjourney/imagine`, data })
},
// 【Midjourney】Action 操作(二次生成图片)
midjourneyAction: async (data: ImageMidjourneyActionVO) => {
return await request.post({ url: `/ai/image/midjourney/action`, data })
},
// ================ 绘图管理 ================
// 查询绘画分页
getImagePage: async (params: any) => {
return await request.get({ url: `/ai/image/page`, params })
},
// 更新绘画发布状态
updateImage: async (data: any) => {
return await request.put({ url: '/ai/image/update', data })
},
// 删除绘画
deleteImage: async (id: number) => {
return await request.delete({ url: `/ai/image/delete?id=` + id })
}
}

View File

@@ -0,0 +1,54 @@
import request from '@/config/axios'
// AI 知识库文档 VO
export interface KnowledgeDocumentVO {
id: number // 编号
knowledgeId: number // 知识库编号
name: string // 文档名称
contentLength: number // 字符数
tokens: number // token 数
segmentMaxTokens: number // 分片最大 token 数
retrievalCount: number // 召回次数
status: number // 是否启用
}
// AI 知识库文档 API
export const KnowledgeDocumentApi = {
// 查询知识库文档分页
getKnowledgeDocumentPage: async (params: any) => {
return await request.get({ url: `/ai/knowledge/document/page`, params })
},
// 查询知识库文档详情
getKnowledgeDocument: async (id: number) => {
return await request.get({ url: `/ai/knowledge/document/get?id=` + id })
},
// 新增知识库文档(单个)
createKnowledgeDocument: async (data: any) => {
return await request.post({ url: `/ai/knowledge/document/create`, data })
},
// 新增知识库文档(多个)
createKnowledgeDocumentList: async (data: any) => {
return await request.post({ url: `/ai/knowledge/document/create-list`, data })
},
// 修改知识库文档
updateKnowledgeDocument: async (data: any) => {
return await request.put({ url: `/ai/knowledge/document/update`, data })
},
// 修改知识库文档状态
updateKnowledgeDocumentStatus: async (data: any) => {
return await request.put({
url: `/ai/knowledge/document/update-status`,
data
})
},
// 删除知识库文档
deleteKnowledgeDocument: async (id: number) => {
return await request.delete({ url: `/ai/knowledge/document/delete?id=` + id })
}
}

View File

@@ -0,0 +1,44 @@
import request from '@/config/axios'
// AI 知识库 VO
export interface KnowledgeVO {
id: number // 编号
name: string // 知识库名称
description: string // 知识库描述
embeddingModelId: number // 嵌入模型编号,高质量模式时维护
topK: number // topK
similarityThreshold: number // 相似度阈值
}
// AI 知识库 API
export const KnowledgeApi = {
// 查询知识库分页
getKnowledgePage: async (params: any) => {
return await request.get({ url: `/ai/knowledge/page`, params })
},
// 查询知识库详情
getKnowledge: async (id: number) => {
return await request.get({ url: `/ai/knowledge/get?id=` + id })
},
// 新增知识库
createKnowledge: async (data: KnowledgeVO) => {
return await request.post({ url: `/ai/knowledge/create`, data })
},
// 修改知识库
updateKnowledge: async (data: KnowledgeVO) => {
return await request.put({ url: `/ai/knowledge/update`, data })
},
// 删除知识库
deleteKnowledge: async (id: number) => {
return await request.delete({ url: `/ai/knowledge/delete?id=` + id })
},
// 获取知识库简单列表
getSimpleKnowledgeList: async () => {
return await request.get({ url: `/ai/knowledge/simple-list` })
}
}

View File

@@ -0,0 +1,75 @@
import request from '@/config/axios'
// AI 知识库分段 VO
export interface KnowledgeSegmentVO {
id: number // 编号
documentId: number // 文档编号
knowledgeId: number // 知识库编号
vectorId: string // 向量库编号
content: string // 切片内容
contentLength: number // 切片内容长度
tokens: number // token 数量
retrievalCount: number // 召回次数
status: number // 文档状态
createTime: number // 创建时间
}
// AI 知识库分段 API
export const KnowledgeSegmentApi = {
// 查询知识库分段分页
getKnowledgeSegmentPage: async (params: any) => {
return await request.get({ url: `/ai/knowledge/segment/page`, params })
},
// 查询知识库分段详情
getKnowledgeSegment: async (id: number) => {
return await request.get({ url: `/ai/knowledge/segment/get?id=` + id })
},
// 删除知识库分段
deleteKnowledgeSegment: async (id: number) => {
return await request.delete({ url: `/ai/knowledge/segment/delete?id=` + id })
},
// 新增知识库分段
createKnowledgeSegment: async (data: KnowledgeSegmentVO) => {
return await request.post({ url: `/ai/knowledge/segment/create`, data })
},
// 修改知识库分段
updateKnowledgeSegment: async (data: KnowledgeSegmentVO) => {
return await request.put({ url: `/ai/knowledge/segment/update`, data })
},
// 修改知识库分段状态
updateKnowledgeSegmentStatus: async (data: any) => {
return await request.put({
url: `/ai/knowledge/segment/update-status`,
data
})
},
// 切片内容
splitContent: async (url: string, segmentMaxTokens: number) => {
return await request.get({
url: `/ai/knowledge/segment/split`,
params: { url, segmentMaxTokens }
})
},
// 获取文档处理列表
getKnowledgeSegmentProcessList: async (documentIds: number[]) => {
return await request.get({
url: `/ai/knowledge/segment/get-process-list`,
params: { documentIds: documentIds.join(',') }
})
},
// 搜索知识库分段
searchKnowledgeSegment: async (params: any) => {
return await request.get({
url: `/ai/knowledge/segment/search`,
params
})
}
}

View File

@@ -0,0 +1,59 @@
import { fetchEventSource } from '@microsoft/fetch-event-source'
import { config } from '@/config/axios/config'
import request from '@/config/axios' // AI 思维导图 VO
import { buildSseHeaders, validateSseHandshake } from '@/utils/sse'
// AI 思维导图 VO
export interface MindMapVO {
id: number // 编号
userId: number // 用户编号
prompt: string // 生成内容提示
generatedContent: string // 生成的思维导图内容
platform: string // 平台
model: string // 模型
errorMessage: string // 错误信息
}
// AI 思维导图生成 VO
export interface AiMindMapGenerateReqVO {
prompt: string
}
export const AiMindMapApi = {
generateMindMap: ({
data,
onClose,
onMessage,
onError,
ctrl
}: {
data: AiMindMapGenerateReqVO
onMessage?: (res: any) => void
onError?: (...args: any[]) => void
onClose?: (...args: any[]) => void
ctrl: AbortController
}) => {
return fetchEventSource(`${config.base_url}/ai/mind-map/generate-stream`, {
method: 'post',
headers: buildSseHeaders(),
openWhenHidden: true,
body: JSON.stringify(data),
async onopen(response) {
await validateSseHandshake(response)
},
onmessage: onMessage,
onerror: onError,
onclose: onClose,
signal: ctrl.signal
})
},
// 查询思维导图分页
getMindMapPage: async (params: any) => {
return await request.get({ url: `/ai/mind-map/page`, params })
},
// 删除思维导图
deleteMindMap: async (id: number) => {
return await request.delete({ url: `/ai/mind-map/delete?id=` + id })
}
}

View File

@@ -0,0 +1,44 @@
import request from '@/config/axios'
// AI API 密钥 VO
export interface ApiKeyVO {
id: number // 编号
name: string // 名称
apiKey: string // 密钥
platform: string // 平台
url: string // 自定义 API 地址
status: number // 状态
}
// AI API 密钥 API
export const ApiKeyApi = {
// 查询 API 密钥分页
getApiKeyPage: async (params: any) => {
return await request.get({ url: `/ai/api-key/page`, params })
},
// 获得 API 密钥列表
getApiKeySimpleList: async () => {
return await request.get({ url: `/ai/api-key/simple-list` })
},
// 查询 API 密钥详情
getApiKey: async (id: number) => {
return await request.get({ url: `/ai/api-key/get?id=` + id })
},
// 新增 API 密钥
createApiKey: async (data: ApiKeyVO) => {
return await request.post({ url: `/ai/api-key/create`, data })
},
// 修改 API 密钥
updateApiKey: async (data: ApiKeyVO) => {
return await request.put({ url: `/ai/api-key/update`, data })
},
// 删除 API 密钥
deleteApiKey: async (id: number) => {
return await request.delete({ url: `/ai/api-key/delete?id=` + id })
}
}

View File

@@ -0,0 +1,82 @@
import request from '@/config/axios'
// AI 聊天角色 VO
export interface ChatRoleVO {
id: number // 角色编号
modelId: number // 模型编号
name: string // 角色名称
avatar: string // 角色头像
category: string // 角色类别
sort: number // 角色排序
description: string // 角色描述
systemMessage: string // 角色设定
welcomeMessage: string // 角色设定
publicStatus: boolean // 是否公开
status: number // 状态
knowledgeIds?: number[] // 引用的知识库 ID 列表
toolIds?: number[] // 引用的工具 ID 列表
}
// AI 聊天角色 分页请求 vo
export interface ChatRolePageReqVO {
name?: string // 角色名称
category?: string // 角色类别
publicStatus: boolean // 是否公开
pageNo: number // 是否公开
pageSize: number // 是否公开
}
// AI 聊天角色 API
export const ChatRoleApi = {
// 查询聊天角色分页
getChatRolePage: async (params: any) => {
return await request.get({ url: `/ai/chat-role/page`, params })
},
// 查询聊天角色详情
getChatRole: async (id: number) => {
return await request.get({ url: `/ai/chat-role/get?id=` + id })
},
// 新增聊天角色
createChatRole: async (data: ChatRoleVO) => {
return await request.post({ url: `/ai/chat-role/create`, data })
},
// 修改聊天角色
updateChatRole: async (data: ChatRoleVO) => {
return await request.put({ url: `/ai/chat-role/update`, data })
},
// 删除聊天角色
deleteChatRole: async (id: number) => {
return await request.delete({ url: `/ai/chat-role/delete?id=` + id })
},
// ======= chat 聊天
// 获取 my role
getMyPage: async (params: ChatRolePageReqVO) => {
return await request.get({ url: `/ai/chat-role/my-page`, params})
},
// 获取角色分类
getCategoryList: async () => {
return await request.get({ url: `/ai/chat-role/category-list`})
},
// 创建角色
createMy: async (data: ChatRoleVO) => {
return await request.post({ url: `/ai/chat-role/create-my`, data})
},
// 更新角色
updateMy: async (data: ChatRoleVO) => {
return await request.put({ url: `/ai/chat-role/update-my`, data})
},
// 删除角色 my
deleteMy: async (id: number) => {
return await request.delete({ url: `/ai/chat-role/delete-my?id=` + id })
},
}

View File

@@ -0,0 +1,54 @@
import request from '@/config/axios'
// AI 模型 VO
export interface ModelVO {
id: number // 编号
keyId: number // API 秘钥编号
name: string // 模型名字
model: string // 模型标识
platform: string // 模型平台
type: number // 模型类型
sort: number // 排序
status: number // 状态
temperature?: number // 温度参数
maxTokens?: number // 单条回复的最大 Token 数量
maxContexts?: number // 上下文的最大 Message 数量
}
// AI 模型 API
export const ModelApi = {
// 查询模型分页
getModelPage: async (params: any) => {
return await request.get({ url: `/ai/model/page`, params })
},
// 获得模型列表
getModelSimpleList: async (type?: number) => {
return await request.get({
url: `/ai/model/simple-list`,
params: {
type
}
})
},
// 查询模型详情
getModel: async (id: number) => {
return await request.get({ url: `/ai/model/get?id=` + id })
},
// 新增模型
createModel: async (data: ModelVO) => {
return await request.post({ url: `/ai/model/create`, data })
},
// 修改模型
updateModel: async (data: ModelVO) => {
return await request.put({ url: `/ai/model/update`, data })
},
// 删除模型
deleteModel: async (id: number) => {
return await request.delete({ url: `/ai/model/delete?id=` + id })
}
}

View File

@@ -0,0 +1,42 @@
import request from '@/config/axios'
// AI 工具 VO
export interface ToolVO {
id: number // 工具编号
name: string // 工具名称
description: string // 工具描述
status: number // 状态
}
// AI 工具 API
export const ToolApi = {
// 查询工具分页
getToolPage: async (params: any) => {
return await request.get({ url: `/ai/tool/page`, params })
},
// 查询工具详情
getTool: async (id: number) => {
return await request.get({ url: `/ai/tool/get?id=` + id })
},
// 新增工具
createTool: async (data: ToolVO) => {
return await request.post({ url: `/ai/tool/create`, data })
},
// 修改工具
updateTool: async (data: ToolVO) => {
return await request.put({ url: `/ai/tool/update`, data })
},
// 删除工具
deleteTool: async (id: number) => {
return await request.delete({ url: `/ai/tool/delete?id=` + id })
},
// 获取工具简单列表
getToolSimpleList: async () => {
return await request.get({ url: `/ai/tool/simple-list` })
}
}

41
src/api/ai/music/index.ts Normal file
View File

@@ -0,0 +1,41 @@
import request from '@/config/axios'
// AI 音乐 VO
export interface MusicVO {
id: number // 编号
userId: number // 用户编号
title: string // 音乐名称
lyric: string // 歌词
imageUrl: string // 图片地址
audioUrl: string // 音频地址
videoUrl: string // 视频地址
status: number // 音乐状态
gptDescriptionPrompt: string // 描述词
prompt: string // 提示词
platform: string // 模型平台
model: string // 模型
generateMode: number // 生成模式
tags: string // 音乐风格标签
duration: number // 音乐时长
publicStatus: boolean // 是否发布
taskId: string // 任务id
errorMessage: string // 错误信息
}
// AI 音乐 API
export const MusicApi = {
// 查询音乐分页
getMusicPage: async (params: any) => {
return await request.get({ url: `/ai/music/page`, params })
},
// 更新音乐
updateMusic: async (data: any) => {
return await request.put({ url: '/ai/music/update', data })
},
// 删除音乐
deleteMusic: async (id: number) => {
return await request.delete({ url: `/ai/music/delete?id=` + id })
}
}

View File

@@ -0,0 +1,25 @@
import request from '@/config/axios'
export const getWorkflowPage = async (params) => {
return await request.get({ url: '/ai/workflow/page', params })
}
export const getWorkflow = async (id) => {
return await request.get({ url: '/ai/workflow/get?id=' + id })
}
export const createWorkflow = async (data) => {
return await request.post({ url: '/ai/workflow/create', data })
}
export const updateWorkflow = async (data) => {
return await request.put({ url: '/ai/workflow/update', data })
}
export const deleteWorkflow = async (id) => {
return await request.delete({ url: '/ai/workflow/delete?id=' + id })
}
export const testWorkflow = async (data) => {
return await request.post({ url: '/ai/workflow/test', data })
}

84
src/api/ai/write/index.ts Normal file
View File

@@ -0,0 +1,84 @@
import { fetchEventSource } from '@microsoft/fetch-event-source'
import { config } from '@/config/axios/config'
import { AiWriteTypeEnum } from '@/views/ai/utils/constants'
import request from '@/config/axios'
import { buildSseHeaders, validateSseHandshake } from '@/utils/sse'
export interface WriteVO {
type: AiWriteTypeEnum.WRITING | AiWriteTypeEnum.REPLY // 1:撰写 2:回复
prompt: string // 写作内容提示 1。撰写 2回复
originalContent: string // 原文
length: number // 长度
format: number // 格式
tone: number // 语气
language: number // 语言
userId?: number // 用户编号
platform?: string // 平台
model?: string // 模型
generatedContent?: string // 生成的内容
errorMessage?: string // 错误信息
createTime?: Date // 创建时间
}
export interface AiWritePageReqVO extends PageParam {
userId?: number // 用户编号
type?: AiWriteTypeEnum // 写作类型
platform?: string // 平台
createTime?: [string, string] // 创建时间
}
export interface AiWriteRespVo {
id: number
userId: number
type: number
platform: string
model: string
prompt: string
generatedContent: string
originalContent: string
length: number
format: number
tone: number
language: number
errorMessage: string
createTime: string
}
export const WriteApi = {
writeStream: ({
data,
onClose,
onMessage,
onError,
ctrl
}: {
data: WriteVO
onMessage?: (res: any) => void
onError?: (...args: any[]) => void
onClose?: (...args: any[]) => void
ctrl: AbortController
}) => {
return fetchEventSource(`${config.base_url}/ai/write/generate-stream`, {
method: 'post',
headers: buildSseHeaders(),
openWhenHidden: true,
body: JSON.stringify(data),
async onopen(response) {
await validateSseHandshake(response)
},
onmessage: onMessage,
onerror: onError,
onclose: onClose,
signal: ctrl.signal
})
},
// 获取写作列表
getWritePage: (params: AiWritePageReqVO) => {
return request.get<PageResult<AiWriteRespVo[]>>({ url: `/ai/write/page`, params })
},
// 删除写作
deleteWrite(id: number) {
return request.delete({ url: `/ai/write/delete`, params: { id } })
}
}

View File

@@ -0,0 +1,53 @@
import request from '@/config/axios'
// BPM 流程分类 VO
export interface CategoryVO {
id: number // 分类编号
name: string // 分类名
code: string // 分类标志
status: number // 分类状态
sort: number // 分类排序
}
// BPM 流程分类 API
export const CategoryApi = {
// 查询流程分类分页
getCategoryPage: async (params: any) => {
return await request.get({ url: `/bpm/category/page`, params })
},
// 查询流程分类列表
getCategorySimpleList: async () => {
return await request.get({ url: `/bpm/category/simple-list` })
},
// 查询流程分类详情
getCategory: async (id: number) => {
return await request.get({ url: `/bpm/category/get?id=` + id })
},
// 新增流程分类
createCategory: async (data: CategoryVO) => {
return await request.post({ url: `/bpm/category/create`, data })
},
// 修改流程分类
updateCategory: async (data: CategoryVO) => {
return await request.put({ url: `/bpm/category/update`, data })
},
// 批量修改流程分类的排序
updateCategorySortBatch: async (ids: number[]) => {
return await request.put({
url: `/bpm/category/update-sort-batch`,
params: {
ids: ids.join(',')
}
})
},
// 删除流程分类
deleteCategory: async (id: number) => {
return await request.delete({ url: `/bpm/category/delete?id=` + id })
}
}

View File

@@ -0,0 +1,28 @@
import request from '@/config/axios'
export const getProcessDefinition = async (id?: string, key?: string) => {
return await request.get({
url: '/bpm/process-definition/get',
params: { id, key }
})
}
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
})
}
export const getSimpleProcessDefinitionList = async () => {
return await request.get({
url: '/bpm/process-definition/simple-list'
})
}

56
src/api/bpm/form/index.ts Normal file
View File

@@ -0,0 +1,56 @@
import request from '@/config/axios'
export type FormVO = {
id: number
name: string
conf: string
fields: string[]
status: number
remark: string
createTime: string
}
// 创建工作流的表单定义
export const createForm = async (data: FormVO) => {
return await request.post({
url: '/bpm/form/create',
data: data
})
}
// 更新工作流的表单定义
export const updateForm = async (data: FormVO) => {
return await request.put({
url: '/bpm/form/update',
data: data
})
}
// 删除工作流的表单定义
export const deleteForm = async (id: number) => {
return await request.delete({
url: '/bpm/form/delete?id=' + id
})
}
// 获得工作流的表单定义
export const getForm = async (id: number) => {
return await request.get({
url: '/bpm/form/get?id=' + id
})
}
// 获得工作流的表单定义分页
export const getFormPage = async (params) => {
return await request.get({
url: '/bpm/form/page',
params
})
}
// 获得动态表单的精简列表
export const getFormSimpleList = async () => {
return await request.get({
url: '/bpm/form/simple-list'
})
}

View File

@@ -0,0 +1,27 @@
import request from '@/config/axios'
export type LeaveVO = {
id: number
status: number
type: number
reason: string
processInstanceId: string
startTime: string
endTime: string
createTime: string
}
// 创建请假申请
export const createLeave = async (data: LeaveVO) => {
return await request.post({ url: '/bpm/oa/leave/create', data: data })
}
// 获得请假申请
export const getLeave = async (id: number) => {
return await request.get({ url: '/bpm/oa/leave/get?id=' + id })
}
// 获得请假申请分页
export const getLeavePage = async (params: PageParam) => {
return await request.get({ url: '/bpm/oa/leave/page', params })
}

View File

@@ -0,0 +1,78 @@
import request from '@/config/axios'
export type ProcessDefinitionVO = {
id: string
version: number
deploymentTIme: string
suspensionState: number
formType?: number
}
export type ModelVO = {
id: number
formName: string
key: string
name: string
description: string
category: string
formType: number
formId: number
formCustomCreatePath: string
formCustomViewPath: string
processDefinition: ProcessDefinitionVO
status: number
remark: string
createTime: string
bpmnXml: string
}
export const getModelList = async (name: string | undefined) => {
return await request.get({ url: '/bpm/model/list', params: { name } })
}
export const getModel = async (id: string) => {
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 updateModelSortBatch = async (ids: number[]) => {
return await request.put({
url: `/bpm/model/update-sort-batch`,
params: {
ids: ids.join(',')
}
})
}
export const updateModelBpmn = async (data: ModelVO) => {
return await request.put({ url: '/bpm/model/update-bpmn', 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 })
}
export const cleanModel = async (id: number) => {
return await request.delete({ url: '/bpm/model/clean?id=' + id })
}

View File

@@ -0,0 +1,42 @@
import request from '@/config/axios'
// BPM 流程表达式 VO
export interface ProcessExpressionVO {
id: number // 编号
name: string // 表达式名字
status: number // 表达式状态
expression: string // 表达式
}
// BPM 流程表达式 API
export const ProcessExpressionApi = {
// 查询BPM 流程表达式分页
getProcessExpressionPage: async (params: any) => {
return await request.get({ url: `/bpm/process-expression/page`, params })
},
// 查询BPM 流程表达式详情
getProcessExpression: async (id: number) => {
return await request.get({ url: `/bpm/process-expression/get?id=` + id })
},
// 新增BPM 流程表达式
createProcessExpression: async (data: ProcessExpressionVO) => {
return await request.post({ url: `/bpm/process-expression/create`, data })
},
// 修改BPM 流程表达式
updateProcessExpression: async (data: ProcessExpressionVO) => {
return await request.put({ url: `/bpm/process-expression/update`, data })
},
// 删除BPM 流程表达式
deleteProcessExpression: async (id: number) => {
return await request.delete({ url: `/bpm/process-expression/delete?id=` + id })
},
// 导出BPM 流程表达式 Excel
exportProcessExpression: async (params) => {
return await request.download({ url: `/bpm/process-expression/export-excel`, params })
}
}

View File

@@ -0,0 +1,109 @@
import request from '@/config/axios'
import { ProcessDefinitionVO } from '@/api/bpm/model'
import { NodeType, CandidateStrategy } from '@/components/SimpleProcessDesignerV2/src/consts'
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
processDefinition?: ProcessDefinitionVO
}
// 用户信息
export type User = {
id: number
nickname: string
avatar: string
}
// 审批任务信息
export type ApprovalTaskInfo = {
id: number
ownerUser: User
assigneeUser: User
status: number
reason: string
signPicUrl: string
}
// 审批节点信息
export type ApprovalNodeInfo = {
id: number
name: string
nodeType: NodeType
candidateStrategy?: CandidateStrategy
status: number
startTime?: Date
endTime?: Date
candidateUsers?: User[]
tasks: ApprovalTaskInfo[]
}
export const getProcessInstanceMyPage = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/my-page', params })
}
export const getProcessInstanceManagerPage = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/manager-page', params })
}
export const createProcessInstance = async (data) => {
return await request.post({ url: '/bpm/process-instance/create', data: data })
}
export const cancelProcessInstanceByStartUser = async (id: number, reason: string) => {
const data = {
id: id,
reason: reason
}
return await request.delete({ url: '/bpm/process-instance/cancel-by-start-user', data: data })
}
export const cancelProcessInstanceByAdmin = async (id: number, reason: string) => {
const data = {
id: id,
reason: reason
}
return await request.delete({ url: '/bpm/process-instance/cancel-by-admin', data: data })
}
export const getProcessInstance = async (id: string) => {
return await request.get({ url: '/bpm/process-instance/get?id=' + id })
}
export const getProcessInstanceCopyPage = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/copy/page', params })
}
// 获取审批详情
export const getApprovalDetail = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/get-approval-detail', params })
}
// 获取下一个执行的流程节点
export const getNextApprovalNodes = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/get-next-approval-nodes', params })
}
// 获取表单字段权限
export const getFormFieldsPermission = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/get-form-fields-permission', params })
}
// 获取流程实例的 BPMN 模型视图
export const getProcessInstanceBpmnModelView = async (id: string) => {
return await request.get({ url: '/bpm/process-instance/get-bpmn-model-view?id=' + id })
}

View File

@@ -0,0 +1,40 @@
import request from '@/config/axios'
// BPM 流程监听器 VO
export interface ProcessListenerVO {
id: number // 编号
name: string // 监听器名字
type: string // 监听器类型
status: number // 监听器状态
event: string // 监听事件
valueType: string // 监听器值类型
value: string // 监听器值
}
// BPM 流程监听器 API
export const ProcessListenerApi = {
// 查询流程监听器分页
getProcessListenerPage: async (params: any) => {
return await request.get({ url: `/bpm/process-listener/page`, params })
},
// 查询流程监听器详情
getProcessListener: async (id: number) => {
return await request.get({ url: `/bpm/process-listener/get?id=` + id })
},
// 新增流程监听器
createProcessListener: async (data: ProcessListenerVO) => {
return await request.post({ url: `/bpm/process-listener/create`, data })
},
// 修改流程监听器
updateProcessListener: async (data: ProcessListenerVO) => {
return await request.put({ url: `/bpm/process-listener/update`, data })
},
// 删除流程监听器
deleteProcessListener: async (id: number) => {
return await request.delete({ url: `/bpm/process-listener/delete?id=` + id })
}
}

View File

@@ -0,0 +1,15 @@
import request from '@/config/axios'
export const updateBpmSimpleModel = async (data) => {
return await request.post({
url: '/bpm/model/simple/update',
data: data
})
}
export const getBpmSimpleModel = async (id) => {
return await request.get({
url: '/bpm/model/simple/get?id=' + id
})
}

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

@@ -0,0 +1,113 @@
import request from '@/config/axios'
/**
* 任务状态枚举
*/
export enum TaskStatusEnum {
/**
* 未开始
*/
NOT_START = -1,
/**
* 待审批
*/
WAIT = 0,
/**
* 审批中
*/
RUNNING = 1,
/**
* 审批通过
*/
APPROVE = 2,
/**
* 审批不通过
*/
REJECT = 3,
/**
* 已取消
*/
CANCEL = 4,
/**
* 已退回
*/
RETURN = 5,
/**
* 审批通过中
*/
APPROVING = 7
}
export const getTaskTodoPage = async (params: any) => {
return await request.get({ url: '/bpm/task/todo-page', params })
}
export const getTaskDonePage = async (params: any) => {
return await request.get({ url: '/bpm/task/done-page', params })
}
export const getTaskManagerPage = async (params: any) => {
return await request.get({ url: '/bpm/task/manager-page', params })
}
export const approveTask = async (data: any) => {
return await request.put({ url: '/bpm/task/approve', data })
}
export const rejectTask = async (data: any) => {
return await request.put({ url: '/bpm/task/reject', data })
}
export const getTaskListByProcessInstanceId = async (processInstanceId: string) => {
return await request.get({
url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId
})
}
// 获取所有可退回的节点
export const getTaskListByReturn = async (id: string) => {
return await request.get({ url: '/bpm/task/list-by-return', params: { id } })
}
// 退回
export const returnTask = async (data: any) => {
return await request.put({ url: '/bpm/task/return', data })
}
// 委派
export const delegateTask = async (data: any) => {
return await request.put({ url: '/bpm/task/delegate', data })
}
// 转派
export const transferTask = async (data: any) => {
return await request.put({ url: '/bpm/task/transfer', data })
}
// 加签
export const signCreateTask = async (data: any) => {
return await request.put({ url: '/bpm/task/create-sign', data })
}
// 减签
export const signDeleteTask = async (data: any) => {
return await request.delete({ url: '/bpm/task/delete-sign', data })
}
// 抄送
export const copyTask = async (data: any) => {
return await request.put({ url: '/bpm/task/copy', data })
}
// 获取我的待办任务
export const myTodoTask = async (processInstanceId: string) => {
return await request.get({ url: '/bpm/task/my-todo?processInstanceId=' + processInstanceId })
}
// 获取减签任务列表
export const getChildrenTaskList = async (id: string) => {
return await request.get({ url: '/bpm/task/list-by-parent-task-id?parentTaskId=' + id })
}

View File

@@ -0,0 +1,47 @@
import request from '@/config/axios'
export type UserGroupVO = {
id: number
name: string
description: string
userIds: 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 getUserGroupSimpleList = async (): Promise<UserGroupVO[]> => {
return await request.get({ url: '/bpm/user-group/simple-list' })
}

View File

@@ -0,0 +1,98 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface BusinessVO {
id: number
name: string
customerId: number
customerName?: string
followUpStatus: boolean
contactLastTime: Date
contactNextTime: Date
ownerUserId: number
ownerUserName?: string // 负责人的用户名称
ownerUserDept?: string // 负责人的部门名称
statusTypeId: number
statusTypeName?: string
statusId: number
statusName?: string
endStatus: number
endRemark: string
dealTime: Date
totalProductPrice: number
totalPrice: number
discountPercent: number
remark: string
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
products?: [
{
id: number
productId: number
productName: string
productNo: string
productUnit: number
productPrice: number
businessPrice: number
count: number
totalPrice: number
}
]
}
// 查询 CRM 商机列表
export const getBusinessPage = async (params) => {
return await request.get({ url: `/crm/business/page`, params })
}
// 查询 CRM 商机列表,基于指定客户
export const getBusinessPageByCustomer = async (params) => {
return await request.get({ url: `/crm/business/page-by-customer`, params })
}
// 查询 CRM 商机详情
export const getBusiness = async (id: number) => {
return await request.get({ url: `/crm/business/get?id=` + id })
}
// 获得 CRM 商机列表(精简)
export const getSimpleBusinessList = async () => {
return await request.get({ url: `/crm/business/simple-all-list` })
}
// 新增 CRM 商机
export const createBusiness = async (data: BusinessVO) => {
return await request.post({ url: `/crm/business/create`, data })
}
// 修改 CRM 商机
export const updateBusiness = async (data: BusinessVO) => {
return await request.put({ url: `/crm/business/update`, data })
}
// 修改 CRM 商机状态
export const updateBusinessStatus = async (data: BusinessVO) => {
return await request.put({ url: `/crm/business/update-status`, data })
}
// 删除 CRM 商机
export const deleteBusiness = async (id: number) => {
return await request.delete({ url: `/crm/business/delete?id=` + id })
}
// 导出 CRM 商机 Excel
export const exportBusiness = async (params) => {
return await request.download({ url: `/crm/business/export-excel`, params })
}
// 联系人关联商机列表
export const getBusinessPageByContact = async (params) => {
return await request.get({ url: `/crm/business/page-by-contact`, params })
}
// 商机转移
export const transferBusiness = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/business/transfer', data })
}

View File

@@ -0,0 +1,68 @@
import request from '@/config/axios'
export interface BusinessStatusTypeVO {
id: number
name: string
deptIds: number[]
statuses?: {
id: number
name: string
percent: number
}
}
export const DEFAULT_STATUSES = [
{
endStatus: 1,
key: '结束',
name: '赢单',
percent: 100
},
{
endStatus: 2,
key: '结束',
name: '输单',
percent: 0
},
{
endStatus: 3,
key: '结束',
name: '无效',
percent: 0
}
]
// 查询商机状态组列表
export const getBusinessStatusPage = async (params: any) => {
return await request.get({ url: `/crm/business-status/page`, params })
}
// 新增商机状态组
export const createBusinessStatus = async (data: BusinessStatusTypeVO) => {
return await request.post({ url: `/crm/business-status/create`, data })
}
// 修改商机状态组
export const updateBusinessStatus = async (data: BusinessStatusTypeVO) => {
return await request.put({ url: `/crm/business-status/update`, data })
}
// 查询商机状态类型详情
export const getBusinessStatus = async (id: number) => {
return await request.get({ url: `/crm/business-status/get?id=` + id })
}
// 删除商机状态
export const deleteBusinessStatus = async (id: number) => {
return await request.delete({ url: `/crm/business-status/delete?id=` + id })
}
// 获得商机状态组列表
export const getBusinessStatusTypeSimpleList = async () => {
return await request.get({ url: `/crm/business-status/type-simple-list` })
}
// 获得商机阶段列表
export const getBusinessStatusSimpleList = async (typeId: number) => {
return await request.get({ url: `/crm/business-status/status-simple-list`, params: { typeId } })
}

78
src/api/crm/clue/index.ts Normal file
View File

@@ -0,0 +1,78 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface ClueVO {
id: number // 编号
name: string // 线索名称
followUpStatus: boolean // 跟进状态
contactLastTime: Date // 最后跟进时间
contactLastContent: string // 最后跟进内容
contactNextTime: Date // 下次联系时间
ownerUserId: number // 负责人的用户编号
ownerUserName?: string // 负责人的用户名称
ownerUserDept?: string // 负责人的部门名称
transformStatus: boolean // 转化状态
customerId: number // 客户编号
customerName?: string // 客户名称
mobile: string // 手机号
telephone: string // 电话
qq: string // QQ
wechat: string // wechat
email: string // email
areaId: number // 所在地
areaName?: string // 所在地名称
detailAddress: string // 详细地址
industryId: number // 所属行业
level: number // 客户等级
source: number // 客户来源
remark: string // 备注
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
}
// 查询线索列表
export const getCluePage = async (params: any) => {
return await request.get({ url: `/crm/clue/page`, params })
}
// 查询线索详情
export const getClue = async (id: number) => {
return await request.get({ url: `/crm/clue/get?id=` + id })
}
// 新增线索
export const createClue = async (data: ClueVO) => {
return await request.post({ url: `/crm/clue/create`, data })
}
// 修改线索
export const updateClue = async (data: ClueVO) => {
return await request.put({ url: `/crm/clue/update`, data })
}
// 删除线索
export const deleteClue = async (id: number) => {
return await request.delete({ url: `/crm/clue/delete?id=` + id })
}
// 导出线索 Excel
export const exportClue = async (params) => {
return await request.download({ url: `/crm/clue/export-excel`, params })
}
// 线索转移
export const transferClue = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/clue/transfer', data })
}
// 线索转化为客户
export const transformClue = async (id: number) => {
return await request.put({ url: '/crm/clue/transform', params: { id } })
}
// 获得分配给我的、待跟进的线索数量
export const getFollowClueCount = async () => {
return await request.get({ url: '/crm/clue/follow-count' })
}

View File

@@ -0,0 +1,113 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface ContactVO {
id: number // 编号
name: string // 联系人名称
customerId: number // 客户编号
customerName?: string // 客户名称
contactLastTime: Date // 最后跟进时间
contactLastContent: string // 最后跟进内容
contactNextTime: Date // 下次联系时间
ownerUserId: number // 负责人的用户编号
ownerUserName?: string // 负责人的用户名称
ownerUserDept?: string // 负责人的部门名称
mobile: string // 手机号
telephone: string // 电话
qq: string // QQ
wechat: string // wechat
email: string // email
areaId: number // 所在地
areaName?: string // 所在地名称
detailAddress: string // 详细地址
sex: number // 性别
master: boolean // 是否主联系人
post: string // 职务
parentId: number // 上级联系人编号
parentName?: string // 上级联系人名称
remark: string // 备注
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
}
export interface ContactBusinessReqVO {
contactId: number
businessIds: number[]
}
export interface ContactBusiness2ReqVO {
businessId: number
contactIds: number[]
}
// 查询 CRM 联系人列表
export const getContactPage = async (params) => {
return await request.get({ url: `/crm/contact/page`, params })
}
// 查询 CRM 联系人列表,基于指定客户
export const getContactPageByCustomer = async (params: any) => {
return await request.get({ url: `/crm/contact/page-by-customer`, params })
}
// 查询 CRM 联系人列表,基于指定商机
export const getContactPageByBusiness = async (params: any) => {
return await request.get({ url: `/crm/contact/page-by-business`, params })
}
// 查询 CRM 联系人详情
export const getContact = async (id: number) => {
return await request.get({ url: `/crm/contact/get?id=` + id })
}
// 新增 CRM 联系人
export const createContact = async (data: ContactVO) => {
return await request.post({ url: `/crm/contact/create`, data })
}
// 修改 CRM 联系人
export const updateContact = async (data: ContactVO) => {
return await request.put({ url: `/crm/contact/update`, data })
}
// 删除 CRM 联系人
export const deleteContact = async (id: number) => {
return await request.delete({ url: `/crm/contact/delete?id=` + id })
}
// 导出 CRM 联系人 Excel
export const exportContact = async (params) => {
return await request.download({ url: `/crm/contact/export-excel`, params })
}
// 获得 CRM 联系人列表(精简)
export const getSimpleContactList = async () => {
return await request.get({ url: `/crm/contact/simple-all-list` })
}
// 批量新增联系人商机关联
export const createContactBusinessList = async (data: ContactBusinessReqVO) => {
return await request.post({ url: `/crm/contact/create-business-list`, data })
}
// 批量新增联系人商机关联
export const createContactBusinessList2 = async (data: ContactBusiness2ReqVO) => {
return await request.post({ url: `/crm/contact/create-business-list2`, data })
}
// 解除联系人商机关联
export const deleteContactBusinessList = async (data: ContactBusinessReqVO) => {
return await request.delete({ url: `/crm/contact/delete-business-list`, data })
}
// 解除联系人商机关联
export const deleteContactBusinessList2 = async (data: ContactBusiness2ReqVO) => {
return await request.delete({ url: `/crm/contact/delete-business-list2`, data })
}
// 联系人转移
export const transferContact = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/contact/transfer', data })
}

View File

@@ -0,0 +1,16 @@
import request from '@/config/axios'
export interface ContractConfigVO {
notifyEnabled?: boolean
notifyDays?: number
}
// 获取合同配置
export const getContractConfig = async () => {
return await request.get({ url: `/crm/contract-config/get` })
}
// 更新合同配置
export const saveContractConfig = async (data: ContractConfigVO) => {
return await request.put({ url: `/crm/contract-config/save`, data })
}

View File

@@ -0,0 +1,114 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface ContractVO {
id: number
name: string
no: string
customerId: number
customerName?: string
businessId: number
businessName: string
contactLastTime: Date
ownerUserId: number
ownerUserName?: string
ownerUserDeptName?: string
processInstanceId: number
auditStatus: number
orderDate: Date
startTime: Date
endTime: Date
totalProductPrice: number
discountPercent: number
totalPrice: number
totalReceivablePrice: number
signContactId: number
signContactName?: string
signUserId: number
signUserName: string
remark: string
createTime?: Date
creator: string
creatorName: string
updateTime?: Date
products?: [
{
id: number
productId: number
productName: string
productNo: string
productUnit: number
productPrice: number
contractPrice: number
count: number
totalPrice: number
}
]
}
// 查询 CRM 合同列表
export const getContractPage = async (params) => {
return await request.get({ url: `/crm/contract/page`, params })
}
// 查询 CRM 联系人列表,基于指定客户
export const getContractPageByCustomer = async (params: any) => {
return await request.get({ url: `/crm/contract/page-by-customer`, params })
}
// 查询 CRM 联系人列表,基于指定商机
export const getContractPageByBusiness = async (params: any) => {
return await request.get({ url: `/crm/contract/page-by-business`, params })
}
// 查询 CRM 合同详情
export const getContract = async (id: number) => {
return await request.get({ url: `/crm/contract/get?id=` + id })
}
// 查询 CRM 合同下拉列表
export const getContractSimpleList = async (customerId: number) => {
return await request.get({
url: `/crm/contract/simple-list?customerId=${customerId}`
})
}
// 新增 CRM 合同
export const createContract = async (data: ContractVO) => {
return await request.post({ url: `/crm/contract/create`, data })
}
// 修改 CRM 合同
export const updateContract = async (data: ContractVO) => {
return await request.put({ url: `/crm/contract/update`, data })
}
// 删除 CRM 合同
export const deleteContract = async (id: number) => {
return await request.delete({ url: `/crm/contract/delete?id=` + id })
}
// 导出 CRM 合同 Excel
export const exportContract = async (params) => {
return await request.download({ url: `/crm/contract/export-excel`, params })
}
// 提交审核
export const submitContract = async (id: number) => {
return await request.put({ url: `/crm/contract/submit?id=${id}` })
}
// 合同转移
export const transferContract = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/contract/transfer', data })
}
// 获得待审核合同数量
export const getAuditContractCount = async () => {
return await request.get({ url: '/crm/contract/audit-count' })
}
// 获得即将到期(提醒)的合同数量
export const getRemindContractCount = async () => {
return await request.get({ url: '/crm/contract/remind-count' })
}

View File

@@ -0,0 +1,132 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface CustomerVO {
id: number // 编号
name: string // 客户名称
followUpStatus: boolean // 跟进状态
contactLastTime: Date // 最后跟进时间
contactLastContent: string // 最后跟进内容
contactNextTime: Date // 下次联系时间
ownerUserId: number // 负责人的用户编号
ownerUserName?: string // 负责人的用户名称
ownerUserDept?: string // 负责人的部门名称
lockStatus?: boolean
dealStatus?: boolean
mobile: string // 手机号
telephone: string // 电话
qq: string // QQ
wechat: string // wechat
email: string // email
areaId: number // 所在地
areaName?: string // 所在地名称
detailAddress: string // 详细地址
industryId: number // 所属行业
level: number // 客户等级
source: number // 客户来源
remark: string // 备注
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
}
// 查询客户列表
export const getCustomerPage = async (params) => {
return await request.get({ url: `/crm/customer/page`, params })
}
// 进入公海客户提醒的客户列表
export const getPutPoolRemindCustomerPage = async (params) => {
return await request.get({ url: `/crm/customer/put-pool-remind-page`, params })
}
// 获得待进入公海客户数量
export const getPutPoolRemindCustomerCount = async () => {
return await request.get({ url: `/crm/customer/put-pool-remind-count` })
}
// 获得今日需联系客户数量
export const getTodayContactCustomerCount = async () => {
return await request.get({ url: `/crm/customer/today-contact-count` })
}
// 获得分配给我、待跟进的线索数量的客户数量
export const getFollowCustomerCount = async () => {
return await request.get({ url: `/crm/customer/follow-count` })
}
// 查询客户详情
export const getCustomer = async (id: number) => {
return await request.get({ url: `/crm/customer/get?id=` + id })
}
// 新增客户
export const createCustomer = async (data: CustomerVO) => {
return await request.post({ url: `/crm/customer/create`, data })
}
// 修改客户
export const updateCustomer = async (data: CustomerVO) => {
return await request.put({ url: `/crm/customer/update`, data })
}
// 更新客户的成交状态
export const updateCustomerDealStatus = async (id: number, dealStatus: boolean) => {
return await request.put({ url: `/crm/customer/update-deal-status`, params: { id, dealStatus } })
}
// 删除客户
export const deleteCustomer = async (id: number) => {
return await request.delete({ url: `/crm/customer/delete?id=` + id })
}
// 导出客户 Excel
export const exportCustomer = async (params: any) => {
return await request.download({ url: `/crm/customer/export-excel`, params })
}
// 下载客户导入模板
export const importCustomerTemplate = () => {
return request.download({ url: '/crm/customer/get-import-template' })
}
// 导入客户
export const handleImport = async (formData) => {
return await request.upload({ url: `/crm/customer/import`, data: formData })
}
// 客户列表
export const getCustomerSimpleList = async () => {
return await request.get({ url: `/crm/customer/simple-list` })
}
// ======================= 业务操作 =======================
// 客户转移
export const transferCustomer = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/customer/transfer', data })
}
// 锁定/解锁客户
export const lockCustomer = async (id: number, lockStatus: boolean) => {
return await request.put({ url: `/crm/customer/lock`, data: { id, lockStatus } })
}
// 领取公海客户
export const receiveCustomer = async (ids: any[]) => {
return await request.put({ url: '/crm/customer/receive', params: { ids: ids.join(',') } })
}
// 分配公海给对应负责人
export const distributeCustomer = async (ids: any[], ownerUserId: number) => {
return await request.put({
url: '/crm/customer/distribute',
data: { ids: ids, ownerUserId }
})
}
// 客户放入公海
export const putCustomerPool = async (id: number) => {
return await request.put({ url: `/crm/customer/put-pool?id=${id}` })
}

View File

@@ -0,0 +1,49 @@
import request from '@/config/axios'
export interface CustomerLimitConfigVO {
id?: number
type?: number
userIds?: string
deptIds?: string
maxCount?: number
dealCountEnabled?: boolean
}
/**
* 客户限制配置类型
*/
export enum LimitConfType {
/**
* 拥有客户数限制
*/
CUSTOMER_QUANTITY_LIMIT = 1,
/**
* 锁定客户数限制
*/
CUSTOMER_LOCK_LIMIT = 2
}
// 查询客户限制配置列表
export const getCustomerLimitConfigPage = async (params) => {
return await request.get({ url: `/crm/customer-limit-config/page`, params })
}
// 查询客户限制配置详情
export const getCustomerLimitConfig = async (id: number) => {
return await request.get({ url: `/crm/customer-limit-config/get?id=` + id })
}
// 新增客户限制配置
export const createCustomerLimitConfig = async (data: CustomerLimitConfigVO) => {
return await request.post({ url: `/crm/customer-limit-config/create`, data })
}
// 修改客户限制配置
export const updateCustomerLimitConfig = async (data: CustomerLimitConfigVO) => {
return await request.put({ url: `/crm/customer-limit-config/update`, data })
}
// 删除客户限制配置
export const deleteCustomerLimitConfig = async (id: number) => {
return await request.delete({ url: `/crm/customer-limit-config/delete?id=` + id })
}

View File

@@ -0,0 +1,19 @@
import request from '@/config/axios'
export interface CustomerPoolConfigVO {
enabled?: boolean
contactExpireDays?: number
dealExpireDays?: number
notifyEnabled?: boolean
notifyDays?: number
}
// 获取客户公海规则设置
export const getCustomerPoolConfig = async () => {
return await request.get({ url: `/crm/customer-pool-config/get` })
}
// 更新客户公海规则设置
export const saveCustomerPoolConfig = async (data: CustomerPoolConfigVO) => {
return await request.put({ url: `/crm/customer-pool-config/save`, data })
}

View File

@@ -0,0 +1,43 @@
import request from '@/config/axios'
// 跟进记录 VO
export interface FollowUpRecordVO {
id: number // 编号
bizType: number // 数据类型
bizId: number // 数据编号
type: number // 跟进类型
content: string // 跟进内容
picUrls: string[] // 图片
fileUrls: string[] // 附件
nextTime: Date // 下次联系时间
businessIds: number[] // 关联的商机编号数组
businesses: {
id: number
name: string
}[] // 关联的商机数组
contactIds: number[] // 关联的联系人编号数组
contacts: {
id: number
name: string
}[] // 关联的联系人数组
creator: string
creatorName?: string
}
// 跟进记录 API
export const FollowUpRecordApi = {
// 查询跟进记录分页
getFollowUpRecordPage: async (params: any) => {
return await request.get({ url: `/crm/follow-up-record/page`, params })
},
// 新增跟进记录
createFollowUpRecord: async (data: FollowUpRecordVO) => {
return await request.post({ url: `/crm/follow-up-record/create`, data })
},
// 删除跟进记录
deleteFollowUpRecord: async (id: number) => {
return await request.delete({ url: `/crm/follow-up-record/delete?id=` + id })
}
}

View File

@@ -0,0 +1,11 @@
import request from '@/config/axios'
export interface OperateLogVO extends PageParam {
bizType: number
bizId: number
}
// 获得操作日志
export const getOperateLogPage = async (params: OperateLogVO) => {
return await request.get({ url: `/crm/operate-log/page`, params })
}

View File

@@ -0,0 +1,72 @@
import request from '@/config/axios'
export interface PermissionVO {
id?: number // 数据权限编号
userId: number // 用户编号
bizType: number // Crm 类型
bizId: number // Crm 类型数据编号
level: number // 权限级别
toBizTypes?: number[] // 同时添加至
deptName?: string // 部门名称
nickname?: string // 用户昵称
postNames?: string[] // 岗位名称数组
createTime?: Date
ids?: number[]
}
export interface TransferReqVO {
id: number // 模块编号
newOwnerUserId: number // 新负责人的用户编号
oldOwnerPermissionLevel?: number // 老负责人加入团队后的权限级别
toBizTypes?: number[] // 转移客户时,需要额外有【联系人】【商机】【合同】的 checkbox 选择
}
/**
* CRM 业务类型枚举
*
* @author HUIHUI
*/
export enum BizTypeEnum {
CRM_CLUE = 1, // 线索
CRM_CUSTOMER = 2, // 客户
CRM_CONTACT = 3, // 联系人
CRM_BUSINESS = 4, // 商机
CRM_CONTRACT = 5, // 合同
CRM_PRODUCT = 6, // 产品
CRM_RECEIVABLE = 7, // 回款
CRM_RECEIVABLE_PLAN = 8 // 回款计划
}
/**
* CRM 数据权限级别枚举
*/
export enum PermissionLevelEnum {
OWNER = 1, // 负责人
READ = 2, // 只读
WRITE = 3 // 读写
}
// 获得数据权限列表(查询团队成员列表)
export const getPermissionList = async (params) => {
return await request.get({ url: `/crm/permission/list`, params })
}
// 创建数据权限(新增团队成员)
export const createPermission = async (data: PermissionVO) => {
return await request.post({ url: `/crm/permission/create`, data })
}
// 编辑数据权限(修改团队成员权限级别)
export const updatePermission = async (data) => {
return await request.put({ url: `/crm/permission/update`, data })
}
// 删除数据权限(删除团队成员)
export const deletePermissionBatch = async (val: number[]) => {
return await request.delete({ url: '/crm/permission/delete?ids=' + val.join(',') })
}
// 删除自己的数据权限(退出团队)
export const deleteSelfPermission = async (id: number) => {
return await request.delete({ url: '/crm/permission/delete-self?id=' + id })
}

View File

@@ -0,0 +1,33 @@
import request from '@/config/axios'
// TODO @zange挪到 product 下,建个 category 包,挪进去哈;
export interface ProductCategoryVO {
id: number
name: string
parentId: number
}
// 查询产品分类详情
export const getProductCategory = async (id: number) => {
return await request.get({ url: `/crm/product-category/get?id=` + id })
}
// 新增产品分类
export const createProductCategory = async (data: ProductCategoryVO) => {
return await request.post({ url: `/crm/product-category/create`, data })
}
// 修改产品分类
export const updateProductCategory = async (data: ProductCategoryVO) => {
return await request.put({ url: `/crm/product-category/update`, data })
}
// 删除产品分类
export const deleteProductCategory = async (id: number) => {
return await request.delete({ url: `/crm/product-category/delete?id=` + id })
}
// 产品分类列表
export const getProductCategoryList = async (params) => {
return await request.get({ url: `/crm/product-category/list`, params })
}

View File

@@ -0,0 +1,49 @@
import request from '@/config/axios'
export interface ProductVO {
id: number
name: string
no: string
unit: number
price: number
status: number
categoryId: number
categoryName?: string
description: string
ownerUserId: number
}
// 查询产品列表
export const getProductPage = async (params) => {
return await request.get({ url: `/crm/product/page`, params })
}
// 获得产品精简列表
export const getProductSimpleList = async () => {
return await request.get({ url: `/crm/product/simple-list` })
}
// 查询产品详情
export const getProduct = async (id: number) => {
return await request.get({ url: `/crm/product/get?id=` + id })
}
// 新增产品
export const createProduct = async (data: ProductVO) => {
return await request.post({ url: `/crm/product/create`, data })
}
// 修改产品
export const updateProduct = async (data: ProductVO) => {
return await request.put({ url: `/crm/product/update`, data })
}
// 删除产品
export const deleteProduct = async (id: number) => {
return await request.delete({ url: `/crm/product/delete?id=` + id })
}
// 导出产品 Excel
export const exportProduct = async (params) => {
return await request.download({ url: `/crm/product/export-excel`, params })
}

View File

@@ -0,0 +1,73 @@
import request from '@/config/axios'
export interface ReceivableVO {
id: number
no: string
planId?: number
customerId?: number
customerName?: string
contractId?: number
contract?: {
id?: number
name?: string
no: string
totalPrice: number
}
auditStatus: number
processInstanceId: number
returnTime: Date
returnType: number
price: number
ownerUserId: number
ownerUserName?: string
remark: string
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
}
// 查询回款列表
export const getReceivablePage = async (params) => {
return await request.get({ url: `/crm/receivable/page`, params })
}
// 查询回款列表
export const getReceivablePageByCustomer = async (params) => {
return await request.get({ url: `/crm/receivable/page-by-customer`, params })
}
// 查询回款详情
export const getReceivable = async (id: number) => {
return await request.get({ url: `/crm/receivable/get?id=` + id })
}
// 新增回款
export const createReceivable = async (data: ReceivableVO) => {
return await request.post({ url: `/crm/receivable/create`, data })
}
// 修改回款
export const updateReceivable = async (data: ReceivableVO) => {
return await request.put({ url: `/crm/receivable/update`, data })
}
// 删除回款
export const deleteReceivable = async (id: number) => {
return await request.delete({ url: `/crm/receivable/delete?id=` + id })
}
// 导出回款 Excel
export const exportReceivable = async (params) => {
return await request.download({ url: `/crm/receivable/export-excel`, params })
}
// 提交审核
export const submitReceivable = async (id: number) => {
return await request.put({ url: `/crm/receivable/submit?id=${id}` })
}
// 获得待审核回款数量
export const getAuditReceivableCount = async () => {
return await request.get({ url: '/crm/receivable/audit-count' })
}

View File

@@ -0,0 +1,74 @@
import request from '@/config/axios'
export interface ReceivablePlanVO {
id: number
period: number
receivableId: number
price: number
returnTime: Date
remindDays: number
returnType: number
remindTime: Date
customerId: number
customerName?: string
contractId?: number
contractNo?: string
ownerUserId: number
ownerUserName?: string
remark: string
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
receivable?: {
price: number
returnTime: Date
}
}
// 查询回款计划列表
export const getReceivablePlanPage = async (params) => {
return await request.get({ url: `/crm/receivable-plan/page`, params })
}
// 查询回款计划列表
export const getReceivablePlanPageByCustomer = async (params) => {
return await request.get({ url: `/crm/receivable-plan/page-by-customer`, params })
}
// 查询回款计划详情
export const getReceivablePlan = async (id: number) => {
return await request.get({ url: `/crm/receivable-plan/get?id=` + id })
}
// 查询回款计划下拉数据
export const getReceivablePlanSimpleList = async (customerId: number, contractId: number) => {
return await request.get({
url: `/crm/receivable-plan/simple-list?customerId=${customerId}&contractId=${contractId}`
})
}
// 新增回款计划
export const createReceivablePlan = async (data: ReceivablePlanVO) => {
return await request.post({ url: `/crm/receivable-plan/create`, data })
}
// 修改回款计划
export const updateReceivablePlan = async (data: ReceivablePlanVO) => {
return await request.put({ url: `/crm/receivable-plan/update`, data })
}
// 删除回款计划
export const deleteReceivablePlan = async (id: number) => {
return await request.delete({ url: `/crm/receivable-plan/delete?id=` + id })
}
// 导出回款计划 Excel
export const exportReceivablePlan = async (params) => {
return await request.download({ url: `/crm/receivable-plan/export-excel`, params })
}
// 获得待回款提醒数量
export const getReceivablePlanRemindCount = async () => {
return await request.get({ url: '/crm/receivable-plan/remind-count' })
}

View File

@@ -0,0 +1,168 @@
import request from '@/config/axios'
export interface CrmStatisticsCustomerSummaryByDateRespVO {
time: string
customerCreateCount: number
customerDealCount: number
}
export interface CrmStatisticsCustomerSummaryByUserRespVO {
ownerUserName: string
customerCreateCount: number
customerDealCount: number
contractPrice: number
receivablePrice: number
}
export interface CrmStatisticsFollowUpSummaryByDateRespVO {
time: string
followUpRecordCount: number
followUpCustomerCount: number
}
export interface CrmStatisticsFollowUpSummaryByUserRespVO {
ownerUserName: string
followupRecordCount: number
followupCustomerCount: number
}
export interface CrmStatisticsFollowUpSummaryByTypeRespVO {
followUpType: string
followUpRecordCount: number
}
export interface CrmStatisticsCustomerContractSummaryRespVO {
customerName: string
contractName: string
totalPrice: number
receivablePrice: number
customerType: string
customerSource: string
ownerUserName: string
creatorUserName: string
createTime: Date
orderDate: Date
}
export interface CrmStatisticsPoolSummaryByDateRespVO {
time: string
customerPutCount: number
customerTakeCount: number
}
export interface CrmStatisticsPoolSummaryByUserRespVO {
ownerUserName: string
customerPutCount: number
customerTakeCount: number
}
export interface CrmStatisticsCustomerDealCycleByDateRespVO {
time: string
customerDealCycle: number
}
export interface CrmStatisticsCustomerDealCycleByUserRespVO {
ownerUserName: string
customerDealCycle: number
customerDealCount: number
}
export interface CrmStatisticsCustomerDealCycleByAreaRespVO {
areaName: string
customerDealCycle: number
customerDealCount: number
}
export interface CrmStatisticsCustomerDealCycleByProductRespVO {
productName: string
customerDealCycle: number
customerDealCount: number
}
// 客户分析 API
export const StatisticsCustomerApi = {
// 1.1 客户总量分析(按日期)
getCustomerSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-summary-by-date',
params
})
},
// 1.2 客户总量分析(按用户)
getCustomerSummaryByUser: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-summary-by-user',
params
})
},
// 2.1 客户跟进次数分析(按日期)
getFollowUpSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-follow-up-summary-by-date',
params
})
},
// 2.2 客户跟进次数分析(按用户)
getFollowUpSummaryByUser: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-follow-up-summary-by-user',
params
})
},
// 3.1 获取客户跟进方式统计数
getFollowUpSummaryByType: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-follow-up-summary-by-type',
params
})
},
// 4.1 合同摘要信息(客户转化率页面)
getContractSummary: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-contract-summary',
params
})
},
// 5.1 获取客户公海分析(按日期)
getPoolSummaryByDate: (param: any) => {
return request.get({
url: '/crm/statistics-customer/get-pool-summary-by-date',
params: param
})
},
// 5.2 获取客户公海分析(按用户)
getPoolSummaryByUser: (param: any) => {
return request.get({
url: '/crm/statistics-customer/get-pool-summary-by-user',
params: param
})
},
// 6.1 获取客户成交周期(按日期)
getCustomerDealCycleByDate: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-date',
params
})
},
// 6.2 获取客户成交周期(按用户)
getCustomerDealCycleByUser: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-user',
params
})
},
// 6.2 获取客户成交周期(按用户)
getCustomerDealCycleByArea: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-area',
params
})
},
// 6.2 获取客户成交周期(按用户)
getCustomerDealCycleByProduct: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-product',
params
})
}
}

View File

@@ -0,0 +1,58 @@
import request from '@/config/axios'
export interface CrmStatisticFunnelRespVO {
customerCount: number // 客户数
businessCount: number // 商机数
businessWinCount: number // 赢单数
}
export interface CrmStatisticsBusinessSummaryByDateRespVO {
time: string // 时间
businessCreateCount: number // 商机数
totalPrice: number | string // 商机金额
}
export interface CrmStatisticsBusinessInversionRateSummaryByDateRespVO {
time: string // 时间
businessCount: number // 商机数量
businessWinCount: number // 赢单商机数
}
// 客户分析 API
export const StatisticFunnelApi = {
// 1. 获取销售漏斗统计数据
getFunnelSummary: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-funnel-summary',
params
})
},
// 2. 获取商机结束状态统计
getBusinessSummaryByEndStatus: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-summary-by-end-status',
params
})
},
// 3. 获取新增商机分析(按日期)
getBusinessSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-summary-by-date',
params
})
},
// 4. 获取商机转化率分析(按日期)
getBusinessInversionRateSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-inversion-rate-summary-by-date',
params
})
},
// 5. 获取商机列表(按日期)
getBusinessPageByDate: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-page-by-date',
params
})
}
}

View File

@@ -0,0 +1,33 @@
import request from '@/config/axios'
export interface StatisticsPerformanceRespVO {
time: string
currentMonthCount: number
lastMonthCount: number
lastYearCount: number
}
// 排行 API
export const StatisticsPerformanceApi = {
// 员工获得合同金额统计
getContractPricePerformance: (params: any) => {
return request.get({
url: '/crm/statistics-performance/get-contract-price-performance',
params
})
},
// 员工获得回款统计
getReceivablePricePerformance: (params: any) => {
return request.get({
url: '/crm/statistics-performance/get-receivable-price-performance',
params
})
},
//员工获得签约合同数量统计
getContractCountPerformance: (params: any) => {
return request.get({
url: '/crm/statistics-performance/get-contract-count-performance',
params
})
}
}

View File

@@ -0,0 +1,60 @@
import request from '@/config/axios'
export interface CrmStatisticCustomerBaseRespVO {
customerCount: number
dealCount: number
dealPortion: string | number
}
export interface CrmStatisticCustomerIndustryRespVO extends CrmStatisticCustomerBaseRespVO {
industryId: number
industryPortion: string | number
}
export interface CrmStatisticCustomerSourceRespVO extends CrmStatisticCustomerBaseRespVO {
source: number
sourcePortion: string | number
}
export interface CrmStatisticCustomerLevelRespVO extends CrmStatisticCustomerBaseRespVO {
level: number
levelPortion: string | number
}
export interface CrmStatisticCustomerAreaRespVO extends CrmStatisticCustomerBaseRespVO {
areaId: number
areaName: string
areaPortion: string | number
}
// 客户分析 API
export const StatisticsPortraitApi = {
// 1. 获取客户行业统计数据
getCustomerIndustry: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-industry-summary',
params
})
},
// 2. 获取客户来源统计数据
getCustomerSource: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-source-summary',
params
})
},
// 3. 获取客户级别统计数据
getCustomerLevel: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-level-summary',
params
})
},
// 4. 获取客户地区统计数据
getCustomerArea: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-area-summary',
params
})
}
}

View File

@@ -0,0 +1,67 @@
import request from '@/config/axios'
export interface StatisticsRankRespVO {
count: number
nickname: string
deptName: string
}
// 排行 API
export const StatisticsRankApi = {
// 获得合同排行榜
getContractPriceRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-contract-price-rank',
params
})
},
// 获得回款排行榜
getReceivablePriceRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-receivable-price-rank',
params
})
},
// 签约合同排行
getContractCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-contract-count-rank',
params
})
},
// 产品销量排行
getProductSalesRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-product-sales-rank',
params
})
},
// 新增客户数排行
getCustomerCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-customer-count-rank',
params
})
},
// 新增联系人数排行
getContactsCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-contacts-count-rank',
params
})
},
// 跟进次数排行
getFollowCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-follow-count-rank',
params
})
},
// 跟进客户数排行
getFollowCustomerCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-follow-customer-count-rank',
params
})
}
}

71
src/api/energy/coal.ts Normal file
View File

@@ -0,0 +1,71 @@
import request from '@/config/axios'
export interface CoalMonitoringVO {
id: number
deviceCode: string
deviceName: string
location: string
currentConsumption: number
lastConsumption: number
lastRecordTime: Date
coalType: string
status: 'online' | 'offline' | 'maintenance'
remark: string
text1: string
text2: string
text3: string
createTime: Date
updateTime: Date
creator: string
updater: string
deleted: boolean
tenantId: number
}
export interface CoalMonitoringPageReqVO extends PageParam {
deviceCode?: string
deviceName?: string
location?: string
coalType?: string
status?: 'online' | 'offline' | 'maintenance'
createTime?: Date[]
}
export interface CoalMonitoringExcelReqVO {
deviceCode?: string
deviceName?: string
location?: string
coalType?: string
status?: 'online' | 'offline' | 'maintenance'
createTime?: Date[]
}
// 查询煤炭监测列表
export const getCoalMonitoringPage = (params: CoalMonitoringPageReqVO) => {
return request.get({ url: '/energy/coal-monitoring/page', params })
}
// 查询煤炭监测详情
export const getCoalMonitoring = (id: number) => {
return request.get({ url: `/energy/coal-monitoring/get?id=${id}` })
}
// 新增煤炭监测
export const createCoalMonitoring = (data: CoalMonitoringVO) => {
return request.post({ url: '/energy/coal-monitoring/create', data })
}
// 修改煤炭监测
export const updateCoalMonitoring = (data: CoalMonitoringVO) => {
return request.put({ url: '/energy/coal-monitoring/update', data })
}
// 删除煤炭监测
export const deleteCoalMonitoring = (id: number) => {
return request.delete({ url: `/energy/coal-monitoring/delete?id=${id}` })
}
// 导出煤炭监测 Excel
export const exportCoalMonitoring = (params: CoalMonitoringExcelReqVO) => {
return request.download({ url: '/energy/coal-monitoring/export-excel', params })
}

View File

@@ -0,0 +1,29 @@
import request from '@/config/axios'
export interface CoalConsumptionChartData {
date: string
value: number
}
export interface CoalConsumptionHistoryData {
updateTime: string
deviceName: string
location: string
currentConsumption: number | string
lastConsumption: number | string
}
// 获取煤炭消耗量折线图数据
export const getCoalConsumptionChart = (params: { type: 'week' | 'month' | 'year' }) => {
return request.get<CoalConsumptionChartData[]>({
url: '/energy/coal-consumption/chart',
params
})
}
// 获取煤炭消耗量历史记录表格数据
export const getCoalConsumptionHistory = () => {
return request.get<CoalConsumptionHistoryData[]>({
url: '/energy/coal-consumption/history'
})
}

View File

@@ -0,0 +1,9 @@
import request from '@/config/axios'
/**
* 按时间范围汇总电-水-煤消耗
* GET /energy/consumption/summary
*/
export function getEnergyConsumptionSummary(params: { startTime?: string; endTime?: string }) {
return request.get({ url: '/energy/consumption/summary', params })
}

View File

@@ -0,0 +1,64 @@
import request from '@/config/axios'
// 电表监测类型定义
export interface ElectricityMonitoring {
id?: number | string
deviceCode: string
deviceName: string
location?: string
currentKWh: number
lastKWh?: number
lastDate?: string
status: 'online' | 'offline' | 'maintenance'
remark?: string
text1?: string
text2?: string
text3?: string
createTime?: string
updateTime?: string
creator?: string
updater?: string
deleted?: boolean
tenantId?: number
}
// 分页查询参数
export enum ElectricityMonitoringStatus {
Online = 'online',
Offline = 'offline',
Maintenance = 'maintenance',
}
export interface ElectricityMonitoringPageParams {
pageNo: number
pageSize: number
deviceCode?: string
deviceName?: string
location?: string
status?: ElectricityMonitoringStatus | string
}
// 分页查询
export const getElectricityMonitoringPage = (params: ElectricityMonitoringPageParams) => {
return request.get({ url: '/energy/electricity-monitoring/page', params })
}
// 新增电表监测
export const createElectricityMonitoring = (data: ElectricityMonitoring) => {
return request.post({ url: '/energy/electricity-monitoring/create', data })
}
// 更新电表监测
export const updateElectricityMonitoring = (data: ElectricityMonitoring) => {
return request.put({ url: '/energy/electricity-monitoring/update', data })
}
// 删除电表监测
export const deleteElectricityMonitoring = (id: number | string) => {
return request.delete({ url: `/energy/electricity-monitoring/delete?id=${id}` })
}
// 获取电表监测详情
export const getElectricityMonitoring = (id: number | string) => {
return request.get({ url: `/energy/electricity-monitoring/get?id=${id}` })
}

View File

@@ -0,0 +1,29 @@
import request from '@/config/axios'
export interface ElectricityConsumptionChartData {
date: string
value: number
}
export interface ElectricityConsumptionHistoryData {
updateTime: string
deviceName: string
location: string
currentKWh: number | string
lastKWh: number | string
}
// 获取用电量折线图数据
export const getElectricityConsumptionChart = (params: { type: 'week' | 'month' | 'year' }) => {
return request.get<ElectricityConsumptionChartData[]>({
url: '/energy/electricity-consumption/chart',
params
})
}
// 获取用电量历史记录表格数据
export const getElectricityConsumptionHistory = () => {
return request.get<ElectricityConsumptionHistoryData[]>({
url: '/energy/electricity-consumption/history'
})
}

61
src/api/energy/water.ts Normal file
View File

@@ -0,0 +1,61 @@
import request from '@/config/axios'
// 水表监测类型定义
export interface WaterMonitoring {
id?: number | string
deviceCode: string
deviceName: string
location?: string
currentValue: number
lValue?: number
lTime?: string
status: 'online' | 'offline' | 'maintenance'
remark?: string
createTime?: string
updateTime?: string
creator?: string
updater?: string
deleted?: boolean
tenantId?: number
}
// 分页查询参数
export enum WaterMonitoringStatus {
Online = 'online',
Offline = 'offline',
Maintenance = 'maintenance',
}
export interface WaterMonitoringPageParams {
pageNo: number
pageSize: number
deviceCode?: string
deviceName?: string
location?: string
status?: WaterMonitoringStatus | string
}
// 分页查询
export const getWaterMonitoringPage = (params: WaterMonitoringPageParams) => {
return request.get({ url: '/energy/water-monitoring/page', params })
}
// 新增水表监测
export const createWaterMonitoring = (data: WaterMonitoring) => {
return request.post({ url: '/energy/water-monitoring/create', data })
}
// 更新水表监测
export const updateWaterMonitoring = (data: WaterMonitoring) => {
return request.put({ url: '/energy/water-monitoring/update', data })
}
// 删除水表监测
export const deleteWaterMonitoring = (id: number | string) => {
return request.delete({ url: `/energy/water-monitoring/delete?id=${id}` })
}
// 获取水表监测详情
export const getWaterMonitoring = (id: number | string) => {
return request.get({ url: `/energy/water-monitoring/get?id=${id}` })
}

View File

@@ -0,0 +1,29 @@
import request from '@/config/axios'
export interface WaterConsumptionChartData {
date: string
value: number
}
export interface WaterConsumptionHistoryData {
updateTime: string
deviceName: string
location: string
currentValue: number
lastTonnage: number
}
// 获取用水量折线图数据
export const getWaterConsumptionChart = (params: { type: 'week' | 'month' | 'year' }) => {
return request.get<WaterConsumptionChartData[]>({
url: '/energy/water-consumption/chart',
params
})
}
// 获取用水量历史记录表格数据
export const getWaterConsumptionHistory = () => {
return request.get<WaterConsumptionHistoryData[]>({
url: '/energy/water-consumption/history'
})
}

62
src/api/erp/ai/index.ts Normal file
View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
import { fetchEventSource } from '@microsoft/fetch-event-source'
import { config } from '@/config/axios/config'
import { buildSseHeaders, validateSseHandshake } from '@/utils/sse'
export interface ErpAiChatReqVO {
message: string
conversationId?: string
useContext?: boolean
}
export interface ErpAiChatRespVO {
conversationId: string
answer: string
}
export const ErpAiApi = {
chat: async (data: ErpAiChatReqVO) => {
return await request.post<ErpAiChatRespVO>({ url: '/erp/ai/chat', data })
},
chatStream: async ({
data,
ctrl,
onMessage,
onError,
onClose
}: {
data: ErpAiChatReqVO
ctrl: AbortController
onMessage?: (res: ErpAiChatRespVO) => void
onError?: (...args: any[]) => void
onClose?: (...args: any[]) => void
}) => {
return fetchEventSource(`${config.base_url}/erp/ai/chat/stream`, {
method: 'post',
headers: buildSseHeaders(),
openWhenHidden: true,
body: JSON.stringify(data),
signal: ctrl.signal,
async onopen(response) {
await validateSseHandshake(response)
},
onmessage(msg) {
if (!msg?.data) {
return
}
const payload = JSON.parse(msg.data)
if (payload?.code !== 0) {
throw new Error(payload?.msg || '流式响应失败')
}
onMessage?.(payload?.data)
},
onerror(err) {
onError?.(err)
throw err
},
onclose() {
onClose?.()
}
})
}
}

View File

@@ -0,0 +1,132 @@
import request from '@/config/axios'
// 审批记录 VO
export interface ApprovalRecordVO {
id?: number
processInstanceId: string
bizId: string
bizTableName: string
applicant: string
applicantName?: string
approver: string
approverName?: string
assigner?: string
assignerName?: string
assignReason?: string
approvalTime?: Date
comment?: string
approvalResult: number
flowType: number
parentApprovalId?: number
approvalLevel: number
processStatus: number
sort?: number
createTime?: Date
updateTime?: Date
}
// 提交审批 VO
export interface ApprovalSubmitVO {
bizId: string
bizTableName: string
nextApprover: string
remark?: string
}
// 处理审批 VO
export interface ApprovalProcessVO {
id: number
approvalResult: number
comment?: string
nextApprover?: string
assignReason?: string
}
// 审批记录分页查询 VO
export interface ApprovalRecordPageReqVO extends PageParam {
processInstanceId?: string
bizId?: string
bizTableName?: string
approver?: string
approvalResult?: number
processStatus?: number
createTime?: Date[]
}
// 审批记录 API
export const ApprovalRecordApi = {
// 查询审批记录分页
getApprovalRecordPage: async (params: ApprovalRecordPageReqVO) => {
return await request.get({ url: `/erp/approval-record/page`, params })
},
// 查询审批记录详情
getApprovalRecord: async (id: number) => {
return await request.get({ url: `/erp/approval-record/get?id=` + id })
},
// 新增审批记录
createApprovalRecord: async (data: ApprovalRecordVO) => {
return await request.post({ url: `/erp/approval-record/create`, data })
},
// 修改审批记录
updateApprovalRecord: async (data: ApprovalRecordVO) => {
return await request.put({ url: `/erp/approval-record/update`, data })
},
// 删除审批记录
deleteApprovalRecord: async (id: number) => {
return await request.delete({ url: `/erp/approval-record/delete?id=` + id })
},
// 提交审批
submitApproval: async (data: ApprovalSubmitVO) => {
return await request.post({ url: `/erp/approval-record/submit`, data })
},
// 处理审批
processApproval: async (data: ApprovalProcessVO) => {
return await request.post({ url: `/erp/approval-record/process`, data })
},
// 获取业务单据的审批记录列表
getApprovalRecordListByBiz: async (bizId: string, bizTableName: string) => {
return await request.get({
url: `/erp/approval-record/list-by-biz`,
params: { bizId, bizTableName }
})
},
// 获取用户的待办审批列表
getPendingApprovalList: async (approver: string) => {
return await request.get({
url: `/erp/approval-record/pending-list`,
params: { approver }
})
},
// 获取用户的已审批列表
getApprovedApprovalList: async (approver: string) => {
return await request.get({
url: `/erp/approval-record/approved-list`,
params: { approver }
})
},
// 获取用户的已审批分页列表
getApprovedApprovalPage: async (params: ApprovalRecordPageReqVO) => {
return await request.get({
url: `/erp/approval-record/approved-page`,
params
})
},
// 终止审批流程
terminateApproval: async (bizId: string, bizTableName: string) => {
return await request.post({
url: `/erp/approval-record/terminate`,
params: { bizId, bizTableName }
})
}
}

View File

@@ -0,0 +1,48 @@
import request from '@/config/axios'
// ERP 固定资产折旧 VO
export interface AssetDepreciationVO {
id: number // 主键
assetNo: string // 资产编号
assetName: string // 资产名称
assetCategory: string // 资产类别
originalValue: number // 原值
usefulLife: number // 使用年限(年)
monthlyDepreciation: number // 本月折旧
monthlyExpense: number // 当月费用
accumulatedDepreciation: number // 累计折旧
createTime: Date // 创建时间
}
// ERP 固定资产折旧 API
export const AssetDepreciationApi = {
// 查询固定资产折旧分页
getAssetDepreciationPage: async (params: any) => {
return await request.get({ url: `/erp/asset-depreciation/page`, params })
},
// 查询固定资产折旧详情
getAssetDepreciation: async (id: number) => {
return await request.get({ url: `/erp/asset-depreciation/get?id=` + id })
},
// 新增固定资产折旧
createAssetDepreciation: async (data: AssetDepreciationVO) => {
return await request.post({ url: `/erp/asset-depreciation/create`, data })
},
// 修改固定资产折旧
updateAssetDepreciation: async (data: AssetDepreciationVO) => {
return await request.put({ url: `/erp/asset-depreciation/update`, data })
},
// 删除固定资产折旧
deleteAssetDepreciation: async (id: number) => {
return await request.delete({ url: `/erp/asset-depreciation/delete?id=` + id })
},
// 导出固定资产折旧 Excel
exportAssetDepreciation: async (params: any) => {
return await request.download({ url: `/erp/asset-depreciation/export-excel`, params })
}
}

View File

@@ -0,0 +1,53 @@
import request from '@/config/axios'
// ERP 应付职工薪酬 VO
export interface EmployeeSalaryVO {
id: number // 主键
salaryMonth: string // 日期yyyy-MM
payableSalary: number // 应付职工薪酬
basicSalary: number // 工资
salaryDept: string // 工资部门
remark: string // 备注
employeeWelfare: number // 职工福利
socialInsurance: number // 社保保险费
bonus: number // 奖金
unionFund: number // 工会经费
commercialInsurance: number // 商业保险
compensation: number // 赔偿补偿
installationLabor: number // 安装人工费
personalIncomeTax: number // 个人所得税
createTime: Date // 创建时间
}
// ERP 应付职工薪酬 API
export const EmployeeSalaryApi = {
// 查询应付职工薪酬分页
getEmployeeSalaryPage: async (params: any) => {
return await request.get({ url: `/erp/employee-salary/page`, params })
},
// 查询应付职工薪酬详情
getEmployeeSalary: async (id: number) => {
return await request.get({ url: `/erp/employee-salary/get?id=` + id })
},
// 新增应付职工薪酬
createEmployeeSalary: async (data: EmployeeSalaryVO) => {
return await request.post({ url: `/erp/employee-salary/create`, data })
},
// 修改应付职工薪酬
updateEmployeeSalary: async (data: EmployeeSalaryVO) => {
return await request.put({ url: `/erp/employee-salary/update`, data })
},
// 删除应付职工薪酬
deleteEmployeeSalary: async (id: number) => {
return await request.delete({ url: `/erp/employee-salary/delete?id=` + id })
},
// 导出应付职工薪酬 Excel
exportEmployeeSalary: async (params: any) => {
return await request.download({ url: `/erp/employee-salary/export-excel`, params })
}
}

View File

@@ -0,0 +1,61 @@
import request from '@/config/axios'
// ERP 结算账户 VO
export interface AccountVO {
id: number // 结算账户编号
no: string // 账户编码
remark: string // 备注
status: number // 开启状态
sort: number // 排序
defaultStatus: boolean // 是否默认
name: string // 账户名称
}
// ERP 结算账户 API
export const AccountApi = {
// 查询结算账户分页
getAccountPage: async (params: any) => {
return await request.get({ url: `/erp/account/page`, params })
},
// 查询结算账户精简列表
getAccountSimpleList: async () => {
return await request.get({ url: `/erp/account/simple-list` })
},
// 查询结算账户详情
getAccount: async (id: number) => {
return await request.get({ url: `/erp/account/get?id=` + id })
},
// 新增结算账户
createAccount: async (data: AccountVO) => {
return await request.post({ url: `/erp/account/create`, data })
},
// 修改结算账户
updateAccount: async (data: AccountVO) => {
return await request.put({ url: `/erp/account/update`, data })
},
// 修改结算账户默认状态
updateAccountDefaultStatus: async (id: number, defaultStatus: boolean) => {
return await request.put({
url: `/erp/account/update-default-status`,
params: {
id,
defaultStatus
}
})
},
// 删除结算账户
deleteAccount: async (id: number) => {
return await request.delete({ url: `/erp/account/delete?id=` + id })
},
// 导出结算账户 Excel
exportAccount: async (params: any) => {
return await request.download({ url: `/erp/account/export-excel`, params })
}
}

View File

@@ -0,0 +1,70 @@
import request from '@/config/axios'
// ERP 银行流水 VO
export interface BankTransactionVO {
id: number // 流水编号
transactionNo: string // 交易流水号
accountId: number // 结算账户编号
accountName?: string // 结算账户名称
accountNo: string // 账户号
transactionInstitution: string // 交易机构
transactionAmount: number // 交易金额
transactionType: number // 交易类型1-收入 2-支出
counterpartyAccount: string // 交易对手账户
counterpartyName: string // 交易对手户名
counterpartyBank: string // 交易对手银行
operatorTeller: string // 操作柜员
summary: string // 摘要
remark: string // 备注信息
transactionTime: Date // 交易时间
createTime: Date // 创建时间
}
// ERP 银行流水 API
export const BankTransactionApi = {
// 查询银行流水分页
getBankTransactionPage: async (params: any) => {
return await request.get({ url: `/erp/bank-transaction/page`, params })
},
// 查询银行流水详情
getBankTransaction: async (id: number) => {
return await request.get({ url: `/erp/bank-transaction/get?id=` + id })
},
// 新增银行流水
createBankTransaction: async (data: BankTransactionVO) => {
return await request.post({ url: `/erp/bank-transaction/create`, data })
},
// 修改银行流水
updateBankTransaction: async (data: BankTransactionVO) => {
return await request.put({ url: `/erp/bank-transaction/update`, data })
},
// 删除银行流水
deleteBankTransaction: async (id: number) => {
return await request.delete({ url: `/erp/bank-transaction/delete?id=` + id })
},
// 导出银行流水 Excel
exportBankTransaction: async (params: any) => {
return await request.download({ url: `/erp/bank-transaction/export-excel`, params })
},
// 获取导入模板
getImportTemplate: async () => {
return await request.download({ url: `/erp/bank-transaction/get-import-template` })
},
// 导入银行流水
importBankTransaction: async (file: File, updateSupport: boolean) => {
const formData = new FormData()
formData.append('file', file)
return await request.post({
url: `/erp/bank-transaction/import?updateSupport=${updateSupport}`,
data: formData,
headersType: 'multipart/form-data'
})
}
}

View File

@@ -0,0 +1,74 @@
import request from '@/config/axios'
// 记账凭证明细 VO
export interface BookkeepingVoucherItemVO {
id?: number
summary?: string
subjectId: number
subjectName?: string
debitAmount?: number
creditAmount?: number
}
// 记账凭证 VO
export interface BookkeepingVoucherVO {
id?: number
voucherNo?: string
voucherDate: string
summary: string
debitTotal?: number
creditTotal?: number
creatorUserId?: number
creatorUserName?: string
auditorUserId?: number
auditorUserName?: string
auditTime?: string
systemName?: string
remark?: string
status?: number
createTime?: string
items?: BookkeepingVoucherItemVO[]
}
// 记账凭证 API
export const BookkeepingVoucherApi = {
// 查询记账凭证分页
getVoucherPage: async (params: any) => {
return await request.get({ url: `/erp/finance/bookkeeping-voucher/page`, params })
},
// 查询记账凭证详情
getVoucher: async (id: number) => {
return await request.get({ url: `/erp/finance/bookkeeping-voucher/get?id=` + id })
},
// 新增记账凭证
createVoucher: async (data: BookkeepingVoucherVO) => {
return await request.post({ url: `/erp/finance/bookkeeping-voucher/create`, data })
},
// 修改记账凭证
updateVoucher: async (data: BookkeepingVoucherVO) => {
return await request.put({ url: `/erp/finance/bookkeeping-voucher/update`, data })
},
// 审核记账凭证
auditVoucher: async (id: number) => {
return await request.put({ url: `/erp/finance/bookkeeping-voucher/audit?id=` + id })
},
// 反审核记账凭证
unauditVoucher: async (id: number) => {
return await request.put({ url: `/erp/finance/bookkeeping-voucher/unaudit?id=` + id })
},
// 删除记账凭证
deleteVoucher: async (id: number) => {
return await request.delete({ url: `/erp/finance/bookkeeping-voucher/delete?id=` + id })
},
// 导出记账凭证 Excel
exportVoucher: async (params: any) => {
return await request.download({ url: `/erp/finance/bookkeeping-voucher/export-excel`, params })
}
}

View File

@@ -0,0 +1,78 @@
import request from '@/config/axios'
// ERP 会计期间 VO
export interface FiscalPeriodVO {
id: number // 期间ID
periodCode: string // 期间编码yyyyMM格式
periodName: string // 期间名称
fiscalYear: string // 会计年度
startDate: Date // 开始日期
endDate: Date // 结束日期
status: number // 状态1-开放2-关闭3-结账)
isCurrent: boolean // 是否当前期间
description: string // 描述
createdTime: Date // 创建时间
}
// ERP 会计期间 API
export const FiscalPeriodApi = {
// 查询会计期间分页
getFiscalPeriodPage: async (params: any) => {
return await request.get({ url: `/erp/fiscal-period/page`, params })
},
// 查询会计期间详情
getFiscalPeriod: async (id: number) => {
return await request.get({ url: `/erp/fiscal-period/get?id=` + id })
},
// 获取当前会计期间
getCurrentFiscalPeriod: async () => {
return await request.get({ url: `/erp/fiscal-period/current` })
},
// 新增会计期间
createFiscalPeriod: async (data: FiscalPeriodVO) => {
return await request.post({ url: `/erp/fiscal-period/create`, data })
},
// 修改会计期间
updateFiscalPeriod: async (data: FiscalPeriodVO) => {
return await request.put({ url: `/erp/fiscal-period/update`, data })
},
// 删除会计期间
deleteFiscalPeriod: async (id: number) => {
return await request.delete({ url: `/erp/fiscal-period/delete?id=` + id })
},
// 开启会计期间
openFiscalPeriod: async (id: number) => {
return await request.put({ url: `/erp/fiscal-period/open?id=` + id })
},
// 关闭会计期间
closeFiscalPeriod: async (id: number) => {
return await request.put({ url: `/erp/fiscal-period/close?id=` + id })
},
// 结账
postFiscalPeriod: async (id: number) => {
return await request.put({ url: `/erp/fiscal-period/post?id=` + id })
},
// 执行完整结账流程
performCompleteClosing: async (id: number) => {
return await request.put({ url: `/erp/fiscal-period/complete-closing?id=` + id })
},
// 检查试算平衡
checkTrialBalance: async (id: number) => {
return await request.get({ url: `/erp/fiscal-period/check-trial-balance?id=` + id })
},
// 导出会计期间 Excel
exportFiscalPeriod: async (params: any) => {
return await request.download({ url: `/erp/fiscal-period/export-excel`, params })
}
}

View File

@@ -0,0 +1,71 @@
import request from '@/config/axios'
import type { Dayjs } from 'dayjs'
/** 财务发票主信息 */
export interface Invoice {
id: number // 主键ID
invoiceDate?: string | Dayjs // 发票日期
invoiceCategory?: string // 发票类别(进项发票/销项发票)
invoiceType?: string // 发票类型(增值税专用发票/普通发票)
invoiceNo?: string // 发票号码(唯一)
counterpartyName?: string // 客户/供应商名称
amountWithoutTax?: number // 金额(不含税)
taxRate?: number // 税率(%
taxAmount?: number // 税额
totalAmount?: number // 价税合计
attachment: string // 发票附件
invoiceStatus?: string // 发票状态(待接收/已认证/已作废等)
isSettlement?: number // 结算状态0/1
certificationDate: string | Dayjs // 认证日期(仅进项票)
voucherNo: string // 凭证字号
accountingPeriod?: string // 记账期间如2026-01
remark: string // 备注
}
// 财务发票主 API
export const InvoiceApi = {
// 查询财务发票主分页
getInvoicePage: async (params: any) => {
return await request.get({ url: `/finance/invoice/page`, params })
},
// 查询财务发票主详情
getInvoice: async (id: number) => {
return await request.get({ url: `/finance/invoice/get?id=` + id })
},
// 新增财务发票主
createInvoice: async (data: Invoice) => {
return await request.post({ url: `/finance/invoice/create`, data })
},
// 修改财务发票主
updateInvoice: async (data: Invoice) => {
return await request.put({ url: `/finance/invoice/update`, data })
},
// 结算财务发票主
settlementInvoice: async (data: Pick<Invoice, 'id'>) => {
return await request.put({ url: `/finance/invoice/settlement`, data })
},
// 删除财务发票主
deleteInvoice: async (id: number) => {
return await request.delete({ url: `/finance/invoice/delete?id=` + id })
},
/** 批量删除财务发票主 */
deleteInvoiceList: async (ids: number[]) => {
return await request.delete({ url: `/finance/invoice/delete-list?ids=${ids.join(',')}` })
},
// 导出财务发票主 Excel
exportInvoice: async (params) => {
return await request.download({ url: `/finance/invoice/export-excel`, params })
},
// 查询发票号码列表
getInvoiceNoList: async (invoiceCategory: number | string) => {
return await request.get({ url: `/finance/invoice/getInvoiceNoList`, params: { invoiceCategory } })
}
}

View File

@@ -0,0 +1,61 @@
import request from '@/config/axios'
// ERP 总账 VO
export interface LedgerVO {
id: number | null // 总账编号
subjectId: number // 科目编号
subjectCode: string // 科目编码
subjectName: string // 科目名称
period: string // 期间YYYYMM
summary: string // 摘要
debitAmount: number // 借方金额
creditAmount: number // 贷方金额
direction: string // 方向(借、贷、平)
balance: number // 余额
voucherCount: number // 关联凭证数量
status: number // 状态
createTime: number | Date // 创建时间
}
// ERP 总账 API
export const LedgerApi = {
// 查询总账分页
getLedgerPage: async (params: any) => {
return await request.get({ url: `/erp/ledger/page`, params })
},
// 查询总账详情
getLedger: async (id: number) => {
return await request.get({ url: `/erp/ledger/get?id=` + id })
},
// 新增总账
createLedger: async (data: LedgerVO) => {
return await request.post({ url: `/erp/ledger/create`, data })
},
// 修改总账
updateLedger: async (data: LedgerVO) => {
return await request.put({ url: `/erp/ledger/update`, data })
},
// 删除总账
deleteLedger: async (id: number) => {
return await request.delete({ url: `/erp/ledger/delete?id=` + id })
},
// 导出总账 Excel
exportLedger: async (params: any) => {
return await request.download({ url: `/erp/ledger/export-excel`, params })
},
// 获取账户余额
getAccountBalance: async (accountId: number) => {
return await request.get({ url: `/erp/ledger/account-balance?accountId=` + accountId })
},
// 获取科目余额
getSubjectBalance: async (subjectId: number) => {
return await request.get({ url: `/erp/ledger/subject-balance?subjectId=` + subjectId })
}
}

View File

@@ -0,0 +1,31 @@
import request from '@/config/axios'
// 会计科目期初余额 VO
export interface OpeningBalanceVO {
id?: number // 编号
subjectId: number // 科目ID
subjectCode?: string // 科目编码
subjectName?: string // 科目名称
period: string // 期间yyyyMM格式
balance: number // 期初余额
direction: string // 余额方向
createTime?: Date // 创建时间
}
// 会计科目期初余额 API
export const OpeningBalanceApi = {
// 查询期初余额列表
getOpeningBalanceList: async (params: any) => {
return await request.get({ url: `/erp/subject-opening-balance/list-by-period`, params })
},
// 批量更新期初余额
batchUpdateOpeningBalance: async (data: OpeningBalanceVO[]) => {
return await request.post({ url: `/erp/subject-opening-balance/batch-update`, data })
},
// 根据期间获取期初余额列表
getOpeningBalanceListByPeriod: async (period: string) => {
return await request.get({ url: `/erp/subject-opening-balance/list-by-period`, params: { period }})
}
}

View File

@@ -0,0 +1,66 @@
import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
/** 应付单信息 */
export interface PayableOrder {
id: number; // 应付单ID主键
apoCode?: string; // 应付单号唯一如AP20260115001
supplierId?: number; // 供应商ID外键关联supplier表
billDate?: string | Dayjs; // 单据日期
dueDate?: string | Dayjs; // 到期付款日期
totalAmount?: number; // 应付总金额
taxAmount?: number; // 税额
nonTaxAmount?: number; // 不含税金额
subjectId: number; // 会计科目ID外键关联科目表
billType?: number; // 单据类型1-采购发票2-费用账单3-其他应付
status?: number; // 状态0-草稿1-待审核2-已审核3-已核销4-已取消
remark: string; // 备注
auditUser: string; // 审核人
auditTime: string | Dayjs; // 审核时间
}
// 应付单 API
export const PayableOrderApi = {
// 应付单自动更新
autoUpdatePayableOrder: async () => {
return await request.post({ url: `/erp/payable-order/autoUpdate` })
},
// 应付单自动获取展示(支持分页/搜索)
autoGetShowPayableOrder: async (params?: any) => {
return await request.get({ url: `/erp/payable-order/autoGetShow`, params })
},
// 查询应付单分页
getPayableOrderPage: async (params: any) => {
return await request.get({ url: `/erp/payable-order/page`, params })
},
// 查询应付单详情
getPayableOrder: async (id: number) => {
return await request.get({ url: `/erp/payable-order/get?id=` + id })
},
// 新增应付单
createPayableOrder: async (data: PayableOrder) => {
return await request.post({ url: `/erp/payable-order/create`, data })
},
// 修改应付单
updatePayableOrder: async (data: PayableOrder) => {
return await request.put({ url: `/erp/payable-order/update`, data })
},
// 删除应付单
deletePayableOrder: async (id: number) => {
return await request.delete({ url: `/erp/payable-order/delete?id=` + id })
},
/** 批量删除应付单 */
deletePayableOrderList: async (ids: number[]) => {
return await request.delete({ url: `/erp/payable-order/delete-list?ids=${ids.join(',')}` })
},
// 导出应付单 Excel
exportPayableOrder: async (params) => {
return await request.download({ url: `/erp/payable-order/export-excel`, params })
},
}

View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
// ERP 付款单 VO
export interface FinancePaymentVO {
id: number // 付款单编号
no: string // 付款单号
supplierId: number // 供应商编号
paymentTime: Date // 付款时间
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
invoiceIds?: string[] // 关联发票ID列表
}
// ERP 付款单 API
export const FinancePaymentApi = {
// 查询付款单分页
getFinancePaymentPage: async (params: any) => {
return await request.get({ url: `/erp/finance-payment/page`, params })
},
// 查询付款单详情
getFinancePayment: async (id: number) => {
return await request.get({ url: `/erp/finance-payment/get?id=` + id })
},
// 新增付款单
createFinancePayment: async (data: FinancePaymentVO) => {
return await request.post({ url: `/erp/finance-payment/create`, data })
},
// 修改付款单
updateFinancePayment: async (data: FinancePaymentVO) => {
return await request.put({ url: `/erp/finance-payment/update`, data })
},
// 更新付款单的状态
updateFinancePaymentStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/finance-payment/update-status`,
params: {
id,
status
}
})
},
// 删除付款单
deleteFinancePayment: async (ids: number[]) => {
return await request.delete({
url: `/erp/finance-payment/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出付款单 Excel
exportFinancePayment: async (params: any) => {
return await request.download({ url: `/erp/finance-payment/export-excel`, params })
}
}

View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
// ERP 收款单 VO
export interface FinanceReceiptVO {
id: number // 收款单编号
no: string // 收款单号
customerId: number // 客户编号
receiptTime: Date // 收款时间
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
invoiceIds?: string[] // 关联发票ID列表
}
// ERP 收款单 API
export const FinanceReceiptApi = {
// 查询收款单分页
getFinanceReceiptPage: async (params: any) => {
return await request.get({ url: `/erp/finance-receipt/page`, params })
},
// 查询收款单详情
getFinanceReceipt: async (id: number) => {
return await request.get({ url: `/erp/finance-receipt/get?id=` + id })
},
// 新增收款单
createFinanceReceipt: async (data: FinanceReceiptVO) => {
return await request.post({ url: `/erp/finance-receipt/create`, data })
},
// 修改收款单
updateFinanceReceipt: async (data: FinanceReceiptVO) => {
return await request.put({ url: `/erp/finance-receipt/update`, data })
},
// 更新收款单的状态
updateFinanceReceiptStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/finance-receipt/update-status`,
params: {
id,
status
}
})
},
// 删除收款单
deleteFinanceReceipt: async (ids: number[]) => {
return await request.delete({
url: `/erp/finance-receipt/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出收款单 Excel
exportFinanceReceipt: async (params: any) => {
return await request.download({ url: `/erp/finance-receipt/export-excel`, params })
}
}

View File

@@ -0,0 +1,66 @@
import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
/** 应收单信息 */
export interface ReceivableOrder {
id: number; // 应收单ID主键
aroCode?: string; // 应收单号唯一如AR20260115001
customerId?: number; // 客户ID外键关联customer表
billDate?: string | Dayjs; // 单据日期
dueDate?: string | Dayjs; // 到期收款日期
totalAmount?: number; // 应收总金额
taxAmount?: number; // 税额
nonTaxAmount?: number; // 不含税金额
subjectId: number; // 会计科目ID外键关联科目表对应应收账款科目
billType?: number; // 单据类型1-销售发票2-服务费账单3-其他应收
status?: number; // 状态0-草稿1-待审核2-已审核3-已核销4-已取消
remark: string; // 备注
auditUser: string; // 审核人
auditTime: string | Dayjs; // 审核时间
}
// 应收单 API
export const ReceivableOrderApi = {
// 应收单自动更新
autoUpdateReceivableOrder: async () => {
return await request.post({ url: `/erp/receivable-order/autoUpdate` })
},
// 应收单自动获取展示
autoGetShowReceivableOrder: async (params?: any) => {
return await request.get({ url: `/erp/receivable-order/autoGetShow`, params })
},
// 查询应收单分页
getReceivableOrderPage: async (params: any) => {
return await request.get({ url: `/erp/receivable-order/page`, params })
},
// 查询应收单详情
getReceivableOrder: async (id: number) => {
return await request.get({ url: `/erp/receivable-order/get?id=` + id })
},
// 新增应收单
createReceivableOrder: async (data: ReceivableOrder) => {
return await request.post({ url: `/erp/receivable-order/create`, data })
},
// 修改应收单
updateReceivableOrder: async (data: ReceivableOrder) => {
return await request.put({ url: `/erp/receivable-order/update`, data })
},
// 删除应收单
deleteReceivableOrder: async (id: number) => {
return await request.delete({ url: `/erp/receivable-order/delete?id=` + id })
},
/** 批量删除应收单 */
deleteReceivableOrderList: async (ids: number[]) => {
return await request.delete({ url: `/erp/receivable-order/delete-list?ids=${ids.join(',')}` })
},
// 导出应收单 Excel
exportReceivableOrder: async (params) => {
return await request.download({ url: `/erp/receivable-order/export-excel`, params })
},
}

View File

@@ -0,0 +1,59 @@
import request from '@/config/axios'
// ERP 会计科目 VO
export interface SubjectVO {
id: number // 会计科目编号
parentId: number // 父科目编号
code: string // 科目编码
name: string // 科目名称
type: number // 科目类型
direction: number // 余额方向1借方 2贷方
status: number // 开启状态
sort: number // 排序
remark: string // 备注
createTime: Date // 创建时间
children?: SubjectVO[] // 子科目
}
// ERP 会计科目 API
export const SubjectApi = {
// 查询会计科目分页
getSubjectPage: async (params: any) => {
return await request.get({ url: `/erp/finance/subject/page`, params })
},
// 查询会计科目树形列表
getSubjectTree: async () => {
return await request.get({ url: `/erp/finance/subject/tree` })
},
// 查询会计科目精简列表
getSubjectSimpleList: async () => {
return await request.get({ url: `/erp/finance/subject/simple-list` })
},
// 查询会计科目详情
getSubject: async (id: number) => {
return await request.get({ url: `/erp/finance/subject/get?id=` + id })
},
// 新增会计科目
createSubject: async (data: SubjectVO) => {
return await request.post({ url: `/erp/finance/subject/create`, data })
},
// 修改会计科目
updateSubject: async (data: SubjectVO) => {
return await request.put({ url: `/erp/finance/subject/update`, data })
},
// 删除会计科目
deleteSubject: async (id: number) => {
return await request.delete({ url: `/erp/finance/subject/delete?id=` + id })
},
// 导出会计科目 Excel
exportSubject: async (params: any) => {
return await request.download({ url: `/erp/finance/subject/export-excel`, params })
}
}

View File

@@ -0,0 +1,77 @@
import request from '@/config/axios'
export type VoucherVO = {
id: number
no: string
status: number
type: number
billType?: number
voucherTime: string
paymentDate?: string
payeeName: string // 收款单位
projectName: string // 项目名称
bankName: string // 开户银行
bankAccount: string // 开户账号
contractNo: string // 合同号
contractAmount: number // 合同总金额
taxNo: string // 税号
paidAmount: number // 累计已付金额
contractFile: string // 合同附件
invoiceFile: string // 发票附件
totalAmount: number
remark: string
processInstanceId: string
items: VoucherItemVO[]
startUserSelectAssignees?: Record<string, number[]> // 发起人自选审批人
createTime?: string
creatorName?: string
}
export type VoucherItemVO = {
id?: number
voucherId?: number
accountId: number
accountName?: string // 会计科目名称
summary: string
debitAmount: number
creditAmount: number
}
// 创建财务凭证
export const createVoucher = async (data: VoucherVO) => {
return await request.post({ url: '/erp/finance-voucher/create', data: data })
}
// 更新财务凭证
export const updateVoucher = async (data: VoucherVO) => {
return await request.put({ url: '/erp/finance-voucher/update', data: data })
}
// 删除财务凭证
export const deleteVoucher = async (ids: number | number[]) => {
const data = Array.isArray(ids) ? ids : [ids]
return await request.delete({ url: '/erp/finance-voucher/delete', data: data })
}
// 获取财务凭证详情
export const getVoucher = async (id: number) => {
return await request.get({ url: '/erp/finance-voucher/get', params: { id } })
}
// 获取财务凭证分页
export const getVoucherPage = async (params: PageParam) => {
return await request.get({ url: '/erp/finance-voucher/page', params })
}
// 导出财务凭证
export const exportVoucher = async (params: any) => {
return await request.download({ url: '/erp/finance-voucher/export-excel', params })
}
// 更新财务凭证状态
export const updateVoucherStatus = async (id: number, status: number) => {
return await request.put({
url: '/erp/finance-voucher/update-status',
params: { id, status }
})
}

17
src/api/erp/product.ts Normal file
View File

@@ -0,0 +1,17 @@
import request from '@/config/axios'
/**
* @author:huangtianci
* 获取产品列表
*/
export function YVHgetProductList() {
return request.get({ url: '/erp/product/list' })
}
/**
* @author:huangtianci
* 获取产品详情
*/
export function YVHgetProduct(id: number) {
return request.get({ url: '/erp/product/get', params: { id } })
}

View File

@@ -0,0 +1,49 @@
import request from '@/config/axios'
// ERP 产品分类 VO
export interface ProductCategoryVO {
id: number // 分类编号
parentId: number // 父分类编号
name: string // 分类名称
code: string // 分类编码
sort: number // 分类排序
status: number // 开启状态
}
// ERP 产品分类 API
export const ProductCategoryApi = {
// 查询产品分类列表
getProductCategoryList: async () => {
return await request.get({ url: `/erp/product-category/list` })
},
// 查询产品分类精简列表
getProductCategorySimpleList: async () => {
return await request.get({ url: `/erp/product-category/simple-list` })
},
// 查询产品分类详情
getProductCategory: async (id: number) => {
return await request.get({ url: `/erp/product-category/get?id=` + id })
},
// 新增产品分类
createProductCategory: async (data: ProductCategoryVO) => {
return await request.post({ url: `/erp/product-category/create`, data })
},
// 修改产品分类
updateProductCategory: async (data: ProductCategoryVO) => {
return await request.put({ url: `/erp/product-category/update`, data })
},
// 删除产品分类
deleteProductCategory: async (id: number) => {
return await request.delete({ url: `/erp/product-category/delete?id=` + id })
},
// 导出产品分类 Excel
exportProductCategory: async (params) => {
return await request.download({ url: `/erp/product-category/export-excel`, params })
}
}

View File

@@ -0,0 +1,68 @@
import request from '@/config/axios'
// ERP 产品 VO
export interface ProductVO {
id: number // 产品编号
name: string // 产品名称
barCode: string // 产品条码
categoryId: number // 产品类型编号
unitId: number // 单位编号
unitName?: string // 单位名字
status: number // 产品状态
standard: string // 产品规格
remark: string // 产品备注
expiryDay: number // 保质期天数
weight: number // 重量kg
purchasePrice: number // 采购价格,单位:元
salePrice: number // 销售价格,单位:元
minPrice: number // 最低价格,单位:元
stockAlertCount: number // 库存预警数量
supplierId?: number // 供应商编号
supplierName?: string // 供应商名称
}
// ERP 产品 API
export const ProductApi = {
// 查询产品分页
getProductPage: async (params: any) => {
return await request.get({ url: `/erp/product/page`, params })
},
// 查询产品精简列表
getProductSimpleList: async () => {
return await request.get({ url: `/erp/product/simple-list` })
},
// 查询产品详情
getProduct: async (id: number) => {
return await request.get({ url: `/erp/product/get?id=` + id })
},
// 新增产品
createProduct: async (data: ProductVO) => {
return await request.post({ url: `/erp/product/create`, data })
},
// 修改产品
updateProduct: async (data: ProductVO) => {
return await request.put({ url: `/erp/product/update`, data })
},
// 删除产品
deleteProduct: async (id: number) => {
return await request.delete({ url: `/erp/product/delete?id=` + id })
},
// 导出产品 Excel
exportProduct: async (params) => {
return await request.download({ url: `/erp/product/export-excel`, params })
},
// 根据状态查询产品列表
getProductVOListByStatus: async (status: number) => {
return await request.get({ url: `/erp/product/list-by-status?status=` + status })
}
}
// 导出独立函数供其他模块使用
export const getProductVOListByStatus = ProductApi.getProductVOListByStatus

View File

@@ -0,0 +1,46 @@
import request from '@/config/axios'
// ERP 产品单位 VO
export interface ProductUnitVO {
id: number // 单位编号
name: string // 单位名字
status: number // 单位状态
}
// ERP 产品单位 API
export const ProductUnitApi = {
// 查询产品单位分页
getProductUnitPage: async (params: any) => {
return await request.get({ url: `/erp/product-unit/page`, params })
},
// 查询产品单位精简列表
getProductUnitSimpleList: async () => {
return await request.get({ url: `/erp/product-unit/simple-list` })
},
// 查询产品单位详情
getProductUnit: async (id: number) => {
return await request.get({ url: `/erp/product-unit/get?id=` + id })
},
// 新增产品单位
createProductUnit: async (data: ProductUnitVO) => {
return await request.post({ url: `/erp/product-unit/create`, data })
},
// 修改产品单位
updateProductUnit: async (data: ProductUnitVO) => {
return await request.put({ url: `/erp/product-unit/update`, data })
},
// 删除产品单位
deleteProductUnit: async (id: number) => {
return await request.delete({ url: `/erp/product-unit/delete?id=` + id })
},
// 导出产品单位 Excel
exportProductUnit: async (params) => {
return await request.download({ url: `/erp/product-unit/export-excel`, params })
}
}

View File

@@ -0,0 +1,78 @@
import request from '@/config/axios'
export interface ProductionInVO {
id?: number
no?: string
status?: number
inTime?: number
warehouseId?: number
totalCount?: number
totalPrice?: number
remark?: string
fileUrl?: string
items?: ProductionInItemVO[]
}
export interface ProductionInItemVO {
id?: number
inId?: number
warehouseId?: number
productId?: number
productName?: string
productUnitId?: number
productUnitName?: string
productBarCode?: string
productPrice?: number
count?: number
totalPrice?: number
remark?: string
}
// ERP 生产入库 API
export const ProductionInApi = {
// 查询生产入库分页
getProductionInPage: async (params: any) => {
return await request.get({ url: `/erp/production-in/page`, params })
},
// 查询生产入库详情
getProductionIn: async (id: number) => {
return await request.get({ url: `/erp/production-in/get?id=` + id })
},
// 新增生产入库
createProductionIn: async (data: ProductionInVO) => {
return await request.post({ url: `/erp/production-in/create`, data })
},
// 修改生产入库
updateProductionIn: async (data: ProductionInVO) => {
return await request.put({ url: `/erp/production-in/update`, data })
},
// 更新生产入库的状态
updateProductionInStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/production-in/update-status`,
params: {
id,
status
}
})
},
// 删除生产入库
deleteProductionIn: async (ids: number[]) => {
return await request.delete({
url: `/erp/production-in/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出生产入库 Excel
exportProductionIn: async (params: any) => {
return await request.download({ url: `/erp/production-in/export-excel`, params })
}
}

View File

@@ -0,0 +1,49 @@
import request from '@/config/axios'
export interface CarVO {
id?: number
driverName: string
licensePlate: string
contactPhone?: string
carLength?: number
carWidth?: number
ratedTonnage?: number
remark?: string
status: number
createTime?: Date
}
// 查询车辆管理列表
export const getCarPage = (params: any) => {
return request.get({ url: '/erp/car/page', params })
}
// 查询车辆管理详情
export const getCar = (id: number) => {
return request.get({ url: '/erp/car/get?id=' + id })
}
// 新增车辆管理
export const createCar = (data: CarVO) => {
return request.post({ url: '/erp/car/create', data })
}
// 修改车辆管理
export const updateCar = (data: CarVO) => {
return request.put({ url: '/erp/car/update', data })
}
// 删除车辆管理
export const deleteCar = (id: number) => {
return request.delete({ url: '/erp/car/delete?id=' + id })
}
// 导出车辆管理
export const exportCar = (params: any) => {
return request.download({ url: '/erp/car/export-excel', params })
}
// 获取车辆导入模板
export const importCarTemplate = () => {
return request.download({ url: '/erp/car/get-import-template' })
}

View File

@@ -0,0 +1,74 @@
import request from '@/config/axios'
// ERP 农户 VO
export interface FarmerVO {
id: number // 农户编号
name: string // 户主姓名
idCardNumber?: string // 身份证号
mobile?: string // 手机号码
address?: string // 住址
plantingBase?: string // 所属种植基地
contractNumber?: string // 合同号
contractedArea?: number // 签订面积(亩)
orderQuantity?: number // 订购数量(株)
actualArea?: number // 实种面积(亩)
transplantTime?: string // 移栽时间 (格式: YYYY-MM-DD)
transplantQuantity?: number // 移栽数量(盘)
maturityTime?: string // 成熟时间 (格式: YYYY-MM-DD)
expectedHarvestTime?: string // 预计采收时间 (格式: YYYY-MM-DD)
usedVariety?: string // 使用品种
plantingMethod?: string // 种植方式
adminName?: string // 管理员姓名
contact?: string // 联系人
telephone?: string // 联系电话
email?: string // 电子邮箱
fax?: string // 传真
remark?: string // 备注
status: number // 开启状态
sort: number // 排序
taxNo?: string // 纳税人识别号
taxPercent?: number // 税率
bankName?: string // 开户行
bankAccount?: string // 开户账号
bankAddress?: string // 开户地址
}
// ERP 农户 API
export const FarmerApi = {
// 查询农户分页
getFarmerPage: async (params: any) => {
return await request.get({ url: `/erp/farmer/page`, params })
},
// 获得农户精简列表
getFarmerSimpleList: async () => {
return await request.get({ url: `/erp/farmer/simple-list` })
},
// 查询农户详情
getFarmer: async (id: number) => {
return await request.get({ url: `/erp/farmer/get?id=` + id })
},
// 新增农户
createFarmer: async (data: FarmerVO) => {
return await request.post({ url: `/erp/farmer/create`, data })
},
// 修改农户
updateFarmer: async (data: FarmerVO) => {
return await request.put({ url: `/erp/farmer/update`, data })
},
// 删除农户
deleteFarmer: async (id: number) => {
return await request.delete({ url: `/erp/farmer/delete?id=` + id })
},
// 导出农户 Excel
exportFarmer: async (params) => {
return await request.download({ url: `/erp/farmer/export-excel`, params })
}
}

View File

@@ -0,0 +1,103 @@
import request from '@/config/axios'
// ERP 采购入库 VO
export interface PurchaseInVO {
id: number // 入库工单编号
no: string // 采购入库号
supplierId: number // 供应商编号
inTime: Date // 入库时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
outCount: number // 采购出库数量
returnCount: number // 采购退货数量
isQualified: boolean // 是否合格
returnType: string | null // 返回方式
returnRemark: string | undefined // 返回方式备注
accountId: number // 结算账户编号
discountPercent: number // 优惠率
discountPrice: number // 优惠金额
otherPrice: number // 其他费用
fileUrl: string // 附件
orderNo: string // 关联订单号
items: any[] // 入库产品清单
}
// 返回方式枚举
export const RETURN_TYPE_ENUM = {
RETURN_BACK: 'return_back',
DESTROY: 'destroy'
}
// 返回方式选项
export const RETURN_TYPE_OPTIONS = [
{ label: '原路返回', value: RETURN_TYPE_ENUM.RETURN_BACK },
{ label: '就地销毁', value: RETURN_TYPE_ENUM.DESTROY }
]
// 审核信息
export interface AuditFormData {
id: number // 入库工单编号
isQualified: boolean // 是否合格
returnType?: string // 返回方式
returnRemark?: string // 返回方式备注
status: number // 审核状态,必须为数字类型
}
// 查询参数类型
export interface PurchaseInPageReqVO extends PageParam {
no?: string // 入库单号
supplierId?: number // 供应商编号
status?: number // 审核状态
isQualified?: boolean // 是否合格
inTime?: Date[] // 入库时间范围
accountId?: number // 结算账户编号
creator?: string // 创建人
}
// ERP 采购入库 API
export const PurchaseInApi = {
// 查询采购入库分页
getPurchaseInPage: async (params: any) => {
return await request.get({ url: `/erp/purchase-in/page`, params })
},
// 查询采购入库详情
getPurchaseIn: async (id: number) => {
return await request.get({ url: `/erp/purchase-in/get?id=` + id })
},
// 新增采购入库
createPurchaseIn: async (data: PurchaseInVO) => {
return await request.post({ url: `/erp/purchase-in/create`, data })
},
// 修改采购入库
updatePurchaseIn: async (data: PurchaseInVO) => {
return await request.put({ url: `/erp/purchase-in/update`, data })
},
// 更新采购入库的审核状态
updatePurchaseInStatus: async (data: AuditFormData) => {
return await request.put({
url: `/erp/purchase-in/update-status`,
data
})
},
// 删除采购入库
deletePurchaseIn: async (ids: number[]) => {
return await request.delete({
url: `/erp/purchase-in/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出采购入库 Excel
exportPurchaseIn: async (params: any) => {
return await request.download({ url: `/erp/purchase-in/export-excel`, params })
}
}

View File

@@ -0,0 +1,101 @@
import request from '@/config/axios'
// ERP 采购比价主表 VO
export interface PurchaseInquiryVO {
id: number // 比价单编号
no: string // 比价单号
productId: number // 产品编号
productName: string // 产品名称
requireCount: number // 需求数量
budgetPrice: number // 预算金额
inquiryTime: Date // 询价时间
deadline: Date // 截止日期
status: number // 状态10-待询价20-询价中30-已完成
remark: string // 备注
selectedQuoteId: number // 选中的报价ID
quotes: PurchaseInquiryQuoteVO[] // 供应商报价列表
}
// ERP 采购比价明细供应商报价VO
export interface PurchaseInquiryQuoteVO {
id: number // 报价编号
inquiryId: number // 比价单编号
supplierId: number // 供应商编号
supplierName: string // 供应商名称
contactName: string // 联系人
contactPhone: string // 联系电话
quoteDate: Date // 报价日期
unitPrice: number // 单价
totalPrice: number // 总价
paymentTerms: string // 付款条件
deliveryCycle: number // 交货周期(天)
qualificationFile: string // 资质文件
remark: string // 备注
isSelected: boolean // 是否选中
// 评分字段(用于自动比价)
priceScore: number // 价格得分0-100
qualityScore: number // 质量得分0-100
deliveryScore: number // 交付得分0-100
serviceScore: number // 服务得分0-100
totalScore?: number // 综合得分(计算得出)
}
// ERP 采购比价 API
export const PurchaseInquiryApi = {
// 查询采购比价分页
getPurchaseInquiryPage: async (params: any) => {
return await request.get({ url: `/erp/purchase-inquiry/page`, params })
},
// 查询采购比价详情
getPurchaseInquiry: async (id: number) => {
return await request.get({ url: `/erp/purchase-inquiry/get?id=` + id })
},
// 新增采购比价
createPurchaseInquiry: async (data: PurchaseInquiryVO) => {
return await request.post({ url: `/erp/purchase-inquiry/create`, data })
},
// 修改采购比价
updatePurchaseInquiry: async (data: PurchaseInquiryVO) => {
return await request.put({ url: `/erp/purchase-inquiry/update`, data })
},
// 更新采购比价状态
updatePurchaseInquiryStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/purchase-inquiry/update-status`,
params: {
id,
status
}
})
},
// 选中供应商报价
selectQuote: async (inquiryId: number, quoteId: number) => {
return await request.put({
url: `/erp/purchase-inquiry/select-quote`,
params: {
inquiryId,
quoteId
}
})
},
// 删除采购比价
deletePurchaseInquiry: async (ids: number[]) => {
return await request.delete({
url: `/erp/purchase-inquiry/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出采购比价 Excel
exportPurchaseInquiry: async (params: any) => {
return await request.download({ url: `/erp/purchase-inquiry/export-excel`, params })
}
}

View File

@@ -0,0 +1,66 @@
import request from '@/config/axios'
// ERP 采购订单 VO
export interface PurchaseOrderVO {
id: number // 订单工单编号
no: string // 采购订单号
purchaseRequisitionId?: number // 请购单ID
purchaseRequisitionNo?: string // 请购单编号
customerId: number // 客户编号
orderTime: Date // 订单时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
outCount: number // 采购出库数量
returnCount: number // 采购退货数量
}
// ERP 采购订单 API
export const PurchaseOrderApi = {
// 查询采购订单分页
getPurchaseOrderPage: async (params: any) => {
return await request.get({ url: `/erp/purchase-order/page`, params })
},
// 查询采购订单详情
getPurchaseOrder: async (id: number) => {
return await request.get({ url: `/erp/purchase-order/get?id=` + id })
},
// 新增采购订单
createPurchaseOrder: async (data: PurchaseOrderVO) => {
return await request.post({ url: `/erp/purchase-order/create`, data })
},
// 修改采购订单
updatePurchaseOrder: async (data: PurchaseOrderVO) => {
return await request.put({ url: `/erp/purchase-order/update`, data })
},
// 更新采购订单的状态
updatePurchaseOrderStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/purchase-order/update-status`,
params: {
id,
status
}
})
},
// 删除采购订单
deletePurchaseOrder: async (ids: number[]) => {
return await request.delete({
url: `/erp/purchase-order/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出采购订单 Excel
exportPurchaseOrder: async (params: any) => {
return await request.download({ url: `/erp/purchase-order/export-excel`, params })
}
}

View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
// ERP 采购退货 VO
export interface PurchaseReturnVO {
id: number // 采购退货编号
no: string // 采购退货号
customerId: number // 客户编号
returnTime: Date // 退货时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
// ERP 采购退货 API
export const PurchaseReturnApi = {
// 查询采购退货分页
getPurchaseReturnPage: async (params: any) => {
return await request.get({ url: `/erp/purchase-return/page`, params })
},
// 查询采购退货详情
getPurchaseReturn: async (id: number) => {
return await request.get({ url: `/erp/purchase-return/get?id=` + id })
},
// 新增采购退货
createPurchaseReturn: async (data: PurchaseReturnVO) => {
return await request.post({ url: `/erp/purchase-return/create`, data })
},
// 修改采购退货
updatePurchaseReturn: async (data: PurchaseReturnVO) => {
return await request.put({ url: `/erp/purchase-return/update`, data })
},
// 更新采购退货的状态
updatePurchaseReturnStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/purchase-return/update-status`,
params: {
id,
status
}
})
},
// 删除采购退货
deletePurchaseReturn: async (ids: number[]) => {
return await request.delete({
url: `/erp/purchase-return/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出采购退货 Excel
exportPurchaseReturn: async (params: any) => {
return await request.download({ url: `/erp/purchase-return/export-excel`, params })
}
}

View File

@@ -0,0 +1,53 @@
import request from '@/config/axios'
export interface FarmingManagementVO {
id: number
supplierId: number
code?: string
recordTime: string
irrigationRecords?: string
baseFertilizerRecords?: string
additionalFertilizerRecords?: string
pesticideRecords?: string
firstPickingTime?: string
totalQuantity?: number
remark?: string
createTime?: string
updateTime?: string
supplierName?: string
}
export interface FarmingManagementPageReqVO {
supplierId?: number
code?: string
recordTime?: string[]
firstPickingTime?: string[]
createTime?: string[]
pageNo?: number
pageSize?: number
}
// 查询农作物种植管理列表
export function getFarmingManagementPage(params: FarmingManagementPageReqVO) {
return request.get({ url: '/erp/farming-management/page', params })
}
// 获取农作物种植管理详情
export function getFarmingManagement(id: number) {
return request.get({ url: `/erp/farming-management/get?id=${id}` })
}
// 新增农作物种植管理
export function createFarmingManagement(data: FarmingManagementVO) {
return request.post({ url: '/erp/farming-management/create', data })
}
// 修改农作物种植管理
export function updateFarmingManagement(data: FarmingManagementVO) {
return request.put({ url: '/erp/farming-management/update', data })
}
// 删除农作物种植管理
export function deleteFarmingManagement(id: number) {
return request.delete({ url: `/erp/farming-management/delete?id=${id}` })
}

View File

@@ -0,0 +1,71 @@
import request from '@/config/axios'
// ERP 供应商 VO
export interface SupplierVO {
id: number // 供应商编号
name: string // 供应商名称
idCardNumber?: string // 身份证号
address?: string // 住址
plantingBase?: string // 所属种植基地
contractNumber?: string // 合同号
contractedArea?: number // 签订面积
orderQuantity?: number // 订购数量
actualArea?: number // 实种面积
transplantTime?: Date // 移栽时间
transplantQuantity?: number // 移栽数量
usedVariety?: string // 使用品种
plantingMethod?: string // 种植方式
adminName?: string // 管理员姓名
contact: string // 联系人
mobile: string // 手机号码
telephone: string // 联系电话
email: string // 电子邮箱
fax: string // 传真
remark: string // 备注
status: number // 开启状态
sort: number // 排序
taxNo: string // 纳税人识别号
taxPercent: number // 税率
bankName: string // 开户行
bankAccount: string // 开户账号
bankAddress: string // 开户地址
type: number // 类型
}
// ERP 供应商 API
export const SupplierApi = {
// 查询供应商分页
getSupplierPage: async (params: any) => {
return await request.get({ url: `/erp/supplier/page`, params })
},
// 获得供应商精简列表
getSupplierSimpleList: async () => {
return await request.get({ url: `/erp/supplier/simple-list` })
},
// 查询供应商详情
getSupplier: async (id: number) => {
return await request.get({ url: `/erp/supplier/get?id=` + id })
},
// 新增供应商
createSupplier: async (data: SupplierVO) => {
return await request.post({ url: `/erp/supplier/create`, data })
},
// 修改供应商
updateSupplier: async (data: SupplierVO) => {
return await request.put({ url: `/erp/supplier/update`, data })
},
// 删除供应商
deleteSupplier: async (id: number) => {
return await request.delete({ url: `/erp/supplier/delete?id=` + id })
},
// 导出供应商 Excel
exportSupplier: async (params) => {
return await request.download({ url: `/erp/supplier/export-excel`, params })
}
}

View File

@@ -0,0 +1,88 @@
import request from '@/config/axios'
export interface SupplierEvaluationVO {
id?: number
supplierId: number
supplierName?: string
purchaseOrderId: number
orderNo?: string
qualityScore: number
serviceScore: number
priceScore: number
deliveryScore: number
totalScore: number
remark?: string
createTime?: Date
creator?: string
creatorName?: string
}
export interface SupplierEvaluationPageReqVO {
pageNo?: number
pageSize?: number
supplierId?: number
purchaseOrderId?: number
purchaseOrderNo?: string
createTime?: Date[]
minScore?: number
maxScore?: number
creator?: number
}
// ERP 供应商评价 API
export const SupplierEvaluationApi = {
// 查询供应商评价分页
getSupplierEvaluationPage: async (params: SupplierEvaluationPageReqVO) => {
return await request.get({ url: `/erp/supplier-evaluation/page`, params })
},
// 查询供应商评价详情
getSupplierEvaluation: async (id: number) => {
return await request.get({ url: `/erp/supplier-evaluation/get?id=` + id })
},
// 新增供应商评价
createSupplierEvaluation: async (data: SupplierEvaluationVO) => {
return await request.post({ url: `/erp/supplier-evaluation/create`, data })
},
// 修改供应商评价
updateSupplierEvaluation: async (data: SupplierEvaluationVO) => {
return await request.put({ url: `/erp/supplier-evaluation/update`, data })
},
// 删除供应商评价
deleteSupplierEvaluation: async (id: number) => {
return await request.delete({ url: `/erp/supplier-evaluation/delete?id=` + id })
},
// 导出供应商评价 Excel
exportSupplierEvaluation: async (params: any) => {
return await request.download({ url: `/erp/supplier-evaluation/export-excel`, params })
},
// 查询供应商的平均评分
getSupplierAverageScore: async (supplierId: number) => {
return await request.get({ url: `/erp/supplier-evaluation/average-score?supplierId=` + supplierId })
},
// 查询供应商评价统计
getSupplierEvaluationStats: async (supplierId: number) => {
return await request.get({ url: `/erp/supplier-evaluation/stats?supplierId=` + supplierId })
},
// 获取供应商评价汇总列表
getSupplierSummaryList: async (params?: any) => {
return await request.get({ url: `/erp/supplier-evaluation/supplier-summary`, params })
},
// 获取供应商评价历史
getSupplierEvaluationHistory: async (supplierId: number, params?: any) => {
return await request.get({ url: `/erp/supplier-evaluation/supplier/${supplierId}/history`, params })
},
// AI分析供应商评价数据
analyzeWithAI: async (analysisData: any) => {
return await request.post({ url: `/erp/supplier-evaluation/ai-analysis`, data: analysisData })
}
}

View File

@@ -0,0 +1,76 @@
import request from '@/config/axios'
export interface WeighVO {
id?: number
supplierName: string
supplierName2?: string
idCardNumber: string
grossWeight: number
tareWeight: number
vehicleNumber: string
driver: string
netWeight: number
administrator: string
impurityRate: number
originCertificateNumber: string
plannedWeight: number
weigher: string
productId?: number
productName?: string
inStatus?: number
remark?: string
fileUrl?: string
// 新增字段
sampleDate?: string
sampleLocation?: string
representativeWeight?: number
sampleWeight?: number
impurityWeight?: number
sandWeight?: number
sensoryEvaluation?: string
qualificationRate?: string
moistureContent?: string
sugarContent?: string
raValue?: string
stvValue?: string
labTechnician?: string
inspectionRemark?: string
}
// ERP 过磅单 API
export const WeighApi = {
// 查询过磅单分页
getWeighPage: async (params: any) => {
return await request.get({ url: `/erp/weigh/page`, params })
},
// 查询过磅单详情
getWeigh: async (id: number) => {
return await request.get({ url: `/erp/weigh/get?id=` + id })
},
// 新增过磅单
createWeigh: async (data: WeighVO) => {
return await request.post({ url: `/erp/weigh/create`, data })
},
// 修改过磅单
updateWeigh: async (data: WeighVO) => {
return await request.put({ url: `/erp/weigh/update`, data })
},
// 删除过磅单
deleteWeigh: async (id: number) => {
return await request.delete({ url: `/erp/weigh/delete?id=` + id })
},
// 过磅单入库
inbound: async (payload: { weighId: number; warehouseId: number; count: number }) => {
return await request.post({ url: `/erp/weigh/inbound`, data: payload })
},
// 导出过磅单 Excel
exportWeigh: async (params) => {
return await request.download({ url: `/erp/weigh/export-excel`, params })
}
}

View File

@@ -0,0 +1,96 @@
import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
/** 请购单明细信息 */
export interface PurchaseRequisitionItem {
id?: number;
requisitionId?: number; // 请购单编号
productId?: number; // 产品编号
productName?: string; // 产品名称
productUnitId?: number; // 产品单位编号
productUnitName?: string; // 产品单位名称
productSpec?: string; // 产品规格
productBarCode?: string; // 产品条码
productPrice?: number; // 产品参考单价
count?: number; // 需求数量
totalPrice?: number; // 总金额,单位:元
purpose?: string; // 用途说明
brandId?: number; // 品牌编号
brandName?: string; // 品牌名称
supplierId?: number; // 建议供应商编号
supplierName?: string; // 建议供应商名称
approveCount?: number; // 审核通过数量
purchaseCount?: number; // 已采购数量
remark?: string; // 备注
createTime?: string; // 创建时间
}
/** 请购单信息 */
export interface PurchaseRequisition {
id: number; // 编号
no?: string; // 请购单编号
type?: number; // 请购类型1-请购 2-补货 3-其他)
priority?: number; // 优先级1-低 2-中 3-高 4-紧急)
status?: number; // 状态1-待审核 2-已审核 3-已驳回 4-已取消 5-已采购)
requesterId?: number; // 请购人编号
requesterName?: string; // 请购人名称
requesterDeptId?: number; // 请购部门编号
requesterDeptName?: string; // 请购部门名称
requestTime?: string | Dayjs; // 请购时间
expectedTime: string | Dayjs; // 期望到货时间
approverId?: number; // 审核人编号
approverName?: string; // 审核人名称
approveTime?: string | Dayjs; // 审核时间
approveRemark?: string; // 审核意见
totalCount?: number; // 合计数量
totalPrice?: number; // 合计金额,单位:元
emergencyDegree?: number; // 紧急程度1-普通 2-较急 3-紧急 4-特急)
fileUrl?: string; // 附件地址
remark?: string; // 备注
supplierId?: number; // 供应商编号
supplierName?: string; // 供应商名称
items?: PurchaseRequisitionItem[]; // 明细项
}
// 请购单 API
export const PurchaseRequisitionApi = {
// 查询请购单分页
getPurchaseRequisitionPage: async (params: any) => {
return await request.get({ url: `/erp/purchase-requisition/page`, params })
},
// 查询请购单详情
getPurchaseRequisition: async (id: number) => {
return await request.get({ url: `/erp/purchase-requisition/get?id=` + id })
},
// 新增请购单
createPurchaseRequisition: async (data: PurchaseRequisition) => {
return await request.post({ url: `/erp/purchase-requisition/create`, data })
},
// 修改请购单
updatePurchaseRequisition: async (data: PurchaseRequisition) => {
return await request.put({ url: `/erp/purchase-requisition/update`, data })
},
// 删除请购单
deletePurchaseRequisition: async (id: number) => {
return await request.delete({ url: `/erp/purchase-requisition/delete?id=` + id })
},
/** 批量删除请购单 */
deletePurchaseRequisitionList: async (ids: number[]) => {
return await request.delete({ url: `/erp/purchase-requisition/delete-list?ids=${ids.join(',')}` })
},
// 导出请购单 Excel
exportPurchaseRequisition: async (params) => {
return await request.download({ url: `/erp/purchase-requisition/export-excel`, params })
},
// 更新请购单状态
updatePurchaseRequisitionStatus: async (id: number, status: number) => {
return await request.put({ url: `/erp/purchase-requisition/update-status?id=${id}&status=${status}` })
},
}

View File

@@ -0,0 +1,58 @@
import request from '@/config/axios'
// ERP 客户 VO
export interface CustomerVO {
id: number // 客户编号
name: string // 客户名称
contact: string // 联系人
mobile: string // 手机号码
telephone: string // 联系电话
email: string // 电子邮箱
fax: string // 传真
remark: string // 备注
status: number // 开启状态
sort: number // 排序
taxNo: string // 纳税人识别号
taxPercent: number // 税率
bankName: string // 开户行
bankAccount: string // 开户账号
bankAddress: string // 开户地址
}
// ERP 客户 API
export const CustomerApi = {
// 查询客户分页
getCustomerPage: async (params: any) => {
return await request.get({ url: `/erp/customer/page`, params })
},
// 查询客户精简列表
getCustomerSimpleList: async () => {
return await request.get({ url: `/erp/customer/simple-list` })
},
// 查询客户详情
getCustomer: async (id: number) => {
return await request.get({ url: `/erp/customer/get?id=` + id })
},
// 新增客户
createCustomer: async (data: CustomerVO) => {
return await request.post({ url: `/erp/customer/create`, data })
},
// 修改客户
updateCustomer: async (data: CustomerVO) => {
return await request.put({ url: `/erp/customer/update`, data })
},
// 删除客户
deleteCustomer: async (id: number) => {
return await request.delete({ url: `/erp/customer/delete?id=` + id })
},
// 导出客户 Excel
exportCustomer: async (params) => {
return await request.download({ url: `/erp/customer/export-excel`, params })
}
}

View File

@@ -0,0 +1,64 @@
import request from '@/config/axios'
// ERP 销售订单 VO
export interface SaleOrderVO {
id: number // 订单工单编号
no: string // 销售订单号
customerId: number // 客户编号
orderTime: Date // 订单时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
outCount: number // 销售出库数量
returnCount: number // 销售退货数量
}
// ERP 销售订单 API
export const SaleOrderApi = {
// 查询销售订单分页
getSaleOrderPage: async (params: any) => {
return await request.get({ url: `/erp/sale-order/page`, params })
},
// 查询销售订单详情
getSaleOrder: async (id: number) => {
return await request.get({ url: `/erp/sale-order/get?id=` + id })
},
// 新增销售订单
createSaleOrder: async (data: SaleOrderVO) => {
return await request.post({ url: `/erp/sale-order/create`, data })
},
// 修改销售订单
updateSaleOrder: async (data: SaleOrderVO) => {
return await request.put({ url: `/erp/sale-order/update`, data })
},
// 更新销售订单的状态
updateSaleOrderStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/sale-order/update-status`,
params: {
id,
status
}
})
},
// 删除销售订单
deleteSaleOrder: async (ids: number[]) => {
return await request.delete({
url: `/erp/sale-order/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出销售订单 Excel
exportSaleOrder: async (params: any) => {
return await request.download({ url: `/erp/sale-order/export-excel`, params })
}
}

View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
// ERP 销售出库 VO
export interface SaleOutVO {
id: number // 销售出库编号
no: string // 销售出库号
customerId: number // 客户编号
outTime: Date // 出库时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
// ERP 销售出库 API
export const SaleOutApi = {
// 查询销售出库分页
getSaleOutPage: async (params: any) => {
return await request.get({ url: `/erp/sale-out/page`, params })
},
// 查询销售出库详情
getSaleOut: async (id: number) => {
return await request.get({ url: `/erp/sale-out/get?id=` + id })
},
// 新增销售出库
createSaleOut: async (data: SaleOutVO) => {
return await request.post({ url: `/erp/sale-out/create`, data })
},
// 修改销售出库
updateSaleOut: async (data: SaleOutVO) => {
return await request.put({ url: `/erp/sale-out/update`, data })
},
// 更新销售出库的状态
updateSaleOutStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/sale-out/update-status`,
params: {
id,
status
}
})
},
// 删除销售出库
deleteSaleOut: async (ids: number[]) => {
return await request.delete({
url: `/erp/sale-out/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出销售出库 Excel
exportSaleOut: async (params: any) => {
return await request.download({ url: `/erp/sale-out/export-excel`, params })
}
}

View File

@@ -0,0 +1,132 @@
import request from '@/config/axios'
export interface SaleOutwarehouseVO {
id?: number
no?: string
status?: number
customerId?: number
customerName?: string // 添加客户名称字段
accountId?: number
saleUserId?: number
outTime?: string | number
warehouseId?: number
totalCount?: number
totalPrice?: number
receiptPrice?: number
receiptStatus?: number // 添加收款状态字段
totalProductPrice?: number
totalTaxPrice?: number
discountPercent?: number
discountPrice?: number
otherPrice?: number
fileUrl?: string
remark?: string
items?: SaleOutwarehouseItemVO[]
itemList?: SaleOutwarehouseItemVO[] // 后端返回的字段名
stockRecordIds?: number[] // 关联的库存明细ID
stockRecordText?: string // 关联的库存明细显示文本
warehouseNames?: string // 仓库名称,多个用逗号分隔
}
export interface SaleOutwarehouseItemVO {
id?: number
outId?: number
warehouseId?: number
warehouseName?: string
productId?: number
productName?: string
productUnitId?: number
productUnitName?: string
productBarCode?: string
batchCode?: string
productPrice?: number
count?: number
stockCount?: number
totalPrice?: number
taxPercent?: number
taxPrice?: number
remark?: string
}
// 收款记录接口
export interface SaleOutwarehouseReceiptVO {
id?: number
outId?: number
outNo?: string
amount: number
date: string | Date
remainAmount?: number
remark?: string
creator?: string
createTime?: number
}
// ERP 销售出库 API
export const SaleOutwarehouseApi = {
// 查询销售出库分页
getSaleOutwarehousePage: async (params: any) => {
return await request.get({ url: `/erp/sale-outwarehouse/page`, params })
},
// 查询销售出库详情
getSaleOutwarehouse: async (id: number) => {
return await request.get({ url: `/erp/sale-outwarehouse/get?id=` + id })
},
// 新增销售出库
createSaleOutwarehouse: async (data: SaleOutwarehouseVO) => {
return await request.post({ url: `/erp/sale-outwarehouse/create`, data })
},
// 修改销售出库
updateSaleOutwarehouse: async (data: SaleOutwarehouseVO) => {
return await request.put({ url: `/erp/sale-outwarehouse/update`, data })
},
// 更新销售出库的状态
updateSaleOutwarehouseStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/sale-outwarehouse/update-status`,
params: {
id,
status
}
})
},
// 删除销售出库
deleteSaleOutwarehouse: async (ids: number[]) => {
return await request.delete({
url: `/erp/sale-outwarehouse/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出销售出库 Excel
exportSaleOutwarehouse: async (params: any) => {
return await request.download({ url: `/erp/sale-outwarehouse/export-excel`, params })
},
// 获取收款记录列表
getReceiptList: async (outId: number) => {
return await request.get({
url: `/erp/sale-outwarehouse-receipt/list`,
params: { outId }
})
},
// 创建收款记录
createReceipt: async (data: SaleOutwarehouseReceiptVO) => {
return await request.post({
url: `/erp/sale-outwarehouse-receipt/create`,
data
})
},
// 查询销售出库详情
getIdByStockRecordId: async (id: number) => {
return await request.get({ url: `/erp/sale-outwarehouse/getIdByStockRecordId?stockRecordId=` + id })
},
}

View File

@@ -0,0 +1,88 @@
import request from '@/config/axios'
// ERP 销售计划 VO
export interface SalePlanVO {
id: number // 计划编号
no: string // 计划编号
name: string // 计划名称
customerId: number // 关联客户
customerName?: string // 客户名称
targetAmount: number // 目标金额
startTime: Date // 计划开始时间
endTime: Date // 计划结束时间
status: number // 状态10-草稿 20-已提交 30-已批准 40-已驳回
approverId?: number // 审批人
approverName?: string // 审批人名称
remark?: string // 备注
items?: SalePlanItemVO[] // 计划明细列表
completedAmount?: number // 已完成总额(后端计算)
progress?: number // 进度百分比(后端计算)
completionStatus?: number // 完成状态0-未开始 1-进行中 2-已完成 3-已超期(后端计算)
}
// ERP 销售计划明细 VO
export interface SalePlanItemVO {
id?: number // 明细编号
planId?: number // 关联销售计划ID
productId: number // 产品ID
productName?: string // 产品名称
productUnitName?: string // 产品单位名称
planCount: number // 计划销量
productPrice: number // 单价
totalPrice: number // 金额
remark?: string // 备注
}
// ERP 销售计划 API
export const SalePlanApi = {
// 查询销售计划分页
getSalePlanPage: async (params: any) => {
return await request.get({ url: `/erp/sale-plan/page`, params })
},
// 查询销售计划详情
getSalePlan: async (id: number) => {
return await request.get({ url: `/erp/sale-plan/get?id=` + id })
},
// 新增销售计划
createSalePlan: async (data: SalePlanVO) => {
return await request.post({ url: `/erp/sale-plan/create`, data })
},
// 修改销售计划
updateSalePlan: async (data: SalePlanVO) => {
return await request.put({ url: `/erp/sale-plan/update`, data })
},
// 更新销售计划的状态
updateSalePlanStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/sale-plan/update-status`,
params: {
id,
status
}
})
},
// 删除销售计划
deleteSalePlan: async (ids: number[]) => {
return await request.delete({
url: `/erp/sale-plan/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出销售计划 Excel
exportSalePlan: async (params: any) => {
return await request.download({ url: `/erp/sale-plan/export-excel`, params })
},
// 获取销售计划简单列表
getSalePlanSimpleList: async () => {
return await request.get({ url: `/erp/sale-plan/simple-list` })
}
}

View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
// ERP 销售退货 VO
export interface SaleReturnVO {
id: number // 销售退货编号
no: string // 销售退货号
customerId: number // 客户编号
returnTime: Date // 退货时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
// ERP 销售退货 API
export const SaleReturnApi = {
// 查询销售退货分页
getSaleReturnPage: async (params: any) => {
return await request.get({ url: `/erp/sale-return/page`, params })
},
// 查询销售退货详情
getSaleReturn: async (id: number) => {
return await request.get({ url: `/erp/sale-return/get?id=` + id })
},
// 新增销售退货
createSaleReturn: async (data: SaleReturnVO) => {
return await request.post({ url: `/erp/sale-return/create`, data })
},
// 修改销售退货
updateSaleReturn: async (data: SaleReturnVO) => {
return await request.put({ url: `/erp/sale-return/update`, data })
},
// 更新销售退货的状态
updateSaleReturnStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/sale-return/update-status`,
params: {
id,
status
}
})
},
// 删除销售退货
deleteSaleReturn: async (ids: number[]) => {
return await request.delete({
url: `/erp/sale-return/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出销售退货 Excel
exportSaleReturn: async (params: any) => {
return await request.download({ url: `/erp/sale-return/export-excel`, params })
}
}

31
src/api/erp/seedling.ts Normal file
View File

@@ -0,0 +1,31 @@
import request from '@/config/axios'
// 查询种植信息分页
export const getSeedlingPage = (params) => {
return request.get({ url: '/erp/seedling/page', params })
}
// 查询种植信息详情
export const getSeedling = (id) => {
return request.get({ url: `/erp/seedling/get/${id}` })
}
// 新增种植信息
export const createSeedling = (data) => {
return request.post({ url: '/erp/seedling/create', data })
}
// 修改种植信息
export const updateSeedling = (data) => {
return request.put({ url: '/erp/seedling/update', data })
}
// 删除种植信息
export const deleteSeedling = (id) => {
return request.delete({ url: `/erp/seedling/delete/${id}` })
}
// 导出种植信息
export const exportSeedling = (params) => {
return request.download({ url: '/erp/seedling/export-excel', params })
}

View File

@@ -0,0 +1,82 @@
import request from '@/config/axios'
// ERP 采购全局统计 VO
export interface ErpPurchaseSummaryRespVO {
todayPrice: number // 今日采购金额
yesterdayPrice: number // 昨日采购金额
monthPrice: number // 本月采购金额
yearPrice: number // 今年采购金额
}
// ERP 采购时间段统计 VO
export interface ErpPurchaseTimeSummaryRespVO {
time: string // 时间
price: number // 采购金额
}
// ERP 采购趋势统计 VO
export interface ErpPurchaseTrendRespVO {
time: string // 时间
price: number // 采购金额
count: number // 采购数量
}
// ERP 采购产品排行 VO
export interface ErpPurchaseProductRankRespVO {
productId: number // 产品编号
productName: string // 产品名称
count: number // 采购数量
price: number // 采购金额
}
// ERP 采购供应商排行 VO
export interface ErpPurchaseSupplierRankRespVO {
supplierId: number // 供应商编号
supplierName: string // 供应商名称
count: number // 采购数量
price: number // 采购金额
}
// ERP 采购统计 API
export const PurchaseStatisticsApi = {
// 获得采购统计
getPurchaseSummary: async (): Promise<ErpPurchaseSummaryRespVO> => {
return await request.get({ url: `/erp/purchase-statistics/summary` })
},
// 获得采购时间段统计
getPurchaseTimeSummary: async (): Promise<ErpPurchaseTimeSummaryRespVO[]> => {
return await request.get({ url: `/erp/purchase-statistics/time-summary` })
},
// 获得采购趋势统计(按周)
getPurchaseTrendByWeek: async (count: number = 12): Promise<ErpPurchaseTrendRespVO[]> => {
return await request.get({ url: `/erp/purchase-statistics/trend-by-week`, params: { count } })
},
// 获得采购趋势统计(按月)
getPurchaseTrendByMonth: async (count: number = 12): Promise<ErpPurchaseTrendRespVO[]> => {
return await request.get({ url: `/erp/purchase-statistics/trend-by-month`, params: { count } })
},
// 获得采购产品排行
getPurchaseProductRank: async (beginTime: string, endTime: string, limit: number = 10): Promise<ErpPurchaseProductRankRespVO[]> => {
return await request.get({
url: `/erp/purchase-statistics/product-rank`,
params: { beginTime, endTime, limit }
})
},
// 获得采购供应商排行
getPurchaseSupplierRank: async (beginTime: string, endTime: string, limit: number = 10): Promise<ErpPurchaseSupplierRankRespVO[]> => {
return await request.get({
url: `/erp/purchase-statistics/supplier-rank`,
params: { beginTime, endTime, limit }
})
},
// AI分析采购统计数据
analyzeWithAI: async (analysisData: any) => {
return await request.post({ url: `/erp/purchase-statistics/ai-analysis`, data: analysisData })
}
}

View File

@@ -0,0 +1,159 @@
import request from '@/config/axios'
// ERP 销售全局统计 VO
export interface ErpSaleSummaryRespVO {
todayPrice: number // 今日销售金额
yesterdayPrice: number // 昨日销售金额
monthPrice: number // 本月销售金额
yearPrice: number // 今年销售金额
}
// ERP 销售时间段统计 VO
export interface ErpSaleTimeSummaryRespVO {
time: string // 时间
price: number // 销售金额
}
// ERP 销售趋势统计 VO
export interface ErpSaleTrendRespVO {
date: string // 日期
salePrice: number // 销售金额
saleCount: number // 销售数量
orderCount: number // 订单数量
returnPrice: number // 退货金额
}
// ERP 客户销售排名 VO
export interface ErpSaleCustomerSummaryRespVO {
customerId: number // 客户编号
customerName: string // 客户名称
totalPrice: number // 销售金额
totalCount: number // 销售数量
orderCount: number // 订单数量
}
// ERP 产品销售排名 VO
export interface ErpSaleProductSummaryRespVO {
productId: number // 产品编号
productName: string // 产品名称
totalPrice: number // 销售金额
totalCount: number // 销售数量
}
// ERP 销售人员销售排名 VO
export interface ErpSaleUserSummaryRespVO {
userId: number // 用户编号
userName: string // 用户名称
totalPrice: number // 销售金额
totalCount: number // 销售数量
orderCount: number // 订单数量
customerCount: number // 客户数量
}
// ERP 销售分析统计 VO
export interface ErpSaleAnalysisRespVO {
totalSalePrice: number // 总销售金额
totalSaleCount: number // 总销售数量
totalOrderCount: number // 总订单数
totalReturnPrice: number // 总退货金额
customerCount: number // 客户数量
avgDailySalePrice: number // 日均销售额
growthRate: number // 环比增长率
}
// ERP 销售对比统计 VO
export interface ErpSaleCompareRespVO {
timeLabel: string // 时间标签2024-01 或 2024
salePrice: number // 销售金额
returnPrice: number // 退货金额
netSalePrice: number // 净销售额
orderCount: number // 订单数量
saleCount: number // 销售数量
customerCount: number // 客户数量
}
// ERP 销售统计 API
export const SaleStatisticsApi = {
// 获得销售统计
getSaleSummary: async (): Promise<ErpSaleSummaryRespVO> => {
return await request.get({ url: `/erp/sale-statistics/summary` })
},
// 获得销售时间段统计
getSaleTimeSummary: async (): Promise<ErpSaleTimeSummaryRespVO[]> => {
return await request.get({ url: `/erp/sale-statistics/time-summary` })
},
// 获得销售趋势统计(按天)
getSaleTrend: async (beginTime: string, endTime: string): Promise<ErpSaleTrendRespVO[]> => {
return await request.get({
url: `/erp/sale-statistics/trend`,
params: { beginTime, endTime }
})
},
// 获得客户销售排名
getCustomerSaleRanking: async (
beginTime: string,
endTime?: string,
limit?: number
): Promise<ErpSaleCustomerSummaryRespVO[]> => {
return await request.get({
url: `/erp/sale-statistics/customer-ranking`,
params: { beginTime, endTime, limit }
})
},
// 获得产品销售排名
getProductSaleRanking: async (
beginTime: string,
endTime?: string,
limit?: number
): Promise<ErpSaleProductSummaryRespVO[]> => {
return await request.get({
url: `/erp/sale-statistics/product-ranking`,
params: { beginTime, endTime, limit }
})
},
// 获得销售人员销售排名
getUserSaleRanking: async (
beginTime: string,
endTime?: string,
limit?: number
): Promise<ErpSaleUserSummaryRespVO[]> => {
return await request.get({
url: `/erp/sale-statistics/user-ranking`,
params: { beginTime, endTime, limit }
})
},
// 获得销售分析统计
getSaleAnalysis: async (beginTime: string, endTime: string): Promise<ErpSaleAnalysisRespVO> => {
return await request.get({
url: `/erp/sale-statistics/analysis`,
params: { beginTime, endTime }
})
},
// 获得按月对比统计
getSaleCompareByMonth: async (beginTime: string, endTime: string): Promise<ErpSaleCompareRespVO[]> => {
return await request.get({
url: `/erp/sale-statistics/compare-by-month`,
params: { beginTime, endTime }
})
},
// 获得按年对比统计
getSaleCompareByYear: async (beginTime: string, endTime: string): Promise<ErpSaleCompareRespVO[]> => {
return await request.get({
url: `/erp/sale-statistics/compare-by-year`,
params: { beginTime, endTime }
})
},
// AI分析销售统计数据
analyzeWithAI: async (analysisData: any) => {
return await request.post({ url: `/erp/sale-statistics/ai-analysis`, data: analysisData })
}
}

View File

@@ -0,0 +1,82 @@
import request from '@/config/axios'
// ERP 组装拆卸单 VO
export interface AssemblyDisassemblyVO {
id: number // 编号
no: string // 单号
type: number // 类型10-组装单20-拆卸单
bizTime: Date // 组装/拆卸时间
mainProductId: number // 主产品编号
mainWarehouseId: number // 主产品仓库编号
mainCount: number // 主产品数量
totalSubCount: number // 合计子产品数量
totalPrice: number // 合计金额
status: number // 状态
remark: string // 备注
items?: AssemblyDisassemblyItemVO[] // 子产品明细
}
// ERP 组装拆卸单项 VO
export interface AssemblyDisassemblyItemVO {
id?: number // 明细编号
warehouseId: number // 仓库编号
productId: number // 产品编号
productPrice?: number // 产品单价
count: number // 产品数量
remark?: string // 备注
}
// 组装拆卸单类型枚举
export const AssemblyDisassemblyType = {
ASSEMBLY: 10, // 组装单
DISASSEMBLY: 20 // 拆卸单
}
// ERP 组装拆卸单 API
export const AssemblyDisassemblyApi = {
// 查询组装拆卸单分页
getAssemblyDisassemblyPage: async (params: any) => {
return await request.get({ url: `/erp/assembly-disassembly/page`, params })
},
// 查询组装拆卸单详情
getAssemblyDisassembly: async (id: number) => {
return await request.get({ url: `/erp/assembly-disassembly/get?id=` + id })
},
// 新增组装拆卸单
createAssemblyDisassembly: async (data: AssemblyDisassemblyVO) => {
return await request.post({ url: `/erp/assembly-disassembly/create`, data })
},
// 修改组装拆卸单
updateAssemblyDisassembly: async (data: AssemblyDisassemblyVO) => {
return await request.put({ url: `/erp/assembly-disassembly/update`, data })
},
// 更新组装拆卸单的状态
updateAssemblyDisassemblyStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/assembly-disassembly/update-status`,
params: {
id,
status
}
})
},
// 删除组装拆卸单
deleteAssemblyDisassembly: async (ids: number[]) => {
return await request.delete({
url: `/erp/assembly-disassembly/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出组装拆卸单 Excel
exportAssemblyDisassembly: async (params) => {
return await request.download({ url: `/erp/assembly-disassembly/export-excel`, params })
}
}

View File

@@ -0,0 +1,157 @@
import request from '@/config/axios'
// ERP 库存盘点单 VO
export interface StockCheckVO {
id: number // 出库编号
no: string // 出库单号
outTime: Date // 出库时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
// 库存报告查询参数
export interface StockReportQueryVO {
warehouseId?: number // 仓库ID
productId?: number // 产品ID
checkTime?: Date[] // 盘点时间范围
status?: number // 状态
}
// 库存报告统计 VO
export interface StockReportSummaryVO {
totalCheckCount: number // 总盘点次数
totalCheckAmount: number // 总盘点金额
totalProfitAmount: number // 盘盈金额
totalLossAmount: number // 盘亏金额
warehouseCount: number // 涉及仓库数
productCount: number // 涉及产品数
avgCheckAmount: number // 平均盘点金额
checkAccuracyRate: number // 盘点准确率
}
// 仓库库存统计 VO
export interface WarehouseStockVO {
warehouseId: number
warehouseName: string
checkCount: number // 盘点次数
totalAmount: number // 库存金额
profitAmount: number // 盘盈金额
lossAmount: number // 盘亏金额
productCount: number // 产品数量
}
// 产品库存统计 VO
export interface ProductStockVO {
productId: number
productName: string
checkCount: number // 盘点次数
totalCount: number // 库存数量
totalAmount: number // 库存金额
profitCount: number // 盘盈数量
lossCount: number // 盘亏数量
}
// 库存趋势数据 VO
export interface StockTrendVO {
date: string
checkCount: number // 盘点次数
totalAmount: number // 盘点金额
profitAmount: number // 盘盈金额
lossAmount: number // 盘亏金额
}
// ERP 库存盘点单 API
export const StockCheckApi = {
// 查询库存盘点单分页
getStockCheckPage: async (params: any) => {
return await request.get({ url: `/erp/stock-check/page`, params })
},
// 查询库存盘点单详情
getStockCheck: async (id: number) => {
return await request.get({ url: `/erp/stock-check/get?id=` + id })
},
// 新增库存盘点单
createStockCheck: async (data: StockCheckVO) => {
return await request.post({ url: `/erp/stock-check/create`, data })
},
// 修改库存盘点单
updateStockCheck: async (data: StockCheckVO) => {
return await request.put({ url: `/erp/stock-check/update`, data })
},
// 更新库存盘点单的状态
updateStockCheckStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-check/update-status`,
params: {
id,
status
}
})
},
// 删除库存盘点单
deleteStockCheck: async (ids: number[]) => {
return await request.delete({
url: `/erp/stock-check/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出库存盘点单 Excel
exportStockCheck: async (params) => {
return await request.download({ url: `/erp/stock-check/export-excel`, params })
},
// ==================== 库存报告相关 API ====================
// 获取库存报告汇总统计
getStockReportSummary: async (params: StockReportQueryVO) => {
return await request.get({ url: `/erp/stock-check/report/summary`, params })
},
// 获取仓库库存统计
getWarehouseStockList: async (params: StockReportQueryVO) => {
return await request.get({ url: `/erp/stock-check/report/warehouse`, params })
},
// 获取产品库存统计
getProductStockList: async (params: StockReportQueryVO) => {
return await request.get({ url: `/erp/stock-check/report/product`, params })
},
// 获取库存趋势数据
getStockTrend: async (params: StockReportQueryVO) => {
return await request.get({ url: `/erp/stock-check/report/trend`, params })
},
// 导出库存报告
exportStockReport: async (params: StockReportQueryVO) => {
return await request.download({ url: `/erp/stock-check/report/export`, params })
},
// ==================== 审批流程相关 API ====================
// 提交库存盘点审批
submitStockCheckApproval: async (id: number, nextApprover: string, remark?: string) => {
return await request.post({
url: `/erp/stock-check/submit-approval`,
params: { id, nextApprover, remark }
})
},
// 获取库存盘点单的审批记录
getStockCheckApprovalRecords: async (id: number) => {
return await request.get({
url: `/erp/stock-check/approval-records`,
params: { id }
})
}
}

View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
// ERP 其它入库单 VO
export interface StockInVO {
id: number // 入库编号
no: string // 入库单号
supplierId: number // 供应商编号
inTime: Date // 入库时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
// ERP 其它入库单 API
export const StockInApi = {
// 查询其它入库单分页
getStockInPage: async (params: any) => {
return await request.get({ url: `/erp/stock-in/page`, params })
},
// 查询其它入库单详情
getStockIn: async (id: number) => {
return await request.get({ url: `/erp/stock-in/get?id=` + id })
},
// 新增其它入库单
createStockIn: async (data: StockInVO) => {
return await request.post({ url: `/erp/stock-in/create`, data })
},
// 修改其它入库单
updateStockIn: async (data: StockInVO) => {
return await request.put({ url: `/erp/stock-in/update`, data })
},
// 更新其它入库单的状态
updateStockInStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-in/update-status`,
params: {
id,
status
}
})
},
// 删除其它入库单
deleteStockIn: async (ids: number[]) => {
return await request.delete({
url: `/erp/stock-in/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出其它入库单 Excel
exportStockIn: async (params) => {
return await request.download({ url: `/erp/stock-in/export-excel`, params })
}
}

View File

@@ -0,0 +1,61 @@
import request from '@/config/axios'
// ERP 库存调度单 VO
export interface StockMoveVO {
id: number // 出库编号
no: string // 出库单号
outTime: Date // 出库时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
// ERP 库存调度单 API
export const StockMoveApi = {
// 查询库存调度单分页
getStockMovePage: async (params: any) => {
return await request.get({ url: `/erp/stock-move/page`, params })
},
// 查询库存调度单详情
getStockMove: async (id: number) => {
return await request.get({ url: `/erp/stock-move/get?id=` + id })
},
// 新增库存调度单
createStockMove: async (data: StockMoveVO) => {
return await request.post({ url: `/erp/stock-move/create`, data })
},
// 修改库存调度单
updateStockMove: async (data: StockMoveVO) => {
return await request.put({ url: `/erp/stock-move/update`, data })
},
// 更新库存调度单的状态
updateStockMoveStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-move/update-status`,
params: {
id,
status
}
})
},
// 删除库存调度单
deleteStockMove: async (ids: number[]) => {
return await request.delete({
url: `/erp/stock-move/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出库存调度单 Excel
exportStockMove: async (params) => {
return await request.download({ url: `/erp/stock-move/export-excel`, params })
}
}

View File

@@ -0,0 +1,62 @@
import request from '@/config/axios'
// ERP 其它出库单 VO
export interface StockOutVO {
id: number // 出库编号
no: string // 出库单号
customerId: number // 客户编号
outTime: Date // 出库时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
// ERP 其它出库单 API
export const StockOutApi = {
// 查询其它出库单分页
getStockOutPage: async (params: any) => {
return await request.get({ url: `/erp/stock-out/page`, params })
},
// 查询其它出库单详情
getStockOut: async (id: number) => {
return await request.get({ url: `/erp/stock-out/get?id=` + id })
},
// 新增其它出库单
createStockOut: async (data: StockOutVO) => {
return await request.post({ url: `/erp/stock-out/create`, data })
},
// 修改其它出库单
updateStockOut: async (data: StockOutVO) => {
return await request.put({ url: `/erp/stock-out/update`, data })
},
// 更新其它出库单的状态
updateStockOutStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-out/update-status`,
params: {
id,
status
}
})
},
// 删除其它出库单
deleteStockOut: async (ids: number[]) => {
return await request.delete({
url: `/erp/stock-out/delete`,
params: {
ids: ids.join(',')
}
})
},
// 导出其它出库单 Excel
exportStockOut: async (params) => {
return await request.download({ url: `/erp/stock-out/export-excel`, params })
}
}

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