use-audit.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { ElForm, FormRules } from "element-plus";
  2. import { reactive, ref, watch } from "vue";
  3. import { AuditProps } from "../types";
  4. type Config = {
  5. failStatus: string;
  6. successStatus: string;
  7. callback: () => void;
  8. };
  9. export function useAudit(
  10. props: AuditProps,
  11. { failStatus, successStatus, callback }: Config
  12. ) {
  13. const formRef = ref<InstanceType<typeof ElForm>>(null);
  14. let status = "";
  15. const remark = props.detail ? props.detail.remark : "";
  16. if (props.detail) {
  17. const _status = Number(props.detail.status);
  18. if (_status !== Number(successStatus) && _status !== Number(failStatus))
  19. status = successStatus;
  20. else status = String(_status);
  21. }
  22. const formData = reactive({
  23. status,
  24. remark
  25. });
  26. const rules = reactive<FormRules>({
  27. status: [{ required: true, trigger: "change", message: "请选择审核状态" }],
  28. remark: [{ required: false, trigger: "change", message: "请选择审核状态" }]
  29. });
  30. function handleAudit() {
  31. formRef.value.validate(isValid => {
  32. if (isValid) callback();
  33. });
  34. }
  35. watch(
  36. () => formData,
  37. () => {
  38. console.log(formData.status === failStatus);
  39. rules.remark[0].required = formData.status === failStatus;
  40. },
  41. {
  42. deep: true
  43. }
  44. );
  45. return {
  46. rules,
  47. formRef,
  48. formData,
  49. handleAudit
  50. };
  51. }