diff --git a/src/api/oa/erp/afterSales/index.ts b/src/api/oa/erp/afterSales/index.ts new file mode 100644 index 0000000..0d46c05 --- /dev/null +++ b/src/api/oa/erp/afterSales/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { AfterSalesVO, AfterSalesForm, AfterSalesQuery } from '@/api/oa/erp/afterSales/types'; + +/** + * 查询项目售后信息列表 + * @param query + * @returns {*} + */ + +export const listAfterSales = (query?: AfterSalesQuery): AxiosPromise => { + return request({ + url: '/oa/erp/afterSales/list', + method: 'get', + params: query + }); +}; + +/** + * 查询项目售后信息详细 + * @param afterSalesId + */ +export const getAfterSales = (afterSalesId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/afterSales/' + afterSalesId, + method: 'get' + }); +}; + +/** + * 新增项目售后信息 + * @param data + */ +export const addAfterSales = (data: AfterSalesForm) => { + return request({ + url: '/oa/erp/afterSales', + method: 'post', + data: data + }); +}; + +/** + * 修改项目售后信息 + * @param data + */ +export const updateAfterSales = (data: AfterSalesForm) => { + return request({ + url: '/oa/erp/afterSales', + method: 'put', + data: data + }); +}; + +/** + * 删除项目售后信息 + * @param afterSalesId + */ +export const delAfterSales = (afterSalesId: string | number | Array) => { + return request({ + url: '/oa/erp/afterSales/' + afterSalesId, + method: 'delete' + }); +}; + +/** + * 下拉框查询项目售后信息列表 + * @param query + * @returns {*} + */ +export function getErpAfterSalesList (query) { + return request({ + url: '/oa/erp/afterSales/getErpAfterSalesList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/afterSales/types.ts b/src/api/oa/erp/afterSales/types.ts new file mode 100644 index 0000000..d6e8584 --- /dev/null +++ b/src/api/oa/erp/afterSales/types.ts @@ -0,0 +1,396 @@ +export interface AfterSalesVO { + /** + * 售后ID + */ + afterSalesId: string | number; + + /** + * 售后编号 + */ + afterSalesCode: string; + + /** + * 售后主题 + */ + afterSalesSubject: string; + + /** + * 项目ID + */ + projectId: string | number; + + /** + * 项目编号 + */ + projectCode: string; + + /** + * 项目名称 + */ + projectName: string; + + /** + * 客户ID + */ + customerId: string | number; + + /** + * 客户名称 + */ + customerName: string; + + /** + * 联系人 + */ + contactPerson: string; + + /** + * 联系电话 + */ + contactPhone: string; + + /** + * 售后日期 + */ + afterSalesDate: string; + + /** + * 合同ID + */ + contractId: string | number; + + /** + * 合同号 + */ + contractCode: string; + + /** + * 售后类型 + */ + afterSalesType: string; + + /** + * 客户干系人ID(关联客户联系人表) + */ + stakeholderId: string | number; + + /** + * 处理人ID(关联用户表) + */ + handlerId: string | number; + + /** + * 问题描述 + */ + problemDescription: string; + + /** + * 售后总工时 + */ + totalWorkHours: number; + + /** + * 售后总成本 + */ + totalCost: number; + + /** + * 售后问题是否解决(0未解决 1已解决 2部分解决) + */ + solveStatus: string; + + /** + * 完成日期 + */ + completionDate: string; + + /** + * 处理结果 + */ + processingResult: string; + + /** + * 售后状态(0暂存 1审批中 2可用) + */ + afterSalesStatus: string; + + /** + * 流程状态 + */ + flowStatus: string; + + /** + * 激活标识(1是 0否) + */ + activeFlag: string; + + /** + * 备注 + */ + remark: string; + +} + +export interface AfterSalesForm extends BaseEntity { + /** + * 售后ID + */ + afterSalesId?: string | number; + + /** + * 售后编号 + */ + afterSalesCode?: string; + + /** + * 售后主题 + */ + afterSalesSubject?: string; + + /** + * 项目ID + */ + projectId?: string | number; + + /** + * 项目编号 + */ + projectCode?: string; + + /** + * 项目名称 + */ + projectName?: string; + + /** + * 客户ID + */ + customerId?: string | number; + + /** + * 客户名称 + */ + customerName?: string; + + /** + * 联系人 + */ + contactPerson?: string; + + /** + * 联系电话 + */ + contactPhone?: string; + + /** + * 售后日期 + */ + afterSalesDate?: string; + + /** + * 合同ID + */ + contractId?: string | number; + + /** + * 合同号 + */ + contractCode?: string; + + /** + * 售后类型 + */ + afterSalesType?: string; + + /** + * 客户干系人ID(关联客户联系人表) + */ + stakeholderId?: string | number; + + /** + * 处理人ID(关联用户表) + */ + handlerId?: string | number; + + /** + * 问题描述 + */ + problemDescription?: string; + + /** + * 售后总工时 + */ + totalWorkHours?: number; + + /** + * 售后总成本 + */ + totalCost?: number; + + /** + * 售后问题是否解决(0未解决 1已解决 2部分解决) + */ + solveStatus?: string; + + /** + * 完成日期 + */ + completionDate?: string; + + /** + * 处理结果 + */ + processingResult?: string; + + /** + * 售后状态(0暂存 1审批中 2可用) + */ + afterSalesStatus?: string; + + /** + * 流程状态 + */ + flowStatus?: string; + + /** + * 激活标识(1是 0否) + */ + activeFlag?: string; + + /** + * 备注 + */ + remark?: string; + +} + +export interface AfterSalesQuery extends PageQuery { + + /** + * 售后编号 + */ + afterSalesCode?: string; + + /** + * 售后主题 + */ + afterSalesSubject?: string; + + /** + * 项目ID + */ + projectId?: string | number; + + /** + * 项目编号 + */ + projectCode?: string; + + /** + * 项目名称 + */ + projectName?: string; + + /** + * 客户ID + */ + customerId?: string | number; + + /** + * 客户名称 + */ + customerName?: string; + + /** + * 联系人 + */ + contactPerson?: string; + + /** + * 联系电话 + */ + contactPhone?: string; + + /** + * 售后日期 + */ + afterSalesDate?: string; + + /** + * 合同ID + */ + contractId?: string | number; + + /** + * 合同号 + */ + contractCode?: string; + + /** + * 售后类型 + */ + afterSalesType?: string; + + /** + * 客户干系人ID(关联客户联系人表) + */ + stakeholderId?: string | number; + + /** + * 处理人ID(关联用户表) + */ + handlerId?: string | number; + + /** + * 问题描述 + */ + problemDescription?: string; + + /** + * 售后总工时 + */ + totalWorkHours?: number; + + /** + * 售后总成本 + */ + totalCost?: number; + + /** + * 售后问题是否解决(0未解决 1已解决 2部分解决) + */ + solveStatus?: string; + + /** + * 完成日期 + */ + completionDate?: string; + + /** + * 处理结果 + */ + processingResult?: string; + + /** + * 售后状态(0暂存 1审批中 2可用) + */ + afterSalesStatus?: string; + + /** + * 流程状态 + */ + flowStatus?: string; + + /** + * 激活标识(1是 0否) + */ + activeFlag?: string; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/oa/erp/afterSalesLaborCosts/index.ts b/src/api/oa/erp/afterSalesLaborCosts/index.ts new file mode 100644 index 0000000..944ba28 --- /dev/null +++ b/src/api/oa/erp/afterSalesLaborCosts/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { AfterSalesLaborCostsVO, AfterSalesLaborCostsForm, AfterSalesLaborCostsQuery } from '@/api/oa/erp/afterSalesLaborCosts/types'; + +/** + * 查询售后人员费用明细列表 + * @param query + * @returns {*} + */ + +export const listAfterSalesLaborCosts = (query?: AfterSalesLaborCostsQuery): AxiosPromise => { + return request({ + url: '/oa/erp/afterSalesLaborCosts/list', + method: 'get', + params: query + }); +}; + +/** + * 查询售后人员费用明细详细 + * @param laborCostsId + */ +export const getAfterSalesLaborCosts = (laborCostsId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/afterSalesLaborCosts/' + laborCostsId, + method: 'get' + }); +}; + +/** + * 新增售后人员费用明细 + * @param data + */ +export const addAfterSalesLaborCosts = (data: AfterSalesLaborCostsForm) => { + return request({ + url: '/oa/erp/afterSalesLaborCosts', + method: 'post', + data: data + }); +}; + +/** + * 修改售后人员费用明细 + * @param data + */ +export const updateAfterSalesLaborCosts = (data: AfterSalesLaborCostsForm) => { + return request({ + url: '/oa/erp/afterSalesLaborCosts', + method: 'put', + data: data + }); +}; + +/** + * 删除售后人员费用明细 + * @param laborCostsId + */ +export const delAfterSalesLaborCosts = (laborCostsId: string | number | Array) => { + return request({ + url: '/oa/erp/afterSalesLaborCosts/' + laborCostsId, + method: 'delete' + }); +}; + +/** + * 下拉框查询售后人员费用明细列表 + * @param query + * @returns {*} + */ +export function getErpAfterSalesLaborCostsList (query) { + return request({ + url: '/oa/erp/afterSalesLaborCosts/getErpAfterSalesLaborCostsList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/afterSalesLaborCosts/types.ts b/src/api/oa/erp/afterSalesLaborCosts/types.ts new file mode 100644 index 0000000..b3d3a4d --- /dev/null +++ b/src/api/oa/erp/afterSalesLaborCosts/types.ts @@ -0,0 +1,126 @@ +export interface AfterSalesLaborCostsVO { + /** + * 人员费用ID + */ + laborCostsId: string | number; + + /** + * 售后ID + */ + afterSalesId: string | number; + + /** + * 人员ID(关联用户表) + */ + laborId: string | number; + + /** + * 人员姓名 + */ + laborName: string; + + /** + * 费用科目 + */ + expenseItem: string; + + /** + * 成本 + */ + cost: number; + + /** + * 备注 + */ + remark: string; + + /** + * 排序号 + */ + sortOrder: number; + +} + +export interface AfterSalesLaborCostsForm extends BaseEntity { + /** + * 人员费用ID + */ + laborCostsId?: string | number; + + /** + * 售后ID + */ + afterSalesId?: string | number; + + /** + * 人员ID(关联用户表) + */ + laborId?: string | number; + + /** + * 人员姓名 + */ + laborName?: string; + + /** + * 费用科目 + */ + expenseItem?: string; + + /** + * 成本 + */ + cost?: number; + + /** + * 备注 + */ + remark?: string; + + /** + * 排序号 + */ + sortOrder?: number; + +} + +export interface AfterSalesLaborCostsQuery extends PageQuery { + + /** + * 售后ID + */ + afterSalesId?: string | number; + + /** + * 人员ID(关联用户表) + */ + laborId?: string | number; + + /** + * 人员姓名 + */ + laborName?: string; + + /** + * 费用科目 + */ + expenseItem?: string; + + /** + * 成本 + */ + cost?: number; + + /** + * 排序号 + */ + sortOrder?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/oa/erp/afterSalesMaterialCosts/index.ts b/src/api/oa/erp/afterSalesMaterialCosts/index.ts new file mode 100644 index 0000000..040e6c9 --- /dev/null +++ b/src/api/oa/erp/afterSalesMaterialCosts/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { AfterSalesMaterialCostsVO, AfterSalesMaterialCostsForm, AfterSalesMaterialCostsQuery } from '@/api/oa/erp/afterSalesMaterialCosts/types'; + +/** + * 查询售后材料费用明细列表 + * @param query + * @returns {*} + */ + +export const listAfterSalesMaterialCosts = (query?: AfterSalesMaterialCostsQuery): AxiosPromise => { + return request({ + url: '/oa/erp/afterSalesMaterialCosts/list', + method: 'get', + params: query + }); +}; + +/** + * 查询售后材料费用明细详细 + * @param materialCostsId + */ +export const getAfterSalesMaterialCosts = (materialCostsId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/afterSalesMaterialCosts/' + materialCostsId, + method: 'get' + }); +}; + +/** + * 新增售后材料费用明细 + * @param data + */ +export const addAfterSalesMaterialCosts = (data: AfterSalesMaterialCostsForm) => { + return request({ + url: '/oa/erp/afterSalesMaterialCosts', + method: 'post', + data: data + }); +}; + +/** + * 修改售后材料费用明细 + * @param data + */ +export const updateAfterSalesMaterialCosts = (data: AfterSalesMaterialCostsForm) => { + return request({ + url: '/oa/erp/afterSalesMaterialCosts', + method: 'put', + data: data + }); +}; + +/** + * 删除售后材料费用明细 + * @param materialCostsId + */ +export const delAfterSalesMaterialCosts = (materialCostsId: string | number | Array) => { + return request({ + url: '/oa/erp/afterSalesMaterialCosts/' + materialCostsId, + method: 'delete' + }); +}; + +/** + * 下拉框查询售后材料费用明细列表 + * @param query + * @returns {*} + */ +export function getErpAfterSalesMaterialCostsList (query) { + return request({ + url: '/oa/erp/afterSalesMaterialCosts/getErpAfterSalesMaterialCostsList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/afterSalesMaterialCosts/types.ts b/src/api/oa/erp/afterSalesMaterialCosts/types.ts new file mode 100644 index 0000000..914eb08 --- /dev/null +++ b/src/api/oa/erp/afterSalesMaterialCosts/types.ts @@ -0,0 +1,246 @@ +export interface AfterSalesMaterialCostsVO { + /** + * 材料费用ID + */ + materialCostsId: string | number; + + /** + * 售后ID + */ + afterSalesId: string | number; + + /** + * 物料ID + */ + materialId: string | number; + + /** + * 产品编码 + */ + productCode: string; + + /** + * 产品名称 + */ + productName: string; + + /** + * 规格型号 + */ + specificationModel: string; + + /** + * 单位ID + */ + unitId: string | number; + + /** + * 数量 + */ + quantity: number; + + /** + * 税率% + */ + taxRate: number; + + /** + * 含税单价 + */ + taxInclusivePrice: number; + + /** + * 含税金额 + */ + taxInclusiveAmount: number; + + /** + * 不含税单价 + */ + taxExclusivePrice: number; + + /** + * 不含税金额 + */ + taxExclusiveAmount: number; + + /** + * 赠品(0否 1是) + */ + giftFlag: string; + + /** + * 备注 + */ + remark: string; + + /** + * 排序号 + */ + sortOrder: number; + +} + +export interface AfterSalesMaterialCostsForm extends BaseEntity { + /** + * 材料费用ID + */ + materialCostsId?: string | number; + + /** + * 售后ID + */ + afterSalesId?: string | number; + + /** + * 物料ID + */ + materialId?: string | number; + + /** + * 产品编码 + */ + productCode?: string; + + /** + * 产品名称 + */ + productName?: string; + + /** + * 规格型号 + */ + specificationModel?: string; + + /** + * 单位ID + */ + unitId?: string | number; + + /** + * 数量 + */ + quantity?: number; + + /** + * 税率% + */ + taxRate?: number; + + /** + * 含税单价 + */ + taxInclusivePrice?: number; + + /** + * 含税金额 + */ + taxInclusiveAmount?: number; + + /** + * 不含税单价 + */ + taxExclusivePrice?: number; + + /** + * 不含税金额 + */ + taxExclusiveAmount?: number; + + /** + * 赠品(0否 1是) + */ + giftFlag?: string; + + /** + * 备注 + */ + remark?: string; + + /** + * 排序号 + */ + sortOrder?: number; + +} + +export interface AfterSalesMaterialCostsQuery extends PageQuery { + + /** + * 售后ID + */ + afterSalesId?: string | number; + + /** + * 物料ID + */ + materialId?: string | number; + + /** + * 产品编码 + */ + productCode?: string; + + /** + * 产品名称 + */ + productName?: string; + + /** + * 规格型号 + */ + specificationModel?: string; + + /** + * 单位ID + */ + unitId?: string | number; + + /** + * 数量 + */ + quantity?: number; + + /** + * 税率% + */ + taxRate?: number; + + /** + * 含税单价 + */ + taxInclusivePrice?: number; + + /** + * 含税金额 + */ + taxInclusiveAmount?: number; + + /** + * 不含税单价 + */ + taxExclusivePrice?: number; + + /** + * 不含税金额 + */ + taxExclusiveAmount?: number; + + /** + * 赠品(0否 1是) + */ + giftFlag?: string; + + /** + * 排序号 + */ + sortOrder?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/enums/OAEnum.ts b/src/enums/OAEnum.ts index 2722db2..a31242f 100644 --- a/src/enums/OAEnum.ts +++ b/src/enums/OAEnum.ts @@ -16,6 +16,11 @@ export enum CodeRuleEnum { * 研发项目编号规则 */ PROJECT_RD = '1003', + + /** + * 项目售后编号规则 + */ + AFTER_SALES = '1012', } /** diff --git a/src/views/oa/erp/afterSales/edit.vue b/src/views/oa/erp/afterSales/edit.vue new file mode 100644 index 0000000..27956e1 --- /dev/null +++ b/src/views/oa/erp/afterSales/edit.vue @@ -0,0 +1,1038 @@ + + + + + diff --git a/src/views/oa/erp/afterSales/index.vue b/src/views/oa/erp/afterSales/index.vue new file mode 100644 index 0000000..9342fc1 --- /dev/null +++ b/src/views/oa/erp/afterSales/index.vue @@ -0,0 +1,394 @@ + + + diff --git a/src/views/oa/erp/afterSalesLaborCosts/index.vue b/src/views/oa/erp/afterSalesLaborCosts/index.vue new file mode 100644 index 0000000..dc0ccce --- /dev/null +++ b/src/views/oa/erp/afterSalesLaborCosts/index.vue @@ -0,0 +1,283 @@ + + + diff --git a/src/views/oa/erp/afterSalesMaterialCosts/index.vue b/src/views/oa/erp/afterSalesMaterialCosts/index.vue new file mode 100644 index 0000000..19a46c7 --- /dev/null +++ b/src/views/oa/erp/afterSalesMaterialCosts/index.vue @@ -0,0 +1,376 @@ + + +