This commit is contained in:
huangjinming 2023-03-01 14:10:09 +08:00
parent b69b6921d3
commit 4ed30964ee
13 changed files with 22501 additions and 3611 deletions

2
.env.dev Normal file
View File

@ -0,0 +1,2 @@
VUE_APP_BASE_API='https://game2006api-test.kingsome.cn'
VUE_APP_GPAL_API='http://192.168.100.83:4000/sns'

View File

@ -1 +0,0 @@
VITE_API_BASE_URL=http://localhost:3000

View File

@ -1,3 +1,74 @@
运行代码指令
npm run dev
yarn run dev
在Vue 3中重新实现并优化上述代码可以按照以下步骤进行
在Vue 3组件中使用<iframe>标签嵌入你要显示的内容,例如:
html
Copy code
<template>
<div>
<iframe :src="screenUrl" frameborder='0' allowfullscreen="true" scrolling="no" width="100%" height="100%"></iframe>
</div>
</template>
其中,:src属性绑定的是iFrame要显示的网页链接allowfullscreen属性用于在iFrame中开启全屏模式。
在Vue 3组件中为需要全屏的元素添加点击事件。可以使用@click指令或者v-on:click指令来绑定点击事件例如
html
Copy code
<template>
<div>
<div class="top-left" @click="toggleFullScreen"></div>
<iframe :src="screenUrl" frameborder='0' allowfullscreen="true" scrolling="no" width="100%" height="100%"></iframe>
</div>
</template>
其中,@click="toggleFullScreen"表示当点击元素时会触发组件内的toggleFullScreen方法。
在Vue 3组件的methods属性中定义toggleFullScreen方法用于切换全屏状态。可以使用document.fullscreenElement属性来判断当前是否处于全屏状态使用document.documentElement.requestFullscreen()方法来请求进入全屏状态使用document.exitFullscreen()方法来退出全屏状态,例如:
html
Copy code
<script>
export default {
data() {
return {
screenUrl: "https://www.example.com", // iFrame要显示的网页链接
isFullScreen: false // 记录全屏状态
};
},
methods: {
toggleFullScreen() {
if (this.isFullScreen) {
// 退出全屏
document.exitFullscreen();
this.isFullScreen = false;
} else {
// 进入全屏
const de = document.documentElement;
if (de.requestFullscreen) {
de.requestFullscreen();
} else if (de.mozRequestFullScreen) {
de.mozRequestFullScreen();
} else if (de.webkitRequestFullScreen) {
de.webkitRequestFullScreen();
} else if (de.msRequestFullscreen) {
de.msRequestFullscreen();
}
this.isFullScreen = true;
}
}
}
};
</script>
其中isFullScreen属性用于记录全屏状态toggleFullScreen方法用于切换全屏状态。注意为了让iFrame在全屏状态下铺满整个屏幕需要在iFrame的父元素上加上height: 100vh样式。另外由于mozCancelFullScreen()方法在Firefox中已经被弃用建议使用document.exitFullscreen()方法来退出全屏状态。
完整的Vue 3代码示例如下
html
Copy code
<template>
<div>
<div class="top-left" @click="toggleFullScreen"></div>
<iframe :src="screenUrl" frameborder='0' allowfullscreen="true" scrolling="no" width="100%" height="100%"></iframe>

View File

@ -2,11 +2,16 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title>
</head>
<script type="module">
import {Buffer} from 'buffer';
window.Buffer = Buffer;
</script>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>

