diff --git a/price.json b/price.json
new file mode 100644
index 0000000..39d45ea
--- /dev/null
+++ b/price.json
@@ -0,0 +1,38 @@
+[
+ {
+ "desc": "初级3k",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ },
+ {
+ "desc": "初级5k",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ },
+ {
+ "desc": "初级1w",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ },
+ {
+ "desc": "中级3k",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ },
+ {
+ "desc": "中级1w",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ },
+ {
+ "desc": "中级1.5w",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ },
+ {
+ "desc": "高级3k",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ },
+ {
+ "desc": "高级2w",
+ "url": "https://static.soyootech.com/case/bubble/bubble.html"
+ },
+ {
+ "desc": "高级2w",
+ "url": "https://preview.soyootech.com/temp/A.html"
+ }
+]
\ No newline at end of file
diff --git a/src/app/price/page.tsx b/src/app/price/page.tsx
index cc37dcb..e27cd04 100644
--- a/src/app/price/page.tsx
+++ b/src/app/price/page.tsx
@@ -1,19 +1,21 @@
"use client";
-import { useState } from "react";
+import { useState, useEffect } from "react";
import "./price.css";
const Page = () => {
- // https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/public/
const [tip, setTip] = useState("");
- const [price] = useState({
- mp4: `https://static.soyootech.com/public/price/%E8%A7%86%E9%A2%91%E7%B1%BB%E5%9E%8B.html`,
- _2d_5k: `https://static.soyootech.com/public/price/2d-5k.html`,
- _2d_1w: `https://static.soyootech.com/public/price/2d-1w.html`,
- _2d_2w: `https://static.soyootech.com/public/price/2d-2w.html`,
- _3d_1w: `https://static.soyootech.com/public/price/3d-1w.html`,
- _3d_1_5w: `https://static.soyootech.com/public/price/3d-1.5w.html`,
- _3d_2w: `https://static.soyootech.com/public/price/3d-2w.html`,
- });
+
+ const [prices, setPrices] = useState<{ desc: ""; url: "" }[]>([]);
+
+ useEffect(() => {
+ const fetchData = async () => {
+ const res = await fetch(`https://www-soyootech.oss-cn-hangzhou.aliyuncs.com/price.json`);
+ const dataSource = await res.json();
+ setPrices(dataSource);
+ };
+
+ fetchData();
+ }, []);
const [previewInfo, setPreviewInfo] = useState({
url: "",
@@ -32,172 +34,173 @@ const Page = () => {
}}
/>
-
参考价格
-
-
-
-
- - 分类/价格
- - 初级素材
- - 中级素材
- - 高级素材
-
-
-
- - 交互视频型
- - 2D类型
- - 3D类型
-
-
-
- -
- 3000{" "}
- {
- setTip("用户需要提供视频原素材");
- setPreviewInfo({
- url: price["mp4"],
- preview: true,
- });
- }}
- />
-
- -
- 5000{" "}
- {
- setTip("用户需要提供所有美术资源");
- setPreviewInfo({
- url: price["_2d_5k"],
- preview: true,
- });
- }}
- />
-
- -
- 10000{" "}
- {
- setTip("用户需要提供所有美术资源");
- setPreviewInfo({
- url: price["_3d_1w"],
- preview: true,
- });
- }}
- />
-
+
+
参考价格
+
+
+
+ - 分类/价格
+ - 初级素材
+ - 中级素材
+ - 高级素材
+
+
+
+ - 交互视频型
+ - 2D类型
+ - 3D类型
+
+
+ -
+ 3000{" "}
+ {
+ setTip("用户需要提供视频原素材");
+ setPreviewInfo({
+ url: prices[0].url,
+ preview: true,
+ });
+ }}
+ />
+
+ -
+ 5000{" "}
+ {
+ setTip("用户需要提供所有美术资源");
+ setPreviewInfo({
+ url: prices[1].url,
+ preview: true,
+ });
+ }}
+ />
+
+ -
+ 10000{" "}
+ {
+ setTip("用户需要提供所有美术资源");
+ setPreviewInfo({
+ url: prices[2].url,
+ preview: true,
+ });
+ }}
+ />
+
+
-
- -
- 3000{" "}
- {
- setTip("用户需要提供视频原素材");
- setPreviewInfo({
- url: price["mp4"],
- preview: true,
- });
- }}
- />
-
+
+ -
+ 3000{" "}
+ {
+ setTip("用户需要提供视频原素材");
+ setPreviewInfo({
+ url: prices[3].url,
+ preview: true,
+ });
+ }}
+ />
+
- -
- 10000{" "}
- {
- setTip("用户只需要提供游戏特征资源即可(如人物,logo等)");
- setPreviewInfo({
- url: price["_2d_1w"],
- preview: true,
- });
- }}
- />
-
+ -
+ 10000{" "}
+ {
+ setTip("用户只需要提供游戏特征资源即可(如人物,logo等)");
+ setPreviewInfo({
+ url: prices[4].url,
+ preview: true,
+ });
+ }}
+ />
+
- -
- 15000{" "}
- {
- setTip("用户只需要提供游戏特征资源即可(如人物,logo等)");
- setPreviewInfo({
- url: price["_3d_1_5w"],
- preview: true,
- });
- }}
- />
-
-
+ -
+ 15000{" "}
+ {
+ setTip("用户只需要提供游戏特征资源即可(如人物,logo等)");
+ setPreviewInfo({
+ url: prices[5].url,
+ preview: true,
+ });
+ }}
+ />
+
+
-
- -
- 3000{" "}
- {
- setTip("用户需要提供视频原素材");
- setPreviewInfo({
- url: price["mp4"],
- preview: true,
- });
- }}
- />
-
- -
- 20000{" "}
- {
- setTip("适用于定制化程度高的playable项目,用户只需要提供游戏特征资源即可(如logo,人物等)");
- setPreviewInfo({
- url: price["_2d_2w"],
- preview: true,
- });
- }}
- />
-
- -
- 20000{" "}
- {
- setTip("适用于定制化程度高的playable项目,用户只需要提供游戏特征资源即可(如logo,人物等)");
- setPreviewInfo({
- url: price["_3d_2w"],
- preview: true,
- });
- }}
- />
-
-
+
+ -
+ 3000{" "}
+ {
+ setTip("用户需要提供视频原素材");
+ setPreviewInfo({
+ url: prices[6].url,
+ preview: true,
+ });
+ }}
+ />
+
+ -
+ 20000{" "}
+ {
+ setTip("适用于定制化程度高的playable项目,用户只需要提供游戏特征资源即可(如logo,人物等)");
+ setPreviewInfo({
+ url: prices[7].url,
+ preview: true,
+ });
+ }}
+ />
+
+ -
+ 20000{" "}
+ {
+ setTip("适用于定制化程度高的playable项目,用户只需要提供游戏特征资源即可(如logo,人物等)");
+ setPreviewInfo({
+ url: prices[8].url,
+ preview: true,
+ });
+ }}
+ />
+
+
+
+
标价为人民币
-
标价为人民币
{previewInfo.preview && (