Skip to content

Commit 90e0baf

Browse files
author
puhui999
committed
CRM-合同:完善合同表单
1 parent 331b6c5 commit 90e0baf

File tree

3 files changed

+79
-53
lines changed

3 files changed

+79
-53
lines changed

src/api/crm/contract/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,8 @@ export const deleteContract = async (id: number) => {
5757
export const exportContract = async (params) => {
5858
return await request.download({ url: `/crm/contract/export-excel`, params })
5959
}
60+
61+
// 提交审核
62+
export const handleApprove = async (id: number) => {
63+
return await request.put({ url: `/crm/contract/approve?id=${id}` })
64+
}

src/views/crm/contract/ContractForm.vue

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,12 @@
145145
<CardTitle class="mb-10px" title="审批信息" />
146146
</el-col>
147147
<el-col :span="12">
148-
<el-form-item label="工作流" prop="processInstanceId">
149-
<el-input v-model="formData.processInstanceId" placeholder="请选择工作流" />
150-
</el-form-item>
148+
<el-button class="m-20px" link type="primary">查看工作流</el-button>
151149
</el-col>
152150
</el-row>
153151
</el-form>
154152
<template #footer>
155-
<el-button :disabled="formLoading" type="primary" @click="submitForm(1)">提交审核</el-button>
156-
<el-button :disabled="formLoading" type="primary" @click="submitForm(2)">保存草稿</el-button>
153+
<el-button :disabled="formLoading" type="primary" @click="submitForm">保存</el-button>
157154
<el-button @click="dialogVisible = false">取 消</el-button>
158155
</template>
159156
</Dialog>
@@ -165,7 +162,6 @@ import * as UserApi from '@/api/system/user'
165162
import * as ContactApi from '@/api/crm/contact'
166163
import * as BusinessApi from '@/api/crm/business'
167164
import ProductList from './components/ProductList.vue'
168-
import { cloneDeep } from 'lodash-es'
169165
170166
const { t } = useI18n() // 国际化
171167
const message = useMessage() // 消息弹窗
@@ -176,7 +172,11 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
176172
const formType = ref('') // 表单的类型:create - 新增;update - 修改
177173
const formData = ref<ContractApi.ContractVO>({} as ContractApi.ContractVO)
178174
const formRules = reactive({
179-
name: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }]
175+
name: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }],
176+
customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }],
177+
orderDate: [{ required: true, message: '下单日期不能为空', trigger: 'blur' }],
178+
ownerUserId: [{ required: true, message: '负责人不能为空', trigger: 'blur' }],
179+
no: [{ required: true, message: '合同编号不能为空', trigger: 'blur' }]
180180
})
181181
const formRef = ref() // 表单 Ref
182182
watch(
@@ -219,16 +219,15 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
219219
220220
/** 提交表单 */
221221
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
222-
const submitForm = async (status: number) => {
222+
const submitForm = async () => {
223223
// 校验表单
224224
if (!formRef) return
225225
const valid = await formRef.value.validate()
226226
if (!valid) return
227227
// 提交请求
228228
formLoading.value = true
229229
try {
230-
const data = cloneDeep(unref(formData.value)) as unknown as ContractApi.ContractVO
231-
data.status = status
230+
const data = unref(formData.value) as unknown as ContractApi.ContractVO
232231
if (formType.value === 'create') {
233232
await ContractApi.createContract(data)
234233
message.success(t('common.createSuccess'))

src/views/crm/contract/index.vue

Lines changed: 65 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,52 @@
22
<ContentWrap>
33
<!-- 搜索工作栏 -->
44
<el-form
5-
class="-mb-15px"
6-
:model="queryParams"
75
ref="queryFormRef"
86
:inline="true"
7+
:model="queryParams"
8+
class="-mb-15px"
99
label-width="68px"
1010
>
1111
<el-form-item label="合同编号" prop="no">
1212
<el-input
1313
v-model="queryParams.no"
14-
placeholder="请输入合同编号"
14+
class="!w-240px"
1515
clearable
16+
placeholder="请输入合同编号"
1617
@keyup.enter="handleQuery"
17-
class="!w-240px"
1818
/>
1919
</el-form-item>
2020
<el-form-item label="合同名称" prop="name">
2121
<el-input
2222
v-model="queryParams.name"
23-
placeholder="请输入合同名称"
23+
class="!w-240px"
2424
clearable
25+
placeholder="请输入合同名称"
2526
@keyup.enter="handleQuery"
26-
class="!w-240px"
2727
/>
2828
</el-form-item>
2929
<el-form-item>
30-
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
31-
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
32-
<el-button type="primary" @click="openForm('create')" v-hasPermi="['crm:contract:create']">
33-
<Icon icon="ep:plus" class="mr-5px" /> 新增
30+
<el-button @click="handleQuery">
31+
<Icon class="mr-5px" icon="ep:search" />
32+
搜索
33+
</el-button>
34+
<el-button @click="resetQuery">
35+
<Icon class="mr-5px" icon="ep:refresh" />
36+
重置
37+
</el-button>
38+
<el-button v-hasPermi="['crm:contract:create']" type="primary" @click="openForm('create')">
39+
<Icon class="mr-5px" icon="ep:plus" />
40+
新增
3441
</el-button>
3542
<el-button
36-
type="success"
43+
v-hasPermi="['crm:contract:export']"
44+
:loading="exportLoading"
3745
plain
46+
type="success"
3847
@click="handleExport"
39-
:loading="exportLoading"
40-
v-hasPermi="['crm:contract:export']"
4148
>
42-
<Icon icon="ep:download" class="mr-5px" /> 导出
49+
<Icon class="mr-5px" icon="ep:download" />
50+
导出
4351
</el-button>
4452
</el-form-item>
4553
</el-form>
@@ -48,70 +56,78 @@
4856
<!-- 列表 -->
4957
<!-- TODO 芋艿:各种字段要调整 -->
5058
<ContentWrap>
51-
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
52-
<el-table-column label="合同编号" align="center" prop="id" />
53-
<el-table-column label="合同名称" align="center" prop="name" />
54-
<el-table-column label="客户名称" align="center" prop="customerId" />
55-
<el-table-column label="商机名称" align="center" prop="businessId" />
56-
<el-table-column label="工作流名称" align="center" prop="processInstanceId" />
59+
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
60+
<el-table-column align="center" label="合同编号" prop="id" />
61+
<el-table-column align="center" label="合同名称" prop="name" />
62+
<el-table-column align="center" label="客户名称" prop="customerId" />
63+
<el-table-column align="center" label="商机名称" prop="businessId" />
64+
<el-table-column align="center" label="工作流名称" prop="processInstanceId" />
5765
<el-table-column
58-
label="下单时间"
66+
:formatter="dateFormatter"
5967
align="center"
68+
label="下单时间"
6069
prop="orderDate"
61-
:formatter="dateFormatter"
6270
width="180px"
6371
/>
64-
<el-table-column label="负责人" align="center" prop="ownerUserId" />
65-
<el-table-column label="合同编号" align="center" prop="no" />
72+
<el-table-column align="center" label="负责人" prop="ownerUserId" />
73+
<el-table-column align="center" label="合同编号" prop="no" />
6674
<el-table-column
67-
label="开始时间"
75+
:formatter="dateFormatter"
6876
align="center"
77+
label="开始时间"
6978
prop="startTime"
70-
:formatter="dateFormatter"
7179
width="180px"
7280
/>
7381
<el-table-column
74-
label="结束时间"
82+
:formatter="dateFormatter"
7583
align="center"
84+
label="结束时间"
7685
prop="endTime"
77-
:formatter="dateFormatter"
7886
width="180px"
7987
/>
80-
<el-table-column label="合同金额" align="center" prop="price" />
81-
<el-table-column label="整单折扣" align="center" prop="discountPercent" />
82-
<el-table-column label="产品总金额" align="center" prop="productPrice" />
83-
<el-table-column label="联系人" align="center" prop="contactId" />
84-
<el-table-column label="公司签约人" align="center" prop="signUserId" />
88+
<el-table-column align="center" label="合同金额" prop="price" />
89+
<el-table-column align="center" label="整单折扣" prop="discountPercent" />
90+
<el-table-column align="center" label="产品总金额" prop="productPrice" />
91+
<el-table-column align="center" label="联系人" prop="contactId" />
92+
<el-table-column align="center" label="公司签约人" prop="signUserId" />
8593
<el-table-column
86-
label="最后跟进时间"
94+
:formatter="dateFormatter"
8795
align="center"
96+
label="最后跟进时间"
8897
prop="contactLastTime"
89-
:formatter="dateFormatter"
9098
width="180px"
9199
/>
92100
<el-table-column
93-
label="创建时间"
101+
:formatter="dateFormatter"
94102
align="center"
103+
label="创建时间"
95104
prop="createTime"
96-
:formatter="dateFormatter"
97105
width="180px"
98106
/>
99-
<el-table-column label="备注" align="center" prop="remark" />
107+
<el-table-column align="center" label="备注" prop="remark" />
100108
<el-table-column label="操作" width="120px">
101109
<template #default="scope">
102110
<el-button
111+
v-hasPermi="['crm:contract:update']"
103112
link
104113
type="primary"
105114
@click="openForm('update', scope.row.id)"
106-
v-hasPermi="['crm:contract:update']"
107115
>
108116
编辑
109117
</el-button>
110118
<el-button
119+
v-hasPermi="['crm:contract:update']"
120+
link
121+
type="primary"
122+
@click="handleApprove(scope.row.id)"
123+
>
124+
提交审核
125+
</el-button>
126+
<el-button
127+
v-hasPermi="['crm:contract:delete']"
111128
link
112129
type="danger"
113130
@click="handleDelete(scope.row.id)"
114-
v-hasPermi="['crm:contract:delete']"
115131
>
116132
删除
117133
</el-button>
@@ -120,17 +136,17 @@
120136
</el-table>
121137
<!-- 分页 -->
122138
<Pagination
123-
:total="total"
124-
v-model:page="queryParams.pageNo"
125139
v-model:limit="queryParams.pageSize"
140+
v-model:page="queryParams.pageNo"
141+
:total="total"
126142
@pagination="getList"
127143
/>
128144
</ContentWrap>
129145

130146
<!-- 表单弹窗:添加/修改 -->
131147
<ContractForm ref="formRef" @success="getList" />
132148
</template>
133-
<script setup lang="ts">
149+
<script lang="ts" setup>
134150
import { dateFormatter } from '@/utils/formatTime'
135151
import download from '@/utils/download'
136152
import * as ContractApi from '@/api/crm/contract'
@@ -216,6 +232,12 @@ const handleExport = async () => {
216232
}
217233
}
218234
235+
/** 提交审核 **/
236+
const handleApprove = async (id: number) => {
237+
await ContractApi.handleApprove(id)
238+
message.success('提交审核成功!')
239+
await getList()
240+
}
219241
/** 初始化 **/
220242
onMounted(() => {
221243
getList()

0 commit comments

Comments
 (0)