BusinessListSelectForm.vue 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <Dialog v-model="dialogVisible" :title="dialogTitle" width="50%">
  3. <el-row>
  4. <el-col :span="12">
  5. <el-form-item label="跟进类型" prop="type">
  6. <el-select v-model="formData.type" placeholder="请选择跟进类型">
  7. <el-option
  8. v-for="dict in getIntDictOptions(DICT_TYPE.CRM_FOLLOW_UP_TYPE)"
  9. :key="dict.value"
  10. :label="dict.label"
  11. :value="dict.value"
  12. />
  13. </el-select>
  14. </el-form-item>
  15. </el-col>
  16. <el-col :span="12">
  17. <el-form-item label="下次联系时间" prop="nextTime">
  18. <el-date-picker
  19. v-model="formData.nextTime"
  20. placeholder="选择下次联系时间"
  21. type="date"
  22. value-format="x"
  23. />
  24. </el-form-item>
  25. </el-col>
  26. </el-row>
  27. <template #footer>
  28. <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
  29. <el-button @click="dialogVisible = false">取 消</el-button>
  30. </template>
  31. </Dialog>
  32. </template>
  33. <script lang="ts" setup>
  34. /** 跟进记录 表单 */
  35. defineOptions({ name: 'BusinessListSelectForm' })
  36. const dialogVisible = ref(false) // 弹窗的是否展示
  37. const dialogTitle = ref('') // 弹窗的标题
  38. const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  39. const formData = ref([])
  40. /** 打开弹窗 */
  41. const open = async (type: string, id?: number) => {
  42. dialogVisible.value = true
  43. dialogTitle.value = t('action.' + type)
  44. formType.value = type
  45. resetForm()
  46. // 修改时,设置数据
  47. if (id) {
  48. formLoading.value = true
  49. try {
  50. formData.value = await FollowUpRecordApi.getFollowUpRecord(id)
  51. } finally {
  52. formLoading.value = false
  53. }
  54. }
  55. }
  56. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
  57. /** 提交表单 */
  58. const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
  59. const submitForm = async () => {
  60. // 校验表单
  61. await formRef.value.validate()
  62. // 提交请求
  63. formLoading.value = true
  64. try {
  65. // 发送操作成功的事件
  66. emit('success')
  67. } finally {
  68. formLoading.value = false
  69. }
  70. }
  71. /** 重置表单 */
  72. const resetForm = () => {
  73. formRef.value?.resetFields()
  74. }
  75. </script>