Skip to content

Commit 2960580

Browse files
committed
✨ CRM:完善商机的新增、修改逻辑
1 parent 6baeadc commit 2960580

File tree

4 files changed

+53
-30
lines changed

4 files changed

+53
-30
lines changed

src/api/crm/business/status/index.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,27 @@ export interface BusinessStatusTypeVO {
1111
}
1212
}
1313

14+
export const DEFAULT_STATUSES = [
15+
{
16+
endStatus: 1,
17+
key: '结束',
18+
name: '赢单',
19+
percent: 100
20+
},
21+
{
22+
endStatus: 2,
23+
key: '结束',
24+
name: '输单',
25+
percent: 0
26+
},
27+
{
28+
endStatus: 3,
29+
key: '结束',
30+
name: '无效',
31+
percent: 0
32+
}
33+
]
34+
1435
// 查询商机状态组列表
1536
export const getBusinessStatusPage = async (params: any) => {
1637
return await request.get({ url: `/crm/business-status/page`, params })
@@ -31,6 +52,11 @@ export const getBusinessStatus = async (id: number) => {
3152
return await request.get({ url: `/crm/business-status/get?id=` + id })
3253
}
3354

55+
// 删除商机状态
56+
export const deleteBusinessStatus = async (id: number) => {
57+
return await request.delete({ url: `/crm/business-status/delete?id=` + id })
58+
}
59+
3460
// 获得商机状态组列表
3561
export const getBusinessStatusTypeSimpleList = async () => {
3662
return await request.get({ url: `/crm/business-status/type-simple-list` })

src/views/crm/business/BusinessForm.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
placeholder="请选择商机状态组"
5151
clearable
5252
class="w-1/1"
53+
:disabled="formType !== 'create'"
5354
>
5455
<el-option
5556
v-for="item in statusTypeList"

src/views/crm/business/status/BusinessStatusForm.vue

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,27 @@
2525
/>
2626
</el-form-item>
2727
<el-form-item label="阶段设置" prop="statuses">
28-
<el-table border style="width: 100%" :data="formData.statuses">
28+
<el-table
29+
border
30+
style="width: 100%"
31+
:data="formData.statuses.concat(BusinessStatusApi.DEFAULT_STATUSES)"
32+
>
2933
<el-table-column align="center" label="阶段" width="70">
3034
<template #default="scope">
31-
<el-text>阶段 {{ scope.$index + 1 }}</el-text>
35+
<el-text v-if="!scope.row.defaultStatus">阶段 {{ scope.$index + 1 }}</el-text>
36+
<el-text v-else>结束</el-text>
3237
</template>
3338
</el-table-column>
3439
<el-table-column align="center" label="阶段名称" width="160" prop="name">
3540
<template #default="{ row }">
36-
<el-input v-model="row.name" placeholder="请输入状态名称" />
41+
<el-input v-if="!row.endStatus" v-model="row.name" placeholder="请输入状态名称" />
42+
<el-text v-else>{{ row.name }}</el-text>
3743
</template>
3844
</el-table-column>
39-
<el-table-column width="140" align="center" label="赢单率" prop="percent">
45+
<el-table-column width="140" align="center" label="赢单率(%)" prop="percent">
4046
<template #default="{ row }">
4147
<el-input-number
48+
v-if="!row.endStatus"
4249
v-model="row.percent"
4350
placeholder="请输入赢单率"
4451
controls-position="right"
@@ -47,12 +54,21 @@
4754
:precision="2"
4855
class="!w-1/1"
4956
/>
57+
<el-text v-else>{{ row.percent }}</el-text>
5058
</template>
5159
</el-table-column>
5260
<el-table-column label="操作" width="110" align="center">
5361
<template #default="scope">
54-
<el-button link type="primary" @click="addStatusArea(scope.$index)"> 添加 </el-button>
5562
<el-button
63+
v-if="!scope.row.endStatus"
64+
link
65+
type="primary"
66+
@click="addStatus(scope.$index)"
67+
>
68+
添加
69+
</el-button>
70+
<el-button
71+
v-if="!scope.row.endStatus"
5672
link
5773
type="danger"
5874
@click="deleteStatusArea(scope.$index)"
@@ -110,13 +126,13 @@ const open = async (type: string, id?: number) => {
110126
formData.value = await BusinessStatusApi.getBusinessStatus(id)
111127
treeRef.value.setCheckedKeys(formData.value.deptIds)
112128
if (formData.value.statuses.length == 0) {
113-
addStatusArea(0)
129+
addStatus()
114130
}
115131
} finally {
116132
formLoading.value = false
117133
}
118134
} else {
119-
addStatusArea(0)
135+
addStatus()
120136
}
121137
// 加载部门树
122138
deptList.value = handleTree(await DeptApi.getSimpleDeptList())
@@ -162,7 +178,7 @@ const resetForm = () => {
162178
}
163179
164180
/** 添加状态 */
165-
const addStatusArea = () => {
181+
const addStatus = () => {
166182
const data = formData.value
167183
data.statuses.push({
168184
name: '',

src/views/crm/business/status/index.vue

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ import { dateFormatter } from '@/utils/formatTime'
8080
import download from '@/utils/download'
8181
import * as BusinessStatusApi from '@/api/crm/business/status'
8282
import BusinessStatusForm from './BusinessStatusForm.vue'
83+
import { deleteBusinessStatus } from '@/api/crm/business/status'
8384
8485
defineOptions({ name: 'CrmBusinessStatus' })
8586
@@ -126,40 +127,19 @@ const openForm = (type: string, id?: number) => {
126127
formRef.value.open(type, id)
127128
}
128129
129-
/** 选择客户操作 */
130-
const formCustomerRef = ref()
131-
const openCustomerForm = (id?: number) => {
132-
formCustomerRef.value.open(id)
133-
}
134-
135130
/** 删除按钮操作 */
136131
const handleDelete = async (id: number) => {
137132
try {
138133
// 删除的二次确认
139134
await message.delConfirm()
140135
// 发起删除
141-
await BusinessStatusTypeApi.deleteBusinessStatusType(id)
136+
await BusinessStatusApi.deleteBusinessStatus(id)
142137
message.success(t('common.delSuccess'))
143138
// 刷新列表
144139
await getList()
145140
} catch {}
146141
}
147142
148-
/** 导出按钮操作 */
149-
const handleExport = async () => {
150-
try {
151-
// 导出的二次确认
152-
await message.exportConfirm()
153-
// 发起导出
154-
exportLoading.value = true
155-
const data = await BusinessStatusTypeApi.exportBusinessStatusType(queryParams)
156-
download.excel(data, '商机状态组.xls')
157-
} catch {
158-
} finally {
159-
exportLoading.value = false
160-
}
161-
}
162-
163143
/** 初始化 **/
164144
onMounted(() => {
165145
getList()

0 commit comments

Comments
 (0)