first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
x64:
firstOrDefaultFilePatterns:
- '!**/node_modules'
- '!build{,/**/*}'
- '!build{,/**/*}'
- '*'
- package.json
- '!**/*.{iml,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,suo,xproj,cc,d.ts,pdb}'
- '!**/._*'
- '!**/electron-builder.{yaml,yml,json,json5,toml}'
- '!**/{.git,.hg,.svn,CVS,RCS,SCCS,__pycache__,.DS_Store,thumbs.db,.gitignore,.gitkeep,.gitattributes,.npmignore,.idea,.vs,.flowconfig,.jshintrc,.eslintrc,.circleci,.yarn-integrity,.yarn-metadata.json,yarn-error.log,yarn.lock,package-lock.json,npm-debug.log,appveyor.yml,.travis.yml,circle.yml,.nyc_output}'
- '!.yarn{,/**/*}'
- '!.editorconfig'
- '!.yarnrc.yml'
nodeModuleFilePatterns:
- '**/*'
- '*'

View File

@@ -0,0 +1,16 @@
directories:
output: ./build
buildResources: build
appId: com.abandon.qq
productName: Abandon
asar: false
copyright: Copyright © 2022 abandon
extends: null
files:
- filter:
- ./*
win:
icon: ./logo.ico
target:
- msi
electronVersion: 19.0.8

View File

@@ -0,0 +1,21 @@
Copyright (c) Electron contributors
Copyright (c) 2013-2020 GitHub Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<textarea name="" placeholder="输入内容" id="" cols="30" rows="10"></textarea>
<button>发送</button>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
var ws = new WebSocket("ws://127.0.0.1:8080")
//以下三个均可省略不写,只需要一定要onmessage
// ws.onopen = function () {
// console.log("连接已经打开");
// }
// ws.onerror = function () {
// console.log("连接产生错误");
// }
// ws.onclose = function () {
// console.log("连接关闭");
// }
ws.onmessage = function (e) {
console.log("收到后端给的消息",e.data);
}
$("button").click(function (){
ws.send($("textarea").val())
console.log($("textarea").val());
})
</script>
</html>

View File

@@ -0,0 +1,42 @@
// main.js
// Modules to control application life and create native browser window
const { app, BrowserWindow } = require('electron')
const path = require('path')
const createWindow = () => {
// Create the browser window.
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
// and load the index.html of the app.
mainWindow.loadFile('index.html')
// Open the DevTools.
// mainWindow.webContents.openDevTools()
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
createWindow()
app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit()
})

View File

@@ -0,0 +1,8 @@
{
"name": "frontend",
"version": "1.0.0",
"description": "",
"main": "main.js",
"author": "abandon",
"license": "ISC"
}

View File

@@ -0,0 +1 @@
{"file_format_version": "1.0.0", "ICD": {"library_path": ".\\vk_swiftshader.dll", "api_version": "1.0.5"}}

View File

@@ -0,0 +1,24 @@
body,h1,h2,h3,h4,h5,h6,ul,li,p {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
input {
border: none;
outline: none;
padding: 0;
}
a {
text-decoration: none;
color: #333;
}
img {
width: 100%;
}

View File

@@ -0,0 +1,207 @@
@font-face {
font-family: "iconfont"; /* Project id 2124975 */
src: url('iconfont.woff2?t=1657340639264') format('woff2'),
url('iconfont.woff?t=1657340639264') format('woff'),
url('iconfont.ttf?t=1657340639264') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-jinyan:before {
content: "\e60d";
}
.icon-smiling:before {
content: "\e63f";
}
.icon-shake:before {
content: "\e607";
}
.icon-gallery:before {
content: "\e62a";
}
.icon-zuijinliulan:before {
content: "\e62f";
}
.icon-fanhui:before {
content: "\e606";
}
.icon-weixin1:before {
content: "\e64f";
}
.icon-ziyuan:before {
content: "\e620";
}
.icon-zhuangtai:before {
content: "\e655";
}
.icon-eye:before {
content: "\e61b";
}
.icon-eye1:before {
content: "\e605";
}
.icon-goumai:before {
content: "\e73b";
}
.icon-tupian1:before {
content: "\e61e";
}
.icon-shipin:before {
content: "\e60c";
}
.icon-vip:before {
content: "\e6ba";
}
.icon-zongdailizhanghao:before {
content: "\e618";
}
.icon-zitiyanse:before {
content: "\ec85";
}
.icon-weixiao:before {
content: "\e603";
}
.icon-lahei:before {
content: "\e627";
}
.icon-xinbaniconshangchuan_huaban:before {
content: "\e602";
}
.icon-gif:before {
content: "\e70d";
}
.icon-zhendong:before {
content: "\e638";
}
.icon-tubiaozhizuomoban:before {
content: "\e601";
}
.icon-wushuju:before {
content: "\e642";
}
.icon-aixin:before {
content: "\e640";
}
.icon-xiangxia:before {
content: "\e636";
}
.icon-fenxiang:before {
content: "\e634";
}
.icon-xin:before {
content: "\e698";
}
.icon-clean:before {
content: "\e616";
}
.icon-qianjin-tongyong:before {
content: "\e610";
}
.icon-qianjin:before {
content: "\e604";
}
.icon-zuji:before {
content: "\e600";
}
.icon-guanyu:before {
content: "\e637";
}
.icon-xieyiguanli:before {
content: "\e6b2";
}
.icon-shengji:before {
content: "\e63c";
}
.icon-back1:before {
content: "\e619";
}
.icon-tuijian:before {
content: "\e60f";
}
.icon-huo:before {
content: "\e6c0";
}
.icon-home:before {
content: "\e617";
}
.icon-jigou:before {
content: "\e61a";
}
.icon-wo:before {
content: "\e611";
}
.icon-edit:before {
content: "\e696";
}
.icon-search:before {
content: "\e60a";
}
.icon-taozi1:before {
content: "\e61c";
}
.icon-taozi:before {
content: "\e89d";
}
.icon-me:before {
content: "\e61f";
}
.icon-gengduo:before {
content: "\e7ac";
}
.icon-dingwei:before {
content: "\e63e";
}

