123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- import React from "react";
- import { View, Text, Image, Button, Canvas } from "@tarojs/components";
- import Taro from "@tarojs/taro";
- import "./index.scss";
- import { InputBox } from "../../component/input/index";
- import right from "../../images/right.png";
- import application from "../../images/application.png";
- import certificate from "../../images/certificate.png";
- import expert from "../../images/expert.png";
- import user from "../../images/user.png";
- import base from "../../config/base";
- class Us extends React.Component<any, any> {
- static defaultProps = {};
- #systemInfo = Taro.getSystemInfoSync();
- constructor(props: any) {
- super(props);
- this.state = {
- height: 0,
- heightKf: 0,
- Cwidth: 0,
- Cheight: 0,
- userUrl: Taro.getStorageSync("userUrl") || "",
- userPhone: Taro.getStorageSync("userPhone") || "",
- };
- }
- getImageSize = (e: any) => {
- this.setState({
- height: (this.#systemInfo.screenWidth / e.detail.width) * e.detail.height,
- });
- };
- getImageKf = (e: any) => {
- this.setState({
- heightKf:
- ((this.#systemInfo.screenWidth * 0.92) / e.detail.width) *
- e.detail.height,
- });
- };
- onChooseAvatar = (e: any) => {
- Taro.setStorageSync("userUrl", e.detail.avatarUrl);
- this.setState({
- userUrl: e.detail.avatarUrl,
- });
- };
- onGetPhoneNumber = (e: any) => {
- Taro.request({
- url: base.baseAPI + "/wx/getuserphonenumber?code=" + e.detail.code,
- method: "GET",
- }).then((res: any) => {
- const {
- data: {
- code,
- data: { phoneInfo },
- },
- statusCode,
- } = res;
- if (statusCode !== 200 || code !== 0)
- return Taro.showToast({
- title: "获取手机号失败",
- icon: "none",
- });
- const { phoneNumber } = phoneInfo;
- this.setState({
- userPhone: phoneNumber || "",
- });
- Taro.setStorageSync("userPhone", phoneNumber || "");
- });
- };
- createImge = () => {
- Taro.showLoading({
- title: "下载中。。。"
- });
- const ctx = Taro.createCanvasContext("myCanvas");
- // 获取远程图片
- Taro.getImageInfo({
- src: "https://cxzx.smcic.net/topic/tool/img/%E5%B0%91%E5%84%BF%E4%B9%A6%E7%94%BB%E5%A4%A7%E8%B5%9B/6.jpg",
- }).then((res: any) => {
- const { width, height, path } = res;
- const h = Number(((this.#systemInfo.windowWidth / width) * height).toFixed(2));
- const rWidth = this.#systemInfo.windowWidth * this.#systemInfo.pixelRatio;
- const rHeight = h * this.#systemInfo.pixelRatio;
- this.setState({
- Cwidth: rWidth,
- Cheight: rHeight
- });
- Taro.nextTick(() => {
- ctx.drawImage(
- path,
- 0,
- 0,
- rWidth,
- rHeight
- );
- ctx.setFillStyle("#91725D");
- ctx.setFontSize(rWidth/20);
- ctx.fillText("李勇利", rWidth*0.33, rHeight*0.4);
- ctx.draw(false, () => {
- Taro.canvasToTempFilePath({
- canvasId: "myCanvas",
- quality: 0.8,
- success: (res: any) => {
- Taro.hideLoading();
- Taro.showToast({title: "下载成功"})
- Taro.previewImage({
- urls: [res.tempFilePath],
- });
- },
- });
- });
- });
- });
- };
- render() {
- // const { } = this.props;
- return (
- <View className="Us">
- <Canvas
- id="myCanvas"
- canvas-id="myCanvas"
- style={`width: ${this.state.Cwidth}px;height: ${this.state.Cheight}px;`}
- ></Canvas>
- <Button
- className="user"
- open-type="chooseAvatar"
- onChooseAvatar={this.onChooseAvatar}
- >
- <Image src={this.state.userUrl || user} className="userImg"></Image>
- </Button>
- <Image
- style={`width: ${this.#systemInfo.screenWidth}px;height: ${this.state.height
- }px;`}
- src="https://cxzx.smcic.net/topic/tool/img/%E5%B0%91%E5%84%BF%E4%B9%A6%E7%94%BB%E5%A4%A7%E8%B5%9B/us-top.png"
- onLoad={this.getImageSize}
- />
- <InputBox>
- {!this.state.userPhone && (
- <Button
- className="login"
- openType="getPhoneNumber"
- onGetPhoneNumber={this.onGetPhoneNumber}
- >
- 登录
- </Button>
- )}
- {this.state.userPhone && (
- <View className="us_cell">
- <View className="left">
- <Image src={application} className="img"></Image>
- <Text className="text">报名信息</Text>
- </View>
- <View className="right">
- <Image src={right} className="img"></Image>
- </View>
- </View>
- )}
- {this.state.userPhone && (
- <View className="us_cell" onClick={this.createImge}>
- <View className="left">
- <Image src={certificate} className="img"></Image>
- <Text className="text">证书下载</Text>
- </View>
- <View className="right">
- <Image src={right} className="img"></Image>
- </View>
- </View>
- )}
- {this.state.userPhone && (
- <View className="us_cell">
- <View className="left">
- <Image src={expert} className="img"></Image>
- <Text className="text">专家评审</Text>
- </View>
- <View className="right">
- <Image src={right} className="img"></Image>
- </View>
- </View>
- )}
- </InputBox>
- <Image
- style={`width: ${this.#systemInfo.screenWidth * 0.92}px;height: ${this.state.heightKf
- }px;display: block;margin: 0 auto`}
- showMenuByLongpress={true}
- src="https://cxzx.smcic.net/topic/tool/img/%E5%B0%91%E5%84%BF%E4%B9%A6%E7%94%BB%E5%A4%A7%E8%B5%9B/us-kf.png"
- onLoad={this.getImageKf}
- />
- </View>
- );
- }
- }
- export { Us };
|