use-review-process.ts 983 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { reactive, ref, watchEffect } from "vue";
  2. import { ElForm, FormRules } from "element-plus";
  3. type Param = {
  4. callback: (...args: any[]) => any;
  5. failStatus: string;
  6. requiredRemark?: boolean;
  7. };
  8. export function useReviewProcess({
  9. callback,
  10. failStatus,
  11. requiredRemark
  12. }: Param) {
  13. const formRef = ref<InstanceType<typeof ElForm>>(null);
  14. const formData = reactive({
  15. status: "",
  16. remark: ""
  17. });
  18. const formRules = reactive<FormRules>({
  19. status: [{ required: true, trigger: "change", message: "请选择审核状态" }],
  20. remark: [{ required: true, trigger: "change", message: "请输入备注" }]
  21. });
  22. const handleChangeStatus = () =>
  23. formRef.value.validate(isValid => isValid && callback());
  24. //不通过时备注为必填
  25. if (!requiredRemark) {
  26. watchEffect(
  27. () => (formRules.remark[0].required = formData.status === failStatus)
  28. );
  29. }
  30. return {
  31. formRef,
  32. formRules,
  33. formData,
  34. handleChangeStatus
  35. };
  36. }