View File

@@ -0,0 +1,233 @@
body {
display: flex;
flex-direction: column;
background: rgb(245,246,247);
}
.header {
width: 100%;
height: 45px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 15px;
border-bottom: 1px solid #e8e8e8;
}
.header_left {
display: flex;
align-items: center;
}
.header_left img {
width: 30px;
height: 30px;
margin-right: 10px;
border-radius: 100%;
}
.content {
display: flex;
height: calc(100vh - 45px - 150px);
}
.content .content_left {
width: 80%;
height: 100%;
overflow-y: scroll;
padding: 15px;
border-right: 1px solid #e8e8e8;
}
.content .content_left li {
display: flex;
margin-bottom: 25px;
}
.content .content_left li .avth {
width: 30px;
height: 30px;
margin-right: 10px;
border-radius: 100%;
}
.content li .message {}
.content li .message .name {
font-size: 14px;
}
.content li .message .message_text {
overflow: hidden;
border-radius: 4px;
word-break: break-all;
max-width: calc(100vw - 274px);
background: #fff;
color: #000;
}
.message_text div{
padding: 5px 10px;
}
.content_left .right {
justify-content: flex-end;
}
.content_left .right .avth {
order: 2;
margin-right: 0 !important;
margin-left: 10px;
}
.content_left .right .name {
text-align: right;
}
.content_left .right .message_text {
color: #fff !important;
background: rgb(30,110,255) !important;
}
.content_left .system {
justify-content: center;
}
.content_left .system span {
background: #d8d3d3;
color: #878686;
padding: 2px 10px;
border-radius: 4px;
font-size: 12px;
}
.content_right {
width: 20%;
height: 100%;
padding: 6px 15px;
}
.content_rightTop{
display: flex;
}
.content_rightTop .title{
height: 45px;
line-height: 45px;
border-bottom: 1px solid #e8e8e8;
margin-bottom: 15px;
}
.content_rightTop i{
font-size: 18px;
margin-right: 20px;
cursor: pointer;
}
.content_right ul {
height: calc(100% - 60px);
overflow-y: scroll;
}
.content_right ul li {
display: flex;
height: 35px;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.content_right .user {}
.content_right i {}
.content_right .user img {
width: 25px;
height: 25px;
margin-right: 5px;
border-radius: 100%;
}
.content_right .user span {}
.footer {
padding: 0 15px;
border-top: 1px solid #e8e8e8;
height: 150px;
}
.footer_menu {
height: 35px;
display: flex;
align-items: center;
box-sizing: border-box;
position: relative;
}
.footer_menu i {
font-size: 18px;
margin-right: 20px;
cursor: pointer;
}
.footer_input {
outline: none;
width: 100%;
height: calc(150px - 36px);
font-size: 16px;
overflow-y: scroll;
line-height: 19px;
}
.footer_input .smiling_img {
width: 25px;
height: 25px;
}
.footer_input .gif_img {
width: 80px;
height: 80px;
vertical-align: bottom;
}
.footer_topmenu {
position: absolute;
width: 400px;
height: 246px;
background: #fff;
bottom: 35px;
left: -15px;
box-shadow: 1px -3px 10px #c3bebe;
border-radius: 4px;
}
.footer_topmenu .menu_title {
height: 40px;
line-height: 40px;
padding: 0 10px;
border-bottom: 1px solid #e8e8e8;
box-sizing: border-box;
}
.footer_topmenu .menu_content {
overflow-y: scroll;
padding: 0 10px;
width: 100%;
height: calc(100% - 75px);
}
.menu_content div {
display: none;
}
.menu_content .active {
display: block !important;
}
.footer_topmenu .menu_footer {
height: 35px;
display: flex;
align-items: center;
border-top: 1px solid #e8e8e8;
box-sizing: border-box;
}
.footer_topmenu .menu_footer li {
margin: 0px 10px;
cursor: pointer;
}
.menu_footer .active {
color: red;
}
.smiling {
padding: 10px 0;
}
.smiling img {
width: 25px;
height: 25px;
cursor: pointer;
}
.gif img {
width: 89px;
height: 89px;
}
.smiling_img {
width: 25px;
height: 25px;
}

View File

@@ -0,0 +1,27 @@
.login {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0 30px;
height: 100vh;
}
.login img {
width: 100px;
border-radius: 100%;
margin-bottom: 30px;
}
.login input {
height: 40px;
width: 100%;
border-bottom: 1px solid #e8e8e8;
margin-bottom: 15px;
}
.login .enter {
margin-top: 20px;
font-size: 13px;
cursor: pointer;
}
.modal-body img {
width: 50px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Some files were not shown because too many files have changed in this diff Show More