dev-QQq
qinzhenpen 2 years ago
commit 6917185193

@ -113,3 +113,11 @@ export function submit(data) {
params: data, params: data,
}); });
} }
//文件上传
export function uploadFile(data) {
return request({
url: "/api/bigModule/uploadFile",
method: "post",
data: data,
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

@ -100,17 +100,16 @@ export const dynamicRoutes = [
}, },
], ],
}, },
// Bi可视化分析
{ {
path: "", path: "",
component: Layout, component: Layout,
redirect: "/bi", redirect: "/digitalMarketingAlgorithms",
children: [ children: [
{ {
path: "/bi", path: "/digitalMarketingAlgorithms",
component: () => import("@/views/visual-analysis/index.vue"), component: () => import("@/views/digitalMarketingAlgorithms/index"),
name: "bi", name: "digitalMarketingAlgorithms",
meta: { title: "BI可视化分析", icon: "tongxunlu_B", affix: true }, meta: { title: "数字营销算法", icon: "tongxunlu_B", affix: true },
}, },
], ],
}, },
@ -127,19 +126,22 @@ export const dynamicRoutes = [
}, },
], ],
}, },
// Bi可视化分析
{ {
path: "", path: "",
component: Layout, component: Layout,
redirect: "/digitalMarketingAlgorithms", redirect: "/bi",
children: [ children: [
{ {
path: "/digitalMarketingAlgorithms", path: "/bi",
component: () => import("@/views/digitalMarketingAlgorithms/index"), component: () => import("@/views/visual-analysis/index.vue"),
name: "digitalMarketingAlgorithms", name: "bi",
meta: { title: "数字营销算法", icon: "monitor2", affix: true }, meta: { title: "BI可视化分析", icon: "dashboard", affix: true },
}, },
], ],
}, },
{ {
path: "", path: "",
component: Layout, component: Layout,

@ -0,0 +1,293 @@
<template>
<div class="app-containere">
<div class="material">
<div class="title">
<img src="@/assets/images/caseIcon.png" alt="" />
<span>任务素材</span>
</div>
<div>
<p>
根据文字描述要求利用推荐的AI工具进行图片修复美化
<br />
1AI消除去除图片中的水印和文字只保留鞋子
<br />
2AI抠图将人物照中的背景去除抠出人物
<br />
3AI扩图将金鱼图片进行尺寸扩展或者周边扩展
</p>
</div>
</div>
<div class="material">
<div class="title">
<img src="@/assets/images/步骤.png" alt="" />
<span>任务提交</span>
<span style="font-size: 13px">(请按照任务素材顺序依次提交)</span>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile1" :auto-upload="false" :on-change="handleChange1" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交1</el-button>
</el-upload>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile2" :auto-upload="false" :on-change="handleChange2" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交2</el-button>
</el-upload>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile3" :auto-upload="false" :on-change="handleChange3" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交3</el-button>
</el-upload>
</div>
</div>
<div class="material" style="margin-top: 20px">
<div class="title">
<img src="@/assets/icons/svg/sxbg.svg" style="width: 30px; height: 30px" />
<span>大模型参考工具</span>
</div>
<div style="display: flex">
<div class="case">
<div class="bgItem">
<img src="@/assets/images/aiPic.png" alt="" />
</div>
<div class="detail">
<div class="title">美图AI文生图</div>
<el-tooltip
popper-class="tooltip"
effect="light"
content="美图A|文生图原是由美图创意平台推出的A|图像创作工具现已集成到美图设计室中用户只需输入文字创意描述并选择自己喜欢的模型风格
点击立即生成即可获得由美图AI创作的一幅画作
"
placement="top-start"
>
<div style="line-height: 24px; font-size: 13px">美图A|文生图原是由美图创意平台推出的A|图像创作工具现已集成到美图设计室中用户只需输入文字创意描述并选择自己喜欢的模型风格 点击立即生成即可获得由美图AI创作的一幅画作</div>
</el-tooltip>
<a class="btn" href="https://www.designkit.com/" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
<div class="case">
<div class="bgItem">
<img src="@/assets/images/21bc66fba04ca35e7640b1cb1d5d7e4.png" alt="" />
</div>
<div class="detail">
<div class="title">堆友AI</div>
<el-tooltip popper-class="tooltip" effect="light" content="堆友AI是由阿里巴巴设计师团队原创的一个免费可商用的3D头像、3D场景、3D元素等资源网站和在线编辑神器。用户可以通过简洁模式或自由模式进行AI绘画创作选择不同的模型效果生成设计作品并且可以下载、分享图片、进行二次创作抠图和高分辨率处理。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">堆友AI是由阿里巴巴设计师团队原创的一个免费可商用的3D头像3D场景3D元素等资源网站和在线编辑神器用户可以通过简洁模式或自由模式进行AI绘画创作选择不同的模型效果生成设计...</div>
</el-tooltip>
<a class="btn" href="https://d.design/toolbox" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
<div class="case">
<div class="bgItem">
<img src="@/assets/images/gaodingAi.png" alt="" />
</div>
<div class="detail">
<!-- <div class="icon">
<div class="iconItem">AI工具</div>
<span></span>
<div class="iconItem">AI写作对话</div>
</div> -->
<div class="title">稿定AI</div>
<el-tooltip popper-class="tooltip" effect="light" content="稿定AI是稿定设计提供的一款集合了多种AI设计工具的平台旨在帮助用户快速实现创意设计。它包括AI绘图、AI文案、AI商品图设计、AI素材搜寻以及AI场景图生成等功能满足不同设计需求。用户可以通过输入文案或提供参考图利用AI技术生成画面还可以选择不同风格实现灵感落地和创意表达。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">稿定AI是稿定设计提供的一款集合了多种AI设计工具的平台旨在帮助用户快速实现创意设计它包括AI绘图AI文案AI商品图设计AI素材搜寻以及AI场景图生成等功能满足不同设计需求用户可以...</div>
</el-tooltip>
<a class="btn" href="https://www.gaoding.com/ai" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import popModal from "@/views/components/popModal.vue";
import { getUserInfo } from "@/utils/auth";
import * as portraitModel from "@/api/portraitModel";
import { uploadFile } from "@/api/portraitModel";
import { downBlobFile } from "@/utils/index.js";
import * as echarts from "echarts";
const { proxy } = getCurrentInstance();
const baseUrl = import.meta.env.VITE_APP_BASE_API;
const previewFile1 = ref([]);
const previewFile2 = ref([]);
const previewFile3 = ref([]);
const fileList1 = ref([]);
const fileList2 = ref([]);
const fileList3 = ref([]);
const handleChange1 = async (info) => {
fileList1.value = [];
fileList1.value.push(info);
let formData = new FormData();
formData.append("file", fileList1.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI修图");
formData.append("count", 1);
try {
previewFile1.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile1.value.push({
name: fileList1.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
const handleChange2 = async (info) => {
fileList2.value = [];
fileList2.value.push(info);
let formData = new FormData();
formData.append("file", fileList2.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI修图");
formData.append("count", 2);
try {
previewFile2.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile2.value.push({
name: fileList2.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
const handleChange3 = async (info) => {
fileList3.value = [];
fileList3.value.push(info);
let formData = new FormData();
formData.append("file", fileList3.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI修图");
formData.append("count", 3);
try {
previewFile3.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile3.value.push({
name: fileList3.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
</script>
<style lang="scss" scoped>
.app-containere {
margin: 10px 4px 10px 10px;
border: 1px solid #0452c6;
// background-color: rgba(0, 0, 0, 0.5);
background: rgba(0, 29, 64, 0.5);
padding: 25px;
color: #fff;
.material {
.title {
display: flex;
align-items: center;
font-size: 18px;
span {
margin-left: 10px;
}
}
p {
font-size: 15px;
line-height: 30px;
}
.case {
margin-right: 18px;
padding: 10px;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
margin-top: 10px;
// width: calc(100% - 100px);
width: 500px;
// background: #fff;
// background: #002c5b;
background: #011031;
border-radius: 10px;
border: 1px solid #003e7c;
display: flex;
align-items: center;
.bgItem {
display: flex;
align-items: center;
justify-content: center;
img {
// 186px
width: 258px;
height: 134px;
border-radius: 5px;
scale: 0.8;
}
// background-color: #e6e8ed;
background-color: #002c5b;
width: 240px;
height: 170px;
// padding: 20px;
border-radius: 10px;
box-shadow: 0 30px 20px -20px rgba(0, 0, 0, 0.15);
}
.detail {
width: 300px;
margin-left: 20px;
.icon {
display: flex;
align-items: center;
span {
color: #f1404b;
}
.iconItem {
background-color: #f1404b;
color: #fff;
font-size: 12px;
padding: 2px;
border-radius: 4px;
padding-left: 4px;
padding-right: 4px;
}
}
.title {
font-size: 26px;
margin-top: 5px;
margin-bottom: 5px;
// font-weight: bold;
}
.btn {
display: block;
background-color: #e7e6e8;
color: #333;
width: 110px;
height: 40px;
text-align: center;
line-height: 40px;
border-radius: 5px;
margin-top: 10px;
cursor: pointer;
}
.btn:hover {
background-color: #409eff;
color: #fff;
}
}
}
}
}
</style>
<style>
.tooltip {
max-width: 260px;
}
</style>

@ -0,0 +1,286 @@
<template>
<div class="app-containere">
<div class="material">
<div class="title">
<img src="@/assets/images/caseIcon.png" alt="" />
<span>任务素材</span>
</div>
<div>
<p>
根据文字描述提示利用推荐的三个AI工具生成对应的视频
<br />
1旅行视频想象你刚从一次热带岛屿旅行回来你希望将你的照片和视频片段制作成一个吸引人的旅行视频你希望视频中包含海滩日落当地市场美食和你参与的水上活动的画面
<br />
2产品介绍视频你是一家初创公司的市场经理需要制作一个简短的产品介绍视频来展示你的新科技产品你希望视频突出产品的特点使用场景和用户反馈
<br />
3教育解说视频采用数字人技术创建一个教育解说视频以生动有趣的方式解释科学概念
</p>
</div>
</div>
<div class="material">
<div class="title">
<img src="@/assets/images/步骤.png" alt="" />
<span>任务提交</span>
<span style="font-size: 13px">(请按照任务素材顺序依次提交)</span>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile1" :auto-upload="false" :on-change="handleChange1" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交1</el-button>
</el-upload>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile2" :auto-upload="false" :on-change="handleChange2" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交2</el-button>
</el-upload>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile3" :auto-upload="false" :on-change="handleChange3" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交3</el-button>
</el-upload>
</div>
</div>
<div class="material" style="margin-top: 20px">
<div class="title">
<img src="@/assets/icons/svg/sxbg.svg" style="width: 30px; height: 30px" />
<span>大模型参考工具</span>
</div>
<div style="display: flex">
<div class="case">
<div class="bgItem">
<img src="@/assets/images/aiVideo1.png" alt="" />
</div>
<div class="detail">
<div class="title">即梦Dreamina</div>
<el-tooltip popper-class="tooltip" effect="light" content="即梦Dreamina是由字节跳动旗下的剪映推出的AI创作平台它支持中文生成视频。这个平台的主要功能包括AI图片创作和视频生成用户可以通过输入文案快速生成创意图像或视频非常适合用于社交媒体平台的内容创作。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">即梦Dreamina是由字节跳动旗下的剪映推出的AI创作平台它支持中文生成视频这个平台的主要功能包括AI图片创作和视频生成用户可以通过输入文案快速生成创意图像或视频非常适合用于社交媒体平台的...</div>
</el-tooltip>
<a class="btn" href="https://jimeng.jianying.com/ai-tool/home" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
<div class="case">
<div class="bgItem">
<img src="@/assets/images/aiVideo2.png" alt="" />
</div>
<div class="detail">
<div class="title">万兴播爆</div>
<el-tooltip popper-class="tooltip" effect="light" content="万兴播爆是A股上市公司万兴科技旗下的AIGC产品,为您提供AI数字人定制服务只需简单输入关键词即可轻松生成真人营销视频。万兴播爆拥有上百套专业级模板涵盖各种场景视频需求是出海视频营销的一站式神器。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">万兴播爆是A股上市公司万兴科技旗下的AIGC产品,为您提供AI数字人定制服务只需简单输入关键词即可轻松生成真人营销视频万兴播爆拥有上百套专业级模板涵盖各种场景视频需求是出海视频营销的...</div>
</el-tooltip>
<a class="btn" href="https://virbo.wondershare.cn/?ref=pidoutv.com" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
<div class="case">
<div class="bgItem">
<img src="@/assets/images/aiVideo3.png" alt="" />
</div>
<div class="detail">
<!-- <div class="icon">
<div class="iconItem">AI工具</div>
<span></span>
<div class="iconItem">AI写作对话</div>
</div> -->
<div class="title">万彩AI</div>
<el-tooltip popper-class="tooltip" effect="light" content="万彩AI是一款强大的AI内容创作工具合集除了提供AI智能写作支持之外还集成了AI换脸、照片数字人制作和AI短视频制作等强大的AI生成内容功能。无需下载安装软件可以直接在线创作电脑网页和手机都可以使用。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">万彩AI是一款强大的AI内容创作工具合集除了提供AI智能写作支持之外还集成了AI换脸照片数字人制作和AI短视频制作等强大的AI生成内容功能无需下载安装软件可以直接在线创作电脑网页和手机...</div>
</el-tooltip>
<a class="btn" href="https://ai.kezhan365.com/" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import popModal from "@/views/components/popModal.vue";
import { getUserInfo } from "@/utils/auth";
import * as portraitModel from "@/api/portraitModel";
import { uploadFile } from "@/api/portraitModel";
import { downBlobFile } from "@/utils/index.js";
import * as echarts from "echarts";
const { proxy } = getCurrentInstance();
const baseUrl = import.meta.env.VITE_APP_BASE_API;
const previewFile1 = ref([]);
const previewFile2 = ref([]);
const previewFile3 = ref([]);
const fileList1 = ref([]);
const fileList2 = ref([]);
const fileList3 = ref([]);
const handleChange1 = async (info) => {
fileList1.value = [];
fileList1.value.push(info);
let formData = new FormData();
formData.append("file", fileList1.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI视频");
formData.append("count", 1);
try {
previewFile1.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile1.value.push({
name: fileList1.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
const handleChange2 = async (info) => {
fileList2.value = [];
fileList2.value.push(info);
let formData = new FormData();
formData.append("file", fileList2.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI视频");
formData.append("count", 2);
try {
previewFile2.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile2.value.push({
name: fileList2.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
const handleChange3 = async (info) => {
fileList3.value = [];
fileList3.value.push(info);
let formData = new FormData();
formData.append("file", fileList3.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI视频");
formData.append("count", 3);
try {
previewFile3.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile3.value.push({
name: fileList3.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
</script>
<style lang="scss" scoped>
.app-containere {
margin: 10px 4px 10px 10px;
border: 1px solid #0452c6;
// background-color: rgba(0, 0, 0, 0.5);
background: rgba(0, 29, 64, 0.5);
padding: 25px;
color: #fff;
.material {
.title {
display: flex;
align-items: center;
font-size: 18px;
span {
margin-left: 10px;
}
}
p {
font-size: 15px;
line-height: 30px;
}
.case {
margin-right: 18px;
padding: 10px;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
margin-top: 10px;
// width: calc(100% - 100px);
width: 500px;
// background: #fff;
// background: #002c5b;
background: #011031;
border-radius: 10px;
border: 1px solid #003e7c;
display: flex;
align-items: center;
.bgItem {
display: flex;
align-items: center;
justify-content: center;
img {
// 186px
width: 258px;
height: 134px;
border-radius: 5px;
scale: 0.8;
}
// background-color: #e6e8ed;
background-color: #002c5b;
width: 240px;
height: 170px;
// padding: 20px;
border-radius: 10px;
box-shadow: 0 30px 20px -20px rgba(0, 0, 0, 0.15);
}
.detail {
width: 300px;
margin-left: 20px;
.icon {
display: flex;
align-items: center;
span {
color: #f1404b;
}
.iconItem {
background-color: #f1404b;
color: #fff;
font-size: 12px;
padding: 2px;
border-radius: 4px;
padding-left: 4px;
padding-right: 4px;
}
}
.title {
font-size: 26px;
margin-top: 5px;
margin-bottom: 5px;
// font-weight: bold;
}
.btn {
display: block;
background-color: #e7e6e8;
color: #333;
width: 110px;
height: 40px;
text-align: center;
line-height: 40px;
border-radius: 5px;
margin-top: 10px;
cursor: pointer;
}
.btn:hover {
background-color: #409eff;
color: #fff;
}
}
}
}
}
</style>
<style>
.tooltip {
max-width: 260px;
}
</style>

@ -0,0 +1,286 @@
<template>
<div class="app-containere">
<div class="material">
<div class="title">
<img src="@/assets/images/caseIcon.png" alt="" />
<span>任务素材</span>
</div>
<div>
<p>
根据内容主题利用推荐的三个AI工具撰写相关的文章
<br />
1撰写博客文章假设你是一个美食博客的作者想要撰写一篇关于如何推荐外地游客品尝本地美食的文章
<br />
2编写产品描述你是一家电子商务公司的营销人员需要为一款新型智能手表编写产品描述突出其独特功能和设计
<br />
3撰写研究报告摘要你是一名研究人员需要为一篇关于可持续发展城市的研究报告撰写摘要
</p>
</div>
</div>
<div class="material">
<div class="title">
<img src="@/assets/images/步骤.png" alt="" />
<span>任务提交</span>
<span style="font-size: 13px">(请按照任务素材顺序依次提交)</span>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile1" :auto-upload="false" :on-change="handleChange1" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交1</el-button>
</el-upload>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile2" :auto-upload="false" :on-change="handleChange2" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交2</el-button>
</el-upload>
</div>
<div style="margin-top: 10px; width: 200px">
<el-upload ref="uploadRef" class="upload-demo" :file-list="previewFile3" :auto-upload="false" :on-change="handleChange3" :show-file-list="true" :limit="1">
<el-button type="primary" class="uploadBtn">+任务提交3</el-button>
</el-upload>
</div>
</div>
<div class="material" style="margin-top: 20px">
<div class="title">
<img src="@/assets/icons/svg/sxbg.svg" style="width: 30px; height: 30px" />
<span>大模型参考工具</span>
</div>
<div style="display: flex">
<div class="case">
<div class="bgItem">
<img src="@/assets/images/1723156589-image.png" alt="" />
</div>
<div class="detail">
<div class="title">讯飞写作</div>
<el-tooltip popper-class="tooltip" effect="light" content="讯飞写作是科大讯飞推出的一款智能AI写作助手它基于科大讯飞的星火大模型专注于写作、创作、学习等办公场景的应用为各行各业提供AIGC新质生产力工具。用户可以通过讯飞写作快速生成新闻稿件、种草文案、品宣策划、工作总结、心得体会等各类文本内容。它支持AI对话写作、多场景模板、AI工具润色改写扩写缩写续写、AI文生图图生图、素材辅助写作等功能全面提升用户的写作效率。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">讯飞写作是科大讯飞推出的一款智能AI写作助手它基于科大讯飞的星火大模型专注于写作创作学习等办公场景的应用为各行各业提供AIGC新质生产力工具用户可以通过讯飞写作快...</div>
</el-tooltip>
<a class="btn" href=" https://huixie.iflyrec.com/" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
<div class="case">
<div class="bgItem">
<img src="@/assets/images/huoshan.png" alt="" />
</div>
<div class="detail">
<div class="title">火山写作</div>
<el-tooltip popper-class="tooltip" effect="light" content="火山写作是由字节跳动推出的一款中英文AI写作助手它集成了创作、润色、纠错、改写、翻译等多种功能旨在帮助用户提高写作质量和效率。此外火山写作还提供了一系列实用工具比如博客文章生成器、小红书文案生成器、SEO元标签、知乎回答、电商产品描述等以支持内容创作和营销活动。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">火山写作是由字节跳动推出的一款中英文AI写作助手它集成了创作润色纠错改写翻译等多种功能旨在帮助用户提高写作质量和效率此外火山写作还提供了一系列实用工具比如博客文章生成器...</div>
</el-tooltip>
<a class="btn" href="https://www.writingo.net/" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
<div class="case">
<div class="bgItem">
<img src="@/assets/images/Pasted-628.png" alt="" />
</div>
<div class="detail">
<!-- <div class="icon">
<div class="iconItem">AI工具</div>
<span></span>
<div class="iconItem">AI写作对话</div>
</div> -->
<div class="title">豆包AI</div>
<el-tooltip popper-class="tooltip" effect="light" content="豆包AI是由字节跳动公司开发的一款多功能人工智能助手它具备强大的对话能力、个性化互动、文案创作与优化、文档阅读与深度分析、文本到图片生成、AI音乐生成、学习辅助工具、信息搜索与整合、日常生活与工作规划、个性化AI智能体创建等功能。" placement="top-start">
<div style="line-height: 24px; font-size: 13px">豆包AI是由字节跳动公司开发的一款多功能人工智能助手它具备强大的对话能力个性化互动文案创作与优化文档阅读与深度分析文本到图片生成AI音乐生成学习辅助工具信息搜索与整合...</div>
</el-tooltip>
<a class="btn" href="https://www.doubao.com/chat/" target="_blank">
<span>访问官网</span>
</a>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import popModal from "@/views/components/popModal.vue";
import { getUserInfo } from "@/utils/auth";
import * as portraitModel from "@/api/portraitModel";
import { uploadFile } from "@/api/portraitModel";
import { downBlobFile } from "@/utils/index.js";
import * as echarts from "echarts";
const { proxy } = getCurrentInstance();
const baseUrl = import.meta.env.VITE_APP_BASE_API;
const previewFile1 = ref([]);
const previewFile2 = ref([]);
const previewFile3 = ref([]);
const fileList1 = ref([]);
const fileList2 = ref([]);
const fileList3 = ref([]);
const handleChange1 = async (info) => {
fileList1.value = [];
fileList1.value.push(info);
let formData = new FormData();
formData.append("file", fileList1.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI写作");
formData.append("count", 1);
try {
previewFile1.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile1.value.push({
name: fileList1.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
const handleChange2 = async (info) => {
fileList2.value = [];
fileList2.value.push(info);
let formData = new FormData();
formData.append("file", fileList2.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI写作");
formData.append("count", 2);
try {
previewFile2.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile2.value.push({
name: fileList2.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
const handleChange3 = async (info) => {
fileList3.value = [];
fileList3.value.push(info);
let formData = new FormData();
formData.append("file", fileList3.value[0].raw);
formData.append("userId", JSON.parse(getUserInfo()).userId);
formData.append("module", "AI写作");
formData.append("count", 3);
try {
previewFile3.value = [];
const res = await uploadFile(formData);
// registerParams.value.imgAddress = res.data;
proxy.$modal.msgSuccess("上传成功!");
previewFile3.value.push({
name: fileList3.value[0].raw.name,
});
// getMessage();
} catch (e) {
// console.log(e);
}
};
</script>
<style lang="scss" scoped>
.app-containere {
margin: 10px 4px 10px 10px;
border: 1px solid #0452c6;
// background-color: rgba(0, 0, 0, 0.5);
background: rgba(0, 29, 64, 0.5);
padding: 25px;
color: #fff;
.material {
.title {
display: flex;
align-items: center;
font-size: 18px;
span {
margin-left: 10px;
}
}
p {
font-size: 15px;
line-height: 30px;
}
.case {
margin-right: 18px;
padding: 10px;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
margin-top: 10px;
// width: calc(100% - 100px);
width: 500px;
// background: #fff;
// background: #002c5b;
background: #011031;
border-radius: 10px;
border: 1px solid #003e7c;
display: flex;
align-items: center;
.bgItem {
display: flex;
align-items: center;
justify-content: center;
img {
// 186px
width: 258px;
height: 134px;
border-radius: 5px;
scale: 0.8;
}
// background-color: #e6e8ed;
background-color: #002c5b;
width: 240px;
height: 170px;
// padding: 20px;
border-radius: 10px;
box-shadow: 0 30px 20px -20px rgba(0, 0, 0, 0.15);
}
.detail {
width: 300px;
margin-left: 20px;
.icon {
display: flex;
align-items: center;
span {
color: #f1404b;
}
.iconItem {
background-color: #f1404b;
color: #fff;
font-size: 12px;
padding: 2px;
border-radius: 4px;
padding-left: 4px;
padding-right: 4px;
}
}
.title {
font-size: 26px;
margin-top: 5px;
margin-bottom: 5px;
// font-weight: bold;
}
.btn {
display: block;
background-color: #e7e6e8;
color: #333;
width: 110px;
height: 40px;
text-align: center;
line-height: 40px;
border-radius: 5px;
margin-top: 10px;
cursor: pointer;
}
.btn:hover {
background-color: #409eff;
color: #fff;
}
}
}
}
}
</style>
<style>
.tooltip {
max-width: 260px;
}
</style>

@ -6,8 +6,11 @@
</template> </template>
<script setup> <script setup>
import AIVenison from "./components/AIVenisonDiagram.vue"; import AIVenison from "./components/AIVenisonDiagram.vue";
import AIWriting from "./components/AIWriting.vue";
import AIPicture from "./components/AIPicture.vue"
import AIVideo from "./components/AIVideo.vue"
import AIGC from "./components/thirdPartyAIGC.vue"; import AIGC from "./components/thirdPartyAIGC.vue";
const pageData = [AIVenison, null, null, null, null, AIGC]; const pageData = [AIVenison, AIWriting, null, AIPicture, AIVideo, AIGC];
const page = ref(AIVenison); const page = ref(AIVenison);
const clickIndx = (index) => { const clickIndx = (index) => {
page.value = pageData[index]; page.value = pageData[index];
@ -18,7 +21,7 @@ const imgData = [
img: "wst", img: "wst",
}, },
{ {
text: "AI文章", text: "AI写作",
img: "wz", img: "wz",
}, },
{ {

@ -585,10 +585,10 @@ const step3AnswerFlag = ref(false);
const step4AnswerFlag = ref(false); const step4AnswerFlag = ref(false);
const step5AnswerFlag = ref(false); const step5AnswerFlag = ref(false);
onMounted(() => { onMounted(() => {
getData();
step3EchartInit(); step3EchartInit();
step4EchartInit(); step4EchartInit();
step5EchartInit(); step5EchartInit();
getData();
}); });
onBeforeUnmount(() => { onBeforeUnmount(() => {
saveData(); saveData();
@ -1263,7 +1263,7 @@ const saveData = () => {
stepSixD: step1Data.value[3].params2, stepSixD: step1Data.value[3].params2,
stepSevenA: step2Data.value[4].params1, stepSevenA: step2Data.value[4].params1,
stepSevenB: step2Data.value[4].params2, stepSevenB: step2Data.value[4].params2,
// stepSevenC: step2Data.value[4].params, // stepSevenC: JSON.stringify(option.value.series[0].data),
// stepSevenD: step2Data.value[5].params, // stepSevenD: step2Data.value[5].params,
// stepEightA: step2Data.value[6].params, // stepEightA: step2Data.value[6].params,
// stepEightB: step2Data.value[7].params, // stepEightB: step2Data.value[7].params,
@ -1326,7 +1326,7 @@ const getData = () => {
step1Data.value[3].params2 = res.data.stepSixD; step1Data.value[3].params2 = res.data.stepSixD;
step2Data.value[4].params1 = res.data.stepSevenA; step2Data.value[4].params1 = res.data.stepSevenA;
step2Data.value[4].params2 = res.data.stepSevenB; step2Data.value[4].params2 = res.data.stepSevenB;
// step2Data.value[4].params = res.data.stepSevenC; // option.value.series[0].data = JSON.parse(res.data.stepSevenC);
// step2Data.value[5].params = res.data.stepSevenD; // step2Data.value[5].params = res.data.stepSevenD;
// step2Data.value[6].params = res.data.stepEightA; // step2Data.value[6].params = res.data.stepEightA;
// step2Data.value[7].params = res.data.stepEightB; // step2Data.value[7].params = res.data.stepEightB;
@ -1362,6 +1362,7 @@ const getData = () => {
// step5DataTable3.value[3].params2 = res.data.stepNewFive; // step5DataTable3.value[3].params2 = res.data.stepNewFive;
// step5DataTable3.value[4].params1 = res.data.stepNewSix; // step5DataTable3.value[4].params1 = res.data.stepNewSix;
// step5DataTable3.value[4].params2 = res.data.stepNewEight; // step5DataTable3.value[4].params2 = res.data.stepNewEight;
// console.log(JSON.parse(res.data.stepSevenC));
}) })
.catch((error) => {}); .catch((error) => {});
}; };

@ -147,12 +147,12 @@
</span> </span>
<div style="margin-top: 10px; display: flex"> <div style="margin-top: 10px; display: flex">
<div id="funnel" style="width: 520px; height: 400px"></div> <div id="funnel" style="width: 520px; height: 400px"></div>
<div style="margin-top: 70px"> <div style="margin-top: 75px">
<div> <div>
<el-select <el-select
v-model="step2Select1" v-model="step2Select1"
placeholder="请选择" placeholder="请选择"
style="width: 130px; margin-bottom: 25px" style="width: 130px; margin-bottom: 28px"
> >
<el-option :label="'浏览2071'" :value="'浏览2071'" /> <el-option :label="'浏览2071'" :value="'浏览2071'" />
<el-option :label="'购物车622'" :value="'购物车622'" /> <el-option :label="'购物车622'" :value="'购物车622'" />
@ -165,7 +165,7 @@
<el-select <el-select
v-model="step2Select2" v-model="step2Select2"
placeholder="请选择" placeholder="请选择"
style="width: 130px; margin-bottom: 25px" style="width: 130px; margin-bottom: 32px"
> >
<el-option :label="'浏览2071'" :value="'浏览2071'" /> <el-option :label="'浏览2071'" :value="'浏览2071'" />
<el-option :label="'购物车622'" :value="'购物车622'" /> <el-option :label="'购物车622'" :value="'购物车622'" />
@ -178,7 +178,7 @@
<el-select <el-select
v-model="step2Select3" v-model="step2Select3"
placeholder="请选择" placeholder="请选择"
style="width: 130px; margin-bottom: 25px" style="width: 130px; margin-bottom: 30px"
> >
<el-option :label="'浏览2071'" :value="'浏览2071'" /> <el-option :label="'浏览2071'" :value="'浏览2071'" />
<el-option :label="'购物车622'" :value="'购物车622'" /> <el-option :label="'购物车622'" :value="'购物车622'" />
@ -191,7 +191,7 @@
<el-select <el-select
v-model="step2Select4" v-model="step2Select4"
placeholder="请选择" placeholder="请选择"
style="width: 130px; margin-bottom: 25px" style="width: 130px; margin-bottom: 30px"
> >
<el-option :label="'浏览2071'" :value="'浏览2071'" /> <el-option :label="'浏览2071'" :value="'浏览2071'" />
<el-option :label="'购物车622'" :value="'购物车622'" /> <el-option :label="'购物车622'" :value="'购物车622'" />
@ -204,7 +204,7 @@
<el-select <el-select
v-model="step2Select5" v-model="step2Select5"
placeholder="请选择" placeholder="请选择"
style="width: 130px; margin-bottom: 25px" style="width: 130px; margin-bottom: 30px"
> >
<el-option :label="'浏览2071'" :value="'浏览2071'" /> <el-option :label="'浏览2071'" :value="'浏览2071'" />
<el-option :label="'购物车622'" :value="'购物车622'" /> <el-option :label="'购物车622'" :value="'购物车622'" />
@ -525,77 +525,165 @@ const typeData = ref([
data2: "占总销售额的10%,给予一般关注", data2: "占总销售额的10%,给予一般关注",
}, },
]); ]);
// const option = {
// title: {
// text: "",
// // color:'#fff'
// textStyle: {
// color: "#fff",
// },
// },
// tooltip: {
// trigger: "item",
// formatter: "{b} : {c}",
// },
// // toolbox: {
// // feature: {
// // dataView: { readOnly: false },
// // restore: {},
// // saveAsImage: {},
// // },
// // },
// legend: {
// // data: ["", "", "", "", ""],
// itemStyle: {},
// textStyle: {
// color: "#fff",
// },
// },
// series: [
// {
// name: "Funnel",
// type: "funnel",
// left: "10%",
// top: 60,
// bottom: 60,
// width: "80%",
// min: 0,
// max: 2071,
// minSize: "0%",
// maxSize: "100%",
// sort: "descending",
// gap: 2,
// label: {
// show: true,
// position: "inside",
// },
// labelLine: {
// length: 10,
// lineStyle: {
// width: 1,
// type: "solid",
// },
// },
// itemStyle: {
// borderColor: "#fff",
// borderWidth: 1,
// },
// emphasis: {
// label: {
// fontSize: 20,
// },
// },
// data: [
// { value: 2071, name: "" },
// { value: 622, name: "" },
// { value: 284, name: "" },
// { value: 235, name: "" },
// { value: 223, name: "" },
// ],
// },
// ],
// };
const option = { const option = {
title: { title: {
text: "漏斗图", text: '漏斗图',
// color:'#fff' textStyle: {
textStyle: {
color: "#fff", color: "#fff",
}, },
}, },
tooltip: { tooltip: {
trigger: "item", // trigger: 'axis',
formatter: "{b} : {c}", // axisPointer: {
}, // type: 'shadow'
// toolbox: { // }
// feature: { },
// dataView: { readOnly: false },
// restore: {},
// saveAsImage: {},
// },
// },
legend: { legend: {
// data: ["", "", "", "", ""], data:[],
itemStyle: {},
textStyle: { textStyle: {
color: "#fff", color: "#fff",
}, },
}, },
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
show:false
// type: 'value',
// boundaryGap: [0, 0.01]
},
yAxis: {
type: 'category',
data: ['', '', '', '', ''],
position: 'center'
},
series: [ series: [
{ {
name: "Funnel", name: '',
type: "funnel", stack: 'one',
left: "10%", type: 'bar',
top: 60, barWidth: '60%',
bottom: 60, data: [1120, 1113, 1090, 920, 220],
width: "80%",
min: 0,
max: 2071,
minSize: "0%",
maxSize: "100%",
sort: "descending",
gap: 2,
label: {
show: true,
position: "inside",
},
labelLine: {
length: 10,
lineStyle: {
width: 1,
type: "solid",
},
},
itemStyle: { itemStyle: {
borderColor: "#fff", normal: {
borderWidth: 1, //
}, color: function (params) {
emphasis: { //
label: { var colorList = [
fontSize: 20, 'rgba(0,0,0,0)',
}, 'rgba(0,0,0,0)',
}, 'rgba(0,0,0,0)',
data: [ 'rgba(0,0,0,0)',
{ value: 2071, name: "" }, 'rgba(0,0,0,0)',
{ value: 622, name: "" }, 'rgba(0,0,0,0)'
{ value: 284, name: "" }, ];
{ value: 235, name: "" }, return colorList[params.dataIndex];
{ value: 223, name: "" }, }
], }
}
}, },
], {
}; stack: 'one',
name: '',
type: 'bar',
barWidth: '60%',
data: [223, 235, 284, 622, 2071],
itemStyle: {
normal: {
//
color: function (params) {
//
var colorList = [
'#009FF1',
'#003DA3',
'#00B869',
'#FE8D2A',
'#FB54A1',
];
return colorList[params.dataIndex];
}
},
borderColor: "#fff",
borderWidth: 1,
}
}
]
}
const step1Error = ref(0); const step1Error = ref(0);
const step2Error = ref(0); const step2Error = ref(0);
const step3Error = ref(0); const step3Error = ref(0);
@ -610,7 +698,7 @@ onBeforeUnmount(() => {
onMounted(() => { onMounted(() => {
getData(); getData();
var chartDom = document.getElementById("funnel"); var chartDom = document.getElementById("funnel");
var myChart = echarts.init(chartDom); var myChart = echarts.init(chartDom,);
option && myChart.setOption(option); option && myChart.setOption(option);
}); });
const moveUp = (index, row) => { const moveUp = (index, row) => {

Loading…
Cancel
Save