index.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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
  16. type="primary"
  17. @click="onSubmit"
  18. v-hasPermi="['crm:customer-pool-config:update']"
  19. >
  20. 保存
  21. </el-button>
  22. </div>
  23. </template>
  24. <!-- 表单 -->
  25. <el-form-item label="客户公海规则设置" prop="enabled">
  26. <el-radio-group v-model="formData.enabled" @change="changeEnable" class="ml-4">
  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.enabled">
  32. <el-form-item>
  33. <el-input-number class="mr-2" v-model="formData.contactExpireDays" />
  34. 天不跟进或
  35. <el-input-number class="mx-2" v-model="formData.dealExpireDays" />
  36. 天未成交
  37. </el-form-item>
  38. <el-form-item label="提前提醒设置" prop="notifyEnabled">
  39. <el-radio-group
  40. v-model="formData.notifyEnabled"
  41. @change="changeNotifyEnable"
  42. class="ml-4"
  43. >
  44. <el-radio :label="false" size="large">不提醒</el-radio>
  45. <el-radio :label="true" size="large">提醒</el-radio>
  46. </el-radio-group>
  47. </el-form-item>
  48. <div v-if="formData.notifyEnabled">
  49. <el-form-item>
  50. 提前 <el-input-number class="mx-2" v-model="formData.notifyDays" /> 天提醒
  51. </el-form-item>
  52. </div>
  53. </div>
  54. </el-card>
  55. </el-form>
  56. </ContentWrap>
  57. </template>
  58. <script setup lang="ts">
  59. import * as CustomerPoolConfigApi from '@/api/crm/customerPoolConfig'
  60. import { CardTitle } from '@/components/Card'
  61. defineOptions({ name: 'CrmCustomerPoolConfig' })
  62. const message = useMessage() // 消息弹窗
  63. const { t } = useI18n() // 国际化
  64. const formLoading = ref(false)
  65. const formData = ref({
  66. enabled: false,
  67. contactExpireDays: 0,
  68. dealExpireDays: 0,
  69. notifyEnabled: false,
  70. notifyDays: 0
  71. })
  72. const formRules = reactive({
  73. enabled: [{ required: true, message: '是否启用客户公海不能为空', trigger: 'blur' }]
  74. })
  75. const formRef = ref() // 表单 Ref
  76. /** 获取配置 */
  77. const getConfig = async () => {
  78. try {
  79. formLoading.value = true
  80. const data = await CustomerPoolConfigApi.getCustomerPoolConfig()
  81. if (data === null) {
  82. return
  83. }
  84. formData.value = data
  85. } finally {
  86. formLoading.value = false
  87. }
  88. }
  89. /** 提交配置 */
  90. const onSubmit = async () => {
  91. // 校验表单
  92. if (!formRef) return
  93. const valid = await formRef.value.validate()
  94. if (!valid) return
  95. // 提交请求
  96. formLoading.value = true
  97. try {
  98. const data = formData.value as unknown as CustomerPoolConfigApi.CustomerPoolConfigVO
  99. await CustomerPoolConfigApi.saveCustomerPoolConfig(data)
  100. message.success(t('common.updateSuccess'))
  101. await getConfig()
  102. formLoading.value = false
  103. } finally {
  104. formLoading.value = false
  105. }
  106. }
  107. /** 更改客户公海规则设置 */
  108. const changeEnable = () => {
  109. if (!formData.value.enabled) {
  110. formData.value.contactExpireDays = undefined
  111. formData.value.dealExpireDays = undefined
  112. formData.value.notifyEnabled = false
  113. formData.value.notifyDays = undefined
  114. }
  115. }
  116. /** 更改提前提醒设置 */
  117. const changeNotifyEnable = () => {
  118. if (!formData.value.notifyEnabled) {
  119. formData.value.notifyDays = undefined
  120. }
  121. }
  122. onMounted(() => {
  123. getConfig()
  124. })
  125. </script>