This commit is contained in:
王创世 2025-03-04 12:26:10 +08:00
parent 09b1d9659c
commit 3cc4f03d08
16 changed files with 611 additions and 333 deletions

16
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,16 @@
{
// 使 IntelliSense
//
// 访: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node-terminal",
"name": "运行脚本: dev",
"request": "launch",
"command": "npm run dev",
"cwd": "${workspaceFolder}"
}
]
}

File diff suppressed because one or more lines are too long

61
dist/ai-CHrumffn.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/ai-logo-BtlK3AB1.js vendored Normal file
View File

@ -0,0 +1 @@
const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkBAMAAACCzIhnAAAAG1BMVEUAAAD///8/Pz+/v78fHx9fX19/f3+fn5+Pj4/ctHcOAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAmklEQVRYhe3RQQrCMBCF4YdkkmsUvIIHmFXXRbR22YXZu8j9MVM0lmpp3Or7oIU/kDJJASIiIqK/5PKj8wVd9MJeJSb0Fy1t8ep30muL4EbcSudIpT8N5fUILw1G7Lr8yp0jWq/yeoW0ihNwDmrtFcPUFVvkgMotz8EQ4tQVg5XjJ+mst45vX31cslM01luXbL79lURERES/6w4ftR+JUiBWQgAAAABJRU5ErkJggg==";export{A as _};

