index.vue 2.8 KB

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