diff --git a/src/api/crm/quotation/index.ts b/src/api/crm/quotation/index.ts
index b9dd497bb..41b6c6bb3 100644
--- a/src/api/crm/quotation/index.ts
+++ b/src/api/crm/quotation/index.ts
@@ -45,8 +45,9 @@ export const QuotationApi = {
return await request.get({ url: `/crm/quotation/simple-all-list` })
},
// 获得 CRM 方案营收分析
- getRevenueList : async () => {
- return await request.get({ url: `/crm/quotation/get-revenue-analysis` })
+ getRevenueList : async (data: any) => {
+ return await request.post({ url: `/crm/quotation/get-revenue-analysis`,
+ data })
},
// 获得 CRM 方案列表(精简)
diff --git a/src/api/task/briefWork/index.ts b/src/api/task/briefWork/index.ts
new file mode 100644
index 000000000..f4f9a7828
--- /dev/null
+++ b/src/api/task/briefWork/index.ts
@@ -0,0 +1,51 @@
+import request from '@/config/axios'
+
+// 工作简报 VO
+export interface BriefWorkVO {
+ id: number // 唯一主键
+ briefType: number // 简报类型:1-日报,2-周报,3-月报
+ briefCount: number // 周报为周数/月报为月数
+ briefStartDate: Date // 简报开始日期
+ briefEndDate: Date // 简报结束日期
+ selectCustomer: boolean // 是否选择客户
+ workComplate: string // 本周期完成工作
+ workPlan: string // 下周期工作计划
+ workAssistance: string // 工作困难及协助
+ workExperience: string // 工作心得分享
+ attachment: string // 附件
+ processInstanceId: string // 工作流编号
+ auditStatus: number // 审批状态
+}
+
+// 工作简报 API
+export const BriefWorkApi = {
+ // 查询工作简报分页
+ getBriefWorkPage: async (params: any) => {
+ return await request.get({ url: `/tts/brief-work/page`, params })
+ },
+
+ // 查询工作简报详情
+ getBriefWork: async (params: any) => {
+ return await request.get({ url: `/tts/brief-work/get`, params})
+ },
+
+ // 新增工作简报
+ createBriefWork: async (data: BriefWorkVO) => {
+ return await request.post({ url: `/tts/brief-work/create`, data })
+ },
+
+ // 修改工作简报
+ updateBriefWork: async (data: BriefWorkVO) => {
+ return await request.put({ url: `/tts/brief-work/update`, data })
+ },
+
+ // 删除工作简报
+ deleteBriefWork: async (id: number) => {
+ return await request.delete({ url: `/tts/brief-work/delete?id=` + id })
+ },
+
+ // 导出工作简报 Excel
+ exportBriefWork: async (params) => {
+ return await request.download({ url: `/tts/brief-work/export-excel`, params })
+ }
+}
\ No newline at end of file
diff --git a/src/api/task/briefWorkCustomer/index.ts b/src/api/task/briefWorkCustomer/index.ts
new file mode 100644
index 000000000..c2dd93583
--- /dev/null
+++ b/src/api/task/briefWorkCustomer/index.ts
@@ -0,0 +1,40 @@
+import request from '@/config/axios'
+
+// 工作简报客户 VO
+export interface BriefWorkCustomerVO {
+ briefId: number // 简报ID
+ customerId: number // 客户Id
+}
+
+// 工作简报客户 API
+export const BriefWorkCustomerApi = {
+ // 查询工作简报客户分页
+ getBriefWorkCustomerPage: async (params: any) => {
+ return await request.get({ url: `/tts/brief-work-customer/page`, params })
+ },
+
+ // 查询工作简报客户详情
+ getBriefWorkCustomer: async (id: number) => {
+ return await request.get({ url: `/tts/brief-work-customer/get?id=` + id })
+ },
+
+ // 新增工作简报客户
+ createBriefWorkCustomer: async (data: BriefWorkCustomerVO) => {
+ return await request.post({ url: `/tts/brief-work-customer/create`, data })
+ },
+
+ // 修改工作简报客户
+ updateBriefWorkCustomer: async (data: BriefWorkCustomerVO) => {
+ return await request.put({ url: `/tts/brief-work-customer/update`, data })
+ },
+
+ // 删除工作简报客户
+ deleteBriefWorkCustomer: async (id: number) => {
+ return await request.delete({ url: `/tts/brief-work-customer/delete?id=` + id })
+ },
+
+ // 导出工作简报客户 Excel
+ exportBriefWorkCustomer: async (params) => {
+ return await request.download({ url: `/tts/brief-work-customer/export-excel`, params })
+ }
+}
\ No newline at end of file
diff --git a/src/components/Task/index.vue b/src/components/Task/index.vue
new file mode 100644
index 000000000..3cc0ffc86
--- /dev/null
+++ b/src/components/Task/index.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/customer/index.vue b/src/components/customer/index.vue
new file mode 100644
index 000000000..841c49306
--- /dev/null
+++ b/src/components/customer/index.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index c2f26a2e2..c34e7256c 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -882,6 +882,50 @@ const remainingRouter: AppRouteRecordRaw[] = [
},
component: () => import('@/views/task/online/OnlineApplicationDetail.vue')
},
+ {
+ path: 'briefWork/BriefWorkDetail',
+ name: 'DayReportDetail',
+ meta: {
+ title: '日报详情',
+ noCache: true,
+ hidden: true,
+ activeMenu: '/project/briefWork'
+ },
+ component: () => import('@/views/task/briefWork/BriefWorkDetail.vue')
+ },
+ {
+ path: 'briefWork/BriefWorkForm',
+ name: 'DayReportAdd',
+ meta: {
+ title: '日报新增',
+ noCache: true,
+ hidden: true,
+ activeMenu: '/project/briefWork'
+ },
+ component: () => import('@/views/task/briefWork/BriefWorkForm.vue')
+ },
+ {
+ path: 'briefWeekWork/BriefworkWeekDetail',
+ name: 'WeekReportDetail',
+ meta: {
+ title: '周报详情',
+ noCache: true,
+ hidden: true,
+ activeMenu: '/project/bridfWeekWork'
+ },
+ component: () => import('@/views/task/briefWeekWork/BriefWorkWeekDetail.vue')
+ },
+ {
+ path: 'briefWeekWork/BriefWorkWeekForm',
+ name: 'WeekReportAdd',
+ meta: {
+ title: '周报新增',
+ noCache: true,
+ hidden: true,
+ activeMenu: '/project/bridfWeekWork'
+ },
+ component: () => import('@/views/task/briefWeekWork/BriefWorkWeekForm.vue')
+ },
]
},
{
diff --git a/src/views/crm/business/index.vue b/src/views/crm/business/index.vue
index 233d76caf..ca79b9e61 100644
--- a/src/views/crm/business/index.vue
+++ b/src/views/crm/business/index.vue
@@ -46,11 +46,11 @@
-
+
diff --git a/src/views/crm/contact/index.vue b/src/views/crm/contact/index.vue
index cd8813699..5a6d37555 100644
--- a/src/views/crm/contact/index.vue
+++ b/src/views/crm/contact/index.vue
@@ -106,7 +106,7 @@
-
+
diff --git a/src/views/crm/contract/index.vue b/src/views/crm/contract/index.vue
index cbc61e321..7855190d0 100644
--- a/src/views/crm/contract/index.vue
+++ b/src/views/crm/contract/index.vue
@@ -73,11 +73,11 @@
-
+
diff --git a/src/views/crm/customer/index.vue b/src/views/crm/customer/index.vue
index 2658adbf4..ad7bf0264 100644
--- a/src/views/crm/customer/index.vue
+++ b/src/views/crm/customer/index.vue
@@ -110,7 +110,7 @@
-
+
diff --git a/src/views/crm/quotation/QuotationForm.vue b/src/views/crm/quotation/QuotationForm.vue
index 0614b1593..b7905c724 100644
--- a/src/views/crm/quotation/QuotationForm.vue
+++ b/src/views/crm/quotation/QuotationForm.vue
@@ -536,8 +536,30 @@ const setSuccess = (val) => {
}
//获取营收分析
+const RevenueAnalysisFormRef = ref('')
+const newProducts = ref([])
const handleClick = (val) => {
+ newProducts.value = []
console.log('%csrc/views/crm/quotation/QuotationForm.vue:540 val', 'color: #007acc;', subTabsName.value);
+ formData.value.products.forEach( item => {
+ newProducts.value.push({
+ id: item.productId,
+ onlinePrice: item.onlinePrice,
+ offlinePrice: item.offlinePrice,
+ productUnit: item.productUnit,
+ productName: item.productName,
+ category: item.category
+ })
+ })
+ let data = {
+ businessId: formData.value.businessId,
+ creditMethod: formData.value.creditMethod,
+ paymentTerm: formData.value.paymentTerm,
+ quotationProducts: newProducts.value
+ }
+ console.log('%csrc/views/crm/quotation/QuotationForm.vue:551 newProducts.value', 'color: #007acc;', newProducts.value);
+
+ RevenueAnalysisFormRef.value.getData(data)
}
diff --git a/src/views/crm/quotation/components/RevenueAnalysis.vue b/src/views/crm/quotation/components/RevenueAnalysis.vue
index 43a81acdc..983199ccb 100644
--- a/src/views/crm/quotation/components/RevenueAnalysis.vue
+++ b/src/views/crm/quotation/components/RevenueAnalysis.vue
@@ -13,37 +13,37 @@
-
+ {{row.revenueAnalysisVO.salesVolume}}
- {{row.onlinePrice}}
+ {{row.revenueAnalysisVO.totalOrderVolume}}
- {{row.offlinePrice}}
+ {{row.revenueAnalysisVO.totalIncome}}
- {{row.downlinePrice}}
+ {{(row.revenueAnalysisVO.incomeInterestRate * 100).toFixed(2) + '%'}}
- {{row.totalPrice}}
+ {{row.revenueAnalysisVO.deductibleCost}}
-
+ {{row.revenueAnalysisVO.profit}}
-
+ {{(row.revenueAnalysisVO.profitRate * 100).toFixed(2) + '%'}}
@@ -74,7 +74,9 @@ const formData = ref([])
/** 表单值 */
const getData = async (data) => {
- formData.value = await QuotationApi.getQuotation(data)
+ let list = await QuotationApi.getRevenueList(data)
+ console.log('%csrc/views/crm/quotation/components/RevenueAnalysis.vue:79 list.totalRevenueAnalysis', 'color: #007acc;', list.totalRevenueAnalysis);
+ formData.value = list.quotationProducts
}
const getName = (opt, val) => {
const arr = opt.filter(v => v.value == val)
diff --git a/src/views/crm/quotation/index.vue b/src/views/crm/quotation/index.vue
index d7168df80..526e00105 100644
--- a/src/views/crm/quotation/index.vue
+++ b/src/views/crm/quotation/index.vue
@@ -99,11 +99,11 @@
-
+
diff --git a/src/views/task/briefWeekWork/BriefWorkWeekDetail.vue b/src/views/task/briefWeekWork/BriefWorkWeekDetail.vue
new file mode 100644
index 000000000..7953c32b3
--- /dev/null
+++ b/src/views/task/briefWeekWork/BriefWorkWeekDetail.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确 定
+ 取 消
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWeekWork/BriefWorkWeekForm.vue b/src/views/task/briefWeekWork/BriefWorkWeekForm.vue
new file mode 100644
index 000000000..e8cd1b13a
--- /dev/null
+++ b/src/views/task/briefWeekWork/BriefWorkWeekForm.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+ 选择客户
+
+
+
+ 选择任务
+
+
+
+ 日报信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确 定
+ 取 消
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWeekWork/components/selectCustomer.vue b/src/views/task/briefWeekWork/components/selectCustomer.vue
new file mode 100644
index 000000000..5e565c0fc
--- /dev/null
+++ b/src/views/task/briefWeekWork/components/selectCustomer.vue
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+ + 添加
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWeekWork/components/selectDayReport.vue b/src/views/task/briefWeekWork/components/selectDayReport.vue
new file mode 100644
index 000000000..1bfd16c13
--- /dev/null
+++ b/src/views/task/briefWeekWork/components/selectDayReport.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWeekWork/components/selectTask.vue b/src/views/task/briefWeekWork/components/selectTask.vue
new file mode 100644
index 000000000..1a4f69117
--- /dev/null
+++ b/src/views/task/briefWeekWork/components/selectTask.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{getName(userOptions, scope.row.userId)}}
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+ + 添加
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWeekWork/index.vue b/src/views/task/briefWeekWork/index.vue
new file mode 100644
index 000000000..003959f2d
--- /dev/null
+++ b/src/views/task/briefWeekWork/index.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+ {{getName(userOptions, scope.row.creator, 'id', 'nickname')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 进度
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWork/BriefWorkDetail.vue b/src/views/task/briefWork/BriefWorkDetail.vue
new file mode 100644
index 000000000..6666fe64a
--- /dev/null
+++ b/src/views/task/briefWork/BriefWorkDetail.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWork/BriefWorkForm.vue b/src/views/task/briefWork/BriefWorkForm.vue
new file mode 100644
index 000000000..16ae61b37
--- /dev/null
+++ b/src/views/task/briefWork/BriefWorkForm.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确 定
+ 取 消
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/briefWork/index.vue b/src/views/task/briefWork/index.vue
new file mode 100644
index 000000000..7a5661cee
--- /dev/null
+++ b/src/views/task/briefWork/index.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+ {{getName(userOptions, scope.row.creator, 'id', 'nickname')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 进度
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/task/online/index.vue b/src/views/task/online/index.vue
index d80d22494..588b24608 100644
--- a/src/views/task/online/index.vue
+++ b/src/views/task/online/index.vue
@@ -231,9 +231,7 @@ const resetQuery = () => {
const { push } = useRouter()
const router = useRouter() // 路由
const formRef = ref()
-const openForm = (type: string, id?: number) => {
- formRef.value.open(type, id)
-}
+
//新增
const openFormAdd = () => {
diff --git a/src/views/task/project/index.vue b/src/views/task/project/index.vue
index 231c72cf6..68a34c3a9 100644
--- a/src/views/task/project/index.vue
+++ b/src/views/task/project/index.vue
@@ -227,7 +227,7 @@
编辑