setup.ts 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { getGoodsUnitEnumItemName } from "@/common/constants/enumsName";
  2. import { validateCommon } from "@/common/setup/validate";
  3. import APP from '@/services';
  4. import { Ermcp3Wrstandard, ErmcpDeliveryGoodsDetailEx } from "@/services/go/ermcp/goodsInfo/interface";
  5. import { RuleObject } from "ant-design-vue/lib/form/interface";
  6. import { reactive, ref, UnwrapRef } from "vue";
  7. import { FormState } from "./interface";
  8. /**
  9. * 表单
  10. */
  11. export function handleForm() {
  12. const formRef = ref();
  13. const formState: UnwrapRef<FormState> = reactive({
  14. HedgePlanID: undefined,
  15. HedgePlanNo: '',// string 套保计划名称
  16. ContractType: undefined,// int32 计划类型-1:采购-1:销售
  17. DeliveryGoodsID: undefined,// uint64 现货品种ID
  18. PlanQty: null, // double 计划数量
  19. ConvertFactor: undefined, // double 标仓系数
  20. Remark: '', // string 计划备注
  21. OperateType: 2, // int32 操作类型-1:保存草稿2:提交申请
  22. WRStandardID: undefined, // uint64 现货品类ID
  23. Tradeuserid: undefined, // uint64 交易用户ID
  24. Currencyid: undefined, // uint64 结算币种ID
  25. })
  26. const v_ContractType = async (rule: RuleObject, value: number) => {
  27. return validateCommon(value, '请选择计划类型');
  28. };
  29. const v_DeliveryGoodsID = async (rule: RuleObject, value: number) => {
  30. return validateCommon(value, '请选择现货品种');
  31. };
  32. const v_Currencyid = async (rule: RuleObject, value: number) => {
  33. return validateCommon(value, '请选择结算币种');
  34. };
  35. const rules = {
  36. PlanQty: [{ required: true, message: '请输入计划数量', trigger: 'blur', type: 'number', min: 1 }],
  37. ContractType: [{ required: true, validator: v_ContractType, trigger: 'change' }],
  38. DeliveryGoodsID: [{ required: true, validator: v_DeliveryGoodsID, trigger: 'change' }],
  39. Currencyid: [{ required: true, validator: v_Currencyid, trigger: 'change' }],
  40. WRStandardID: [{ required: true, message: '请选择商品', trigger: 'change', type: 'number' }],
  41. Tradeuserid: [{ required: true, message: '请选择交易用户', trigger: 'change', type: 'number' }],
  42. }
  43. return { formRef, formState, rules }
  44. }
  45. /**
  46. * 获取现货品种和品类数据
  47. */
  48. export function getMiddleGoodsD(formState: UnwrapRef<FormState>) {
  49. // 现货品种列表
  50. const DGList = ref<ErmcpDeliveryGoodsDetailEx[]>([])
  51. // 品类
  52. const gmlist = ref<Ermcp3Wrstandard[]>([])
  53. // 品类更变后的单位
  54. const numberUnit = ref<string>('')
  55. // 获取品种数据
  56. function getDG() {
  57. DGList.value = APP.get('DeliveryGoodsList').filter((e: ErmcpDeliveryGoodsDetailEx) => e.data.isvalid === 1)
  58. }
  59. // 选中品种数据
  60. function chooseMG(id: number) {
  61. const temp = DGList.value.find(e => e.data.deliverygoodsid === id)
  62. gmlist.value = temp ? temp.gmlist : []
  63. formState.ConvertFactor = undefined
  64. formState.WRStandardID = undefined
  65. }
  66. // 选中品类
  67. function chooseWR(id: number | undefined) {
  68. if (id) {
  69. const temp = gmlist.value.find(e => e.wrstandardid === id) as Ermcp3Wrstandard
  70. if (temp.enumdicname !== null && temp.enumdicname !== '') { // 如果有单位
  71. numberUnit.value = temp.enumdicname
  72. } else {
  73. numberUnit.value = getGoodsUnitEnumItemName(temp.unitid) // 没有则去枚举找
  74. }
  75. if (temp) {
  76. formState.ConvertFactor = temp.convertfactor
  77. } else {
  78. formState.ConvertFactor = undefined
  79. }
  80. } else {
  81. formState.ConvertFactor = undefined
  82. }
  83. }
  84. return { DGList, getDG, gmlist, chooseMG, chooseWR, numberUnit }
  85. }