搜索框加空格校验 & 发布v1.3.0版本
This commit is contained in:
@@ -43,8 +43,7 @@ const schema = z.object({
|
||||
.refine(
|
||||
v => !Number.isNaN(Number(v)) && Number(v) > 0,
|
||||
"请输入有效的正数单价",
|
||||
)
|
||||
.refine(val => /^\d+(\.\d{1,2})?$/.test(val), "价格最多只能保留两位小数"),
|
||||
),
|
||||
discount_id: z.string().optional(),
|
||||
price_min: z
|
||||
.string()
|
||||
@@ -52,8 +51,7 @@ const schema = z.object({
|
||||
.refine(
|
||||
v => !Number.isNaN(Number(v)) && Number(v) > 0,
|
||||
"请输入有效的正数价格",
|
||||
)
|
||||
.refine(val => /^\d+(\.\d{1,2})?$/.test(val), "价格最多只能保留两位小数"),
|
||||
),
|
||||
})
|
||||
|
||||
export function CreateProductSku(props: {
|
||||
@@ -166,19 +164,19 @@ export function CreateProductSku(props: {
|
||||
placeholder="请输入单价"
|
||||
{...field}
|
||||
aria-invalid={fieldState.invalid}
|
||||
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
let value = e.target.value
|
||||
value = value.replace(/[^\d.]/g, "")
|
||||
const dotCount = (value.match(/\./g) || []).length
|
||||
if (dotCount > 1) {
|
||||
value = value.slice(0, value.lastIndexOf("."))
|
||||
}
|
||||
if (value.includes(".")) {
|
||||
const [int, dec] = value.split(".")
|
||||
value = `${int}.${dec.slice(0, 2)}`
|
||||
}
|
||||
field.onChange(value)
|
||||
}}
|
||||
// onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
// let value = e.target.value
|
||||
// value = value.replace(/[^\d.]/g, "")
|
||||
// const dotCount = (value.match(/\./g) || []).length
|
||||
// if (dotCount > 1) {
|
||||
// value = value.slice(0, value.lastIndexOf("."))
|
||||
// }
|
||||
// if (value.includes(".")) {
|
||||
// const [int, dec] = value.split(".")
|
||||
// value = `${int}.${dec.slice(0, 2)}`
|
||||
// }
|
||||
// field.onChange(value)
|
||||
// }}
|
||||
/>
|
||||
{fieldState.invalid && (
|
||||
<FieldError errors={[fieldState.error]} />
|
||||
@@ -197,19 +195,19 @@ export function CreateProductSku(props: {
|
||||
placeholder="请输入最低价格"
|
||||
{...field}
|
||||
aria-invalid={fieldState.invalid}
|
||||
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
let value = e.target.value
|
||||
value = value.replace(/[^\d.]/g, "")
|
||||
const dotCount = (value.match(/\./g) || []).length
|
||||
if (dotCount > 1) {
|
||||
value = value.slice(0, value.lastIndexOf("."))
|
||||
}
|
||||
if (value.includes(".")) {
|
||||
const [int, dec] = value.split(".")
|
||||
value = `${int}.${dec.slice(0, 2)}`
|
||||
}
|
||||
field.onChange(value)
|
||||
}}
|
||||
// onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
// let value = e.target.value
|
||||
// value = value.replace(/[^\d.]/g, "")
|
||||
// const dotCount = (value.match(/\./g) || []).length
|
||||
// if (dotCount > 1) {
|
||||
// value = value.slice(0, value.lastIndexOf("."))
|
||||
// }
|
||||
// if (value.includes(".")) {
|
||||
// const [int, dec] = value.split(".")
|
||||
// value = `${int}.${dec.slice(0, 2)}`
|
||||
// }
|
||||
// field.onChange(value)
|
||||
// }}
|
||||
/>
|
||||
{fieldState.invalid && (
|
||||
<FieldError errors={[fieldState.error]} />
|
||||
|
||||
@@ -99,7 +99,6 @@ function ProductSkus(props: {
|
||||
)
|
||||
|
||||
const table = useDataTable(action)
|
||||
console.log(table, "table")
|
||||
|
||||
return (
|
||||
<div className="flex-auto overflow-hidden flex flex-col items-stretch gap-3">
|
||||
@@ -130,15 +129,15 @@ function ProductSkus(props: {
|
||||
),
|
||||
},
|
||||
{ header: "套餐名称", accessorKey: "name" },
|
||||
{ header: "单价", accessorFn: row => Number(row.price).toFixed(2) },
|
||||
{ header: "单价", accessorFn: row => Number(row.price) },
|
||||
{ header: "折扣", accessorFn: row => row.discount?.name ?? "—" },
|
||||
{
|
||||
header: "最终价格",
|
||||
header: "折后价",
|
||||
accessorFn: row => {
|
||||
const value = row.discount
|
||||
? (Number(row.price) * Number(row.discount.discount)) / 100
|
||||
: Number(row.price)
|
||||
return Number(value.toFixed(2))
|
||||
return Number(value)
|
||||
},
|
||||
},
|
||||
{ header: "最低价格", accessorKey: "price_min" },
|
||||
|
||||
@@ -43,8 +43,7 @@ const schema = z.object({
|
||||
.refine(
|
||||
v => !Number.isNaN(Number(v)) && Number(v) > 0,
|
||||
"请输入有效的正数单价",
|
||||
)
|
||||
.refine(val => /^\d+(\.\d{1,2})?$/.test(val), "价格最多只能保留两位小数"),
|
||||
),
|
||||
discount_id: z.string().optional(),
|
||||
price_min: z
|
||||
.string()
|
||||
@@ -52,8 +51,7 @@ const schema = z.object({
|
||||
.refine(
|
||||
v => !Number.isNaN(Number(v)) && Number(v) > 0,
|
||||
"请输入有效的正数价格",
|
||||
)
|
||||
.refine(val => /^\d+(\.\d{1,2})?$/.test(val), "价格最多只能保留两位小数"),
|
||||
),
|
||||
})
|
||||
|
||||
export function UpdateProductSku(props: {
|
||||
@@ -85,8 +83,6 @@ export function UpdateProductSku(props: {
|
||||
}, [open])
|
||||
|
||||
const onSubmit = async (data: z.infer<typeof schema>) => {
|
||||
console.log(data, "data")
|
||||
|
||||
try {
|
||||
const resp = await updateProductSku({
|
||||
id: props.sku.id,
|
||||
@@ -171,19 +167,19 @@ export function UpdateProductSku(props: {
|
||||
placeholder="请输入单价"
|
||||
{...field}
|
||||
aria-invalid={fieldState.invalid}
|
||||
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
let value = e.target.value
|
||||
value = value.replace(/[^\d.]/g, "")
|
||||
const dotCount = (value.match(/\./g) || []).length
|
||||
if (dotCount > 1) {
|
||||
value = value.slice(0, value.lastIndexOf("."))
|
||||
}
|
||||
if (value.includes(".")) {
|
||||
const [int, dec] = value.split(".")
|
||||
value = `${int}.${dec.slice(0, 2)}`
|
||||
}
|
||||
field.onChange(value)
|
||||
}}
|
||||
// onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
// let value = e.target.value
|
||||
// value = value.replace(/[^\d.]/g, "")
|
||||
// const dotCount = (value.match(/\./g) || []).length
|
||||
// if (dotCount > 1) {
|
||||
// value = value.slice(0, value.lastIndexOf("."))
|
||||
// }
|
||||
// if (value.includes(".")) {
|
||||
// const [int, dec] = value.split(".")
|
||||
// value = `${int}.${dec.slice(0, 2)}`
|
||||
// }
|
||||
// field.onChange(value)
|
||||
// }}
|
||||
/>
|
||||
{fieldState.invalid && (
|
||||
<FieldError errors={[fieldState.error]} />
|
||||
@@ -202,19 +198,19 @@ export function UpdateProductSku(props: {
|
||||
placeholder="请输入最低价格"
|
||||
{...field}
|
||||
aria-invalid={fieldState.invalid}
|
||||
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
let value = e.target.value
|
||||
value = value.replace(/[^\d.]/g, "")
|
||||
const dotCount = (value.match(/\./g) || []).length
|
||||
if (dotCount > 1) {
|
||||
value = value.slice(0, value.lastIndexOf("."))
|
||||
}
|
||||
if (value.includes(".")) {
|
||||
const [int, dec] = value.split(".")
|
||||
value = `${int}.${dec.slice(0, 2)}`
|
||||
}
|
||||
field.onChange(value)
|
||||
}}
|
||||
// onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
// let value = e.target.value
|
||||
// value = value.replace(/[^\d.]/g, "")
|
||||
// const dotCount = (value.match(/\./g) || []).length
|
||||
// if (dotCount > 1) {
|
||||
// value = value.slice(0, value.lastIndexOf("."))
|
||||
// }
|
||||
// if (value.includes(".")) {
|
||||
// const [int, dec] = value.split(".")
|
||||
// value = `${int}.${dec.slice(0, 2)}`
|
||||
// }
|
||||
// field.onChange(value)
|
||||
// }}
|
||||
/>
|
||||
{fieldState.invalid && (
|
||||
<FieldError errors={[fieldState.error]} />
|
||||
|
||||
Reference in New Issue
Block a user