BIN
dist/deepseek.zip vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.home-container[data-v-00216051]{background-image:url(/deepseek/lay-D9C2X5W3.png);background-position:center;background-size:cover;min-height:100vh;width:100%;position:relative}.company-title[data-v-00216051]{font-size:60px;color:#4d6bfe;text-align:center;padding:40px 0;position:relative;font-weight:600;top:120px;z-index:1}.content-wrapper[data-v-00216051]{flex:1;display:flex;justify-content:center;align-items:center;padding:40px 0;min-height:400px;margin-top:50px}.start-chat-btn .chat-btn[data-v-00216051]{background:#fff;border:none;padding:40px;border-radius:8px;font-size:20px;color:#333;cursor:pointer;box-shadow:0 4px 12px #0000001a;transition:all .3s}.start-chat-btn .chat-btn[data-v-00216051]:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0000001f}.start-chat-btn .sub-text[data-v-00216051]{font-size:16px;color:#64748b;margin-top:8px;display:flex;flex-direction:column;align-items:center;gap:4px}.footer[data-v-00216051]{background:#f7f7f7f2;padding:40px 0;position:relative;z-index:1}.footer .info-columns[data-v-00216051]{display:flex;justify-content:space-around;max-width:1200px;margin:0 auto;padding:0 20px}.footer .info-columns .info-column .title[data-v-00216051]{font-weight:700;margin-bottom:20px}.footer .info-columns .info-column .item[data-v-00216051]{color:#666;margin-bottom:10px;font-size:14px}.footer .company-info[data-v-00216051]{max-width:1200px;margin:40px auto 0;padding:0 20px;display:flex;justify-content:space-between;align-items:center}.footer .company-info .logo[data-v-00216051]{width:120px}.footer .company-info .logo img[data-v-00216051]{width:100%}.footer .company-info .qr-codes[data-v-00216051]{display:flex;gap:20px}.footer .company-info .qr-codes .qr-code[data-v-00216051]{width:100px;height:100px;background:#ddd}.footer .company-info .contact-info[data-v-00216051]{color:#666;font-size:14px;line-height:1.8}

View File

@ -1 +0,0 @@
import{c,a as t,u as r,o as l}from"./index-CXb-FhKb.js";const i=(o,n)=>{const e=o.__vccOpts||o;for(const[a,s]of n)e[a]=s;return e},p={class:"home-container"},d={__name:"index",setup(o){const n=r(),e=()=>{n.push("/ai")};return(a,s)=>(l(),c("div",p,[s[1]||(s[1]=t("div",{class:"company-title"}," 洛阳弘义智慧城市建设服务有限公司 ",-1)),t("div",{class:"content-wrapper"},[t("div",{class:"start-chat-btn"},[t("button",{class:"chat-btn",onClick:e,style:{width:"450px"}},s[0]||(s[0]=[t("div",{style:{"font-size":"20px","font-weight":"600",color:"#4D6BFE"}},"开始对话",-1),t("div",{class:"sub-text"},[t("span",null,"免费与 DeepSeek-V3 对话"),t("span",null,"使用全新旗舰模型")],-1)]))])])]))}},_=i(d,[["__scopeId","data-v-00216051"]]);export{_ as default};

File diff suppressed because one or more lines are too long

1
dist/index-DI7mKeew.js vendored Normal file
View File

@ -0,0 +1 @@
import{_ as o}from"./ai-logo-BtlK3AB1.js";import{c,a,b as l,F as e,u as n,o as f}from"./index-D76U6LGa.js";const r="/deepseek/loog-D66dCjAh.png",b=(d,i)=>{const s=d.__vccOpts||d;for(const[v,t]of i)s[v]=t;return s},p={__name:"index",setup(d){const i=n(),s=()=>{i.push("/ai")};return(v,t)=>(f(),c(e,null,[a("div",{class:"home-container"},[t[1]||(t[1]=a("div",{class:"company-title"}," 洛阳弘义智慧城市建设服务有限公司 ",-1)),a("div",{class:"content-wrapper"},[a("div",{class:"start-chat-btn"},[a("button",{class:"chat-btn",onClick:s},t[0]||(t[0]=[a("div",{style:{"font-size":"20px","font-weight":"600",color:"#4D6BFE"}},"开始对话",-1),a("div",{class:"sub-text"},[a("span",null,"免费与 DeepSeek-R1 对话"),a("span",null,"使用全新旗舰模型")],-1)]))])])]),t[2]||(t[2]=l('<div style="height:400px;" data-v-f0783b53></div><div class="footer" data-v-f0783b53><div class="footer-content" data-v-f0783b53><div class="info-columns" data-v-f0783b53><div class="info-column" data-v-f0783b53><div class="title" data-v-f0783b53>洛阳市行政审批和政务信息管理局</div></div><div class="info-column" data-v-f0783b53><div class="title" data-v-f0783b53>洛阳国晟投资控股集团有限公司</div></div><div class="info-column" data-v-f0783b53><div class="title" data-v-f0783b53>洛阳弘义公用事业投资发展集团有限公司</div></div><div class="info-column" data-v-f0783b53><div class="title" data-v-f0783b53>洛阳弘义智慧城市建设服务有限公司</div></div></div><div class="company-info" data-v-f0783b53><div class="logo" data-v-f0783b53><img src="'+r+'" alt="公司logo" data-v-f0783b53></div><div class="contact-info" data-v-f0783b53><div style="word-break:break-all;" data-v-f0783b53>© 2025 有限公司 版权所有</div></div><div class="qr-codes" data-v-f0783b53><div class="qr-code" data-v-f0783b53><img src="'+o+'" alt="二维码1" data-v-f0783b53></div><div class="qr-code" data-v-f0783b53><img src="'+o+'" alt="二维码1" data-v-f0783b53></div></div><div class="contact-info" data-v-f0783b53>网站备案号豫ICP备xxxxxxxx号-1</div><div class="contact-info" style="margin-top:10px;" data-v-f0783b53>豫公网安备 xxxxxxxxx 号 </div></div></div></div>',2))],64))}},u=b(p,[["__scopeId","data-v-f0783b53"]]);export{u as default};

1
dist/index-wISBtklo.css vendored Normal file
View File

@ -0,0 +1 @@
.home-container[data-v-f0783b53]{background-image:url(/deepseek/lay-D9C2X5W3.png);background-position:center;background-size:cover;min-height:100vh;width:100%;position:relative}.company-title[data-v-f0783b53]{font-size:60px;color:#4d6bfe;text-align:center;padding:40px 20px;position:relative;font-weight:600;top:150px;z-index:1}@media screen and (max-width: 768px){.company-title[data-v-f0783b53]{font-size:32px;top:100px;padding:20px}}.content-wrapper[data-v-f0783b53]{flex:1;display:flex;justify-content:center;align-items:center;padding:40px 0;min-height:400px;margin-top:80px}@media screen and (max-width: 768px){.content-wrapper[data-v-f0783b53]{margin-top:40px;padding:20px}}.start-chat-btn .chat-btn[data-v-f0783b53]{background:#fff;border:none;padding:40px;border-radius:20px;font-size:20px;color:#333;cursor:pointer;box-shadow:0 4px 13px #0000001a;transition:all .3s;width:450px}.start-chat-btn .chat-btn[data-v-f0783b53]:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0000001f}@media screen and (max-width: 768px){.start-chat-btn .chat-btn[data-v-f0783b53]{width:100%!important;padding:20px}}.start-chat-btn .sub-text[data-v-f0783b53]{font-size:16px;color:#64748b;margin-top:8px;display:flex;flex-direction:column;align-items:center;gap:4px}@media screen and (max-width: 768px){.start-chat-btn .sub-text[data-v-f0783b53]{font-size:14px}}.footer[data-v-f0783b53]{padding:40px 0;width:100%;z-index:1}.footer .footer-content[data-v-f0783b53]{display:flex;justify-content:center;max-width:1200px;align-items:center;margin:0 auto;padding:0 20px}@media screen and (max-width: 768px){.footer .footer-content[data-v-f0783b53]{flex-direction:column;padding:0 20px}}.footer .info-columns[data-v-f0783b53]{display:flex;gap:80px;margin-right:40px}@media screen and (max-width: 768px){.footer .info-columns[data-v-f0783b53]{flex-direction:column;gap:30px;margin-right:0}}.footer .info-columns .info-column .title[data-v-f0783b53]{font-size:16px;font-weight:700;margin-bottom:20px;color:#333}.footer .info-columns .info-column .item[data-v-f0783b53]{color:#666;margin-bottom:15px;font-size:14px;cursor:pointer}.footer .info-columns .info-column .item[data-v-f0783b53]:hover{color:#4d6bfe}@media screen and (max-width: 768px){.footer .info-columns .info-column[data-v-f0783b53]{text-align:center}.footer .info-columns .info-column .title[data-v-f0783b53]{font-size:14px;margin-bottom:10px}}.footer .company-info[data-v-f0783b53]{width:390px;margin-left:80px}.footer .company-info .logo[data-v-f0783b53]{margin-bottom:20px}.footer .company-info .logo img[data-v-f0783b53]{width:120px;height:auto}.footer .company-info .contact-info[data-v-f0783b53]{font-size:14px;color:#94a3b8}.footer .company-info .contact-info div[data-v-f0783b53]{white-space:nowrap}.footer .company-info .qr-codes[data-v-f0783b53]{display:flex;gap:20px;margin:20px 0}.footer .company-info .qr-codes .qr-code[data-v-f0783b53]{box-shadow:0 2px 8px #00000057;width:80px;height:80px;border-radius:4px}.footer .company-info .qr-codes .qr-code img[data-v-f0783b53]{border-radius:4px;width:100%;height:100%;object-fit:cover}@media screen and (max-width: 768px){.footer .company-info[data-v-f0783b53]{width:100%;margin-left:0;margin-top:40px;text-align:center}.footer .company-info .logo[data-v-f0783b53]{display:flex;justify-content:center}.footer .company-info .qr-codes[data-v-f0783b53]{justify-content:center}}

2
dist/index.html vendored
View File

@ -32,7 +32,7 @@
background: #a8a8a8; /* 悬停或活动状态下滑块的背景颜色 */
}
</style>
<script type="module" crossorigin src="/deepseek/index-CXb-FhKb.js"></script>
<script type="module" crossorigin src="/deepseek/index-D76U6LGa.js"></script>
</head>
<body style="margin: 0;">

View File

Before

Width:  |  Height:  |  Size: 530 KiB

After

Width:  |  Height:  |  Size: 530 KiB

BIN
dist/loog-D66dCjAh.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -5,10 +5,10 @@
<div class="f2eea526">
<div class="a5cd95be">
<div class="b83ee326">
<div class="f6004764" ref="chatContainerRef" @scroll="handleScroll">
<div class="f72b0bab" :style="{ height: !showList ? '60%' : '100%' }">
<div class="dad65929" style="flex-grow: 0;margin: 0px auto;" ref="chatContainer" v-if="showList"
v-for="item in paramMsg">
<div class="f6004764">
<div class="dad65929" v-if="showList" @wheel="handleScroll" style="flex-grow: 0;margin: 0px auto;overflow: auto;"
ref="chatContainerRef" >
<div v-for="item in paramMsg">
<div v-if="item.role == 'user'" class="fa81">
<div class="fbb737a4">{{ item.content }}<div class="ds-flex e0558cb1"
style="position: absolute; right: calc(100% + 18px); top: 12px; gap: 12px;">
@ -43,7 +43,7 @@
<img src="@/assets/ai-logo.png" style="width: 100%;border-radius: 50%;">
</div>
<div class="edb250b1">
<div v-if="item.skLong" class="a6d716f5 db5991dd">
<div v-if="item.skLong && item.msgCode == 1" class="a6d716f5 db5991dd">
<div class="ds-icon acbf4957" style="font-size: 12px; width: 12px; height: 12px;"><svg
width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
@ -54,9 +54,21 @@
</svg>
</div>思考中...
</div>
<div v-if="!item.skLong && item.msgCode == 0" class="a6d716f5 db5991dd">
<div class="ds-icon acbf4957" style="font-size: 12px; width: 12px; height: 12px;"><svg
width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M2.656 17.344c-1.016-1.015-1.15-2.75-.313-4.925.325-.825.73-1.617 1.205-2.365L3.582 10l-.033-.054c-.5-.799-.91-1.596-1.206-2.365-.836-2.175-.703-3.91.313-4.926.56-.56 1.364-.86 2.335-.86 1.425 0 3.168.636 4.957 1.756l.053.034.053-.034c1.79-1.12 3.532-1.757 4.957-1.757.972 0 1.776.3 2.335.86 1.014 1.015 1.148 2.752.312 4.926a13.892 13.892 0 0 1-1.206 2.365l-.034.054.034.053c.5.8.91 1.596 1.205 2.365.837 2.175.704 3.911-.311 4.926-.56.56-1.364.861-2.335.861-1.425 0-3.168-.637-4.957-1.757L10 16.415l-.053.033c-1.79 1.12-3.532 1.757-4.957 1.757-.972 0-1.776-.3-2.335-.86zm13.631-4.399c-.187-.488-.429-.988-.71-1.492l-.075-.132-.092.12a22.075 22.075 0 0 1-3.968 3.968l-.12.093.132.074c1.308.734 2.559 1.162 3.556 1.162.563 0 1.006-.138 1.298-.43.3-.3.436-.774.428-1.346-.008-.575-.159-1.264-.449-2.017zm-6.345 1.65l.058.042.058-.042a19.881 19.881 0 0 0 4.551-4.537l.043-.058-.043-.058a20.123 20.123 0 0 0-2.093-2.458 19.732 19.732 0 0 0-2.458-2.08L10 5.364l-.058.042A19.883 19.883 0 0 0 5.39 9.942L5.348 10l.042.059c.631.874 1.332 1.695 2.094 2.457a19.74 19.74 0 0 0 2.458 2.08zm6.366-10.902c-.293-.293-.736-.431-1.298-.431-.998 0-2.248.429-3.556 1.163l-.132.074.12.092a21.938 21.938 0 0 1 3.968 3.968l.092.12.074-.132c.282-.504.524-1.004.711-1.492.29-.753.442-1.442.45-2.017.007-.572-.129-1.045-.429-1.345zM3.712 7.055c.202.514.44 1.013.712 1.493l.074.13.092-.119a21.94 21.94 0 0 1 3.968-3.968l.12-.092-.132-.074C7.238 3.69 5.987 3.262 4.99 3.262c-.563 0-1.006.138-1.298.43-.3.301-.436.774-.428 1.346.007.575.159 1.264.448 2.017zm0 5.89c-.29.753-.44 1.442-.448 2.017-.008.572.127 1.045.428 1.345.293.293.736.431 1.298.431.997 0 2.247-.428 3.556-1.162l.131-.074-.12-.093a21.94 21.94 0 0 1-3.967-3.968l-.093-.12-.074.132a11.712 11.712 0 0 0-.71 1.492z"
fill="currentColor" stroke="currentColor" stroke-width=".1"></path>
<path d="M10.706 11.704A1.843 1.843 0 0 1 8.155 10a1.845 1.845 0 1 1 2.551 1.704z"
fill="currentColor" stroke="currentColor" stroke-width=".2"></path>
</svg>
</div>您的请求过于频繁请您稍后再试...
</div>
<!--思考的转圈图标-->
<div v-if="item.skLong" class="ds-loading b4e4476b" style="font-size: 20px;"><svg
viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
<div v-if="item.skLong && item.msgCode == 1" class="ds-loading b4e4476b"
style="font-size: 20px;">
<svg viewBox="0 0 36 36" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
data-icon="spin">
<defs>
<linearGradient x1="0%" y1="100%" x2="100%" y2="100%" id="linearGradient-1">
@ -74,7 +86,7 @@
</svg>
</div>
<!--思考的内容-->
<div class="e1675d8b">
<div class="e1675d8b" v-if="isNotEmpty(item.sk)">
<div class="ecc93a3b"></div>
<p class="ba94db8a">
{{ item.sk }}
@ -115,6 +127,7 @@
</div>
</div>
</div>
</div>
<div class="a85a674a" v-if="!showList">
<div class="c7e7df4d">
<div class="ds-icon da6cda9a" style="font-size: 60px; width: 60px; height: 60px;"><svg
@ -131,37 +144,39 @@
<div class="e214291b"><svg width="18" height="18" viewBox="0 0 18 18" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path
d="M5.856 17.121a.979.979 0 0 1-.327-.06.839.839 0 0 1-.283-.177.739.739 0 0 1-.187-.255.724.724 0 0 1-.07-.303l-.02-1.609a4.663 4.663 0 0 1-1.446-.455 4.252 4.252 0 0 1-.637-.401c-.199-.146-.385-.31-.553-.492a4.442 4.442 0 0 1-.45-.577 4.303 4.303 0 0 1-.327-.637 3.823 3.823 0 0 1-.206-.686 3.729 3.729 0 0 1-.064-.704V6.478c0-.261.025-.516.077-.771a4.43 4.43 0 0 1 .244-.747 4.062 4.062 0 0 1 .932-1.28c.2-.183.418-.347.65-.493.23-.145.482-.267.739-.364a4.21 4.21 0 0 1 .81-.225c.27-.054.553-.078.835-.078H8.55c.103 0 .2.018.29.054a.7.7 0 0 1 .411.376.667.667 0 0 1-.161.766.736.736 0 0 1-.25.151.764.764 0 0 1-.29.055H5.573c-.186 0-.366.012-.54.049-.18.03-.353.079-.52.145-.145-.167.061-.328.14-.482.237-.148.091-.29.2-.418.316a2.897 2.897 0 0 0-.347.388c-.097.14-.187.286-.257.444a2.473 2.473 0 0 0-.206.977v4.287c0 .17.013.333.051.503a2.549 2.549 0 0 0 .772 1.33 2.721 2.721 0 0 0 .913.559c.167.066.347.115.527.152.18.03.36.048.546.048a.904.904 0 0 1 .61.23.848.848 0 0 1 .194.262.84.84 0 0 1 .07.303l.007.99 1.915-1.293a2.877 2.877 0 0 1 1.64-.492h2.372c.186 0 .366-.018.54-.048.18-.03.353-.08.52-.146.168-.067.329-.146.483-.237.148-.091.29-.2.418-.316.128-.121.244-.249.347-.388a2.8 2.8 0 0 0 .257-.444 2.47 2.47 0 0 0 .206-.977V8.585a.646.646 0 0 1 .225-.492.679.679 0 0 1 .244-.152.814.814 0 0 1 .585 0c.09.03.174.085.244.244.152a.657.657 0 0 1 .225.492V10.8c0 .261-.032.516-.083.771a4.192 4.192 0 0 1-.245.74c-.109.244-.244.468-.398.687a3.735 3.735 0 0 1-.534.6c-.2.183-.418.347-.65.493a4.134 4.134 0 0 1-.738.364 4.7 4.7 0 0 1-.81.225c-.27.054-.553.079-.836.079h-1.877c-.604 0-1.144.164-1.633.491l-2.54 1.713a.913.913 0 0 1-.514.157z"
d="M5.856 17.121a.979.979 0 0 1-.327-.06.839.839 0 0 1-.283-.177.739.739 0 0 1-.187-.255.724.724 0 0 1-.07-.303l-.02-1.609a4.663 4.663 0 0 1-1.446-.455 4.252 4.252 0 0 1-.637-.401c-.199-.146-.385-.31-.553-.492a4.442 4.442 0 0 1-.45-.577 4.303 4.303 0 0 1-.327-.637 3.823 3.823 0 0 1-.206-.686 3.729 3.729 0 0 1-.064-.704V6.478c0-.261.025-.516.077-.771a4.43 4.43 0 0 1 .244-.747 4.062 4.062 0 0 1 .932-1.28c.2-.183.418-.347.65-.493.23-.145.482-.267.739-.364a4.21 4.21 0 0 1 .81-.225c.27-.054.553-.078.835-.078H8.55c.103 0 .2.018.29.054a.7.7 0 0 1 .411.376.667.667 0 0 1-.161.766.736.736 0 0 1-.25.151.764.764 0 0 1-.29.055H5.573c-.186 0-.366.012-.54.049-.18.03-.353.079-.52.145-.52.145-.167.061-.328.14-.482-.267-.739-.364a4.21 4.21 0 0 1 .81-.225c.27-.054.553-.078.835-.078H8.55c.103 0 .2.018.29.054a.7.7 0 0 1 .411.376.667.667 0 0 1-.161.766.736.736 0 0 1-.25.151.764.764 0 0 1-.29.055H5.573c-.186 0-.366.012-.54.049-.18.03-.353.079-.52.145-.52.145-.167.061-.328.14-.482.267-.148.091-.29.2-.418.316a2.897 2.897 0 0 0-.347.388c-.097.14-.187.286-.257.444a2.473 2.473 0 0 0-.206.977v4.287c0 .17.013.333.051.503a2.549 2.549 0 0 0 .772 1.33 2.721 2.721 0 0 0 .913.559c.167.066.347.115.527.152.18.03.36.048.546.048a.904.904 0 0 1 .61.23.848.848 0 0 1 .194.262.84.84 0 0 1 .07.303l.007.99 1.915-1.293a2.877 2.877 0 0 1 1.64-.492h2.372c.186 0 .366-.018.54-.048.18-.03.353-.08.52-.146.168-.067.329-.146.483-.237.148-.091.29-.2.418-.316.128-.121.244-.249.347-.388a2.8 2.8 0 0 0 .257-.444 2.47 2.47 0 0 0 .206-.977V8.585a.646.646 0 0 1 .225-.492.679.679 0 0 1 .244-.152.814.814 0 0 1 .585 0c.09.03.174.085.244.244.244.244.244.244.152a.657.657 0 0 1 .225.492V10.8c0 .261-.032.516-.083.771a4.192 4.192 0 0 1-.245.74c-.109.244-.244.468-.398.687a3.735 3.735 0 0 1-.534.6c-.2.183-.418.347-.65.493a4.134 4.134 0 0 1-.738.364 4.7 4.7 0 0 1-.81.225c-.27.054-.553.079-.836.079h-1.877c-.604 0-1.144.164-1.633.491l-2.54 1.713a.913.913 0 0 1-.514.157z"
fill="currentColor"></path>
<path
d="M15.866 4.125h-4.174c-.41 0-.741.313-.741.7 0 .387.332.7.741.7h4.174c.41 0 .742-.313.742-.7 0-.387-.332-.7-.742-.7z"
d="M15.866 4.125h-4.174c-.41 0-.741.313-.741.7 0 .387.332.741.7h4.174c.41 0 .742-.313.742-.7 0-.387-.332-.7-.742-.7z"
fill="currentColor"></path>
<path
d="M14.537 2.932c0-.396-.34-.717-.759-.717s-.758.32-.758.717v3.786c0 .396.34.717.758.717.717.42 0 .76-.321.76-.717V2.932z"
d="M14.537 2.932c0-.396-.34-.717-.759-.717s-.758.32-.758.717v3.786c0 .396.34.717.758.717.717.717.42 0 .76-.321.76-.717V2.932z"
fill="currentColor"></path>
</svg><span>开启新对话</span></div>
</div>
<div class="cbcaa82c">
<div class="cbcaa82c" :style="{ bottom: showList ? '0px' : '200px' }">
<div class="aaff8b8f">
<div class="cefa5c26">
<div class="dd442025 b699646e">
<div class="fad49dec"><textarea v-model="message" id="chat-input" class="c92459f0"
placeholder="给 DeepSeek 发送消息 " rows="2"></textarea>
<div class="dd442025 b699646e" @click="focusTextarea">
<div class="fad49dec">
<textarea v-model="message" id="chat-input" class="c92459f0" placeholder="给 DeepSeek 发送消息 "
rows="2" @keyup.enter.prevent="handleEnterPress" ref="textareaRef"></textarea>
<div class="b13855df">
</div>
</div>
<div class="ec4f5d61">
<div class="bf38813a">
<div @click="MesdsetQuestionStorp" v-if="!chatHdEnd" role="button" aria-disabled="false" class="f6d670">
<div @click="MesdsetQuestionStorp" v-if="!chatHdEnd" role="button" aria-disabled="false"
class="f6d670">
<div class="f286936b">
<div class="be24146b"></div>
</div>
</div>
<div @click="MesdsetQuestion" v-if="chatHdEnd" role="button" aria-disabled="false" class="f6d670">
<div @click="MesdsetQuestion" v-if="chatHdEnd" role="button" aria-disabled="false"
class="f6d670">
<div class="f286936b">
<div class="ds-icon" style="font-size: 16px; width: 16px; height: 16px;"><svg
width="14" height="16" viewBox="0 0 14 16" fill="none"
xmlns="http://www.w3.org/2000/svg">
<div class="ds-icon" style="font-size: 16px; width: 16px; height: 16px;"><svg width="14"
height="16" viewBox="0 0 14 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M7 16c-.595 0-1.077-.462-1.077-1.032V1.032C5.923.462 6.405 0 7 0s1.077.462 1.077 1.032v13.936C8.077 15.538 7.595 16 7 16z"
fill="currentColor"></path>
@ -180,8 +195,9 @@
</div>
</div>
<div class="fcaa63f8">内容由 AI 生成请仔细甄别</div>
<div class="fcaa63f8" style="margin-top: 60px;font-size: 16px;font-weight: 600;display: flex; align-items: center; gap: 30px;color: #1A9BFF;">
<div>支持单位</div>
<div class="fcaa63f8" style="margin-top: 60px;font-size: 16px;font-weight: 600;color: #1A9BFF;">
<div style="margin-bottom: 20px;">支持单位</div>
<div class="support-units">
<div>洛阳市行政审批和政务信息管理局</div>
<div>洛阳国晟投资控股集团有限公司</div>
<div>洛阳弘义公用事业投资发展集团有限公司</div>
@ -199,11 +215,10 @@
</template>
<script setup lang="ts">
import { reactive, ref, onUnmounted, nextTick, onMounted } from 'vue'
import { setQuestion, getQuestion } from "@/api/index";
import { marked } from 'marked';
import { useMessage } from 'naive-ui'
import { getQuestion, setQuestion } from "@/api/index";
import "highlight.js/styles/monokai-sublime.css";
import { marked } from 'marked';
import { computed, nextTick, onMounted, onUnmounted, reactive, ref } from 'vue';
const Nevkey = ref('');
const showList = ref(false);
const message = ref('');
@ -219,45 +234,48 @@ const userScrolled = ref(false);
const chatHdEnd = ref(true);
//
const scrollToBottom = async () => {
//
if (userScrolled.value) return;
await nextTick();
setTimeout(() => {
if (chatContainerRef.value) {
const container = chatContainerRef.value;
//
if (container && (!userScrolled.value || chatHdEnd.value)) {
container.scrollTop = container.scrollHeight;
}
}, 100);
};
onMounted(()=>{
Nevkey.value = Date.now().toString();
})
//
const handleScroll = (event) => {
const container = event.target;
const isScrolledToBottom = container.scrollHeight - container.scrollTop < container.clientHeight;
const handleScroll = (event: WheelEvent) => {
const container = event.currentTarget as HTMLElement;
const isAtBottom = Math.abs(container.scrollHeight - container.scrollTop - container.clientHeight) < 50;
console.log(container.scrollHeight - container.scrollTop - container.clientHeight);
//
if (!isScrolledToBottom) {
// ,
if (!isAtBottom) {
userScrolled.value = true;
}
//
if (isScrolledToBottom) {
} else {
userScrolled.value = false;
}
};
onMounted(() => {
Nevkey.value = Date.now().toString();
})
//
const getQuestionList = () => {
if (storp.value == true) {
storp.value = false;
chatHdEnd.value = true;
return;
}
const index = paramMsg.value.length - 1;
if (paramMsg.value[index].role != 'assistant') {
paramMsg.value.push({ role: 'assistant', sk: '', content: '', skLong: true });
paramMsg.value.push({ role: 'assistant', sk: '', content: '', skLong: false, msgCode: 1 });
}
if (paramMsg.value[index].msgCode == 0) {
storp.value = false;
chatHdEnd.value = true;
return;
}
getQuestion({ 'key': Nevkey.value, 'page': page.page, 'limit': page.limit }).then(res => {
if (res.code == 1) {
@ -267,8 +285,10 @@ const getQuestionList = () => {
processedIds.value.add(item.id);
const lastIndex = paramMsg.value.length - 1;
if (item.reasoning == 1) {
paramMsg.value[lastIndex].skLong = true;
paramMsg.value[lastIndex].sk += item.content;
} else {
//paramMsg.value[lastIndex].sk = '';
paramMsg.value[lastIndex].skLong = false;
paramMsg.value[lastIndex].content += item.content;
}
@ -280,7 +300,7 @@ const getQuestionList = () => {
chatHdEnd.value = true;
return;
}
scrollToBottom();
scrollToBottom(); //
}
if (res.data.list.length == page.limit) {
page.page++;
@ -293,10 +313,8 @@ const getQuestionList = () => {
}
const storp = ref(false);
//
const MesdsetQuestion = () => {
if (!message.value || message.value.trim() === '') return
console.log(chatHdEnd.value);
if (chatHdEnd.value == true) {
@ -309,19 +327,29 @@ const MesdsetQuestion = () => {
message.value = '';
chatHdEnd.value = false;
userScrolled.value = false;
let lastElement = paramMsg.value.at(-1);
if (lastElement.role == 'assistant' && lastElement.content == '') {
paramMsg.value.pop();
}
scrollToBottom(); //
setQuestion({ 'key': Nevkey.value, 'messages': JSON.stringify(paramMsg.value) }).then(res => {
console.log(res);
if (res.code == 0) {
const lastIndex = paramMsg.value.length - 1;
paramMsg.value[lastIndex].skLong = false;
paramMsg.value[lastIndex].msgCode = 0;
}
});
getQuestionList();
}
}
const MesdsetQuestionStorp = () => {
storp.value=true;
paramMsg.value=[];
chatHdEnd.value = true;
showList.value=false;
window.location.reload();
// storp.value = true;
// paramMsg.value = [];
// chatHdEnd.value = true;
// showList.value = false;
// const lIndex = paramMsg.value.length - 1;
// paramMsg.value[lIndex].skLong = false;
}
@ -334,6 +362,42 @@ const copy = (d) => {
navigator.clipboard.writeText(d);
//AllMessage.success('');
}
//
const getMobileHeight = computed(() => {
//
const isMobile = window.innerWidth <= 768;
//return isMobile ? '30%' : '60%';
return '10%';
});
// script setup
const handleEnterPress = (e: KeyboardEvent) => {
// shift ,
if (e.shiftKey) {
return;
}
//
e.preventDefault();
//
MesdsetQuestion();
};
// script setup
const isNotEmpty = (str: string) => {
return str && str.trim().replace(/[\s\r\n\t]/g, '').length > 0;
}
// script setup :
const textareaRef = ref<HTMLTextAreaElement | null>(null);
const focusTextarea = () => {
if (textareaRef.value) {
textareaRef.value.focus();
}
};
</script>
<style src="@/assets/home.css"></style>
@ -351,4 +415,146 @@ code[class*=language-],
pre[class*=language-] {
color: #000 !important;
}
.support-units {
display: flex;
flex-direction: column;
gap: 15px;
}
@media screen and (min-width: 768px) {
.support-units {
flex-direction: row;
gap: 30px;
}
}
/* 修改输入框容器的样式 */
.cbcaa82c {
position: sticky;
bottom: 0;
/* 移动端默认值 */
background: #fff;
z-index: 10;
padding: 16px;
margin-top: auto;
}
/* PC端的底部间距调整 */
@media screen and (min-width: 769px) {
.cbcaa82c {
bottom: 0px;
/* PC端的底部间距 */
}
}
/* 移动端的底部间距保持为0 */
@media screen and (max-width: 768px) {
.cbcaa82c {
bottom: 0;
}
}
/* 确保聊天内容区域可以正常滚动 */
.f6004764 {
display: flex;
flex-direction: column;
height: 100%;
overflow-y: auto;
}
/* 聊天内容容器样式 */
.f72b0bab {
flex: 1;
overflow-y: auto;
padding-bottom: 20px;
/* 添加底部padding防止内容被输入框遮挡 */
}
/* 调整欢迎内容与顶部的距离 - 基础样式 */
.a85a674a {
padding-top: 10px;
/* 减少默认的顶部padding */
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 150px;
/* 减少最小高度 */
}
/* PC端的样式调整 */
@media screen and (min-width: 769px) {
.a85a674a {
padding-top: 5px;
/* PC端更小的顶部间距 */
min-height: 120px;
/* PC端更小的最小高度 */
}
.c7e7df4d {
margin-bottom: 12px;
/* PC端更小的底部间距 */
}
.a8d0e1d3 {
margin-top: 6px;
/* PC端更小的顶部间距 */
}
}
/* 移动端的样式保持原样 */
@media screen and (max-width: 768px) {
.a85a674a {
padding-top: 20px;
min-height: 200px;
}
}
/* 调整欢迎文字的样式 */
.c7e7df4d {
margin-bottom: 16px;
/* 减少底部间距 */
font-size: 18px;
font-weight: 500;
}
.a85a674a .c7e7df4d {
margin-top: 100px;
}
/* 调整描述文字的样式 */
.a8d0e1d3 {
margin-top: 8px;
/* 减少与上方内容的间距 */
color: #666;
}
/* ... existing code ... */
/* 自定义滚动条样式 */
.dad65929::-webkit-scrollbar {
width: 1px; /* 滚动条宽度 */
height: 1px; /* 滚动条高度 */
}
.dad65929::-webkit-scrollbar-track {
background: #f1f1f1; /* 滚动条轨道背景颜色 */
border-radius: 1px; /* 轨道圆角 */
}
.dad65929::-webkit-scrollbar-thumb {
background: #888; /* 滚动条滑块颜色 */
border-radius: 1px; /* 滑块圆角 */
}
.dad65929::-webkit-scrollbar-thumb:hover {
background: #555; /* 鼠标悬停时滑块颜色 */
}
/* 兼容 Firefox */
.dad65929 {
scrollbar-width: thin; /* 滚动条宽度 */
scrollbar-color: #888 #f1f1f1; /* 滑块颜色和轨道颜色 */
}
</style>

View File

@ -8,7 +8,7 @@
<!-- 中间内容区域 -->
<div class="content-wrapper">
<div class="start-chat-btn" >
<button class="chat-btn" @click="startChat" style="width: 450px;">
<button class="chat-btn" @click="startChat" >
<div style="font-size: 20px;font-weight: 600;color: #4D6BFE;">开始对话</div>
<div class="sub-text">
<span>免费与 DeepSeek-R1 对话</span>
@ -19,49 +19,49 @@
</div>
<!-- 添加底部区域 -->
</div>
<div style="height: 800px;"></div>
<div style="height: 400px;"></div>
<div class="footer">
<div class="footer-content">
<div class="info-columns">
<div class="info-column">
<div class="title">研究</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="title">洛阳市行政审批和政务信息管理局</div>
<!-- <div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div> -->
</div>
<div class="info-column">
<div class="title">研究</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="title">洛阳国晟投资控股集团有限公司</div>
<!-- <div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div> -->
</div>
<div class="info-column">
<div class="title">研究</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="title">洛阳弘义公用事业投资发展集团有限公司</div>
<!-- <div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div> -->
</div>
<div class="info-column">
<div class="title">研究</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="title">洛阳弘义智慧城市建设服务有限公司</div>
<!-- <div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div>
<div class="item">XXXXXXXXXX</div> -->
</div>
</div>
@ -70,8 +70,7 @@
<img src="@/assets/loog.png" alt="公司logo">
</div>
<div class="contact-info">
<div style="word-break: break-all;">© 2025 XXXXXXXXXXXXXXXXXXXXXXXXXXXXX有限公司</div>
<div>版权所有</div>
<div style="word-break: break-all;">© 2025 有限公司 版权所有</div>
</div>
<div class="qr-codes">
<div class="qr-code">
@ -81,8 +80,8 @@
<img src="@/assets/ai-logo.png" alt="二维码1">
</div>
</div>
<div class="contact-info">网站备案号豫ICP备2023000045-1</div>
<div class="contact-info" style="margin-top: 10px;">豫公网安备 33010502011812 </div>
<div class="contact-info">网站备案号豫ICP备xxxxxxxx-1</div>
<div class="contact-info" style="margin-top: 10px;">豫公网安备 xxxxxxxxx </div>
</div>
</div>
</div>
@ -111,11 +110,17 @@ const startChat = () => {
font-size: 60px;
color: #4D6BFE;
text-align: center;
padding: 40px 0;
padding: 40px 20px;
position: relative;
font-weight: 600;
top: 150px;
z-index: 1;
@media screen and (max-width: 768px) {
font-size: 32px;
top: 100px;
padding: 20px;
}
}
.content-wrapper {
@ -126,6 +131,11 @@ const startChat = () => {
padding: 40px 0;
min-height: 400px;
margin-top: 80px;
@media screen and (max-width: 768px) {
margin-top: 40px;
padding: 20px;
}
}
.start-chat-btn {
@ -139,11 +149,16 @@ const startChat = () => {
cursor: pointer;
box-shadow: 0px 4px 13px 0px rgba(0,0,0,0.1);
transition: all 0.3s;
width: 450px;
&:hover {
transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
}
@media screen and (max-width: 768px) {
width: 100% !important;
padding: 20px;
}
}
.sub-text {
@ -154,6 +169,10 @@ const startChat = () => {
flex-direction: column;
align-items: center;
gap: 4px;
@media screen and (max-width: 768px) {
font-size: 14px;
}
}
}
@ -161,20 +180,31 @@ const startChat = () => {
padding: 40px 0;
width: 100%;
z-index: 1;
.footer-content {
display: flex;
justify-content: center;
max-width: 1200px;
align-items: center;
margin: 0 auto;
padding: 0 20px;
@media screen and (max-width: 768px) {
flex-direction: column;
padding: 0 20px;
}
}
.info-columns {
display: flex;
gap: 100px;
gap: 80px;
margin-right: 40px;
@media screen and (max-width: 768px) {
flex-direction: column;
gap: 30px;
margin-right: 0;
}
.info-column {
.title {
font-size: 16px;
@ -193,6 +223,15 @@ const startChat = () => {
color: #4D6BFE;
}
}
@media screen and (max-width: 768px) {
text-align: center;
.title {
font-size: 14px;
margin-bottom: 10px;
}
}
}
}
@ -233,6 +272,22 @@ const startChat = () => {
}
}
}
@media screen and (max-width: 768px) {
width: 100%;
margin-left: 0;
margin-top: 40px;
text-align: center;
.logo {
display: flex;
justify-content: center;
}
.qr-codes {
justify-content: center;
}
}
}
}
</style>