面料详情

This commit is contained in:
czm 2022-04-13 11:43:23 +08:00
parent 4fa9223f6f
commit 7f55f90241
4 changed files with 47269 additions and 10686 deletions

36140
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -37,27 +37,28 @@
"dependencies": { "dependencies": {
"@babel/runtime": "^7.7.7", "@babel/runtime": "^7.7.7",
"@tarojs/components": "3.3.10", "@tarojs/components": "3.3.10",
"@tarojs/react": "3.3.10",
"@tarojs/runtime": "3.3.10", "@tarojs/runtime": "3.3.10",
"@tarojs/taro": "3.3.10", "@tarojs/taro": "3.3.10",
"@tarojs/react": "3.3.10", "mathjs": "^10.4.3",
"react-dom": "^17.0.0", "react": "^17.0.0",
"react": "^17.0.0" "react-dom": "^17.0.0"
}, },
"devDependencies": { "devDependencies": {
"@types/webpack-env": "^1.13.6",
"@types/react": "^17.0.2",
"@tarojs/mini-runner": "3.3.10",
"@babel/core": "^7.8.0", "@babel/core": "^7.8.0",
"@tarojs/mini-runner": "3.3.10",
"@tarojs/webpack-runner": "3.3.10", "@tarojs/webpack-runner": "3.3.10",
"@types/react": "^17.0.2",
"@types/webpack-env": "^1.13.6",
"@typescript-eslint/eslint-plugin": "^4.15.1",
"@typescript-eslint/parser": "^4.15.1",
"babel-preset-taro": "3.3.10", "babel-preset-taro": "3.3.10",
"eslint-config-taro": "3.3.10",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-plugin-react": "^7.8.2", "eslint-config-taro": "3.3.10",
"eslint-plugin-import": "^2.12.0", "eslint-plugin-import": "^2.12.0",
"eslint-plugin-react": "^7.8.2",
"eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-react-hooks": "^4.2.0",
"stylelint": "9.3.0", "stylelint": "9.3.0",
"@typescript-eslint/parser": "^4.15.1",
"@typescript-eslint/eslint-plugin": "^4.15.1",
"typescript": "^4.1.0" "typescript": "^4.1.0"
} }
} }

View File

@ -1,31 +1,70 @@
import { Input, View } from "@tarojs/components" import { Input, View } from "@tarojs/components"
import { useRef, useState } from "react" import { useEffect, useMemo, useRef, useState } from "react"
import {bignumber as mBignumber, add as mAdd, number as mNumber, subtract} from 'mathjs'
import styles from "./index.module.scss" import styles from "./index.module.scss"
type params = { type params = {
minNum?: number, minNum?: number,
maxNum?: number, maxNum?: number,
step?: number step?: number,
defaultNum?: number,
digits?: number //多少位小数
} }
export default ({minNum = 0, maxNum = 100, step=0.1}: params) => { export default ({minNum = 0, maxNum = 100, step=0.1, digits = 1, defaultNum = 3}: params) => {
const [count, setCount] = useState(0) // const [count, setCount] = useState<number | string>(0)
const [value, setValue] = useState<any>({count:defaultNum})
const onPlus = () => { const onPlus = () => {
let num = count + step let {count} = value
num = num >= maxNum?maxNum:num let count_res = mBignumber(count)
setCount(num) let step_res = mBignumber(step)
let num = mAdd(count_res, step_res)
let num_res = mNumber(num) as number
num_res = num_res >= maxNum?maxNum:num_res
num_res = formatDigits(num_res)
setValue({...value, count:num_res})
} }
const minus = () => { const minus = () => {
let num = count - step let {count} = value
num = num <= minNum?minNum:num let count_res = mBignumber(count)
setCount(num) let step_res = mBignumber(step)
let num = subtract(count_res, step_res)
let num_res = mNumber(num) as number
num_res = num_res <= minNum?minNum:num_res
setValue({...value, count:num_res})
}
//保留小数
const formatDigits = (num) => {
num = num + ''
if(num.includes('.')) {
let res = num.split('.')
let last_num = res[1].substr(0, digits)
return res[0] + '.' + last_num
}
return num
}
const onInputEven = (e) => {
let res = e.detail.value
if(res != ''&&!isNaN(Number(res))) {
setValue({...value, count:formatDigits(res)})
} else {
let num = parseFloat(res)
if(!isNaN(num)) {
setValue({...value, count:formatDigits(num)})
} else {
setValue({...value, count:defaultNum})
}
}
} }
return ( return (
<View className={styles.main}> <View className={styles.main}>
<View className={styles.reduce} onClick={() => minus()}>-</View> <View className={styles.reduce} onClick={() => minus()}>-</View>
<View className={styles.input}> <View className={styles.input}>
<Input <Input
value={String(count)} value={String(value.count)}
onInput={() => {}} onInput={onInputEven}
onBlur={() => {}} onBlur={() => {}}
/> />
<View className={styles.unit}></View> <View className={styles.unit}></View>

21729
yarn.lock

File diff suppressed because it is too large Load Diff