first commit
This commit is contained in:
57
src/App.vue
Normal file
57
src/App.vue
Normal file
@@ -0,0 +1,57 @@
|
||||
<script lang="ts" setup>
|
||||
import { isDark } from '@/utils/is'
|
||||
import { useAppStore } from '@/store/modules/app'
|
||||
import { useDesign } from '@/hooks/web/useDesign'
|
||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||
import routerSearch from '@/components/RouterSearch/index.vue'
|
||||
|
||||
defineOptions({ name: 'APP' })
|
||||
|
||||
const { getPrefixCls } = useDesign()
|
||||
const prefixCls = getPrefixCls('app')
|
||||
const appStore = useAppStore()
|
||||
const currentSize = computed(() => appStore.getCurrentSize)
|
||||
const greyMode = computed(() => appStore.getGreyMode)
|
||||
const { wsCache } = useCache()
|
||||
|
||||
// 根据浏览器当前主题设置系统主题色
|
||||
const setDefaultTheme = () => {
|
||||
let isDarkTheme = wsCache.get(CACHE_KEY.IS_DARK)
|
||||
if (isDarkTheme === null) {
|
||||
isDarkTheme = isDark()
|
||||
}
|
||||
appStore.setIsDark(isDarkTheme)
|
||||
}
|
||||
setDefaultTheme()
|
||||
</script>
|
||||
<template>
|
||||
<ConfigGlobal :size="currentSize">
|
||||
<RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" />
|
||||
<routerSearch />
|
||||
</ConfigGlobal>
|
||||
</template>
|
||||
<style lang="scss">
|
||||
$prefix-cls: #{$namespace}-app;
|
||||
|
||||
.size {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
@extend .size;
|
||||
|
||||
padding: 0 !important;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
|
||||
#app {
|
||||
@extend .size;
|
||||
}
|
||||
}
|
||||
|
||||
.#{$prefix-cls}-grey-mode {
|
||||
filter: grayscale(100%);
|
||||
}
|
||||
</style>
|
||||
65
src/api/ai/chat/conversation/index.ts
Normal file
65
src/api/ai/chat/conversation/index.ts
Normal 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}` })
|
||||
}
|
||||
}
|
||||
89
src/api/ai/chat/message/index.ts
Normal file
89
src/api/ai/chat/message/index.ts
Normal 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
102
src/api/ai/image/index.ts
Normal 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 // 样式: 2(Primary)、3(Green)
|
||||
}
|
||||
|
||||
// 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 })
|
||||
}
|
||||
}
|
||||
54
src/api/ai/knowledge/document/index.ts
Normal file
54
src/api/ai/knowledge/document/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
44
src/api/ai/knowledge/knowledge/index.ts
Normal file
44
src/api/ai/knowledge/knowledge/index.ts
Normal 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` })
|
||||
}
|
||||
}
|
||||
75
src/api/ai/knowledge/segment/index.ts
Normal file
75
src/api/ai/knowledge/segment/index.ts
Normal 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
|
||||
})
|
||||
}
|
||||
}
|
||||
59
src/api/ai/mindmap/index.ts
Normal file
59
src/api/ai/mindmap/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
44
src/api/ai/model/apiKey/index.ts
Normal file
44
src/api/ai/model/apiKey/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
82
src/api/ai/model/chatRole/index.ts
Normal file
82
src/api/ai/model/chatRole/index.ts
Normal 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 })
|
||||
},
|
||||
}
|
||||
54
src/api/ai/model/model/index.ts
Normal file
54
src/api/ai/model/model/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
42
src/api/ai/model/tool/index.ts
Normal file
42
src/api/ai/model/tool/index.ts
Normal 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
41
src/api/ai/music/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
25
src/api/ai/workflow/index.ts
Normal file
25
src/api/ai/workflow/index.ts
Normal 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
84
src/api/ai/write/index.ts
Normal 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 } })
|
||||
}
|
||||
}
|
||||
53
src/api/bpm/category/index.ts
Normal file
53
src/api/bpm/category/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
28
src/api/bpm/definition/index.ts
Normal file
28
src/api/bpm/definition/index.ts
Normal 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
56
src/api/bpm/form/index.ts
Normal 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'
|
||||
})
|
||||
}
|
||||
27
src/api/bpm/leave/index.ts
Normal file
27
src/api/bpm/leave/index.ts
Normal 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 })
|
||||
}
|
||||
78
src/api/bpm/model/index.ts
Normal file
78
src/api/bpm/model/index.ts
Normal 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 })
|
||||
}
|
||||
42
src/api/bpm/processExpression/index.ts
Normal file
42
src/api/bpm/processExpression/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
109
src/api/bpm/processInstance/index.ts
Normal file
109
src/api/bpm/processInstance/index.ts
Normal 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 })
|
||||
}
|
||||
40
src/api/bpm/processListener/index.ts
Normal file
40
src/api/bpm/processListener/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
15
src/api/bpm/simple/index.ts
Normal file
15
src/api/bpm/simple/index.ts
Normal 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
113
src/api/bpm/task/index.ts
Normal 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 })
|
||||
}
|
||||
47
src/api/bpm/userGroup/index.ts
Normal file
47
src/api/bpm/userGroup/index.ts
Normal 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' })
|
||||
}
|
||||
98
src/api/crm/business/index.ts
Normal file
98
src/api/crm/business/index.ts
Normal 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 })
|
||||
}
|
||||
68
src/api/crm/business/status/index.ts
Normal file
68
src/api/crm/business/status/index.ts
Normal 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
78
src/api/crm/clue/index.ts
Normal 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' })
|
||||
}
|
||||
113
src/api/crm/contact/index.ts
Normal file
113
src/api/crm/contact/index.ts
Normal 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 })
|
||||
}
|
||||
16
src/api/crm/contract/config/index.ts
Normal file
16
src/api/crm/contract/config/index.ts
Normal 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 })
|
||||
}
|
||||
114
src/api/crm/contract/index.ts
Normal file
114
src/api/crm/contract/index.ts
Normal 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' })
|
||||
}
|
||||
132
src/api/crm/customer/index.ts
Normal file
132
src/api/crm/customer/index.ts
Normal 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}` })
|
||||
}
|
||||
49
src/api/crm/customer/limitConfig/index.ts
Normal file
49
src/api/crm/customer/limitConfig/index.ts
Normal 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 })
|
||||
}
|
||||
19
src/api/crm/customer/poolConfig/index.ts
Normal file
19
src/api/crm/customer/poolConfig/index.ts
Normal 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 })
|
||||
}
|
||||
43
src/api/crm/followup/index.ts
Normal file
43
src/api/crm/followup/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
11
src/api/crm/operateLog/index.ts
Normal file
11
src/api/crm/operateLog/index.ts
Normal 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 })
|
||||
}
|
||||
72
src/api/crm/permission/index.ts
Normal file
72
src/api/crm/permission/index.ts
Normal 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 })
|
||||
}
|
||||
33
src/api/crm/product/category/index.ts
Normal file
33
src/api/crm/product/category/index.ts
Normal 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 })
|
||||
}
|
||||
49
src/api/crm/product/index.ts
Normal file
49
src/api/crm/product/index.ts
Normal 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 })
|
||||
}
|
||||
73
src/api/crm/receivable/index.ts
Normal file
73
src/api/crm/receivable/index.ts
Normal 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' })
|
||||
}
|
||||
74
src/api/crm/receivable/plan/index.ts
Normal file
74
src/api/crm/receivable/plan/index.ts
Normal 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' })
|
||||
}
|
||||
168
src/api/crm/statistics/customer.ts
Normal file
168
src/api/crm/statistics/customer.ts
Normal 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
|
||||
})
|
||||
}
|
||||
}
|
||||
58
src/api/crm/statistics/funnel.ts
Normal file
58
src/api/crm/statistics/funnel.ts
Normal 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
|
||||
})
|
||||
}
|
||||
}
|
||||
33
src/api/crm/statistics/performance.ts
Normal file
33
src/api/crm/statistics/performance.ts
Normal 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
|
||||
})
|
||||
}
|
||||
}
|
||||
60
src/api/crm/statistics/portrait.ts
Normal file
60
src/api/crm/statistics/portrait.ts
Normal 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
|
||||
})
|
||||
}
|
||||
}
|
||||
67
src/api/crm/statistics/rank.ts
Normal file
67
src/api/crm/statistics/rank.ts
Normal 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
71
src/api/energy/coal.ts
Normal 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 })
|
||||
}
|
||||
29
src/api/energy/coalconsumption.ts
Normal file
29
src/api/energy/coalconsumption.ts
Normal 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'
|
||||
})
|
||||
}
|
||||
9
src/api/energy/consumption.ts
Normal file
9
src/api/energy/consumption.ts
Normal 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 })
|
||||
}
|
||||
64
src/api/energy/electricity.ts
Normal file
64
src/api/energy/electricity.ts
Normal 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}` })
|
||||
}
|
||||
29
src/api/energy/electricityconsumption.ts
Normal file
29
src/api/energy/electricityconsumption.ts
Normal 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
61
src/api/energy/water.ts
Normal 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}` })
|
||||
}
|
||||
29
src/api/energy/waterconsumption.ts
Normal file
29
src/api/energy/waterconsumption.ts
Normal 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
62
src/api/erp/ai/index.ts
Normal 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?.()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
132
src/api/erp/approval/index.ts
Normal file
132
src/api/erp/approval/index.ts
Normal 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 }
|
||||
})
|
||||
}
|
||||
}
|
||||
48
src/api/erp/finance-alone/assetDepreciation/index.ts
Normal file
48
src/api/erp/finance-alone/assetDepreciation/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
53
src/api/erp/finance-alone/employeeSalary/index.ts
Normal file
53
src/api/erp/finance-alone/employeeSalary/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
61
src/api/erp/finance/account/index.ts
Normal file
61
src/api/erp/finance/account/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
70
src/api/erp/finance/bank/index.ts
Normal file
70
src/api/erp/finance/bank/index.ts
Normal 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'
|
||||
})
|
||||
}
|
||||
}
|
||||
74
src/api/erp/finance/bookkeeping/index.ts
Normal file
74
src/api/erp/finance/bookkeeping/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
78
src/api/erp/finance/fiscal-period/index.ts
Normal file
78
src/api/erp/finance/fiscal-period/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
71
src/api/erp/finance/invoice/index.ts
Normal file
71
src/api/erp/finance/invoice/index.ts
Normal 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 } })
|
||||
}
|
||||
}
|
||||
61
src/api/erp/finance/ledger/index.ts
Normal file
61
src/api/erp/finance/ledger/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
31
src/api/erp/finance/opening-balance/index.ts
Normal file
31
src/api/erp/finance/opening-balance/index.ts
Normal 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 }})
|
||||
}
|
||||
}
|
||||
66
src/api/erp/finance/payableorder/index.ts
Normal file
66
src/api/erp/finance/payableorder/index.ts
Normal 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 })
|
||||
},
|
||||
}
|
||||
62
src/api/erp/finance/payment/index.ts
Normal file
62
src/api/erp/finance/payment/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
62
src/api/erp/finance/receipt/index.ts
Normal file
62
src/api/erp/finance/receipt/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
66
src/api/erp/finance/receivableorder/index.ts
Normal file
66
src/api/erp/finance/receivableorder/index.ts
Normal 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 })
|
||||
},
|
||||
}
|
||||
59
src/api/erp/finance/subject/index.ts
Normal file
59
src/api/erp/finance/subject/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
77
src/api/erp/finance/voucher/voucher.ts
Normal file
77
src/api/erp/finance/voucher/voucher.ts
Normal 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
17
src/api/erp/product.ts
Normal 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 } })
|
||||
}
|
||||
49
src/api/erp/product/category/index.ts
Normal file
49
src/api/erp/product/category/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
68
src/api/erp/product/product/index.ts
Normal file
68
src/api/erp/product/product/index.ts
Normal 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
|
||||
46
src/api/erp/product/unit/index.ts
Normal file
46
src/api/erp/product/unit/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
78
src/api/erp/production/in/index.ts
Normal file
78
src/api/erp/production/in/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
49
src/api/erp/purchase/car/index.ts
Normal file
49
src/api/erp/purchase/car/index.ts
Normal 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' })
|
||||
}
|
||||
74
src/api/erp/purchase/farmer/index.ts
Normal file
74
src/api/erp/purchase/farmer/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
103
src/api/erp/purchase/in/index.ts
Normal file
103
src/api/erp/purchase/in/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
101
src/api/erp/purchase/inquiry/index.ts
Normal file
101
src/api/erp/purchase/inquiry/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
66
src/api/erp/purchase/order/index.ts
Normal file
66
src/api/erp/purchase/order/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
62
src/api/erp/purchase/return/index.ts
Normal file
62
src/api/erp/purchase/return/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
53
src/api/erp/purchase/supplier/farmers.ts
Normal file
53
src/api/erp/purchase/supplier/farmers.ts
Normal 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}` })
|
||||
}
|
||||
71
src/api/erp/purchase/supplier/index.ts
Normal file
71
src/api/erp/purchase/supplier/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
88
src/api/erp/purchase/supplierEvaluation.ts
Normal file
88
src/api/erp/purchase/supplierEvaluation.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
76
src/api/erp/purchase/weigh/index.ts
Normal file
76
src/api/erp/purchase/weigh/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
96
src/api/erp/purchaserequisition/index.ts
Normal file
96
src/api/erp/purchaserequisition/index.ts
Normal 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}` })
|
||||
},
|
||||
}
|
||||
58
src/api/erp/sale/customer/index.ts
Normal file
58
src/api/erp/sale/customer/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
64
src/api/erp/sale/order/index.ts
Normal file
64
src/api/erp/sale/order/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
62
src/api/erp/sale/out/index.ts
Normal file
62
src/api/erp/sale/out/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
132
src/api/erp/sale/outwarehouse/index.ts
Normal file
132
src/api/erp/sale/outwarehouse/index.ts
Normal 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 })
|
||||
},
|
||||
}
|
||||
88
src/api/erp/sale/plan/index.ts
Normal file
88
src/api/erp/sale/plan/index.ts
Normal 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` })
|
||||
}
|
||||
}
|
||||
62
src/api/erp/sale/return/index.ts
Normal file
62
src/api/erp/sale/return/index.ts
Normal 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
31
src/api/erp/seedling.ts
Normal 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 })
|
||||
}
|
||||
82
src/api/erp/statistics/purchase/index.ts
Normal file
82
src/api/erp/statistics/purchase/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
159
src/api/erp/statistics/sale/index.ts
Normal file
159
src/api/erp/statistics/sale/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
82
src/api/erp/stock/assdis/index.ts
Normal file
82
src/api/erp/stock/assdis/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
157
src/api/erp/stock/check/index.ts
Normal file
157
src/api/erp/stock/check/index.ts
Normal 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 }
|
||||
})
|
||||
}
|
||||
}
|
||||
62
src/api/erp/stock/in/index.ts
Normal file
62
src/api/erp/stock/in/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
61
src/api/erp/stock/move/index.ts
Normal file
61
src/api/erp/stock/move/index.ts
Normal 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 })
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user