细节优化

This commit is contained in:
2025-12-01 11:37:59 +08:00
parent f389397227
commit 675ecb536d
7 changed files with 101 additions and 68 deletions

View File

@@ -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();

View File

@@ -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"]}}`}>

View File

@@ -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}