|
|
@@ -46,31 +46,33 @@ export const useVerifyListingNum = <T extends object, k extends keyof T>(formSta
|
|
|
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) {
|
|
|
+ if (typeof value === 'number') {
|
|
|
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.preclose * -1).toFixed(2);
|
|
|
- // 最大值 = 基差上限百分比 * 昨收
|
|
|
- const maxValue = (basisupratio * quote.preclose).toFixed(2);
|
|
|
+ // 最小值 = 基差下限百分比 * 昨日收盘价 * -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(minValue) && value <= Number(maxValue)) {
|
|
|
+ return Promise.resolve();
|
|
|
+ } else {
|
|
|
+ if (value < Number(minValue)) {
|
|
|
+ return Promise.reject(`基差不能小于${minValue}`);
|
|
|
+ }
|
|
|
+ if (value > Number(maxValue)) {
|
|
|
+ return Promise.reject(`基差不能大于${maxValue}`);
|
|
|
+ }
|
|
|
}
|
|
|
- if (value > Number(maxValue)) {
|
|
|
- return Promise.reject(`基差不能大于${maxValue}`);
|
|
|
- }
|
|
|
- return Promise.resolve();
|
|
|
}
|
|
|
- return Promise.reject('商品合约不存在');
|
|
|
+ return Promise.reject('合约不存在');
|
|
|
} else {
|
|
|
- // return Promise.reject('请输入基差');
|
|
|
- return Promise.resolve();
|
|
|
+ return Promise.reject('请输入基差');
|
|
|
}
|
|
|
} else {
|
|
|
- return Promise.reject('请选择商品合约');
|
|
|
+ return Promise.reject('请选择合约');
|
|
|
}
|
|
|
};
|
|
|
return { v_basis }
|