17399
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,21 +4,29 @@
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --host",
"build:dev": "vite build --mode development",
"dev": "vite --host --mode dev",
"build:dev": "vite build --mode dev",
"build:test": "vite build --mode test",
"build:prod": "vite build --mode production"
},
"dependencies": {
"@animxyz/core": "^0.6.6",
"@animxyz/vue3": "^0.6.7",
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
"@vueuse/core": "^9.12.0",
"@walletconnect/web3-provider": "^1.8.0",
"ant-design-vue": "^3.2.15",
"axios": "^1.3.3",
"buffer": "^6.0.3",
"js-cookie": "^3.0.1",
"normalize.css": "^8.0.1",
"pinia": "^2.0.30",
"postcss-px-to-viewport": "^1.1.1",
"process": "^0.11.10",
"rollup-plugin-polyfill-node": "^0.12.0",
"stream-browserify": "^3.0.0",
"swiper": "8",
"util": "^0.12.5",
"video.js": "^8.0.4",
"videojs-flash": "^2.2.1",
"vue": "^3.2.45",

23
postcss.config.cjs Normal file
View File

@ -0,0 +1,23 @@
module.exports = {
plugins: {
'postcss-px-to-viewport': {
unitToConvert: 'px', // 需要转换的单位,默认为"px"
viewportWidth: 1920, // 设计稿的视口宽度
unitPrecision: 5, // 单位转换后保留的精度
propList: ['*'], // 能转化为vw的属性列表
viewportUnit: 'vw', // 希望使用的视口单位
fontViewportUnit: 'vw', // 字体使用的视口单位
selectorBlackList: [], // 需要忽略的CSS选择器不会转为视口单位使用原有的px等单位。
minPixelValue: 1, // 设置最小的转换数值如果为1的话只有大于1的值会被转换
mediaQuery: false, // 媒体查询里的单位是否需要转换单位
replace: true, // 是否直接更换属性值,而不添加备用属性
exclude: undefined, // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
include: undefined, // 如果设置了include那将只有匹配到的文件才会被转换
landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
landscapeUnit: 'vw', // 横屏时使用的单位
landscapeWidth: 1920 // 横屏时使用的视口宽度
}
}
}

50
src/api/User.js Normal file
View File

@ -0,0 +1,50 @@
import request from '@/utils/request'
const GPAL_URL = import.meta.env.VUE_APP_GPAL_API;
export const defaultUser = {
id: '',
username: '',
showname: '',
comment: '',
locked: false,
password: '',
avatar: '',
account: ''
}
/**
* @param data {account: string, token: string}
*/
export const getUserInfo = (data) =>
request({
url: '/webapp/index.php?c=BcUser&a=info',
method: 'get',
params: data
})
export const login = (data) =>
request({
url: '/webapp/index.php?c=Market&a=auth',
method: 'get',
params: data
})
export const logout = () =>
request({
url: '/api/user/logout',
method: 'post'
})
//
// export const changePass = (params: any) =>
// request({
// url: '/api/user/passwd',
// method: 'post',
// data: params
// })
export const getNonce = (params) =>
request({
url: '/webapp/index.php?c=Market&a=getNonce',
method: 'get',
params: params
})

View File

@ -12,14 +12,41 @@
>
<span> {{ nav.name }}</span></a
>
<div class="login-btn login-btn-active">LOGIN</div>
<div class="login-btn login-btn-active" @click="login">LOGIN</div>
</div>
</div>
<ChainModel></ChainModel>
</div>
</template>
<script setup>
import { ref, reactive, onMounted } from "vue";
import { ref, reactive, onMounted ,} from "vue";
import { useChainStore }from '@/store/chain';
import { useRouter, useRoute } from 'vue-router';
import ChainModel from './ChainModel.vue'
const router = useRouter();
const chain = useChainStore();
function click(event) {
router.push(event.key);
}
async function login(event) {
if (!chain.logined) {
//
await chain.chainManager.login()
console.log("logined:", chain.chainManager.isLogined);
chain.logined = chain.chainManager.isLogined;
}
else{
// 退
await chain.chainManager.logout();
console.log("logined:", chain.chainManager.isLogined);
chain.logined = chain.chainManager.isLogined;
}
}
const curentid = ref(0);
const navList = reactive([

View File

@ -4,7 +4,7 @@
@cancel="handleCancel"
@ok="handleOk"
:footer="null"
width="70%"
width="100vw"
>
<div class="video-content">
<video
@ -52,5 +52,16 @@ function open() {
video{
object-fit: cover;
}
}
:deep(.ant-modal) {
width: 100vw !important;
max-width: 100vw !important;
top: 0;
padding-bottom: 0;
}
:deep(.ant-modal-body) {
height: calc(100vh - 55px - 53px);
overflow-y: auto;
}
</style>

View File

@ -1,5 +1,5 @@
import axios from 'axios'
// import { message } from 'ant-design-vue'
import { message } from 'ant-design-vue'
import glodata from '@/store/user_global';

View File

@ -3,6 +3,7 @@ import vue from "@vitejs/plugin-vue";
import requireTransform from "vite-plugin-require-transform";
// 如果编辑器提示 path 模块找不到,则可以安装一下 @types/node -> npm i @types/node -D
import { resolve } from "path";
import nodePolyfills from 'rollup-plugin-polyfill-node';
// https://vitejs.dev/config/
export default defineConfig({
@ -15,8 +16,14 @@ export default defineConfig({
resolve: {
alias: {
"@": resolve(__dirname, "src"), // 设置 `@` 指向 `src` 目录
'@' : resolve(__dirname, 'src'),
process: "process/browser",
stream: "stream-browserify",
zlib: "browserify-zlib",
util: 'util',
web3: resolve(__dirname, 'node_modules/web3/dist/web3.min.js')
},
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
base: "./", // 设置打包路径
build: {
@ -33,8 +40,28 @@ export default defineConfig({
// 环境变量
env: {
BASE_URL: process.env.VITE_API_BASE_URL
},
sourcemap: true,
rollupOptions: {
plugins: [nodePolyfills()],
},
commonjsOptions: {
transformMixedEsModules: true,
}
},
envPrefix:"VUE_APP_",
optimizeDeps: {
esbuildOptions: {
define: {
global: "globalThis",
},
plugins: [
]
}
},
define: {
'process.env': process.env
},
server: {
port: 4000, // 设置服务启动端口号
open: false, // 设置服务启动时是否自动打开浏览器

8470
yarn.lock

File diff suppressed because it is too large Load Diff