TicketSettings.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <Dialog title="招聘会门票设置" v-model="dialogVisible">
  3. <el-form
  4. ref="formRef"
  5. :model="formData"
  6. :rules="formRules"
  7. label-width="130px"
  8. v-loading="formLoading"
  9. >
  10. <el-form-item label="门票金额" prop="admissionPrice">
  11. <el-input-number v-model="formData.admissionPrice" :precision="2" :min="0.01" :step="100" />
  12. <span class="mx-10px">元</span>
  13. <Icon @click="formData.admissionPrice = null" class="cursor-pointer" :size="25" icon="ep:circle-close-filled" />
  14. </el-form-item>
  15. <el-form-item label="可发布职位数量" prop="allowedJobNum">
  16. <el-input-number v-model="formData.allowedJobNum" :min="0" :step="10" />
  17. <span class="mx-10px">个</span>
  18. <Icon @click="formData.allowedJobNum = null" class="cursor-pointer" :size="25" icon="ep:circle-close-filled" />
  19. </el-form-item>
  20. </el-form>
  21. <template #footer>
  22. <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
  23. <el-button @click="dialogVisible = false">取 消</el-button>
  24. </template>
  25. </Dialog>
  26. </template>
  27. <script setup lang="ts">
  28. defineOptions({ name: 'JobFairManageTicketSettings' })
  29. import { JobFairManageApi } from '@/api/menduner/system/jobFair/manage'
  30. const message = useMessage() // 消息弹窗
  31. const dialogVisible = ref(false) // 弹窗的是否展示
  32. const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  33. const formData = ref({
  34. id: undefined,
  35. admissionPrice: undefined,
  36. allowedJobNum: undefined
  37. })
  38. const formRules = reactive({
  39. // admissionPrice: [{ required: true, message: '门票金额不能为空', trigger: 'change' }],
  40. // allowedJobNum: [{ required: true, message: '企业可发布职位不能为空', trigger: 'change' }]
  41. })
  42. const formRef = ref() // 表单 Ref
  43. /** 打开弹窗 */
  44. const open = async (data: Object) => {
  45. dialogVisible.value = true
  46. resetForm()
  47. formData.value = data || {}
  48. if (formData.value.admissionPrice > 0) formData.value.admissionPrice = formData.value.admissionPrice / 100
  49. }
  50. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
  51. /** 提交表单 */
  52. const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
  53. const submitForm = async () => {
  54. // 校验表单
  55. await formRef.value.validate()
  56. const { id, admissionPrice, allowedJobNum } = formData.value
  57. const params = {
  58. id,
  59. admissionPrice: admissionPrice > 0 ? (admissionPrice * 100) : null,
  60. allowedJobNum
  61. }
  62. // 提交请求
  63. formLoading.value = true
  64. try {
  65. await JobFairManageApi.updateTicketSettings(params)
  66. message.success('设置成功')
  67. dialogVisible.value = false
  68. // 发送操作成功的事件
  69. emit('success')
  70. } finally {
  71. formLoading.value = false
  72. }
  73. }
  74. /** 重置表单 */
  75. const resetForm = () => {
  76. formData.value = {
  77. id: undefined,
  78. admissionPrice: undefined,
  79. allowedJobNum: undefined
  80. }
  81. formRef.value?.resetFields()
  82. }
  83. </script>