form.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { reactive, ref } from 'vue'
  2. import { v4 } from 'uuid'
  3. import { Moment } from 'moment'
  4. import { validateAction } from '@/common/setup/form'
  5. import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo'
  6. import { geLoginID_number } from '@/services/bus/login'
  7. import { getAreaUserId } from '@/services/bus/user'
  8. import { HedgedItemAddReq } from '@/services/proto/hedgedItem/interface'
  9. import { hedgedItemAdd } from '@/services/proto/hedgedItem'
  10. export function useForm() {
  11. const loading = ref<boolean>(false);
  12. const formElement = ref<HTMLElement>();
  13. const formData = reactive<HedgedItemAddReq>({
  14. HedgedItemNum: '', // 被套期项目编号
  15. HedgedType: undefined, // 套期类型-1:采购计划项目
  16. PlanStartDate: '', // 计划开始日期
  17. PlanEndDate: '', // 计划结束日期
  18. TradeUserID: undefined, // 交易用户ID
  19. AreaUserID: getAreaUserId(), // 企业ID
  20. ApplySrc: 2, // 申请来源
  21. ApplyID: geLoginID_number()!, // 申请人
  22. SpotContractID: 0, // 现货合同ID
  23. Qty: 0, // 数量
  24. ClientTicket: v4() // 客户端流水号
  25. })
  26. const rules = {
  27. HedgedItemNum: [{ required: true, trigger: 'blur', message: '请输入项目编号' }],
  28. //HedgedItemName: [{ required: true, trigger: 'blur', message: '请输入项目名称' }],
  29. //PlanStartDate: [{ required: true, message: '请选择开始时间' }],
  30. //PlanEndDate: [{ required: true, message: '请选择结束时间' }],
  31. HedgedType: [{ required: true, type: 'number', message: '请选择套期类型' }],
  32. TradeUserID: [{ required: true, type: 'number', message: '请选择套期主体' }],
  33. }
  34. // 禁选开始日期
  35. const disabledStartDate = (startValue: Moment) => {
  36. if (!startValue || !formData.PlanEndDate) return false;
  37. return startValue.valueOf() > new Date(formData.PlanEndDate).getTime();
  38. }
  39. // 禁选结束日期
  40. const disabledEndDate = (endValue: Moment) => {
  41. if (!endValue || !formData.PlanStartDate) return false;
  42. return new Date(formData.PlanStartDate).getTime() >= endValue.valueOf();
  43. }
  44. // 表单提交
  45. const formSubmit = (callback?: () => void) => {
  46. validateAction(formElement, formData).then((param) => {
  47. requestResultLoadingAndInfo(hedgedItemAdd, param, loading, ['新增套期项目成功', '新增套期项目失败:']).then(() => {
  48. callback && callback();
  49. }).catch(() => {
  50. loading.value = false;
  51. })
  52. })
  53. }
  54. return {
  55. loading,
  56. rules,
  57. formElement,
  58. formData,
  59. disabledStartDate,
  60. disabledEndDate,
  61. formSubmit,
  62. }
  63. }