From 093e81ca31e224b8c719cbe2a348f35a4dfd2a03 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 1 Nov 2024 15:08:30 +0800 Subject: [PATCH] =?UTF-8?q?V1.1.1=20=E4=B8=9A=E7=BB=A9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/crm/crmachievement/index.ts | 61 + src/locales/zh-CN.ts | 2 +- src/views/Home/Index.vue | 51 +- src/views/Home/components/echart/index.vue | 254 ++++ src/views/Home/echarts-data.ts | 82 ++ src/views/Home/wait.vue | 251 ++++ .../crm/crmachievement/AchievementForm.vue | 205 ++++ .../crm/crmachievement/AchievementForm2.vue | 214 ++++ src/views/crm/crmachievement/index.vue | 1021 +++++++++++++++++ 9 files changed, 2101 insertions(+), 40 deletions(-) create mode 100644 src/api/crm/crmachievement/index.ts create mode 100644 src/views/Home/components/echart/index.vue create mode 100644 src/views/Home/wait.vue create mode 100644 src/views/crm/crmachievement/AchievementForm.vue create mode 100644 src/views/crm/crmachievement/AchievementForm2.vue create mode 100644 src/views/crm/crmachievement/index.vue diff --git a/src/api/crm/crmachievement/index.ts b/src/api/crm/crmachievement/index.ts new file mode 100644 index 0000000..21671b9 --- /dev/null +++ b/src/api/crm/crmachievement/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +// 业绩目标 VO +export interface AchievementVO { + id: number // id + name: string // 名称 + config: number // 1销售(目标)2回款(目标) + type: number // 2部门3员工 + typeId: number // 对象ID + year: number // 年 + january: number // 一月 + february: number // 二月 + march: number // 三月 + april: number // 四月 + may: number // 五月 + june: number // 六月 + july: number // 七月 + august: number // 八月 + september: number // 九月 + october: number // 十月 + november: number // 十一月 + december: number // 十二月 + yeartarget: number // 年目标 +} + +// 业绩目标 API +export const AchievementApi = { + // 查询业绩目标分页 + getAchievementPage: async (params: any) => { + return await request.get({ url: `/crm/achievement/page`, params }) + }, + + getAchievementDept: async (params: any) => { + return await request.get({ url: `/crm/achievement/depts`, params }) + }, + + // 查询业绩目标详情 + getAchievement: async (id: number) => { + return await request.get({ url: `/crm/achievement/get?id=` + id }) + }, + + // 新增业绩目标 + createAchievement: async (data: AchievementVO) => { + return await request.post({ url: `/crm/achievement/create`, data }) + }, + + // 修改业绩目标 + updateAchievement: async (data: AchievementVO) => { + return await request.put({ url: `/crm/achievement/update`, data }) + }, + + // 删除业绩目标 + deleteAchievement: async (id: number) => { + return await request.delete({ url: `/crm/achievement/delete?id=` + id }) + }, + + // 业绩统计 + achievementCount: async (params) => { + return await request.get({ url: `/crm/achievement/count`, params }) + } +} \ No newline at end of file diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 9bd0a30..f4102c8 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -152,7 +152,7 @@ export default { router: { login: '登录', socialLogin: '社交登录', - home: '待办事项', + home: '控制台', analysis: '分析页', workplace: '工作台' }, diff --git a/src/views/Home/Index.vue b/src/views/Home/Index.vue index 6970394..54aa4f4 100644 --- a/src/views/Home/Index.vue +++ b/src/views/Home/Index.vue @@ -112,45 +112,28 @@
- - - - - - - - - - - - - - + + + +
+ + diff --git a/src/views/Home/echarts-data.ts b/src/views/Home/echarts-data.ts index 56093f4..fe77b3a 100644 --- a/src/views/Home/echarts-data.ts +++ b/src/views/Home/echarts-data.ts @@ -2,6 +2,88 @@ import { EChartsOption } from 'echarts' const { t } = useI18n() +const gaugeData = [ + { + value: 20, + name: '合同金额', + title: { + offsetCenter: ['0%', '-33%'] + }, + detail: { + valueAnimation: true, + offsetCenter: ['0%', '-20%'] + } + }, + { + value: 40, + name: '回款金额', + title: { + offsetCenter: ['0%', '-2%'] + }, + detail: { + valueAnimation: true, + offsetCenter: ['0%', '10%'] + } + } +] + +export const clockOptions: EChartsOption = { + series: [ + { + type: 'gauge', + startAngle: 90, + endAngle: -270, + pointer: { + show: false + }, + progress: { + show: true, + overlap: false, + roundCap: true, + clip: false, + itemStyle: { + borderWidth: 1, + borderColor: '#464646' + } + }, + axisLine: { + lineStyle: { + width: 40 + } + }, + splitLine: { + show: false, + distance: 0, + length: 10 + }, + axisTick: { + show: false + }, + axisLabel: { + show: false, + distance: 50 + }, + data: gaugeData, + title: { + fontSize: 14, + }, + detail: { + width: 50, + height: 14, + fontSize: 14, + color: 'inherit', + borderColor: 'inherit', + borderRadius: 20, + borderWidth: 1, + formatter: '{value}%' + } + } + ] +} + + + + export const lineOptions: EChartsOption = { title: { text: t('analysis.monthlySales'), diff --git a/src/views/Home/wait.vue b/src/views/Home/wait.vue new file mode 100644 index 0000000..9c9344a --- /dev/null +++ b/src/views/Home/wait.vue @@ -0,0 +1,251 @@ + + + + diff --git a/src/views/crm/crmachievement/AchievementForm.vue b/src/views/crm/crmachievement/AchievementForm.vue new file mode 100644 index 0000000..2e14201 --- /dev/null +++ b/src/views/crm/crmachievement/AchievementForm.vue @@ -0,0 +1,205 @@ + + \ No newline at end of file diff --git a/src/views/crm/crmachievement/AchievementForm2.vue b/src/views/crm/crmachievement/AchievementForm2.vue new file mode 100644 index 0000000..61e212d --- /dev/null +++ b/src/views/crm/crmachievement/AchievementForm2.vue @@ -0,0 +1,214 @@ + + \ No newline at end of file diff --git a/src/views/crm/crmachievement/index.vue b/src/views/crm/crmachievement/index.vue new file mode 100644 index 0000000..adf5019 --- /dev/null +++ b/src/views/crm/crmachievement/index.vue @@ -0,0 +1,1021 @@ + + + \ No newline at end of file