| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { getGoodsById, getQuoteDayInfoByCode } from '@/services/bus/goods';
- import { getRules } from '@/services/bus/rules';
- import { RuleObject } from "ant-design-vue/lib/form/interface";
- // 验证 挂牌数量
- /**
- *
- * @param delistingQty 起摘数量
- * @param 挂牌数量对应的key
- * @param minivalue 最小单位
- * @param maxValue 最大数量(可选)
- * @returns
- */
- export const useVerifyListingNum = <T extends object, k extends keyof T>(formState: T, key: k, minivalue: number, maxValue?: number) => {
- const v_num = async (rule: RuleObject, value: number) => {
- if (value) {
- if (formState[key] && value < (formState[key] as unknown as number)) {
- return Promise.reject(`挂牌数量不能小于起摘数量`)
- }
- if (value < minivalue) {
- return Promise.reject(`挂牌数量不能小于${minivalue}`)
- }
- if (maxValue && value > maxValue) {
- return Promise.reject(`挂牌数量不能大于${maxValue}`)
- }
- if (value % minivalue) {
- return Promise.reject(`挂牌数量不是${minivalue}的倍数`)
- }
- return Promise.resolve();
- } else {
- return Promise.reject('请输入挂牌数量')
- }
- };
- return { v_num }
- }
- /**
- * 验证 挂牌基差
- * @param formState 表单状态
- * @param key 商品ID对应的key
- * @returns
- */
- export const useVerifyListingBasis = <T, k extends keyof T>(formState: T, key: k) => {
- const v_basis = async (rule: RuleObject, value: number) => {
- if (formState[key]) {
- if (value) {
- const goodsCode = getGoodsById(formState[key] as unknown as number)?.goodscode as string;
- const quote = getQuoteDayInfoByCode(goodsCode);
- if (quote) {
- const { basisdownratio, basisupratio } = getRules()[0];
- // 最小值 = 基差下限百分比 * 昨日收盘价 * -1
- const minValue = (basisdownratio * quote.presettle * -1).toFixed(2);
- // 最大值 = 基差上限百分比 * 昨日收盘价
- const maxValue = (basisupratio * quote.presettle).toFixed(2);
- if (value < Number(minValue)) {
- return Promise.reject(`基差不能小于${minValue}`);
- }
- if (value > Number(maxValue)) {
- return Promise.reject(`基差不能大于${maxValue}`);
- }
- return Promise.resolve();
- }
- return Promise.reject('商品合约不存在');
- } else {
- return Promise.reject('请输入基差');
- }
- } else {
- return Promise.reject('请选择商品合约');
- }
- };
- return { v_basis }
- }
|