细节优化
This commit is contained in:
@@ -18,11 +18,10 @@ import styles from "./index.module.scss";
|
||||
function NTRPTestEntryCard(props: {
|
||||
type: EvaluateScene;
|
||||
evaluateCallback?: EvaluateCallback;
|
||||
callback?: (flag) => void;
|
||||
}) {
|
||||
const [testFlag, setTestFlag] = useState(false);
|
||||
const [hasTestInLastMonth, setHasTestInLastMonth] = useState(false);
|
||||
const { type, evaluateCallback, callback } = props;
|
||||
const { type, evaluateCallback } = props;
|
||||
const userInfo = useUserInfo();
|
||||
const { setCallback } = useEvaluate();
|
||||
const { fetchUserInfo } = useUserActions();
|
||||
@@ -42,7 +41,6 @@ function NTRPTestEntryCard(props: {
|
||||
if (res.code === 0) {
|
||||
setTestFlag(res.data.has_test_record);
|
||||
setHasTestInLastMonth(res.data.has_test_in_last_month);
|
||||
callback?.(res.data.has_test_in_last_month);
|
||||
}
|
||||
};
|
||||
init();
|
||||
|
||||
@@ -31,6 +31,7 @@ interface PickerProps {
|
||||
onConfirm?: (options: PickerOption[], values: (string | number)[]) => void;
|
||||
onChange?: (value: (string | number)[]) => void;
|
||||
style?: React.CSSProperties;
|
||||
ntrpTested?: boolean;
|
||||
}
|
||||
|
||||
const PopupPicker = ({
|
||||
@@ -48,16 +49,17 @@ const PopupPicker = ({
|
||||
options = [],
|
||||
type = null,
|
||||
style,
|
||||
ntrpTested,
|
||||
}: PickerProps) => {
|
||||
const [defaultValue, setDefaultValue] = useState<(string | number)[]>([]);
|
||||
const [defaultOptions, setDefaultOptions] = useState<PickerOption[][]>([]);
|
||||
const [pickerCurrentValue, setPickerCurrentValue] = useState<(string | number)[]>(value);
|
||||
const [tested, setTested] = useState(false)
|
||||
|
||||
const [pickerCurrentValue, setPickerCurrentValue] =
|
||||
useState<(string | number)[]>(value);
|
||||
|
||||
const changePicker = (options: any[], values: any, columnIndex: number) => {
|
||||
// 更新 Picker 的当前值
|
||||
setPickerCurrentValue(values);
|
||||
|
||||
|
||||
if (onChange) {
|
||||
console.log("picker onChange", columnIndex, values, options);
|
||||
if (
|
||||
@@ -84,7 +86,10 @@ const PopupPicker = ({
|
||||
};
|
||||
|
||||
// 处理 Picker 的确认事件,获取当前选中的值
|
||||
const handlePickerConfirm = (options: PickerOption[], values: (string | number)[]) => {
|
||||
const handlePickerConfirm = (
|
||||
options: PickerOption[],
|
||||
values: (string | number)[]
|
||||
) => {
|
||||
setPickerCurrentValue(values);
|
||||
setDefaultValue(values);
|
||||
};
|
||||
@@ -127,9 +132,6 @@ const PopupPicker = ({
|
||||
}
|
||||
}
|
||||
}, [visible, value]);
|
||||
const callback = (tested: boolean) => {
|
||||
setTested(tested)
|
||||
}
|
||||
return (
|
||||
<>
|
||||
<CommonPopup
|
||||
@@ -146,9 +148,9 @@ const PopupPicker = ({
|
||||
zIndex={1000}
|
||||
style={style}
|
||||
>
|
||||
{type === "ntrp" && !tested && (
|
||||
{type === "ntrp" && !ntrpTested && (
|
||||
<View className={styles.evaluateCardWrap}>
|
||||
<NTRPTestEntryCard callback={(flag) => callback(flag)} type={EvaluateScene.userEdit} />
|
||||
<NTRPTestEntryCard type={EvaluateScene.userEdit} />
|
||||
</View>
|
||||
// <View className={`${styles["examination-btn"]}}`}>
|
||||
// <View className={`${styles["text-container"]}}`}>
|
||||
|
||||
@@ -11,6 +11,7 @@ import { UserInfoType } from "@/services/userService";
|
||||
import { useCities, useProfessions } from "@/store/pickerOptionsStore";
|
||||
import { formatNtrpDisplay } from "@/utils/helper";
|
||||
import { useGlobalState } from "@/store/global";
|
||||
import evaluateService from "@/services/evaluateService";
|
||||
|
||||
// 用户信息接口
|
||||
// export interface UserInfo {
|
||||
@@ -78,6 +79,7 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
||||
}) => {
|
||||
const { setShowGuideBar } = useGlobalState();
|
||||
const { updateUserInfo } = useUserActions();
|
||||
const [ntrpTested, setNtrpTested] = useState(false);
|
||||
|
||||
// 使用 useRef 记录上一次的 user_info,只在真正变化时打印
|
||||
const prevUserInfoRef = useRef<Partial<UserInfoType>>();
|
||||
@@ -90,6 +92,14 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
||||
console.log("UserInfoCard 用户信息变化:", user_info);
|
||||
prevUserInfoRef.current = user_info;
|
||||
}
|
||||
const getLastResult = async () => {
|
||||
// 获取测试结果
|
||||
const res = await evaluateService.getLastResult();
|
||||
if (res.code === 0) {
|
||||
setNtrpTested(res.data.has_test_in_last_month);
|
||||
}
|
||||
};
|
||||
getLastResult();
|
||||
}, [user_info]);
|
||||
|
||||
// 编辑个人简介弹窗状态
|
||||
@@ -651,6 +661,7 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
||||
<PopupPicker
|
||||
showHeader={true}
|
||||
title="选择 NTRP 自评水平"
|
||||
ntrpTested={ntrpTested}
|
||||
options={[
|
||||
[
|
||||
{ text: "1.5", value: "1.5" },
|
||||
@@ -660,6 +671,7 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
||||
{ text: "3.5", value: "3.5" },
|
||||
{ text: "4.0", value: "4.0" },
|
||||
{ text: "4.5", value: "4.5" },
|
||||
{ text: "4.5+", value: "4.5+" },
|
||||
],
|
||||
]}
|
||||
type="ntrp"
|
||||
@@ -668,7 +680,7 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
|
||||
setvisible={setNtrpPickerVisible}
|
||||
value={
|
||||
!form_data.ntrp_level || form_data.ntrp_level === "0"
|
||||
? ["3.0"]
|
||||
? ["2.5"]
|
||||
: [form_data.ntrp_level]
|
||||
}
|
||||
onChange={handle_ntrp_level_change}
|
||||
|
||||
Reference in New Issue
Block a user