diff --git a/.env.dev b/.env.dev index 3c41cc68..689718b2 100644 --- a/.env.dev +++ b/.env.dev @@ -7,6 +7,8 @@ VITE_DEV=true VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn' # VITE_BASE_URL='http://dofast.demo.huizhizao.vip:20001' +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server # 上传路径 VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload' diff --git a/.env.local b/.env.local index 2eb968c4..3b997668 100644 --- a/.env.local +++ b/.env.local @@ -6,6 +6,8 @@ VITE_DEV=true # 请求路径 VITE_BASE_URL='http://localhost:48080' +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务 +VITE_UPLOAD_TYPE=server # 上传路径 VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' diff --git a/.env.prod b/.env.prod index 070b43a7..35d729c3 100644 --- a/.env.prod +++ b/.env.prod @@ -6,6 +6,8 @@ VITE_DEV=false # 请求路径 VITE_BASE_URL='http://localhost:48080' +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server # 上传路径 VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' diff --git a/.env.stage b/.env.stage index c0edf340..26f9516b 100644 --- a/.env.stage +++ b/.env.stage @@ -6,6 +6,8 @@ VITE_DEV=false # 请求路径 VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn' +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server # 上传路径 VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload' diff --git a/.env.test b/.env.test index 217ac6e2..addbfb4e 100644 --- a/.env.test +++ b/.env.test @@ -6,6 +6,8 @@ VITE_DEV=false # 请求路径 VITE_BASE_URL='http://localhost:48080' +# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 +VITE_UPLOAD_TYPE=server # 上传路径 VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' diff --git a/.image/common/erp-feature.png b/.image/common/erp-feature.png new file mode 100644 index 00000000..d30b30ee Binary files /dev/null and b/.image/common/erp-feature.png differ diff --git a/README.md b/README.md index 6c0cc78d..db78baa9 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,8 @@ * 数据报表 * 商城系统 * 微信公众号 +* ERP 系统 +* CRM 系统 ### 系统功能 @@ -194,6 +196,12 @@ _前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋 演示地址: +### ERP 系统 + + + +演示地址: + ## 🐷 演示图 ### 系统功能 @@ -238,6 +246,7 @@ _前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋 |---------|---------------------------|---------------------------------|---------------------------------| | 商家 & 应用 |  |  |  | | 支付 & 退款 |  |  | --- | + ### 数据报表 | 模块 | biu | biu | biu | diff --git a/src/api/crm/backlog/index.ts b/src/api/crm/backlog/index.ts new file mode 100644 index 00000000..e9494aa8 --- /dev/null +++ b/src/api/crm/backlog/index.ts @@ -0,0 +1,17 @@ +import request from '@/config/axios' + +import { type CustomerVO } from '../customer' +import { type ClueVO } from '../clue' + +// 查询客户列表 +// TODO @芋艿:看看是不是后续融合到 getCustomerPage 里; +export const getTodayCustomerPage = async (params) => { + return await request.get({ url: `/crm/backlog/today-customer-page`, params }) +} + +// 查询线索列表 +export const getFollowLeadsPage = async (params) => { + return await request.get({ url: `/crm/backlog/page`, params }) +} + +export { type CustomerVO, type ClueVO } diff --git a/src/api/crm/bi/rank.ts b/src/api/crm/bi/rank.ts new file mode 100644 index 00000000..13ceb7ef --- /dev/null +++ b/src/api/crm/bi/rank.ts @@ -0,0 +1,67 @@ +import request from '@/config/axios' + +export interface BiRankRespVO { + count: number + nickname: string + deptName: string +} + +// 排行 API +export const RankApi = { + // 获得合同排行榜 + getContractPriceRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-contract-price-rank', + params + }) + }, + // 获得回款排行榜 + getReceivablePriceRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-receivable-price-rank', + params + }) + }, + // 签约合同排行 + getContractCountRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-contract-count-rank', + params + }) + }, + // 产品销量排行 + getProductSalesRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-product-sales-rank', + params + }) + }, + // 新增客户数排行 + getCustomerCountRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-customer-count-rank', + params + }) + }, + // 新增联系人数排行 + getContactsCountRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-contacts-count-rank', + params + }) + }, + // 跟进次数排行 + getFollowCountRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-follow-count-rank', + params + }) + }, + // 跟进客户数排行 + getFollowCustomerCountRank: (params: any) => { + return request.get({ + url: '/crm/bi-rank/get-follow-customer-count-rank', + params + }) + } +} diff --git a/src/api/crm/business/index.ts b/src/api/crm/business/index.ts index 810ec6e9..37304f5a 100644 --- a/src/api/crm/business/index.ts +++ b/src/api/crm/business/index.ts @@ -1,4 +1,5 @@ import request from '@/config/axios' +import { TransferReqVO } from '@/api/crm/customer' export interface BusinessVO { id: number @@ -70,3 +71,8 @@ export const getBusinessPageByContact = async (params) => { export const getBusinessListByIds = async (val: number[]) => { return await request.get({ url: '/crm/business/list-by-ids', params: { ids: val.join(',') } }) } + +// 商机转移 +export const transferBusiness = async (data: TransferReqVO) => { + return await request.put({ url: '/crm/business/transfer', data }) +} diff --git a/src/api/crm/clue/index.ts b/src/api/crm/clue/index.ts index 39da03d3..4268c420 100644 --- a/src/api/crm/clue/index.ts +++ b/src/api/crm/clue/index.ts @@ -1,4 +1,5 @@ import request from '@/config/axios' +import { TransferReqVO } from '@/api/crm/customer' export interface ClueVO { id: number @@ -44,3 +45,8 @@ export const deleteClue = async (id: number) => { 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 }) +} diff --git a/src/api/crm/contact/index.ts b/src/api/crm/contact/index.ts index 4144c931..2dab70bc 100644 --- a/src/api/crm/contact/index.ts +++ b/src/api/crm/contact/index.ts @@ -1,4 +1,5 @@ import request from '@/config/axios' +import { TransferReqVO } from '@/api/crm/customer' export interface ContactVO { name: string @@ -86,7 +87,7 @@ export const deleteContactBusinessList = async (data: ContactBusinessReqVO) => { return await request.delete({ url: `/crm/contact/delete-business-list`, data }) } -// 查询联系人操作日志 -export const getOperateLogPage = async (params: any) => { - return await request.get({ url: '/crm/contact/operate-log-page', params }) +// 联系人转移 +export const transferContact = async (data: TransferReqVO) => { + return await request.put({ url: '/crm/contact/transfer', data }) } diff --git a/src/api/crm/contract/index.ts b/src/api/crm/contract/index.ts index 3498e843..9d718c23 100644 --- a/src/api/crm/contract/index.ts +++ b/src/api/crm/contract/index.ts @@ -1,10 +1,13 @@ import request from '@/config/axios' +import { ProductExpandVO } from '@/api/crm/product' +import { TransferReqVO } from '@/api/crm/customer' export interface ContractVO { id: number name: string customerId: number businessId: number + businessName: string processInstanceId: number orderDate: Date ownerUserId: number @@ -14,12 +17,19 @@ export interface ContractVO { price: number discountPercent: number productPrice: number - roUserIds: string - rwUserIds: string contactId: number signUserId: number + signUserName: string contactLastTime: Date + auditStatus: number remark: string + productItems: ProductExpandVO[] + creatorName: string + updateTime?: Date + createTime?: Date + customerName: string + contactName: string + ownerUserName: string } // 查询 CRM 合同列表 @@ -56,3 +66,13 @@ export const deleteContract = async (id: number) => { 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 }) +} diff --git a/src/api/crm/customer/index.ts b/src/api/crm/customer/index.ts index 4542c86a..2940934e 100644 --- a/src/api/crm/customer/index.ts +++ b/src/api/crm/customer/index.ts @@ -63,16 +63,16 @@ 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 getSimpleCustomerList = async () => { return await request.get({ url: `/crm/customer/list-all-simple` }) } -// 查询客户操作日志 -export const getOperateLogPage = async (id: number) => { - return await request.get({ url: '/crm/customer/operate-log-page?id=' + id }) -} - // ======================= 业务操作 ======================= export interface TransferReqVO { @@ -82,7 +82,7 @@ export interface TransferReqVO { } // 客户转移 -export const transfer = async (data: TransferReqVO) => { +export const transferCustomer = async (data: TransferReqVO) => { return await request.put({ url: '/crm/customer/transfer', data }) } @@ -100,3 +100,8 @@ export const receiveCustomer = async (ids: any[]) => { export const putCustomerPool = async (id: number) => { return await request.put({ url: `/crm/customer/put-pool?id=${id}` }) } + +// 进入公海客户提醒 +export const getPutInPoolRemindCustomerPage = async (params) => { + return await request.get({ url: `/crm/customer/put-in-pool-remind-page`, params }) +} diff --git a/src/api/crm/followup/index.ts b/src/api/crm/followup/index.ts index f6b66105..504879d3 100644 --- a/src/api/crm/followup/index.ts +++ b/src/api/crm/followup/index.ts @@ -7,6 +7,8 @@ export interface FollowUpRecordVO { bizId: number // 数据编号 type: number // 跟进类型 content: string // 跟进内容 + picUrls: string[] // 图片 + fileUrls: string[] // 附件 nextTime: Date // 下次联系时间 businessIds: number[] // 关联的商机编号数组 contactIds: number[] // 关联的联系人编号数组 diff --git a/src/api/crm/message/index.ts b/src/api/crm/message/index.ts deleted file mode 100644 index 098729eb..00000000 --- a/src/api/crm/message/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import request from '@/config/axios' - -export interface CustomerVO { - id?: number - name: string - industryId: number - level: number - source: number - followUpStatus?: boolean - lockStatus?: boolean - dealStatus?: boolean - mobile: string - telephone: string - website: string - qq: string - wechat: string - email: string - description: string - remark: string - ownerUserId?: number - ownerUserName?: string - ownerUserDept?: string - roUserIds?: string - rwUserIds?: string - areaId?: number - areaName?: string - detailAddress: string - contactLastTime?: Date - contactNextTime: Date - createTime?: Date - updateTime?: Date - creator?: string - creatorName?: string -} - -// 查询客户列表 -// TODO @芋艿:看看是不是后续融合到 getCustomerPage 里; -export const getTodayCustomerPage = async (params) => { - return await request.get({ url: `/crm/message/todayCustomer`, params }) -} diff --git a/src/api/crm/operateLog/index.ts b/src/api/crm/operateLog/index.ts new file mode 100644 index 00000000..d0f25b6b --- /dev/null +++ b/src/api/crm/operateLog/index.ts @@ -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 }) +} diff --git a/src/api/crm/permission/index.ts b/src/api/crm/permission/index.ts index 9a098b81..5c829b6a 100644 --- a/src/api/crm/permission/index.ts +++ b/src/api/crm/permission/index.ts @@ -2,14 +2,15 @@ import request from '@/config/axios' export interface PermissionVO { id?: number // 数据权限编号 - userId: number | undefined // 用户编号 - bizType: number | undefined // Crm 类型 - bizId: number | undefined // Crm 类型数据编号 - level: number | undefined // 权限级别 + userId: number // 用户编号 + bizType: number // Crm 类型 + bizId: number // Crm 类型数据编号 + level: number // 权限级别 deptName?: string // 部门名称 nickname?: string // 用户昵称 postNames?: string[] // 岗位名称数组 createTime?: Date + ids?: number[] } /** @@ -21,8 +22,11 @@ export enum BizTypeEnum { CRM_LEADS = 1, // 线索 CRM_CUSTOMER = 2, // 客户 CRM_CONTACT = 3, // 联系人 - CRM_BUSINESS = 5, // 商机 - CRM_CONTRACT = 6 // 合同 + CRM_BUSINESS = 4, // 商机 + CRM_CONTRACT = 5, // 合同 + CRM_PRODUCT = 6, // 产品 + CRM_RECEIVABLE = 7, // 回款 + CRM_RECEIVABLE_PLAN = 8 // 回款计划 } /** @@ -50,11 +54,11 @@ export const updatePermission = async (data) => { } // 删除数据权限(删除团队成员) -export const deletePermissionBatch = async (params) => { - return await request.delete({ url: '/crm/permission/delete', params }) +export const deletePermissionBatch = async (val: number[]) => { + return await request.delete({ url: '/crm/permission/delete?ids=' + val.join(',') }) } // 删除自己的数据权限(退出团队) -export const deleteSelfPermission = async (id) => { - return await request.delete({ url: '/crm/permission/quit-team?id=' + id }) +export const deleteSelfPermission = async (id: number) => { + return await request.delete({ url: '/crm/permission/delete-self?id=' + id }) } diff --git a/src/api/crm/product/index.ts b/src/api/crm/product/index.ts index 2d88cb09..e6508fb4 100644 --- a/src/api/crm/product/index.ts +++ b/src/api/crm/product/index.ts @@ -12,6 +12,12 @@ export interface ProductVO { ownerUserId: number } +export interface ProductExpandVO extends ProductVO { + count: number + discountPercent: number + totalPrice: number +} + // 查询产品列表 export const getProductPage = async (params) => { return await request.get({ url: `/crm/product/page`, params }) @@ -41,8 +47,3 @@ export const deleteProduct = async (id: number) => { export const exportProduct = async (params) => { return await request.download({ url: `/crm/product/export-excel`, params }) } - -// 查询产品操作日志 -export const getOperateLogPage = async (params: any) => { - return await request.get({ url: '/crm/product/operate-log-page', params }) -} diff --git a/src/api/erp/finance/account/index.ts b/src/api/erp/finance/account/index.ts new file mode 100644 index 00000000..a62b1807 --- /dev/null +++ b/src/api/erp/finance/account/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/finance/payment/index.ts b/src/api/erp/finance/payment/index.ts new file mode 100644 index 00000000..c6749db0 --- /dev/null +++ b/src/api/erp/finance/payment/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +// ERP 付款单 VO +export interface FinancePaymentVO { + id: number // 付款单编号 + no: string // 付款单号 + supplierId: number // 供应商编号 + paymentTime: Date // 付款时间 + totalPrice: number // 合计金额,单位:元 + status: number // 状态 + remark: string // 备注 +} + +// 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 }) + } +} diff --git a/src/api/erp/finance/receipt/index.ts b/src/api/erp/finance/receipt/index.ts new file mode 100644 index 00000000..4de28ca7 --- /dev/null +++ b/src/api/erp/finance/receipt/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +// ERP 收款单 VO +export interface FinanceReceiptVO { + id: number // 收款单编号 + no: string // 收款单号 + customerId: number // 客户编号 + receiptTime: Date // 收款时间 + totalPrice: number // 合计金额,单位:元 + status: number // 状态 + remark: string // 备注 +} + +// 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 }) + } +} diff --git a/src/api/erp/product/category/index.ts b/src/api/erp/product/category/index.ts new file mode 100644 index 00000000..72f47dc9 --- /dev/null +++ b/src/api/erp/product/category/index.ts @@ -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 (params) => { + return await request.get({ url: `/erp/product-category/list`, params }) + }, + + // 查询产品分类精简列表 + 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 }) + } +} diff --git a/src/api/erp/product/product/index.ts b/src/api/erp/product/product/index.ts new file mode 100644 index 00000000..1136282f --- /dev/null +++ b/src/api/erp/product/product/index.ts @@ -0,0 +1,57 @@ +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 // 最低价格,单位:元 +} + +// 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 }) + } +} diff --git a/src/api/erp/product/unit/index.ts b/src/api/erp/product/unit/index.ts new file mode 100644 index 00000000..1e1c8ac3 --- /dev/null +++ b/src/api/erp/product/unit/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/purchase/in/index.ts b/src/api/erp/purchase/in/index.ts new file mode 100644 index 00000000..f94708d9 --- /dev/null +++ b/src/api/erp/purchase/in/index.ts @@ -0,0 +1,64 @@ +import request from '@/config/axios' + +// ERP 采购入库 VO +export interface PurchaseInVO { + id: number // 入库工单编号 + no: string // 采购入库号 + customerId: number // 客户编号 + inTime: Date // 入库时间 + totalCount: number // 合计数量 + totalPrice: number // 合计金额,单位:元 + status: number // 状态 + remark: string // 备注 + outCount: number // 采购出库数量 + returnCount: number // 采购退货数量 +} + +// 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 (id: number, status: number) => { + return await request.put({ + url: `/erp/purchase-in/update-status`, + params: { + id, + status + } + }) + }, + + // 删除采购入库 + 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 }) + } +} diff --git a/src/api/erp/purchase/order/index.ts b/src/api/erp/purchase/order/index.ts new file mode 100644 index 00000000..ad3222fa --- /dev/null +++ b/src/api/erp/purchase/order/index.ts @@ -0,0 +1,64 @@ +import request from '@/config/axios' + +// ERP 采购订单 VO +export interface PurchaseOrderVO { + id: number // 订单工单编号 + no: 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 }) + } +} diff --git a/src/api/erp/purchase/return/index.ts b/src/api/erp/purchase/return/index.ts new file mode 100644 index 00000000..182e04ee --- /dev/null +++ b/src/api/erp/purchase/return/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/purchase/supplier/index.ts b/src/api/erp/purchase/supplier/index.ts new file mode 100644 index 00000000..34729a5a --- /dev/null +++ b/src/api/erp/purchase/supplier/index.ts @@ -0,0 +1,58 @@ +import request from '@/config/axios' + +// ERP 供应商 VO +export interface SupplierVO { + 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 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 }) + } +} diff --git a/src/api/erp/sale/customer/index.ts b/src/api/erp/sale/customer/index.ts new file mode 100644 index 00000000..3aaefb56 --- /dev/null +++ b/src/api/erp/sale/customer/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/sale/order/index.ts b/src/api/erp/sale/order/index.ts new file mode 100644 index 00000000..2d2ac53e --- /dev/null +++ b/src/api/erp/sale/order/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/sale/out/index.ts b/src/api/erp/sale/out/index.ts new file mode 100644 index 00000000..cbc605e7 --- /dev/null +++ b/src/api/erp/sale/out/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/sale/return/index.ts b/src/api/erp/sale/return/index.ts new file mode 100644 index 00000000..160ac018 --- /dev/null +++ b/src/api/erp/sale/return/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/stock/check/index.ts b/src/api/erp/stock/check/index.ts new file mode 100644 index 00000000..4a3e6534 --- /dev/null +++ b/src/api/erp/stock/check/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +// ERP 库存盘点单 VO +export interface StockCheckVO { + id: number // 出库编号 + no: string // 出库单号 + outTime: Date // 出库时间 + totalCount: number // 合计数量 + totalPrice: number // 合计金额,单位:元 + status: number // 状态 + remark: string // 备注 +} + +// 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 }) + } +} diff --git a/src/api/erp/stock/in/index.ts b/src/api/erp/stock/in/index.ts new file mode 100644 index 00000000..148b64f2 --- /dev/null +++ b/src/api/erp/stock/in/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/stock/move/index.ts b/src/api/erp/stock/move/index.ts new file mode 100644 index 00000000..398568e0 --- /dev/null +++ b/src/api/erp/stock/move/index.ts @@ -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 }) + } +} diff --git a/src/api/erp/stock/out/index.ts b/src/api/erp/stock/out/index.ts new file mode 100644 index 00000000..f0f40d34 --- /dev/null +++ b/src/api/erp/stock/out/index.ts @@ -0,0 +1,62 @@ +import request from '@/config/axios' + +// ERP 其它出库单 VO +export interface StockOutVO { + id: number // 出库编号 + no: string // 出库单号 + customerId: number // 客户编号 + outTime: Date // 出库时间 + totalCount: number // 合计数量 + totalPrice: number // 合计金额,单位:元 + status: number // 状态 + remark: string // 备注 +} + +// ERP 其它出库单 API +export const StockOutApi = { + // 查询其它出库单分页 + getStockOutPage: async (params: any) => { + return await request.get({ url: `/erp/stock-out/page`, params }) + }, + + // 查询其它出库单详情 + getStockOut: async (id: number) => { + return await request.get({ url: `/erp/stock-out/get?id=` + id }) + }, + + // 新增其它出库单 + createStockOut: async (data: StockOutVO) => { + return await request.post({ url: `/erp/stock-out/create`, data }) + }, + + // 修改其它出库单 + updateStockOut: async (data: StockOutVO) => { + return await request.put({ url: `/erp/stock-out/update`, data }) + }, + + // 更新其它出库单的状态 + updateStockOutStatus: async (id: number, status: number) => { + return await request.put({ + url: `/erp/stock-out/update-status`, + params: { + id, + status + } + }) + }, + + // 删除其它出库单 + deleteStockOut: async (ids: number[]) => { + return await request.delete({ + url: `/erp/stock-out/delete`, + params: { + ids: ids.join(',') + } + }) + }, + + // 导出其它出库单 Excel + exportStockOut: async (params) => { + return await request.download({ url: `/erp/stock-out/export-excel`, params }) + } +} diff --git a/src/api/erp/stock/record/index.ts b/src/api/erp/stock/record/index.ts new file mode 100644 index 00000000..a758eb49 --- /dev/null +++ b/src/api/erp/stock/record/index.ts @@ -0,0 +1,32 @@ +import request from '@/config/axios' + +// ERP 产品库存明细 VO +export interface StockRecordVO { + id: number // 编号 + productId: number // 产品编号 + warehouseId: number // 仓库编号 + count: number // 出入库数量 + totalCount: number // 总库存量 + bizType: number // 业务类型 + bizId: number // 业务编号 + bizItemId: number // 业务项编号 + bizNo: string // 业务单号 +} + +// ERP 产品库存明细 API +export const StockRecordApi = { + // 查询产品库存明细分页 + getStockRecordPage: async (params: any) => { + return await request.get({ url: `/erp/stock-record/page`, params }) + }, + + // 查询产品库存明细详情 + getStockRecord: async (id: number) => { + return await request.get({ url: `/erp/stock-record/get?id=` + id }) + }, + + // 导出产品库存明细 Excel + exportStockRecord: async (params) => { + return await request.download({ url: `/erp/stock-record/export-excel`, params }) + } +} diff --git a/src/api/erp/stock/stock/index.ts b/src/api/erp/stock/stock/index.ts new file mode 100644 index 00000000..4de86fb1 --- /dev/null +++ b/src/api/erp/stock/stock/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +// ERP 产品库存 VO +export interface StockVO { + // 编号 + id: number + // 产品编号 + productId: number + // 仓库编号 + warehouseId: number + // 库存数量 + count: number +} + +// ERP 产品库存 API +export const StockApi = { + // 查询产品库存分页 + getStockPage: async (params: any) => { + return await request.get({ url: `/erp/stock/page`, params }) + }, + + // 查询产品库存详情 + getStock: async (id: number) => { + return await request.get({ url: `/erp/stock/get?id=` + id }) + }, + + // 查询产品库存详情 + getStock2: async (productId: number, warehouseId: number) => { + return await request.get({ url: `/erp/stock/get`, params: { productId, warehouseId } }) + }, + + // 获得产品库存数量 + getStockCount: async (productId: number) => { + return await request.get({ url: `/erp/stock/get-count`, params: { productId } }) + }, + + // 导出产品库存 Excel + exportStock: async (params) => { + return await request.download({ url: `/erp/stock/export-excel`, params }) + } +} diff --git a/src/api/erp/stock/warehouse/index.ts b/src/api/erp/stock/warehouse/index.ts new file mode 100644 index 00000000..598824bf --- /dev/null +++ b/src/api/erp/stock/warehouse/index.ts @@ -0,0 +1,64 @@ +import request from '@/config/axios' + +// ERP 仓库 VO +export interface WarehouseVO { + id: number // 仓库编号 + name: string // 仓库名称 + address: string // 仓库地址 + sort: number // 排序 + remark: string // 备注 + principal: string // 负责人 + warehousePrice: number // 仓储费,单位:元 + truckagePrice: number // 搬运费,单位:元 + status: number // 开启状态 + defaultStatus: boolean // 是否默认 +} + +// ERP 仓库 API +export const WarehouseApi = { + // 查询仓库分页 + getWarehousePage: async (params: any) => { + return await request.get({ url: `/erp/warehouse/page`, params }) + }, + + // 查询仓库精简列表 + getWarehouseSimpleList: async () => { + return await request.get({ url: `/erp/warehouse/simple-list` }) + }, + + // 查询仓库详情 + getWarehouse: async (id: number) => { + return await request.get({ url: `/erp/warehouse/get?id=` + id }) + }, + + // 新增仓库 + createWarehouse: async (data: WarehouseVO) => { + return await request.post({ url: `/erp/warehouse/create`, data }) + }, + + // 修改仓库 + updateWarehouse: async (data: WarehouseVO) => { + return await request.put({ url: `/erp/warehouse/update`, data }) + }, + + // 修改仓库默认状态 + updateWarehouseDefaultStatus: async (id: number, defaultStatus: boolean) => { + return await request.put({ + url: `/erp/warehouse/update-default-status`, + params: { + id, + defaultStatus + } + }) + }, + + // 删除仓库 + deleteWarehouse: async (id: number) => { + return await request.delete({ url: `/erp/warehouse/delete?id=` + id }) + }, + + // 导出仓库 Excel + exportWarehouse: async (params) => { + return await request.download({ url: `/erp/warehouse/export-excel`, params }) + } +} diff --git a/src/api/infra/file/index.ts b/src/api/infra/file/index.ts index f64bc0d6..87d966e1 100644 --- a/src/api/infra/file/index.ts +++ b/src/api/infra/file/index.ts @@ -6,6 +6,16 @@ export interface FilePageReqVO extends PageParam { createTime?: Date[] } +// 文件预签名地址 Response VO +export interface FilePresignedUrlRespVO { + // 文件配置编号 + configId: number + // 文件上传 URL + uploadUrl: string + // 文件 URL + url: string +} + // 查询文件列表 export const getFilePage = (params: FilePageReqVO) => { return request.get({ url: '/infra/file/page', params }) @@ -15,3 +25,16 @@ export const getFilePage = (params: FilePageReqVO) => { export const deleteFile = (id: number) => { return request.delete({ url: '/infra/file/delete?id=' + id }) } + +// 获取文件预签名地址 +export const getFilePresignedUrl = (path: string) => { + return request.get({ + url: '/infra/file/presigned-url', + params: { path } + }) +} + +// 创建文件 +export const createFile = (data: any) => { + return request.post({ url: '/infra/file/create', data }) +} diff --git a/src/assets/imgs/avatar.jpg b/src/assets/imgs/avatar.jpg deleted file mode 100644 index d46a70a4..00000000 Binary files a/src/assets/imgs/avatar.jpg and /dev/null differ diff --git a/src/components/Cropper/src/CropperAvatar.vue b/src/components/Cropper/src/CropperAvatar.vue index 55a7d34b..9464c2a8 100644 --- a/src/components/Cropper/src/CropperAvatar.vue +++ b/src/components/Cropper/src/CropperAvatar.vue @@ -18,7 +18,7 @@ import { useDesign } from '@/hooks/web/useDesign' import { propTypes } from '@/utils/propTypes' import { useI18n } from 'vue-i18n' import CopperModal from './CopperModal.vue' -import avatar from '@/assets/imgs/avatar.jpg' +import avatar from '@/assets/imgs/avatar.gif' defineOptions({ name: 'CropperAvatar' }) diff --git a/src/components/Table/index.ts b/src/components/Table/index.ts index 689f64a8..9f893171 100644 --- a/src/components/Table/index.ts +++ b/src/components/Table/index.ts @@ -1,6 +1,7 @@ import Table from './src/Table.vue' import { ElTable } from 'element-plus' import { TableSetPropsType } from '@/types/table' +import TableSelectForm from './src/TableSelectForm.vue' export interface TableExpose { setProps: (props: Recordable) => void @@ -9,4 +10,4 @@ export interface TableExpose { elTableRef: ComponentRef } -export { Table } +export { Table, TableSelectForm } diff --git a/src/components/Table/src/TableSelectForm.vue b/src/components/Table/src/TableSelectForm.vue new file mode 100644 index 00000000..7fece2d2 --- /dev/null +++ b/src/components/Table/src/TableSelectForm.vue @@ -0,0 +1,91 @@ + + + + + + + + + + + 确 定 + 取 消 + + + + + diff --git a/src/components/UploadFile/src/UploadFile.vue b/src/components/UploadFile/src/UploadFile.vue index a0ef08d6..c91f977a 100644 --- a/src/components/UploadFile/src/UploadFile.vue +++ b/src/components/UploadFile/src/UploadFile.vue @@ -3,11 +3,10 @@ @@ -36,9 +36,10 @@ diff --git a/src/views/crm/message/index.vue b/src/views/crm/backlog/index.vue similarity index 74% rename from src/views/crm/message/index.vue rename to src/views/crm/backlog/index.vue index 1dd972aa..0d42c960 100644 --- a/src/views/crm/message/index.vue +++ b/src/views/crm/backlog/index.vue @@ -17,13 +17,25 @@ + + + + + + - + - diff --git a/src/views/crm/backlog/tables/CheckReceivables.vue b/src/views/crm/backlog/tables/CheckReceivables.vue new file mode 100644 index 00000000..7ca310a3 --- /dev/null +++ b/src/views/crm/backlog/tables/CheckReceivables.vue @@ -0,0 +1,124 @@ + + + + 待审核回款 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/backlog/tables/EndContract.vue b/src/views/crm/backlog/tables/EndContract.vue new file mode 100644 index 00000000..f31bb524 --- /dev/null +++ b/src/views/crm/backlog/tables/EndContract.vue @@ -0,0 +1,175 @@ + + + + 即将到期的合同 + + + + + + + + + + + + + + + + + + {{ scope.row.customerName }} + + + + + + + + + + + + + {{ scope.row.contactName }} + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/backlog/tables/FollowCustomer.vue b/src/views/crm/backlog/tables/FollowCustomer.vue new file mode 100644 index 00000000..0c768516 --- /dev/null +++ b/src/views/crm/backlog/tables/FollowCustomer.vue @@ -0,0 +1,159 @@ + + + + + 分配给我的客户 + + + + + + + + + + + + + + + + + {{ scope.row.name }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ scope.row.poolDay }} 天 + + + + + + + + + + + + + + + + diff --git a/src/views/crm/backlog/tables/FollowLeads.vue b/src/views/crm/backlog/tables/FollowLeads.vue new file mode 100644 index 00000000..1ad6f50f --- /dev/null +++ b/src/views/crm/backlog/tables/FollowLeads.vue @@ -0,0 +1,125 @@ + + + + + 分配给我的线索 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/backlog/tables/PutInPoolRemind.vue b/src/views/crm/backlog/tables/PutInPoolRemind.vue new file mode 100644 index 00000000..5559f656 --- /dev/null +++ b/src/views/crm/backlog/tables/PutInPoolRemind.vue @@ -0,0 +1,155 @@ + + + + 待进入公海的客户 + + + + + + + + + + + + + + + + {{ scope.row.name }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/backlog/tables/RemindReceivables.vue b/src/views/crm/backlog/tables/RemindReceivables.vue new file mode 100644 index 00000000..e375a53b --- /dev/null +++ b/src/views/crm/backlog/tables/RemindReceivables.vue @@ -0,0 +1,193 @@ + + + + 待回款提醒 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ userList.find((user) => user.id === scope.row.ownerUserId)?.nickname }} + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + diff --git a/src/views/crm/message/tables/TodayCustomer.vue b/src/views/crm/backlog/tables/TodayCustomer.vue similarity index 70% rename from src/views/crm/message/tables/TodayCustomer.vue rename to src/views/crm/backlog/tables/TodayCustomer.vue index f4b59be1..4c6ce467 100644 --- a/src/views/crm/message/tables/TodayCustomer.vue +++ b/src/views/crm/backlog/tables/TodayCustomer.vue @@ -1,8 +1,6 @@ - - {{ title }} - + 今日需联系客户 - + - + - - - - 搜索 - - - - 重置 - - - - + + {{ scope.row.name }} @@ -84,7 +82,7 @@ - + diff --git a/src/views/crm/bi/rank/ContractCountRank.vue b/src/views/crm/bi/rank/ContractCountRank.vue new file mode 100644 index 00000000..83726c0f --- /dev/null +++ b/src/views/crm/bi/rank/ContractCountRank.vue @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/bi/rank/ContractPriceRank.vue b/src/views/crm/bi/rank/ContractPriceRank.vue new file mode 100644 index 00000000..689ff027 --- /dev/null +++ b/src/views/crm/bi/rank/ContractPriceRank.vue @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/bi/rank/CustomerCountRank.vue b/src/views/crm/bi/rank/CustomerCountRank.vue new file mode 100644 index 00000000..62bd6ad8 --- /dev/null +++ b/src/views/crm/bi/rank/CustomerCountRank.vue @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/bi/rank/FollowCountRank.vue b/src/views/crm/bi/rank/FollowCountRank.vue new file mode 100644 index 00000000..207947ef --- /dev/null +++ b/src/views/crm/bi/rank/FollowCountRank.vue @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/bi/rank/FollowCustomerCountRank.vue b/src/views/crm/bi/rank/FollowCustomerCountRank.vue new file mode 100644 index 00000000..c54088b6 --- /dev/null +++ b/src/views/crm/bi/rank/FollowCustomerCountRank.vue @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/bi/rank/ProductSalesRank.vue b/src/views/crm/bi/rank/ProductSalesRank.vue new file mode 100644 index 00000000..4de06292 --- /dev/null +++ b/src/views/crm/bi/rank/ProductSalesRank.vue @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/bi/rank/ReceivablePriceRank.vue b/src/views/crm/bi/rank/ReceivablePriceRank.vue new file mode 100644 index 00000000..e7e5cff0 --- /dev/null +++ b/src/views/crm/bi/rank/ReceivablePriceRank.vue @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/bi/rank/index.vue b/src/views/crm/bi/rank/index.vue new file mode 100644 index 00000000..b82ff9a1 --- /dev/null +++ b/src/views/crm/bi/rank/index.vue @@ -0,0 +1,162 @@ + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/clue/ClueForm.vue b/src/views/crm/clue/ClueForm.vue index 1b2637c9..efb36045 100644 --- a/src/views/crm/clue/ClueForm.vue +++ b/src/views/crm/clue/ClueForm.vue @@ -10,17 +10,6 @@ - - - - - - - - - + + + + @@ -54,20 +49,20 @@ diff --git a/src/views/crm/contact/detail/index.vue b/src/views/crm/contact/detail/index.vue index cb8eea16..aee34166 100644 --- a/src/views/crm/contact/detail/index.vue +++ b/src/views/crm/contact/detail/index.vue @@ -1,5 +1,12 @@ - + + + 编辑 + + + 转移 + + @@ -8,8 +15,14 @@ - - + + + + + - diff --git a/src/views/crm/contract/components/ProductList.vue b/src/views/crm/contract/components/ProductList.vue new file mode 100644 index 00000000..ed4ce6f1 --- /dev/null +++ b/src/views/crm/contract/components/ProductList.vue @@ -0,0 +1,171 @@ + + + + 添加产品 + + + + + + + + + + + + + + + + + + + + + + + + {{ fenToYuan(getTotalPrice(row)) }} + + + + + 移除 + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/contract/detail/ContractDetailsHeader.vue b/src/views/crm/contract/detail/ContractDetailsHeader.vue new file mode 100644 index 00000000..e300fedc --- /dev/null +++ b/src/views/crm/contract/detail/ContractDetailsHeader.vue @@ -0,0 +1,45 @@ + + + + + + + + {{ contract.name }} + + + + + + + + + + + + + {{ contract.customerName }} + + + {{ floatToFixed2(contract.price) }} + + + {{ contract.orderDate ? formatDate(contract.orderDate) : '空' }} + + + {{ floatToFixed2(contract.price) }} + + + {{ contract.ownerUserName }} + + + + + diff --git a/src/views/crm/contract/detail/ContractDetailsInfo.vue b/src/views/crm/contract/detail/ContractDetailsInfo.vue new file mode 100644 index 00000000..b0015416 --- /dev/null +++ b/src/views/crm/contract/detail/ContractDetailsInfo.vue @@ -0,0 +1,81 @@ + + + + + + + 基本信息 + + + + {{ contract.no }} + + + {{ contract.name }} + + + {{ contract.customerName }} + + + {{ contract.businessName }} + + + {{ contract.price }} + + + {{ formatDate(contract.orderDate) }} + + + {{ formatDate(contract.startTime) }} + + + {{ formatDate(contract.endTime) }} + + + {{ contract.contactName }} + + + {{ contract.signUserName }} + + + {{ contract.remark }} + + + {{ contract.auditStatus }} + + + + + + 系统信息 + + + + {{ contract.ownerUserName }} + + + {{ contract.creatorName }} + + + {{ contract.createTime ? formatDate(contract.createTime) : '空' }} + + + {{ contract.updateTime ? formatDate(contract.updateTime) : '空' }} + + + + + + + diff --git a/src/views/crm/contract/detail/ContractProductList.vue b/src/views/crm/contract/detail/ContractProductList.vue new file mode 100644 index 00000000..43c72be7 --- /dev/null +++ b/src/views/crm/contract/detail/ContractProductList.vue @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + {{ getTotalPrice(row) }} + + + + + + diff --git a/src/views/crm/contract/detail/index.vue b/src/views/crm/contract/detail/index.vue new file mode 100644 index 00000000..8ea43fb1 --- /dev/null +++ b/src/views/crm/contract/detail/index.vue @@ -0,0 +1,119 @@ + + + + + 编辑 + + + 转移 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/crm/contract/index.vue b/src/views/crm/contract/index.vue index 26ff403a..417392d3 100644 --- a/src/views/crm/contract/index.vue +++ b/src/views/crm/contract/index.vue @@ -2,116 +2,170 @@ - 搜索 - 重置 - - 新增 + + + 搜索 + + + + 重置 + + + + 新增 - 导出 + + 导出 - - - - - - - + + + + + + + {{ scope.row.customerName }} + + + + + - - + - - - - - + + + + {{ scope.row.contactName }} + + + + + + + + - - + + + + + + 编辑 + + 提交审核 + + + 详情 + + 删除 @@ -120,9 +174,9 @@ @@ -130,11 +184,13 @@ - diff --git a/src/views/crm/customer/CustomerImportForm.vue b/src/views/crm/customer/CustomerImportForm.vue new file mode 100644 index 00000000..4290b361 --- /dev/null +++ b/src/views/crm/customer/CustomerImportForm.vue @@ -0,0 +1,135 @@ + + + + + + 将文件拖到此处,或点击上传 + + + + + 是否更新已经存在的客户数据(“客户名称”重复) + + 仅允许导入 xls、xlsx 格式文件。 + + 下载模板 + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/crm/customer/detail/index.vue b/src/views/crm/customer/detail/index.vue index 41b9a0be..7cc264a2 100644 --- a/src/views/crm/customer/detail/index.vue +++ b/src/views/crm/customer/detail/index.vue @@ -51,6 +51,7 @@ :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" :show-action="!permissionListRef?.isPool || false" + @quit-team="close" /> @@ -90,6 +91,7 @@ import CrmTransferForm from '@/views/crm/permission/components/TransferForm.vue' import FollowUpList from '@/views/crm/followup/index.vue' import { BizTypeEnum } from '@/api/crm/permission' import type { OperateLogV2VO } from '@/api/system/operatelog' +import { getOperateLogPage } from '@/api/crm/operateLog' defineOptions({ name: 'CrmCustomerDetail' }) @@ -122,7 +124,7 @@ const openForm = () => { /** 客户转移 */ const crmTransferFormRef = ref>() // 客户转移表单 ref const transfer = () => { - crmTransferFormRef.value?.open('客户转移', customerId.value, CustomerApi.transfer) + crmTransferFormRef.value?.open('客户转移', customerId.value, CustomerApi.transferCustomer) } /** 锁定客户 */ @@ -163,7 +165,10 @@ const getOperateLog = async () => { if (!customerId.value) { return } - const data = await CustomerApi.getOperateLogPage(customerId.value) + const data = await getOperateLogPage({ + bizType: BizTypeEnum.CRM_CUSTOMER, + bizId: customerId.value + }) logList.value = data.list } diff --git a/src/views/crm/customer/index.vue b/src/views/crm/customer/index.vue index b2cee2f7..a459664c 100644 --- a/src/views/crm/customer/index.vue +++ b/src/views/crm/customer/index.vue @@ -84,6 +84,10 @@ 新增 + + + 导入 + - - + + {{ scope.row.name }} @@ -145,7 +149,7 @@ - + {{ scope.row.poolDay }} 天 + diff --git a/src/views/crm/followup/components/BusinessTableSelect.vue b/src/views/crm/followup/components/BusinessTableSelect.vue new file mode 100644 index 00000000..de2db616 --- /dev/null +++ b/src/views/crm/followup/components/BusinessTableSelect.vue @@ -0,0 +1,88 @@ + + + + + + + + + + + + + 确 定 + 取 消 + + + + + diff --git a/src/views/crm/followup/components/ContactList.vue b/src/views/crm/followup/components/ContactList.vue index 2cd7ccf0..5e31718a 100644 --- a/src/views/crm/followup/components/ContactList.vue +++ b/src/views/crm/followup/components/ContactList.vue @@ -69,7 +69,7 @@ const props = withDefaults(defineProps<{ contactIds: number[] }>(), { const list = ref([] as ContactApi.ContactVO[]) const getContactList = async () => { list.value = (await ContactApi.getContactListByIds( - props.contactIds + unref(props.contactIds) )) as unknown as ContactApi.ContactVO[] } watch( diff --git a/src/views/crm/followup/components/ContactTableSelect.vue b/src/views/crm/followup/components/ContactTableSelect.vue new file mode 100644 index 00000000..ded9a6d4 --- /dev/null +++ b/src/views/crm/followup/components/ContactTableSelect.vue @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + 确 定 + 取 消 + + + + + diff --git a/src/views/crm/followup/components/index.ts b/src/views/crm/followup/components/index.ts index b3e7f257..48d90daa 100644 --- a/src/views/crm/followup/components/index.ts +++ b/src/views/crm/followup/components/index.ts @@ -1,4 +1,6 @@ import BusinessList from './BusinessList.vue' +import BusinessTableSelect from './BusinessTableSelect.vue' import ContactList from './ContactList.vue' +import ContactTableSelect from './ContactTableSelect.vue' -export { BusinessList, ContactList } +export { BusinessList, BusinessTableSelect, ContactList, ContactTableSelect } diff --git a/src/views/crm/message/tables/FollowLeads.vue b/src/views/crm/message/tables/FollowLeads.vue deleted file mode 100644 index c94199fb..00000000 --- a/src/views/crm/message/tables/FollowLeads.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - - TODO: 分配给我的线索 - - - - - - diff --git a/src/views/crm/permission/components/PermissionForm.vue b/src/views/crm/permission/components/PermissionForm.vue index fa73b22a..aced2f48 100644 --- a/src/views/crm/permission/components/PermissionForm.vue +++ b/src/views/crm/permission/components/PermissionForm.vue @@ -17,7 +17,6 @@ /> - - + + + + + + + 确 定 @@ -54,12 +59,7 @@ const dialogTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formType = ref('') // 表单的类型:create - 新增;update - 修改 const userOptions = ref([]) // 用户列表 -const formData = ref({ - userId: undefined, // 用户编号 - bizType: undefined, // CRM 类型 - bizId: undefined, // CRM 类型数据编号 - level: undefined // 权限级别 -}) +const formData = ref({} as PermissionApi.PermissionVO) const formRules = reactive({ userId: [{ required: true, message: '人员不能为空', trigger: 'blur' }], level: [{ required: true, message: '权限级别不能为空', trigger: 'blur' }] @@ -77,7 +77,23 @@ const open = async (type: 'create' | 'update', bizType: number, bizId: number, i formData.value.ids = ids } } -defineExpose({ open }) // 提供 open 方法,用于打开弹窗 +/** 打开修改权限弹窗 */ +const open0 = async ( + type: 'create' | 'update', + bizType: number, + bizId: number, + id: number, + level: number +) => { + dialogVisible.value = true + dialogTitle.value = t('action.' + type) + '团队成员' + formType.value = type + resetForm(bizType, bizId) + // 修改时,设置数据 + formData.value.level = level + formData.value.ids = [id] +} +defineExpose({ open, open0 }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 @@ -108,12 +124,8 @@ const submitForm = async () => { /** 重置表单 */ const resetForm = (bizType: number, bizId: number) => { formRef.value?.resetFields() - formData.value = { - userId: undefined, // 用户编号 - bizType, // Crm 类型 - bizId, // Crm 类型数据编号 - level: undefined // 权限级别 - } + formData.value = {} as PermissionApi.PermissionVO + formData.value = { ...formData.value, bizType, bizId } } onMounted(async () => { // 获得用户列表 diff --git a/src/views/crm/permission/components/PermissionList.vue b/src/views/crm/permission/components/PermissionList.vue index b098f261..39c7aab3 100644 --- a/src/views/crm/permission/components/PermissionList.vue +++ b/src/views/crm/permission/components/PermissionList.vue @@ -105,8 +105,17 @@ const handleUpdate = () => { message.warning('请先选择团队成员后操作!') return } - const ids = multipleSelection.value?.map((item) => item.id) as unknown as number[] - formRef.value?.open('update', props.bizType, props.bizId!, ids) + if (multipleSelection.value?.length > 1) { + message.warning('编辑团队成员时只能选择一个!') + return + } + formRef.value?.open0( + 'update', + props.bizType, + props.bizId!, + multipleSelection.value[0].id!, + multipleSelection.value[0].level + ) } /** 移除团队成员 */ @@ -116,12 +125,10 @@ const handleDelete = async () => { return } await message.delConfirm() - const ids = multipleSelection.value?.map((item) => item.id) - await PermissionApi.deletePermissionBatch({ - bizType: props.bizType, - bizId: props.bizId, - ids - }) + const ids = multipleSelection.value?.map((item) => item.id) as unknown as number[] + await PermissionApi.deletePermissionBatch(ids) + message.success('移除团队成员成功!') + await getList() } /** 添加团队成员 */ @@ -164,6 +171,9 @@ watch( ) defineExpose({ openForm, validateOwnerUser, validateWrite, isPool }) +const emits = defineEmits<{ + (e: 'quitTeam'): void +}>() /** 退出团队 */ const handleQuit = async () => { const permission = list.value.find( @@ -175,9 +185,12 @@ const handleQuit = async () => { return } const userPermission = list.value.find((item) => item.userId === userStore.getUser.id) - if (userPermission) { - await PermissionApi.deleteSelfPermission(userPermission.id!) + if (!userPermission) { + return } + await PermissionApi.deleteSelfPermission(userPermission.id!) + message.success('退出团队成员成功!') + emits('quitTeam') } watch( diff --git a/src/views/crm/product/detail/index.vue b/src/views/crm/product/detail/index.vue index 847e9445..0c3c03d5 100644 --- a/src/views/crm/product/detail/index.vue +++ b/src/views/crm/product/detail/index.vue @@ -1,5 +1,5 @@ - + @@ -11,16 +11,19 @@ - diff --git a/src/views/erp/finance/account/index.vue b/src/views/erp/finance/account/index.vue new file mode 100644 index 00000000..06578a22 --- /dev/null +++ b/src/views/erp/finance/account/index.vue @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/finance/payment/FinancePaymentForm.vue b/src/views/erp/finance/payment/FinancePaymentForm.vue new file mode 100644 index 00000000..3da2e6ef --- /dev/null +++ b/src/views/erp/finance/payment/FinancePaymentForm.vue @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/finance/payment/components/FinancePaymentItemForm.vue b/src/views/erp/finance/payment/components/FinancePaymentItemForm.vue new file mode 100644 index 00000000..ea0e085e --- /dev/null +++ b/src/views/erp/finance/payment/components/FinancePaymentItemForm.vue @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加采购入库单 + + 添加采购退货单 + + + + + + + + diff --git a/src/views/erp/finance/payment/index.vue b/src/views/erp/finance/payment/index.vue new file mode 100644 index 00000000..e9e0807e --- /dev/null +++ b/src/views/erp/finance/payment/index.vue @@ -0,0 +1,389 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:finance-payment:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/finance/receipt/FinanceReceiptForm.vue b/src/views/erp/finance/receipt/FinanceReceiptForm.vue new file mode 100644 index 00000000..96826eb2 --- /dev/null +++ b/src/views/erp/finance/receipt/FinanceReceiptForm.vue @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/finance/receipt/components/FinanceReceiptItemForm.vue b/src/views/erp/finance/receipt/components/FinanceReceiptItemForm.vue new file mode 100644 index 00000000..1a48b418 --- /dev/null +++ b/src/views/erp/finance/receipt/components/FinanceReceiptItemForm.vue @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加销售出库单 + + 添加销售退货单 + + + + + + + + diff --git a/src/views/erp/finance/receipt/index.vue b/src/views/erp/finance/receipt/index.vue new file mode 100644 index 00000000..c85b398b --- /dev/null +++ b/src/views/erp/finance/receipt/index.vue @@ -0,0 +1,389 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:finance-receipt:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/product/category/ProductCategoryForm.vue b/src/views/erp/product/category/ProductCategoryForm.vue new file mode 100644 index 00000000..ef4a003e --- /dev/null +++ b/src/views/erp/product/category/ProductCategoryForm.vue @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + {{ dict.label }} + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/erp/product/category/index.vue b/src/views/erp/product/category/index.vue new file mode 100644 index 00000000..29dc0f3e --- /dev/null +++ b/src/views/erp/product/category/index.vue @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + 展开/折叠 + + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/product/product/ProductForm.vue b/src/views/erp/product/product/ProductForm.vue new file mode 100644 index 00000000..3f9de0ad --- /dev/null +++ b/src/views/erp/product/product/ProductForm.vue @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ dict.label }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/erp/product/product/index.vue b/src/views/erp/product/product/index.vue new file mode 100644 index 00000000..1e8f89e3 --- /dev/null +++ b/src/views/erp/product/product/index.vue @@ -0,0 +1,222 @@ + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/product/unit/ProductUnitForm.vue b/src/views/erp/product/unit/ProductUnitForm.vue new file mode 100644 index 00000000..ca14ff43 --- /dev/null +++ b/src/views/erp/product/unit/ProductUnitForm.vue @@ -0,0 +1,108 @@ + + + + + + + + + + {{ dict.label }} + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/erp/product/unit/index.vue b/src/views/erp/product/unit/index.vue new file mode 100644 index 00000000..54c9db93 --- /dev/null +++ b/src/views/erp/product/unit/index.vue @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/purchase/in/PurchaseInForm.vue b/src/views/erp/purchase/in/PurchaseInForm.vue new file mode 100644 index 00000000..c59d7dff --- /dev/null +++ b/src/views/erp/purchase/in/PurchaseInForm.vue @@ -0,0 +1,325 @@ + + + + + + + + + + + + + + + + + + + + 选择 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + + + + diff --git a/src/views/erp/purchase/in/components/PurchaseInItemForm.vue b/src/views/erp/purchase/in/components/PurchaseInItemForm.vue new file mode 100644 index 00000000..64377bc7 --- /dev/null +++ b/src/views/erp/purchase/in/components/PurchaseInItemForm.vue @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + diff --git a/src/views/erp/purchase/in/components/PurchaseInPaymentEnableList.vue b/src/views/erp/purchase/in/components/PurchaseInPaymentEnableList.vue new file mode 100644 index 00000000..afaa644f --- /dev/null +++ b/src/views/erp/purchase/in/components/PurchaseInPaymentEnableList.vue @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.paymentPrice) }} + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/purchase/in/index.vue b/src/views/erp/purchase/in/index.vue new file mode 100644 index 00000000..615ce743 --- /dev/null +++ b/src/views/erp/purchase/in/index.vue @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:purchase-in:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.paymentPrice) }} + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/purchase/order/PurchaseOrderForm.vue b/src/views/erp/purchase/order/PurchaseOrderForm.vue new file mode 100644 index 00000000..a7a6eecd --- /dev/null +++ b/src/views/erp/purchase/order/PurchaseOrderForm.vue @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/purchase/order/components/PurchaseOrderInEnableList.vue b/src/views/erp/purchase/order/components/PurchaseOrderInEnableList.vue new file mode 100644 index 00000000..e10694a0 --- /dev/null +++ b/src/views/erp/purchase/order/components/PurchaseOrderInEnableList.vue @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/erp/purchase/order/components/PurchaseOrderItemForm.vue b/src/views/erp/purchase/order/components/PurchaseOrderItemForm.vue new file mode 100644 index 00000000..265193e9 --- /dev/null +++ b/src/views/erp/purchase/order/components/PurchaseOrderItemForm.vue @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加采购产品 + + + diff --git a/src/views/erp/purchase/order/components/PurchaseOrderReturnEnableList.vue b/src/views/erp/purchase/order/components/PurchaseOrderReturnEnableList.vue new file mode 100644 index 00000000..cac2bbc4 --- /dev/null +++ b/src/views/erp/purchase/order/components/PurchaseOrderReturnEnableList.vue @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + + diff --git a/src/views/erp/purchase/order/index.vue b/src/views/erp/purchase/order/index.vue new file mode 100644 index 00000000..e1d8c469 --- /dev/null +++ b/src/views/erp/purchase/order/index.vue @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:purchase-order:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/purchase/return/PurchaseReturnForm.vue b/src/views/erp/purchase/return/PurchaseReturnForm.vue new file mode 100644 index 00000000..e37fa09c --- /dev/null +++ b/src/views/erp/purchase/return/PurchaseReturnForm.vue @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + 选择 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + + + + diff --git a/src/views/erp/purchase/return/components/PurchaseReturnItemForm.vue b/src/views/erp/purchase/return/components/PurchaseReturnItemForm.vue new file mode 100644 index 00000000..2d3e8c58 --- /dev/null +++ b/src/views/erp/purchase/return/components/PurchaseReturnItemForm.vue @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + diff --git a/src/views/erp/purchase/return/components/PurchaseReturnRefundEnableList.vue b/src/views/erp/purchase/return/components/PurchaseReturnRefundEnableList.vue new file mode 100644 index 00000000..a95749ea --- /dev/null +++ b/src/views/erp/purchase/return/components/PurchaseReturnRefundEnableList.vue @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.refundPrice) }} + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/purchase/return/index.vue b/src/views/erp/purchase/return/index.vue new file mode 100644 index 00000000..34e0a40e --- /dev/null +++ b/src/views/erp/purchase/return/index.vue @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:purchase-return:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.refundPrice) }} + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/purchase/supplier/SupplierForm.vue b/src/views/erp/purchase/supplier/SupplierForm.vue new file mode 100644 index 00000000..d3c433c8 --- /dev/null +++ b/src/views/erp/purchase/supplier/SupplierForm.vue @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ dict.label }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/erp/purchase/supplier/index.vue b/src/views/erp/purchase/supplier/index.vue new file mode 100644 index 00000000..9bd31cfd --- /dev/null +++ b/src/views/erp/purchase/supplier/index.vue @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/sale/customer/CustomerForm.vue b/src/views/erp/sale/customer/CustomerForm.vue new file mode 100644 index 00000000..da6e004f --- /dev/null +++ b/src/views/erp/sale/customer/CustomerForm.vue @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ dict.label }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/erp/sale/customer/index.vue b/src/views/erp/sale/customer/index.vue new file mode 100644 index 00000000..e79cccb9 --- /dev/null +++ b/src/views/erp/sale/customer/index.vue @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/sale/order/SaleOrderForm.vue b/src/views/erp/sale/order/SaleOrderForm.vue new file mode 100644 index 00000000..30b2b302 --- /dev/null +++ b/src/views/erp/sale/order/SaleOrderForm.vue @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/sale/order/components/SaleOrderItemForm.vue b/src/views/erp/sale/order/components/SaleOrderItemForm.vue new file mode 100644 index 00000000..3a579d5b --- /dev/null +++ b/src/views/erp/sale/order/components/SaleOrderItemForm.vue @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加采购产品 + + + diff --git a/src/views/erp/sale/order/components/SaleOrderOutEnableList.vue b/src/views/erp/sale/order/components/SaleOrderOutEnableList.vue new file mode 100644 index 00000000..55de7459 --- /dev/null +++ b/src/views/erp/sale/order/components/SaleOrderOutEnableList.vue @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + + diff --git a/src/views/erp/sale/order/components/SaleOrderReturnEnableList.vue b/src/views/erp/sale/order/components/SaleOrderReturnEnableList.vue new file mode 100644 index 00000000..a93a9971 --- /dev/null +++ b/src/views/erp/sale/order/components/SaleOrderReturnEnableList.vue @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + + diff --git a/src/views/erp/sale/order/index.vue b/src/views/erp/sale/order/index.vue new file mode 100644 index 00000000..a8a85ef6 --- /dev/null +++ b/src/views/erp/sale/order/index.vue @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:sale-order:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/sale/out/SaleOutForm.vue b/src/views/erp/sale/out/SaleOutForm.vue new file mode 100644 index 00000000..7d47713a --- /dev/null +++ b/src/views/erp/sale/out/SaleOutForm.vue @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + 选择 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + + + + diff --git a/src/views/erp/sale/out/components/SaleOutItemForm.vue b/src/views/erp/sale/out/components/SaleOutItemForm.vue new file mode 100644 index 00000000..15cbef05 --- /dev/null +++ b/src/views/erp/sale/out/components/SaleOutItemForm.vue @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + diff --git a/src/views/erp/sale/out/components/SaleOutReceiptEnableList.vue b/src/views/erp/sale/out/components/SaleOutReceiptEnableList.vue new file mode 100644 index 00000000..0c4a21d1 --- /dev/null +++ b/src/views/erp/sale/out/components/SaleOutReceiptEnableList.vue @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.receiptPrice) }} + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/sale/out/index.vue b/src/views/erp/sale/out/index.vue new file mode 100644 index 00000000..9e1ff3cf --- /dev/null +++ b/src/views/erp/sale/out/index.vue @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:sale-out:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.receiptPrice) }} + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/sale/return/SaleReturnForm.vue b/src/views/erp/sale/return/SaleReturnForm.vue new file mode 100644 index 00000000..b10403b8 --- /dev/null +++ b/src/views/erp/sale/return/SaleReturnForm.vue @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + 选择 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + + + + diff --git a/src/views/erp/sale/return/components/SaleReturnItemForm.vue b/src/views/erp/sale/return/components/SaleReturnItemForm.vue new file mode 100644 index 00000000..adb9fd41 --- /dev/null +++ b/src/views/erp/sale/return/components/SaleReturnItemForm.vue @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + diff --git a/src/views/erp/sale/return/components/SaleReturnRefundEnableList.vue b/src/views/erp/sale/return/components/SaleReturnRefundEnableList.vue new file mode 100644 index 00000000..dc875e69 --- /dev/null +++ b/src/views/erp/sale/return/components/SaleReturnRefundEnableList.vue @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.refundPrice) }} + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/sale/return/index.vue b/src/views/erp/sale/return/index.vue new file mode 100644 index 00000000..6b3b1b37 --- /dev/null +++ b/src/views/erp/sale/return/index.vue @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:sale-return:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + 0 + + {{ erpPriceInputFormatter(scope.row.totalPrice - scope.row.refundPrice) }} + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/stock/check/StockCheckForm.vue b/src/views/erp/stock/check/StockCheckForm.vue new file mode 100644 index 00000000..9e7f6739 --- /dev/null +++ b/src/views/erp/stock/check/StockCheckForm.vue @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/stock/check/components/StockCheckItemForm.vue b/src/views/erp/stock/check/components/StockCheckItemForm.vue new file mode 100644 index 00000000..60363114 --- /dev/null +++ b/src/views/erp/stock/check/components/StockCheckItemForm.vue @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加盘点产品 + + + diff --git a/src/views/erp/stock/check/index.vue b/src/views/erp/stock/check/index.vue new file mode 100644 index 00000000..a9f08819 --- /dev/null +++ b/src/views/erp/stock/check/index.vue @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:stock-check:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/stock/in/StockInForm.vue b/src/views/erp/stock/in/StockInForm.vue new file mode 100644 index 00000000..f36bbb60 --- /dev/null +++ b/src/views/erp/stock/in/StockInForm.vue @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/stock/in/components/StockInItemForm.vue b/src/views/erp/stock/in/components/StockInItemForm.vue new file mode 100644 index 00000000..53a2fd2d --- /dev/null +++ b/src/views/erp/stock/in/components/StockInItemForm.vue @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加入库产品 + + + diff --git a/src/views/erp/stock/in/index.vue b/src/views/erp/stock/in/index.vue new file mode 100644 index 00000000..6ad80f96 --- /dev/null +++ b/src/views/erp/stock/in/index.vue @@ -0,0 +1,374 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:stock-in:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/stock/move/StockMoveForm.vue b/src/views/erp/stock/move/StockMoveForm.vue new file mode 100644 index 00000000..df942c63 --- /dev/null +++ b/src/views/erp/stock/move/StockMoveForm.vue @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/stock/move/components/StockMoveItemForm.vue b/src/views/erp/stock/move/components/StockMoveItemForm.vue new file mode 100644 index 00000000..8971956f --- /dev/null +++ b/src/views/erp/stock/move/components/StockMoveItemForm.vue @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加调度产品 + + + diff --git a/src/views/erp/stock/move/index.vue b/src/views/erp/stock/move/index.vue new file mode 100644 index 00000000..f9f0f5b1 --- /dev/null +++ b/src/views/erp/stock/move/index.vue @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:stock-move:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/stock/out/StockOutForm.vue b/src/views/erp/stock/out/StockOutForm.vue new file mode 100644 index 00000000..8ae8d633 --- /dev/null +++ b/src/views/erp/stock/out/StockOutForm.vue @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + + 取 消 + + + + diff --git a/src/views/erp/stock/out/components/StockOutItemForm.vue b/src/views/erp/stock/out/components/StockOutItemForm.vue new file mode 100644 index 00000000..b09a5695 --- /dev/null +++ b/src/views/erp/stock/out/components/StockOutItemForm.vue @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + 添加出库产品 + + + diff --git a/src/views/erp/stock/out/index.vue b/src/views/erp/stock/out/index.vue new file mode 100644 index 00000000..20542596 --- /dev/null +++ b/src/views/erp/stock/out/index.vue @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + item.id))" + v-hasPermi="['erp:stock-out:delete']" + :disabled="selectionList.length === 0" + > + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + 详情 + + + 编辑 + + + 审批 + + + 反审批 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/erp/stock/record/index.vue b/src/views/erp/stock/record/index.vue new file mode 100644 index 00000000..cbd48bd1 --- /dev/null +++ b/src/views/erp/stock/record/index.vue @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/erp/stock/stock/index.vue b/src/views/erp/stock/stock/index.vue new file mode 100644 index 00000000..04f7da2a --- /dev/null +++ b/src/views/erp/stock/stock/index.vue @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/erp/stock/warehouse/WarehouseForm.vue b/src/views/erp/stock/warehouse/WarehouseForm.vue new file mode 100644 index 00000000..ea88a18c --- /dev/null +++ b/src/views/erp/stock/warehouse/WarehouseForm.vue @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + {{ dict.label }} + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/erp/stock/warehouse/index.vue b/src/views/erp/stock/warehouse/index.vue new file mode 100644 index 00000000..6d112565 --- /dev/null +++ b/src/views/erp/stock/warehouse/index.vue @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + 搜索 + 重置 + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + diff --git a/src/views/infra/file/FileForm.vue b/src/views/infra/file/FileForm.vue index beeaea01..1de1e253 100644 --- a/src/views/infra/file/FileForm.vue +++ b/src/views/infra/file/FileForm.vue @@ -3,16 +3,16 @@ @@ -31,7 +31,7 @@