Skip to content

Commit 8f8591f

Browse files
committed
✨ CRM:增加合同配置表
1 parent 43bdb3c commit 8f8591f

File tree

2 files changed

+116
-0
lines changed

2 files changed

+116
-0
lines changed

src/api/crm/contract/config/index.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import request from '@/config/axios'
2+
3+
export interface ContractConfigVO {
4+
notifyEnabled?: boolean
5+
notifyDays?: number
6+
}
7+
8+
// 获取合同配置
9+
export const getContractConfig = async () => {
10+
return await request.get({ url: `/crm/contract-config/get` })
11+
}
12+
13+
// 更新合同配置
14+
export const saveContractConfig = async (data: ContractConfigVO) => {
15+
return await request.put({ url: `/crm/contract-config/save`, data })
16+
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<template>
2+
<ContentWrap>
3+
<el-form
4+
ref="formRef"
5+
:model="formData"
6+
:rules="formRules"
7+
label-width="160px"
8+
v-loading="formLoading"
9+
>
10+
<el-card shadow="never">
11+
<!-- 操作 -->
12+
<template #header>
13+
<div class="flex items-center justify-between">
14+
<CardTitle title="合同配置设置" />
15+
<el-button type="primary" @click="onSubmit" v-hasPermi="['crm:contract-config:update']">
16+
保存
17+
</el-button>
18+
</div>
19+
</template>
20+
<!-- 表单 -->
21+
<el-form-item label="提前提醒设置" prop="notifyEnabled">
22+
<el-radio-group
23+
v-model="formData.notifyEnabled"
24+
@change="changeNotifyEnable"
25+
class="ml-4"
26+
>
27+
<el-radio :label="false" size="large">不提醒</el-radio>
28+
<el-radio :label="true" size="large">提醒</el-radio>
29+
</el-radio-group>
30+
</el-form-item>
31+
<div v-if="formData.notifyEnabled">
32+
<el-form-item>
33+
提前 <el-input-number class="mx-2" v-model="formData.notifyDays" /> 天提醒
34+
</el-form-item>
35+
</div>
36+
</el-card>
37+
</el-form>
38+
</ContentWrap>
39+
</template>
40+
<script setup lang="ts">
41+
import * as ContractConfigApi from '@/api/crm/contract/config'
42+
import { CardTitle } from '@/components/Card'
43+
44+
defineOptions({ name: 'CrmContractConfig' })
45+
46+
const message = useMessage() // 消息弹窗
47+
const { t } = useI18n() // 国际化
48+
49+
const formLoading = ref(false)
50+
const formData = ref({
51+
notifyEnabled: false,
52+
notifyDays: undefined
53+
})
54+
const formRules = reactive({})
55+
const formRef = ref() // 表单 Ref
56+
57+
/** 获取配置 */
58+
const getConfig = async () => {
59+
try {
60+
formLoading.value = true
61+
const data = await ContractConfigApi.getContractConfig()
62+
if (data === null) {
63+
return
64+
}
65+
formData.value = data
66+
} finally {
67+
formLoading.value = false
68+
}
69+
}
70+
71+
/** 提交配置 */
72+
const onSubmit = async () => {
73+
// 校验表单
74+
if (!formRef) return
75+
const valid = await formRef.value.validate()
76+
if (!valid) return
77+
// 提交请求
78+
formLoading.value = true
79+
try {
80+
const data = formData.value as ContractConfigApi.ContractConfigVO
81+
await ContractConfigApi.saveContractConfig(data)
82+
message.success(t('common.updateSuccess'))
83+
await getConfig()
84+
formLoading.value = false
85+
} finally {
86+
formLoading.value = false
87+
}
88+
}
89+
90+
/** 更改提前提醒设置 */
91+
const changeNotifyEnable = () => {
92+
if (!formData.value.notifyEnabled) {
93+
formData.value.notifyDays = undefined
94+
}
95+
}
96+
97+
onMounted(() => {
98+
getConfig()
99+
})
100+
</script>

0 commit comments

Comments
 (0)