tiefen_space_web/app/[user_id]/page.jsx

148 lines
4.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client";
import React, { useState, useEffect } from "react";
import AuthBar from "@/components/AuthBar";
import WechatBar from "./_components/WechatBar";
import baseRequest from "@/utils/baseRequest";
import { Toast } from "antd-mobile";
import InOtherApp from "@/components/InOtherApp";
import { generateSignature } from "@/utils/crypto";
import Image from "next/image";
import verification from "@/public/icon/verification.png";
import icon_border from "@/public/images/icon_border.png";
import zone from "@/public/images/zone.png";
import Link from "next/link";
import { setCookie } from "cookies-next";
import copy from "@/utils/copy";
import { useRouter } from "next/navigation";
import { checkAuth } from "@/utils/auth";
export default function StreamerDetail({ params }) {
//页面数据
const [data, setData] = useState({});
useEffect(() => {
const getData = async () => {
try {
const base = baseRequest();
const signature = generateSignature({
user_id: parseInt(params.user_id, 10),
...base,
});
const detailResponse = await fetch(
`/api/streamer/list_ext_by_user_id?signature=${signature}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
user_id: parseInt(params.user_id, 10),
...base,
}),
}
);
const detailData = await detailResponse.json();
console.log(detailData);
if (detailData.ret === -1) {
Toast.show({
content: detailData.msg,
});
return;
}
setData(detailData.data.streamer_ext);
} catch (error) {
console.error(error);
}
};
getData();
}, []);
const router = useRouter();
const [name, setName] = useState("");
const [content, setContent] = useState("");
const [contact, setContact] = useState("");
const handleSubmit = async (e) => {
e.preventDefault();
const isLogined = await checkAuth();
if (!isLogined) {
Toast.show({
content: "请先登录",
});
return;
}
router.push("/pay");
};
return (
<section className="flex flex-1 flex-col container relative">
<InOtherApp />
<div className="absolute top-0 left-0 w-full">
<div className="flex relative h-64 overflow-hidden">
<img
src={data?.avatar?.images[0].urls[0]}
alt=""
className="w-full object-cover opacity-30"
/>
<div className="absolute top-0 left-0 w-full h-64 bg-gradient-to-t from-[#07050A] to-[#00000000]"></div>
</div>
</div>
<div className="flex flex-col flex-1 px-4 pt-2 pb-24 z-10">
<AuthBar />
<div className="flex flex-col items-center mt-24 mb-4">
<div className="w-[74px] h-[74px] rounded-full overflow-hidden">
<img
src={data?.avatar?.images[0].urls[0]}
alt=""
className="w-full object-cover"
/>
</div>
<div className="flex flex-row items-center mt-3">
<p className="text-white text-2xl font-medium mr-1">{data?.name}</p>
<Image src={verification} alt="" className="w-6 h-6" />
</div>
</div>
<form className="flex flex-col items-center" onSubmit={handleSubmit}>
<p className="text-white text-base mt-2 w-full max-w-sm">
您的产品名称
</p>
<input
type="text"
name="name"
placeholder="请输入您的产品名称"
value={name}
onChange={(e) => setName(e.target.value)}
className="input input-bordered input-md input-primary w-full max-w-sm"
/>
<p className="text-white text-base mt-2 w-full max-w-sm">
计划推广平台
</p>
<input
type="text"
name="contact"
placeholder="提供抖音、快手、小红书等平台广告定制方案"
value={content}
onChange={(e) => setContent(e.target.value)}
className="input input-bordered input-md input-primary w-full max-w-sm"
/>
<p className="text-white text-base mt-2 w-full max-w-sm">
您的联系方式
</p>
<input
type="text"
name="contact"
placeholder="我们将在24小时内联系您"
value={contact}
onChange={(e) => setContact(e.target.value)}
className="input input-bordered input-md input-primary w-full max-w-sm"
/>
<button className="btn btn-primary text-white rounded-full w-full max-w-sm mt-2">
提交并支付定金
</button>
</form>
</div>
</section>
);
}