import dayjs from "dayjs"; import { // MpSplashDetail, // UpUserNick, // UserInfoUp, // WCUserLogin, UpdateUser, UpdateUserUploadFile, GetProvince, GetAreaListByPid, } from "../../utils/Interface"; import { Component, PropsWithChildren, useEffect, useState } from "react"; import Taro from "@tarojs/taro"; // 引入 Swiper, SwiperItem 组件 import { Block, View, Text, Image, Input, Button } from "@tarojs/components"; import { Toast, Popup, Picker, DatetimePicker } from "@antmjs/vantui"; import "taro-ui/dist/style/components/button.scss"; // 按需引入 import "./userInfo.less"; /*** redux ***/ import { connect } from "react-redux"; import { userRefresh } from "../../store/features/userInfo"; /*** redux end ***/ /** 自定义组件 **/ import Navbar from "../../components/navbar/navbar"; import PopupAlert from "../../components/popup/popup-alert"; /** 自定义组件 **/ import { loading, msg, go } from "../../utils/traoAPI"; import FormData from "../../utils/wxFormdata/formData"; // 仅注册成功后进入此页面 class UserInfo extends Component { constructor(props) { super(props); this.state = { name: "用户信息", style: "font-size: 26rpx; font-weight: 400; color: #ccc", userInfo: { ...this.props.userInfo, }, isShowIntegralText: false, cityShow: false, timeShow: false, columns: [ { values: [], className: "column1", defaultIndex: 0, }, { values: [], className: "column2", defaultIndex: 0, }, { values: [], className: "column3", defaultIndex: 0, }, ], leve1region: [], leve2region: [], leve3region: [], loading: true, form: { nickname: "", // 昵称 province: "", city: "", // 市 area: "", // 县区 provinceId: "", // 省份 cityId: "", // 市 areaId: "", // 县区 headimg: null, }, // maxDate: new Date().getTime(), // minDate: new Date("1949-10-01").getTime(), minDate: new Date("1949-10-01").getTime(), birthday: this.props.userInfo.birthday ? dayjs(this.props.userInfo.birthday).valueOf() : dayjs().valueOf(), isSubmit: false, // 是否允许提交 }; } async onLoad() { if (!Taro.getStorageSync("token")) { // await this.WCUserLogin(); } this.initData(); } componentDidMount() {} componentWillUnmount() {} componentDidShow() {} componentDidHide() {} async initData() { await this.getProvince(); } getProvince = async () => { let res = await GetProvince(); if (res.data.code === 200) { let { columns } = this.state; let values = res.data.data.map((item: any) => item.name); columns[0].values = values; this.setState({ leve1region: res.data.data, columns }); this.GetAreaListByPid_level2(res.data.data[0].id); } }; GetAreaListByPid_level2 = async (level2) => { let res = await GetAreaListByPid({ pid: level2 }); if (res.data.code === 200) { let { columns } = this.state; let values = res.data.data.map((item: any) => item.name); columns[1].values = values; this.setState({ leve2region: res.data.data, columns }); this.GetAreaListByPid_level3(res.data.data[0].id); } }; GetAreaListByPid_level3 = async (level3) => { let res = await GetAreaListByPid({ pid: level3 }); if (res.data.code === 200) { let { columns } = this.state; let values = res.data.data.map((item: any) => item.name); columns[2].values = values; this.setState({ leve3region: res.data.data, columns }); } }; UpdateUser = async () => { let { form, userInfo } = this.state; let isTmpFile = userInfo.headimg.indexOf("//tmp") > -1; let isWXFile = userInfo.headimg.indexOf("wxfile://") > -1; if (isTmpFile || isWXFile) { let formData = { province: form.province, city: form.city, area: form.area, provinceId: form.provinceId, cityId: form.cityId, areaId: form.areaId, birthday: userInfo.birthday, nickname: userInfo.nickname, headimg: userInfo.headimg, file: userInfo.headimg || null, }; let res = await UpdateUserUploadFile(formData); console.log("Res", res); if (res.code === 200) { userInfo.province = res.data.province; userInfo.city = res.data.city; userInfo.area = res.data.area; userInfo.provinceId = res.data.provinceId; userInfo.cityId = res.data.cityId; userInfo.areaId = res.data.areaId; userInfo.nickname = res.data.nickname; userInfo.headimg = res.data.headimg; userInfo.integralText = res.data.integralText; this.props.userRefresh(userInfo); this.setState({ userInfo: userInfo }); if (res.data.integralText) { this.setState({ isShowIntegralText: true }); } else { msg("更新成功"); this.onSkip(); } } } else { let formData = new FormData(); formData.append("province", form.province); formData.append("city", form.city); formData.append("area", form.area); formData.append("provinceId", form.provinceId); formData.append("cityId", form.cityId); formData.append("areaId", form.areaId); formData.append("birthday", userInfo.birthday); formData.append("nickname", userInfo.nickname); formData.append("headimg", userInfo.headimg); formData.append("file", null); let data = formData.getData(); let res = await UpdateUser(data); if (res.data.code === 200) { userInfo.province = res.data.data.province; userInfo.city = res.data.data.city; userInfo.area = res.data.data.area; userInfo.provinceId = res.data.data.provinceId; userInfo.cityId = res.data.data.cityId; userInfo.areaId = res.data.data.areaId; userInfo.nickname = res.data.data.nickname; userInfo.headimg = res.data.data.headimg; userInfo.integralText = res.data.data.integralText; this.props.userRefresh(userInfo); this.setState({ userInfo: userInfo }); if (res.data.data.integralText) { this.setState({ isShowIntegralText: true }); } else { msg("更新成功"); this.onSkip(); } } } }; getChooseAvatar = (event) => { console.log("getChooseAvatar", event); let { userInfo } = this.state; userInfo.headimg = event.detail.avatarUrl; this.setState({ userInfo }); this.isSubmitCheck(); }; onSubmit = async () => { const { userInfo, form } = this.state; if (!userInfo.headimg) return msg("请点击授权头像"); if (!userInfo.nickname) return msg("请输入昵称"); if (!form.provinceId) return msg("请选择您所在的地区"); if (!userInfo.birthday) return msg("请选择您的生日"); loading("提交中"); // @ts-ignore await this.UpdateUser(); // // @ts-ignore // UpUserNick({ // headimg: userInfo.headimg, // nickname: userInfo.nickname, // }).then((res) => { // loading("请稍等"); // const data = { // birthday, // province: form.provinceId, // city: form.cityId, // area: form.areaId, // }; // // @ts-ignore // UserInfoUp(data).then((res) => { // msg(res.data.msg); // this.onSkip(); // }); // }); }; onSkip = () => { // 仅注册账号进入个人信息完善页。此时判断是否扫码进入的小程序,如果是扫码进入,提交与跳过都是回到主页 const isScan = Taro.getStorageSync("isScan"); if (isScan) { // Taro.setStorageSync("isScanNotRegisterSkip", true); Taro.switchTab({ url: "/pages/index/index", }); return; } let isInstrumentJump = Taro.getStorageSync("isInstrumentJump"); if (isInstrumentJump === "true") { go("/pages/instrument/instrument"); } else { Taro.switchTab({ url: "/pages/user/user", }); } }; pickerChange = (event) => { console.log("pickerChange", event); }; onPickerColumnChange = (event) => { console.log("onPickerColumnChange", event); }; onCityChange = async (picker) => { console.log("onCityChange", picker); if (picker.detail.index === 0) { this.setState({ loading: true }); let { leve1region } = this.state; let obj = leve1region.find( (item: any) => item.name === picker.detail.value[0] ); await this.GetAreaListByPid_level2(obj.id); this.setState({ loading: false }); return false; } if (picker.detail.index === 1) { this.setState({ loading: true }); let { leve2region } = this.state; let obj = leve2region.find( (item: any) => item.name === picker.detail.value[1] ); await this.GetAreaListByPid_level3(obj.id); this.setState({ loading: false }); } }; onCityConfirm = (picker) => { const index = picker.detail.index; let { form } = this.state; form.province = picker.detail.value[0]; form.provinceId = this.state.leve1region[index[0]].id; form.city = picker.detail.value[1]; form.cityId = this.state.leve2region[index[1]].id; form.area = picker.detail.value[2]; form.areaId = this.state.leve3region[index[2]].id; this.setState({ form }); this.onCityCancel(); this.isSubmitCheck(); }; onCityCancel = () => { this.setState({ cityShow: false }); }; onCityShow = () => { this.setState({ cityShow: true }); }; closeShow = () => { this.setState({ cityShow: false }); }; onTimeShow = () => { this.setState({ timeShow: true }); }; closeTime = () => { this.setState({ timeShow: false }); }; onTimePickerCancel = () => { console.log("onTimePickerCancel"); this.closeTime(); }; onTimePickerConfirm = (picker) => { let { userInfo } = this.state; userInfo.birthday = dayjs(picker.detail.value).format("YYYY-MM-DD"); if (picker.detail.value) { this.setState({ userInfo }); } this.closeTime(); this.isSubmitCheck(); }; onNicknameChange = (event) => { let { userInfo } = this.state; userInfo.nickname = event.detail.value; this.setState({ userInfo }); this.isSubmitCheck(); }; onNickNameReview = (event) => { console.log("onNickNameReview", event); }; isSubmitCheck() { let { userInfo, form } = this.state; if ( userInfo.nickname && userInfo.headimg && form.province && form.city && form.area && userInfo.birthday ) { this.setState({ isSubmit: true }); } else { this.setState({ isSubmit: false }); } } closeIntegralText = () => { this.setState({ isShowIntegralText: false }); setTimeout(() => { this.onSkip(); }, 600); }; onDateChange = (e) => { console.log("onDateChange", e); }; render() { let { style, userInfo, columns, cityShow, timeShow, form, minDate, isSubmit, isShowIntegralText, birthday, } = this.state; const formatter = (type, value) => { if (type === "year") { return `${value}年`; } if (type === "month") { return `${value}月`; } return `${value}日`; }; return ( 个人信息 请完善您的个人信息 为您提供针对性的服务内容和指引 昵称 地区/省市区 生日 {/* */} {isSubmit ? ( 确认提交 ) : ( 确认提交 )} 跳过 ); } } const mapStateToProps = (state) => ({ userInfo: state.userInfo, }); const mapDispatchToProps = (dispatch) => ({ userRefresh(data) { dispatch(userRefresh(data)); }, }); export default connect(mapStateToProps, mapDispatchToProps)(UserInfo);