Commit 425eb2c4 by GiottoMaster

init

parents
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-vue-jsx", "transform-runtime"]
}
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
// to edit target browsers: use "browserslist" field in package.json
"autoprefixer": {}
}
}
# 天美社区源码网 timibbs.net timibbs.com timibbs.vip
> Pc group html transformation
## Build Setup
``` bash
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
```
For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
module.exports = {
presets: [
],
plugins:[
["@babel/plugin-proposal-optional-chaining"] //解析可选链式语法
]
}
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, (err, stats) => {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
chunks: false,
chunkModules: false
}) + '\n\n')
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' Build complete.\n'))
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
})
})
'use strict'
const chalk = require('chalk')
const semver = require('semver')
const packageConfig = require('../package.json')
const shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
const versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function () {
const warnings = []
for (let i = 0; i < versionRequirements.length; i++) {
const mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(mod.name + ': ' +
chalk.red(mod.currentVersion) + ' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (let i = 0; i < warnings.length; i++) {
const warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}
'use strict'
const path = require('path')
const config = require('../config')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const packageConfig = require('../package.json')
exports.assetsPath = function (_path) {
const assetsSubDirectory = process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
const cssLoader = {
loader: 'css-loader',
options: {
sourceMap: options.sourceMap
}
}
const postcssLoader = {
loader: 'postcss-loader',
options: {
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
const output = []
const loaders = exports.cssLoaders(options)
for (const extension in loaders) {
const loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
exports.createNotifierCallback = () => {
const notifier = require('node-notifier')
return (severity, errors) => {
if (severity !== 'error') return
const error = errors[0]
const filename = error.file && error.file.split('!').pop()
notifier.notify({
title: packageConfig.name,
message: severity + ': ' + error.name,
subtitle: filename || '',
icon: path.join(__dirname, 'logo.png')
})
}
}
'use strict'
const utils = require('./utils')
const config = require('../config')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap
module.exports = {
loaders: utils.cssLoaders({
sourceMap: sourceMapEnabled,
extract: isProduction
}),
cssSourceMap: sourceMapEnabled,
cacheBusting: config.dev.cacheBusting,
transformToRequire: {
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: 'xlink:href'
}
}
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
},{
test: /\.scss?$/,
loaders: ["style", "css", "sass"]
}
]
},
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}
'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: {
rewrites: [
{ from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
],
},
hot: true,
contentBase: false, // since we use CopyWebpackPlugin.
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll,
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
}))
resolve(devWebpackConfig)
}
})
})
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const env = require('../config/prod.env')
const webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false
}
},
sourceMap: config.build.productionSourceMap,
parallel: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css'),
// Setting the following option to `false` will not extract CSS from codesplit chunks.
// Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
// It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
// increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
allChunks: true,
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
// new OptimizeCSSPlugin({
// cssProcessorOptions: config.build.productionSourceMap
// ? { safe: true, map: { inline: false } }
// : { safe: true }
// }),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.HashedModuleIdsPlugin(),
// enable scope hoisting
new webpack.optimize.ModuleConcatenationPlugin(),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks (module) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity
}),
// This instance extracts shared chunks from code splitted chunks and bundles them
// in a separate chunk, similar to the vendor chunk
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'vendor-async',
children: true,
minChunks: 3
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
'use strict'
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/api': {
target:'https://bob.test-hh.com//api/', // 你请求的第三方接口
changeOrigin:true, /* 在本地会创建一个虚拟服务端,然后发送请求的数据,
并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题 */
pathRewrite:{ // 路径重写,
/* 替换target中的请求地址,也就是说以后你在请求
http://127.0.0.1:8888/api/private/v1/这个地址的时候直接写成/api/即可。 */
'^/api': ''
}
}
},
// Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
/**
* Source Maps
*/
// https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-module-eval-source-map',
// If you have problems debugging vue-files in devtools,
// set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true,
cssSourceMap: true
},
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
/**
* Source Maps
*/
productionSourceMap: true,
// https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map',
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}
}
'use strict'
module.exports = {
NODE_ENV: '"production"'
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title></title>
<link rel="icon" href="/static/image/bob.ico">
<link href="/static/css/reset.css" rel="stylesheet" type="text/css">
<link href="/static/css/animate.css" rel="stylesheet" type="text/css">
<link href="/static/css/style.css" rel="stylesheet" type="text/css">
<link href="/static/css/83.0288854ab18aca81ee0b.css" rel="stylesheet" type="text/css">
<link href="/static/css/vip.css" rel="stylesheet" type="text/css">
<link href="/static/css/pc_home.eb4a.chunk.css" rel="stylesheet" type="text/css">
<script src="/static/js/jquery-2.2.4.min.js"></script>
<link rel="stylesheet" type="text/css" href="/static/css/swiper-bundle.min.css">
<script type="text/javascript" src="/static/js/swiper-bundle.min.js"></script>
<script type="text/javascript" src="/static/js/laydate.js"></script>
<script type="text/javascript" src="/static/js/address.js"></script>
<script src="/static/js/clipboard.js"></script>
<link rel="stylesheet" href="https://unpkg.com/vant@2.12/lib/index.css" />
<!-- <script src="/static/js/home.5811f38b2e14c2503b6c.js"></script> -->
<style>
._29gnuiyG ._2zJiZW9W ._3gi7jqcw {
margin-top: 15px;
}
._349CzCYy._3SkQZ6Gu {
opacity: 1;
cursor: pointer;
}
._2t1-MPZv li ._1MOlxztA {
cursor: pointer;
}
@keyframes scaleDraw {
25% {
transform: scale(1.1);
}
50% {
transform: scale(1.2);
}
75% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
#redPacket {
position: fixed;
left: 27px;
bottom: 40px;
width: 129px;
height: 145px;
z-index: 999;
cursor: pointer;
background: url(/static/image/red-packet.png);
background-size: 100% 100%;
}
#redPacket .grab {
position: absolute;
top: 62px;
left: 25px;
width: 70px;
height: 56px;
background: url(/static/image/grab.png)no-repeat center;
background-size: 100% 100%;
-webkit-animation: scaleDraw .4s linear infinite;
}
#redPacket img {
position: absolute;
top: 0;
right: -10px;
width: 30px!important;
}
</style>
</head>
<body>
<div id="app"></div>
</body>
</html>
<script>
</script>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "timibbs",
"version": "1.0.0",
"description": "Pc group html transformation",
"author": "jieMao",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js"
},
"dependencies": {
"@babel/plugin-proposal-optional-chaining": "^7.21.0",
"axios": "^0.27.2",
"element-ui": "^2.15.14",
"vant": "^2.13.6",
"vue": "^2.5.2",
"vue-i18n": "^8.2.1",
"vue-router": "^3.0.1",
"vuex": "^3.0.0"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.1",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0",
"portfinder": "^1.0.13",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"sass": "^1.50.1",
"sass-loader": "^7.3.1",
"semver": "^5.3.0",
"shelljs": "^0.8.5",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
module.exports = {
"printWidth": 300, // 每行代码长度(默认80)
"tabWidth": 2, // 每个tab相当于多少个空格(默认2)
"useTabs": false, // 是否使用tab进行缩进(默认false)
"singleQuote": true, // 使用单引号(默认false)
"semi": true, // 声明结尾使用分号(默认true)
"trailingComma": "all", // 多行使用拖尾逗号(默认none)
"bracketSpacing": true, // 对象字面量的大括号间使用空格(默认true)
"jsxBracketSameLine": false, // 多行JSX中的>放置在最后一行的结尾,而不是另起一行(默认false)
"arrowParens": "avoid" // 只有一个参数的箭头函数的参数是否带圆括号(默认avoid)
};
<template>
<div id="app">
<div v-if="$store.state.appInfo.site_state == 1">
<div class="_1SI39Ofv" v-if="lodingShow">
<div class="_9-ZpLxb0">
<van-loading />
<div class="_3_qzGcRD"><span class="_1N8mCmac">-</span><span>B</span><span>O</span><span>B</span><span>.</span><span>C</span><span>O</span><span>M</span><span class="_1N8mCmac">-</span></div>
</div>
</div>
<keep-alive>
<router-view v-if="$route.meta.keepAlive" :key="$route.name" />
</keep-alive>
<router-view v-if="!$route.meta.keepAlive" :key="$route.name" />
</div>
<div v-if="$store.state.appInfo.site_state == 0" style="box-sizing: border-box; padding: 30px; fong-size: 26px">{{ $store.state.appInfo.repair_tips }}</div>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
jumpUrl: null,
lodingShow: false,
};
},
created() {
let that = this;
that.getVisitUrl();
that.getApp();
const locale = localStorage.getItem('locale')
localStorage.setItem('locale', locale || 'kor')
},
methods: {
getApp() {
let that = this;
that.$apiFun.post('/api/app', {}).then(res => {
if (res.code == 200) {
// "ios_download_qrcode": "http://mb2.tg-demo.cc:86/uploads/images/e13177382b3e958789c877f71b034ca9.jpg",
// "ios_download_url": "http://mb2.tg-demo.cc:86/",
// "h5_url": "http://mb2m.tg-demo.cc"
localStorage.setItem('appInfo', JSON.stringify(res.data));
that.$store.commit('changappInfo');
document.getElementsByTagName('title')[0].innerText = that.$store.state.appInfo.title;
// logo $store.state.appInfo.site_logo
}
});
},
getVisitUrl() {
let that = this;
var query = that.$route.query;
let pid = '';
if (query.pid) {
pid = query.pid;
}
// that.$apiFun.get('/api/getVisitUrl', {}).then(res => {
// if (res.code == 200) {
// let url = that.pid ? res.data.url + '?pid=' + that.pid : res.data.url;
// window.open(url, '_self');
// }
// });
},
goNav(url) {
let that = this;
this.$router.push({ path: url });
},
showTost(type, title) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${title}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
},
hideLoading() {
this.lodingShow = false;
},
showLoading() {
this.lodingShow = true;
},
openKefu() {
let that = this;
that.showTost(this.$t('login.toast1'));
that.$apiFun.post('/api/getservicerurl', {}).then(res => {
console.log(res);
if (res.code != 200) {
that.showTost(1, res.message);
}
if (res.code == 200) {
that.jumpUrl = res.data.url;
}
});
},
},
watch: {
// 新窗口打开页面,解决浏览器拦截问题
jumpUrl() {
if (this.jumpUrl) {
window.open(this.jumpUrl, '_blank');
}
this.jumpUrl = null;
},
},
};
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin: 0;
padding: 0;
}
.el-pager li {
min-width: 26px;
font-weight: 400 !important;
}
.el-pager li.active {
color: #d7967f !important;
background: transparent !important;
border-color: #d7967f !important;
border: 1px solid #d7967f;
min-width: 26px;
border-radius: 2px;
}
</style>
<template>
<div class="">
<Header />
<router-view />
<Foot />
<ShowAfter v-if="showAfter.show" :title="showAfter.title" :id="showAfter.id" />
</div>
</template>
<script>
import Header from './libs/Header';
import Foot from './libs/Foot';
import ShowAfter from './assembly/ShowAfter';
export default {
name: 'Main',
data() {
return {
daoTime: null,
showAfter: { show: false, title: '您还未登陆,请前往登录!' },
jumpUrl: null,
};
},
components: {
Header,
Foot,
ShowAfter,
},
created() {
let that = this;
this.showAfter.title = this.$t('showAfter.title2')
if (sessionStorage.getItem('token')) {
that.openDaoTime();
that.getUserInfo();
}
},
updated() {},
mounted() {},
methods: {
getUserInfo() {
let that = this;
that.$apiFun.post('/api/user', {}).then(res => {
console.log(res);
if (res.code !== 200) {
that.showTost(res.message);
}
if (res.code === 200) {
let userInfo = res.data;
let str = userInfo.current_vip;
let index = str.indexOf('P');
let vip = str.substr(index + 1, str.length); //04
userInfo.vip = vip;
localStorage.setItem('userInfo', JSON.stringify(userInfo));
that.userInfo = userInfo;
that.$store.commit('changUserInfo');
}
});
},
getApp() {
let that = this;
that.$apiFun.post('/api/app', {}).then(res => {
if (res.code == 200) {
// "ios_download_qrcode": "http://mb2.tg-demo.cc:86/uploads/images/e13177382b3e958789c877f71b034ca9.jpg",
// "ios_download_url": "http://mb2.tg-demo.cc:86/",
// "h5_url": "http://mb2m.tg-demo.cc"
localStorage.setItem('appInfo', JSON.stringify(res.data));
that.$store.commit('changappInfo');
document.getElementsByTagName('title')[0].innerText = that.$store.state.appInfo.title;
}
});
},
showAfterHide() {
let that = this;
that.showAfter.show = false;
},
showAfterOk() {
let that = this;
this.showAfter.show = false
this.$router.push({ path: '/login' });
},
openShow() {
let that = this;
that.showAfter.show = true;
},
openDaoTime() {
let that = this;
that.daoTime = setInterval(() => {
that.getBalance();
}, 2300);
},
close() {
let that = this;
if (that.daoTime) {
clearInterval(that.daoTime);
}
that.daoTime = null;
},
getBalance() {
let that = this;
that.$apiFun
.post('/api/balance', {})
.then(res => {
if (res.code == 200) {
let userInfo = JSON.parse(localStorage.getItem('userInfo'));
userInfo.balance = res.data.balance;
localStorage.setItem('userInfo', JSON.stringify(userInfo));
that.$store.commit('changUserInfo');
}
if (res.code == 401) {
that.showTost('登陆过期!');
localStorage.clear();
sessionStorage.clear();
that.$store.commit('changUserInfo');
that.$store.commit('changToken');
that.close();
that.$router.push({ path: '/login' });
}
})
.catch(res => {
// console.log(res)
});
},
refreshusermoney() {
let that = this;
that.$apiFun
.post('/api/refreshusermoney', {})
.then(res => {
if (res.code == 200) {
localStorage.setItem('userInfo', JSON.stringify(res.data));
that.$store.commit('changUserInfo');
}
})
.catch(res => {
// console.log(res)
});
},
openKefu() {
let that = this;
that.showTost(this.$t('login.toast1'));
that.$apiFun.post('/api/getservicerurl', {}).then(res => {
console.log(res);
if (res.code != 200) {
that.showTost(res.message);
}
if (res.code == 200) {
that.jumpUrl = res.data.url;
}
});
},
showTost(title) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${title}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
},
},
beforeDestroy() {
let that = this;
if (that.daoTime) {
clearInterval(that.daoTime);
}
that.daoTime = null;
},
watch: {
// 新窗口打开页面,解决浏览器拦截问题
jumpUrl() {
if (this.jumpUrl) {
window.open(this.jumpUrl, '_blank');
}
this.jumpUrl = null;
},
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div id="app-container" v-if="payInfo.deposit_no">
<div class="n1sHi1_gDox2Q8ezpdZH5">
<div class="_3nvVZbeP_KKFGRKZ3SxfW4" style="">
<div class="_2uM338LxSZnEUB6bCz4axi">
<div>
<div class="_2HCazjAzieT4L96opZihj9">{{ $t('payInfo.label1') }}</div>
<div class="_1ar3pTm_JYB-u2qWpt6e_z"></div>
</div>
<div class="_3ATbZ84037ZhIQDiT-2nyD"></div>
<div class="_3CQ4hAT8Rn9-ZCUrRPjV7M">
<div class="_9SJLkU9QpzPYzWOZY3Rqk">
<span>{{ $t('payInfo.label2') }}</span><span>{{ payInfo.deposit_no }}</span>
</div>
<div class="_9SJLkU9QpzPYzWOZY3Rqk" v-if="type == 'usdtpay'">
<span>{{ $t('payInfo.label3') }}</span><span class="_3ZmEMAaXkrKqQ113p9F_uq">1 {{ payInfo.cardlist.content }} = {{ payInfo.info.usdtrate }} CNY</span>
</div>
<div class="_9SJLkU9QpzPYzWOZY3Rqk" v-if="type == 'usdtpay'">
<span>{{ $t('payInfo.label4') }}</span><span class="_3ZmEMAaXkrKqQ113p9F_uq">{{ payInfo.info.real_money }} {{ payInfo.cardlist.content }}</span>
</div>
<div class="_9SJLkU9QpzPYzWOZY3Rqk">
<span>{{ $t('payInfo.label5') }}</span><span class="_3ZmEMAaXkrKqQ113p9F_uq">{{ payInfo.info.amount }} CNY</span>
</div>
</div>
</div>
<div class="_2xx45NdpwT5KPaYgeMsdYE">
<div class="_2q5dKVSXvbkX8syq1-Hl2W">
<div class="_3VdBrxwboIJ2v_ON4OCRjS">{{ payInfo.info.paytype }}</div>
<div class="_3785zJoWCXtLIHtAS_cA1C">
<span>{{ payInfo.info.real_money }} {{ type == 'usdtpay' ? payInfo.cardlist.content : '' }}</span>
<!-- <div class="f9bxdbnqcRudnKSP3y-bt" v-if="type =='usdtpay'" @click="doCopy(payInfo.info.real_money)">复制</div> -->
</div>
<div class="_1QI9TzXm1Ybnj9BJm4UQ7V">{{ $t('payInfo.label6') }}</div>
<div class="_21R49Y-pIno9CckiAjl0Id">
<div class="_1f6333Dfetv7YoltY9pL-t">{{ payInfo.cardlist.content }}</div>
<div class="_2_w4FbHMpnRRSdxBYtSL0e">
<img style="height: 210px; width: 210px" :src="payInfo.cardlist.payimg" alt="" />
</div>
</div>
<div class="_3sbSiVFgNQ2SK94qDJaI90" v-if="type == 'usdtpay'">
<span class="_2Vrrgjd_XLAifnNQgYu0NQ">{{ payInfo.cardlist.mch_id }}</span>
<div class="f9bxdbnqcRudnKSP3y-bt" style="cursor: pointer" @click="doCopy(payInfo.cardlist.mch_id)">{{ $t('payInfo.label7') }}</div>
</div>
</div>
<div class="_2eg9lTattt1yp1qvWhgifb">
<div class="_2-xkzXq0hmbuW9CZeDhVx_">{{ $t('payInfo.label8') }}</div>
<div class="HU1qShwkRp6KtCq22dC6O" v-if="type != 'usdtpay'">
{{ $t('payInfo.label9') }}<span class="M8ZjTEuW7Q3mUpU0PbEeW">{{ payInfo.cardlist.content }}</span
>{{ $t('payInfo.label10') }}<br />{{ $t('payInfo.label11') }}
<br />
</div>
<div class="HU1qShwkRp6KtCq22dC6O" v-if="type == 'usdtpay'">
{{ $t('payInfo.label9') }}<span class="M8ZjTEuW7Q3mUpU0PbEeW">{{ payInfo.cardlist.content }}</span
>{{ $t('payInfo.label10') }}<br />{{ $t('payInfo.label12') }} <br />{{ $t('payInfo.label13') }} <br />4. {{ type == 'usdtpay' ? payInfo.cardlist.content : 'TRC20' }}{{ $t('payInfo.label14') }}<span style="color: red">
{{ type == 'usdtpay' ? (payInfo.info.bank == 'TRC20' ? `${t('payInfo.label17')}` : `${t('payInfo.label18')}`) : `${t('payInfo.label17')}` }}{{ type == 'usdtpay' ? payInfo.info.bank : 'TRC20' }}{{ $t('payInfo.label9') }} </span
>{{ $t('payInfo.label15') }}
</div>
</div>
<div style="display: flex; align-items: center; justify-content: center; height: 30px; margin-top: 25px">
<el-button type="success" @click="$router.push({ path: '/mine/transRecord' })">{{ $t('payInfo.label16') }}</el-button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'payInfo',
data() {
return {
payInfo: {},
daoTime: null,
m: 0,
s: 0,
type: null,
};
},
components: {},
created() {
let that = this;
var query = that.$route.query;
if (query.deposit_no) {
that.getpayinfo(query.deposit_no);
}
},
mounted() {},
methods: {
doCopy(msg) {
let cInput = document.createElement('input');
cInput.style.opacity = '0';
cInput.value = msg;
document.body.appendChild(cInput);
// 选取文本框内容
cInput.select();
// 执行浏览器复制命令
// 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签)
// Input要在正常的编辑状态下原生复制方法才会生效
document.execCommand('copy');
// 复制成功后再将构造的标签 移除
this.showTost(this.$t('payInfo.toast1'));
},
getpayinfo(deposit_no) {
let that = this;
that.$apiFun.post('/api/payinfo', { deposit_no }).then(res => {
console.log(res);
if (res.code != 200) {
that.showTost(res.message);
}
if (res.code == 200) {
that.payInfo = res.data;
that.type = res.message;
that.countTime();
}
});
},
countTime() {
//获取当前时间
let that = this;
var date = new Date();
var now = date.getTime(); //当前时间
// 创建时间
let created_at = that.payInfo.info.created_at;
let createdTime = new Date(created_at).getTime();
//设置截止时间
var end = createdTime + 1000 * 60 * 60;
//时间差
var leftTime = end - now;
//定义变量 d,h,m,s保存倒计时的时间
if (leftTime >= 0) {
// that.h = Math.floor((leftTime / 1000 / 60 / 60) % 24);
that.m = Math.floor((leftTime / 1000 / 60) % 60);
that.s = Math.floor((leftTime / 1000) % 60);
} else {
$('._1ar3pTm_JYB-u2qWpt6e_z').html('00:00');
return;
}
let m = that.m >= 10 ? that.m : `0${that.m}`;
let s = that.s >= 10 ? that.s : `0${that.s}`;
$('._1ar3pTm_JYB-u2qWpt6e_z').html(`${m}:${s}`);
//递归每秒调用countTime方法,显示动态时间效果
setTimeout(this.countTime, 1000);
},
showTost(title) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${title}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
},
},
beforeDestroy() {
let that = this;
if (that.countTime) {
clearInterval(that.countTime);
}
that.countTime = null;
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="office-modal-container">
<div class="_1euN-aP1">
<div class="_2v39xVwk animated animated-3 fadeIn"></div>
<div class="_3Pc_iCss animated animated-3 zoomIn" style="width: 370px">
<div class="_3DZ99c6r">
<span></span>
<div class="_3x7x8GsG">{{ $t('showAfter.title') }}</div>
<img
@click="hide"
class="_8iC2lrZe"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAC0UExURUxpcf/////Uqv+2tv//qv///+u3o/////W8qv/Gxv/9/emwoOWunO+zouiyovC0peexneeyn+qxouWvnOWvneWwnOWunOWvnee5ouWxneaxoeSunOSunOWxpOSvneSvnPC4m+SvneWwn+SwnfXf1+avnPTe1fvw7eSunOewnuSum+mynuSunPXg2vLVzeSum//9/eSunOSunPPa0uStnfbm3/HWzfjr5vnh1vzz8f359////2ASjEAAAAA7dFJOUwD9BgcDAg0BCQT9G0cPFREkHxg6Pi5RYAsoNkxaE1VkEkIdMJAzlWpoK4AidYm6jPSWbZ9xf651HmONntaUtAAABAdJREFUeNrtlsly4kgQhgdJCMlaKe37ZmFAYDDgrXn/95qsqqRlRxSaufSlw3khQsn/qZSV2z8/9mN/ny3QJn0TNp/PFTD4wT9+UY+++6+fK7ougem6rgDim1xBH7iUxR29okuypsVxrGmyRBFf9Lp+c2ngEhPmuqTFquXUzoetavJIWABaRpdlf1CXUK/ommoVNjF+XY+flqoxAupBXoPHIJ/H6y84w1wUAF2OrYK0Q3q9XmeftapJQEC96thGO7ju0wycH5oODgFAUwuydDfpkRKeCk5YsJPVpHWTIHin+iMBhwCgSJplt27Qe6+zLwTUD0mXouPTiWUxIHbIsOm9xtyPBLg70BvsOYKNQpV1MaA23MBrsjBEgm1pYGoB+tRH7HvS3gc4FGCGZZ4/IsFRVQv0Qdpk+wf66LVnAEUcRIsMFJDn0Y1AbBvCR/WPTL/3O9eoVekOQLWXG/hvHkVVhIRhCeHzUP+wN71gIJbwFiARZfhat/PNMq+qG+E96ODzQ65/zJo0aW1VmAcQBPoN7AhlVK2raMUIr36T3fQhOwC9RSGAHqE2eBSAsK5W/LPDcsX0q9CkEYDLFVYTpix8BCeswVCIP6Xp9/ABFqa46AhI6CihWp8ulzOToj4D/ZLqMQJCgnQjlNH6sttt32gcvutlpp8i2G3S+1leXXbbw4ETHs552KSbJZnWI8Gi2WCG0QX0L88zPADPgBj1kwSoKciGMDptUc+uEDIALkCgFyYk3GWWA4DpZzwfepen4P8CLDngjUmfOeYdAGMGTAeBDJ2fRSfUvxzeHhjBqAUhECZTm6RNGJ1R/3LYnhnhSZRE4mSEA0D+4vsP2+3uRsBOO6nHcuD6ty213YVl9dhp/0ufNlh/5x2zy+lUrWZTBAwg77+0oFFfVdBboDBP6/Wtw/BiBIJ4sjhf9au8DMFKXtwjAfuJqKFgHaC+DM3G9xszo4iRgB1N1NJ4Xzf3qM8aL+263vNpfxi73CceQZyCkAHlEfV+GiSu6256JET5HkcbACbaeoT9z+83g0GIsYS2TAlRlPOJ8xFLyuRgeb4emT5ZksKyahiYQIBA5HlovsJ4x8EyMdqiMuN6R4W1xLIhNdnEC+Fxmk6NNsKGIFjjdbR/QfHoMu+0/LnvBe794UrHAp3ivu+lgduy/ge7Fe+Tmx6e+ynEhdT3ZiObw0nQ9V2QDAb2T94n0dEHGwYWz0a+yCzdJHGHlhSox05Ldx/01CyZxUsaEIjRtgaBuY79H9C4fhHDoB7QA1lUTAqNl+UURVFbaoz63wRw1dxFI7O4t2jCralg2rgmIuGba2JVhV2VmqSjflxV0QeuqcY6ZysxW6m/l/yCIm6+xfS6jyZyoefH/oD9C6i3ptIfvSpmAAAAAElFTkSuQmCC"
alt=""
/>
</div>
<div style="font-size: 16px; padding: 50px 0px 44px; color: rgb(63, 80, 117); text-align: center">{{title}}</div>
<div class="Qe8HWKXx">
<div @click="hide" v-if="id" class="_349CzCYy _1s6FyNM2 _2ihhyR4S">
<span><div>{{ $t('showAfter.cancel') }}</div></span>
</div>
<div @click="isOk" class="_349CzCYy xJQe3jRu _2ihhyR4S">
<span><div>{{ $t('showAfter.confirm') }}</div></span>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'ShowAfter',
data() {
return {};
},
props: {
title: "",//接收参数
id: 0,//接收参数
},
created() {
let that = this;
},
methods: {
hide() {
let that = this;
that.$parent.showAfterHide();
},
isOk() {
let that = this;
that.$parent.showAfterOk(that.id);
},
},
mounted() {},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div id="foot">
<div class="_98keS0eu">
<div class="QZmtDyqs">
<div class="_2rOWqGKR">
<div class="foot_logo"><img src="/static/image/logo1.png" /></div>
<div class="foot_logo"><img src="/static/image/logo2.png" /></div>
<div class="foot_logo"><img src="/static/image/logo-3.png" /></div>
<div class="foot_logo"><img src="/static/image/logo4.png" /></div>
<div class="foot_logo"><img src="/static/image/logo5.png" /></div>
<div class="foot_logo"><img src="/static/image/logo-6.png" /></div>
<div class="foot_logo"><img src="/static/image/logo7.png" /></div>
<div class="foot_logo"><img src="/static/image/logo8.png" /></div>
<div class="foot_logo"><img src="/static/image/logo9.png" /></div>
<div class="foot_logo"><img src="/static/image/logo10.png" /></div>
</div>
</div>
<div class="_1ihQB55Y">
<div class="_3U5bGbKV">
<div class="foot_logo">
<img src="/static/image/logo11.png" alt="" />
<div>
<p>{{ $t('foot.block1.label1') }}</p>
<p>{{ $t('foot.block1.label2') }}</p>
</div>
</div>
<div class="foot_logo">
<img src="/static/image/logo12.png" alt="" />
<div>
<p>{{ $t('foot.block2.label1') }}</p>
<p>{{ $t('foot.block2.label2') }}</p>
</div>
</div>
<div class="foot_logo">
<img src="/static/image/logo13.png" alt="" />
<div>
<p>{{ $t('foot.block3.label1') }}</p>
<p>{{ $t('foot.block3.label2') }}</p>
</div>
</div>
<div class="foot_logo">
<img src="/static/image/logo14.png" alt="" />
<div>
<p>{{ $t('foot.block4.label1') }}</p>
<p>{{ $t('foot.block4.label2') }}</p>
</div>
</div>
<div class="foot_logo">
<img src="/static/image/logo15.png" alt="" />
<div>
<p>{{ $t('foot.block5.label1') }}</p>
<p>{{ $t('foot.block5.label2') }}</p>
</div>
</div>
</div>
<div class="_33x_Rmdv">
<div class="_1nH8X2_T foot_logo">
<img class="_2Ogll0o3" src="/static/image/logo16.png" alt="" />
<div class="CgdZDVWN">
<div>{{ $t('foot.block6.label1') }}</div>
<div>{{ $t('foot.block6.label2') }}</div>
</div>
</div>
<div class="_1nH8X2_T foot_logo">
<img class="_2Ogll0o3" src="/static/image/logo17.png" alt="" />
<div class="CgdZDVWN">
<div>{{ $t('foot.block7.label1') }}</div>
<div>{{ $t('foot.block7.label2') }}</div>
</div>
</div>
<div class="_1nH8X2_T foot_logo">
<img class="_2Ogll0o3" src="/static/image/logo18.png" alt="" />
<div class="CgdZDVWN">
<div>{{ $t('foot.block8.label1') }}</div>
<div>{{ $t('foot.block8.label2') }}</div>
</div>
</div>
<div class="_1nH8X2_T foot_logo">
<img class="_2Ogll0o3" src="/static/image/logo19.png" alt="" />
<div class="CgdZDVWN">
<div>{{ $t('foot.block9.label1') }}</div>
<div>{{ $t('foot.block9.label2') }}</div>
</div>
</div>
</div>
<div class="_27rUvYBI">{{$store.state.appInfo.title}}{{ $t('foot.tip1') }}</div>
<div class="_27rUvYBI">{{ $t('foot.tip2') }}</div>
<div class="jOVuY00X">
<div @click="goNav('/help?topType=2&sumType=0')">{{ $t('foot.btn1') }}</div>
<div @click="goNav('/help?topType=5&sumType=0')">{{ $t('foot.btn2') }}</div>
<div @click="goNav('/help?topType=5&sumType=4')">{{ $t('foot.btn3') }}</div>
<div @click="goNav('/help?topType=5&sumType=2')">{{ $t('foot.btn4') }}</div>
<div @click="goNav('/help?topType=6&sumType=0')">{{ $t('foot.btn5') }}</div>
<div @click="open('/agent')">{{ $t('foot.btn6') }}</div>
<!-- <div><a href="javascript:;" download="">清除缓存</a></div> -->
<!-- <div><span><span>防劫持工具</span></span></div> -->
</div>
</div>
<div class="_1EpnAijt">{{$store.state.appInfo.title}}</div>
</div>
</div>
</template>
<script>
export default {
name: 'Foot',
data() {
return {jumpUrl:null};
},
methods: {
goNav(url) {
let that = this;
// let urlStr = url.split('?')[0];
if (url == this.$route.fullPath) {
that.$parent.showTost(that.$t('foot.toast1'));
return;
}
this.url = url;
this.$router.push({ path: url });
},
open(url){
let that = this;
const routeData = this.$router.resolve({
path: url,
query:{}
});
that.jumpUrl = routeData.href;
}
},
mounted() {},
watch: {
// 新窗口打开页面,解决浏览器拦截问题
jumpUrl() {
if (this.jumpUrl) {
window.open(this.jumpUrl, '_blank')
}
this.jumpUrl = null
}
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="ant-spin-nested-loading">
<div class="loading" v-if="lodingShow">
<div class="ant-spin ant-spin-spinning _2PSsJSST">
<span class="ant-spin-dot ant-spin-dot-spin"><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i></span>
</div>
</div>
<div :class="lodingShow ? 'ant-spin-container ant-spin-blur' : 'ant-spin-container'">
<form class="ant-form ant-form-horizontal _3GOAOYQ8">
<div class="_4ICMeQUV">
<div class="T5pPAuRQ">{{ $t('mine.applyList.title') }}<span></span></div>
</div>
<div class="ant-table-wrapper fYo2DqtT">
<div class="ant-spin-nested-loading">
<div class="loading" style="display: none">
<div class="ant-spin ant-spin-spinning _2PSsJSST">
<span class="ant-spin-dot ant-spin-dot-spin"><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i></span>
</div>
</div>
<div class="_21o37iEs" v-if="dataList.length == 0">
<img src="/static/image/ill_norecord_day-b111.png" alt="" />
<div class="HzjbFc_d">{{ $t('mine.applyList.label1') }}</div>
</div>
<div class="ant-spin-container">
<div v-if="dataList.length > 0">
<div class="ant-table">
<div class="ant-table-container">
<div class="ant-table-content">
<table style="table-layout: auto">
<colgroup></colgroup>
<thead class="ant-table-thead">
<tr>
<th class="ant-table-cell" style="text-align: left; box-sizing: border-box; padding-left: 20px">{{ $t('mine.applyList.label2') }}</th>
<th class="ant-table-cell">{{ $t('mine.applyList.label3') }}</th>
<th class="ant-table-cell">{{ $t('mine.applyList.label4') }}</th>
</tr>
</thead>
<tbody class="ant-table-tbody">
<tr class="ant-table-row ant-table-row-level-0 tzNqBmRM false" v-for="item in dataList" :key="item.id">
<td class="ant-table-cell" style="text-align: left; box-sizing: border-box; padding-left:20px!important">{{ item.activity_name }}</td>
<td class="ant-table-cell">{{ item.created_at }}</td>
<td class="ant-table-cell">
<!-- 结算和未结算 待审核 2未结算 0无效注单-->
<span class="_20nFxBS5">{{ statuType[item.state] }}</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<el-pagination v-if="showData.total" class="ant-pagination ant-table-pagination ant-table-pagination-right mini"
@current-change="getData"
:current-page.sync="page"
:page-size="10"
layout="prev, pager, next"
:total="showData.total"
></el-pagination>
<!-- <ul class="ant-pagination ant-table-pagination ant-table-pagination-right mini" unselectable="unselectable">
<li title="上一页"
:class="page*1 <= 1?'ant-pagination-prev ant-pagination-disabled':'ant-pagination-prev '"
@click="changPage(page * 1 - 1)">
<a class="ant-pagination-item-link" disabled=""
><span role="img" aria-label="left" class="anticon anticon-left">
<svg viewBox="64 64 896 896" focusable="false" data-icon="left" width="1em" height="1em" fill="currentColor" aria-hidden="true">
<path d="M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"></path>
</svg> </span
></a>
</li>
<li title="1" :class="page == index + 1 ? 'ant-pagination-item ant-pagination-item-1 ant-pagination-item-active' : 'ant-pagination-item ant-pagination-item-1 '" @click="changPage(index + 1)" v-for="(item, index) in showData.last_page * 1" :key="index">
<a>{{ index + 1 }}</a>
</li>
<li title="下一页"
:class="page*1 >= showData.last_page ?'ant-pagination-prev ant-pagination-disabled':'ant-pagination-prev '"
@click="changPage(page * 1 + 1)">
<a class="ant-pagination-item-link" disabled=""
><span role="img" aria-label="right" class="anticon anticon-right">
<svg viewBox="64 64 896 896" focusable="false" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true">
<path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z"></path>
</svg> </span
></a>
</li>
</ul> -->
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</template>
<script>
export default {
name: 'applyList',
data() {
return {
date: 1,
page: 1,
api_type: '',
dogameLis: [],
dataList: [],
statuType: ['0未约定', '待审核', '通过', '拒绝','4未约定'],
showData: {},
lodingShow: true,
};
},
created() {
let that = this;
that.getData();
this.statuType = [
that.$t('mine.applyList.status1'),
that.$t('mine.applyList.status2'),
that.$t('mine.applyList.status3'),
that.$t('mine.applyList.status4'),
that.$t('mine.applyList.status5'),
]
},
methods: {
changPage(page) {
let that = this;
console.log(page);
if (page == 0 || page > that.showData.last_page || page == that.page || !page) {
//前后超出范围 或者是当前页
return;
}
that.page = page;
that.getData();
},
changPayType(name, val) {
let that = this;
if (that[name] == val) {
return;
}
that[name] = val;
that.getData();
},
goNav(url) {
let that = this;
this.$router.push({ path: url });
},
getData() {
let that = this;
that.showloading();
let info = {
date: that.date,
page: that.page,
api_type: that.api_type,
};
console.log(info);
// return;betRecord
that.$apiFun.post('/api/activityApplyLog', {}).then(res => {
console.log(res);
if (res.code != 200) {
that.showTost(res.message);
}
if (res.code == 200) {
that.dataList = res.data.data;
that.showData = res.data;
}
that.hideloading();
}).catch(res=>{
that.hideloading();
});
},
showTost(title) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${title}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
},
hideloading() {
this.lodingShow = false;
},
showloading() {
this.lodingShow = true;
},
},
mounted() {
//弹出下拉
$('.ant-select').click(function () {
$(this).find('.ant-select-dropdown').slideToggle(200);
});
//鼠标经过li变色
$('.ant-select-item').hover(
function () {
$(this).addClass('ant-select-item-option-active');
},
function () {
$(this).removeClass('ant-select-item-option-active');
},
);
},
updated() {
//选择下拉内容
$('.list .ant-select-item').click(function () {
$(this).addClass('ant-select-item-option-selected').siblings().removeClass('ant-select-item-option-selected');
var text = $(this).find('.ant-select-item-option-content').text();
$('.ant-select-selection-search-input').attr('value', text);
$('.ant-select-selection-item').text(text);
});
//选择最近日期
$('._3Ue4EhT5 ._3CZO3fNE').click(function () {
$(this).addClass('_8E8PME48').siblings().removeClass('_8E8PME48');
});
laydate.render({
elem: '.datepicker',
range: true,
});
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="ant-spin-nested-loading">
<div class="ant-spin-container">
<div class="D52anbYD">
<div class="_4ICMeQUV"><div class="T5pPAuRQ">个人资金明细</div></div>
<div class="_3AGTzt_i">
<div>时间筛选</div>
<ul class="tab">
<li class="_1gXLAECT">今天</li>
<li>三天内</li>
<li>一周内</li>
<li>一个月</li>
</ul>
</div>
<div class="_45A4Fg5h">
<table>
<thead>
<tr>
<td>总存款</td>
<td>总取款</td>
<td>总投注</td>
<td>总输赢</td>
</tr>
</thead>
<tbody>
<tr>
<td>0.00</td>
<td>0.00</td>
<td>0.00</td>
<td class="_2HJLZvCa">0.00</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'transRecord',
data() {
return {};
},
methods: {},
mounted() {
// 个人资金明细 ------------------------------------------
$(".tab li").click(function () {
$(this).addClass("_1gXLAECT").siblings().removeClass("_1gXLAECT");
});
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<form class="ant-form ant-form-horizontal _2Xr-CMUB">
<div class="_4ICMeQUV" style="margin-bottom: 24px">
<div class="T5pPAuRQ">个人资料</div>
</div>
<div class="_1pDMxc1H">
<div class="ant-row ant-form-item">
<div class="ant-col ant-form-item-label">
<label for="real_name" class="ant-form-item-required" title="姓名">姓名</label>
</div>
<div class="ant-col ant-form-item-control">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<input autocomplete="off" class="ant-input _3ON7kyGT" type="text" placeholder="请输入真实姓名" id="real_name" value="" style="width: 184px" />
</div>
</div>
</div>
</div>
<div class="_1-1n0N1N">取款人姓名必须与注册姓名保持一致,绑定后无法修改</div>
</div>
<div class="_1pDMxc1H">
<div class="ant-row ant-form-item">
<div class="ant-col ant-form-item-label">
<label for="gender" class="ant-form-item-required" title="性别">性别</label>
</div>
<div class="ant-col ant-form-item-control">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<div class="ant-spin-nested-loading">
<div class="ant-spin-container">
<ul class="_2tZRPt8E">
<li class=""></li>
<li class=""></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="_1pDMxc1H">
<div class="ant-row ant-form-item">
<div class="ant-col ant-form-item-label">
<label for="birth" class="ant-form-item-required" title="出生日期">出生日期</label>
</div>
<div class="ant-col ant-form-item-control">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<div class="ant-picker _1F2h_OVm" style="color: #777">
<div class="ant-picker-input">
<input readonly="" placeholder="请选择出生日期" size="12" value="2004-04-01" class="datepicker" />
<span class="ant-picker-suffix"
><span role="img" aria-label="calendar" class="anticon anticon-calendar">
<svg viewbox="64 64 896 896" focusable="false" data-icon="calendar" width="1em" height="1em" fill="currentColor" aria-hidden="true">
<path
d="M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z"
></path>
</svg> </span></span
><span class="ant-picker-clear"
><span role="img" aria-label="close-circle" class="anticon anticon-close-circle">
<svg viewbox="64 64 896 896" focusable="false" data-icon="close-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true">
<path
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z"
></path>
</svg> </span
></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="_1pDMxc1H">
<div class="ant-row ant-form-item">
<div class="ant-col ant-form-item-label">
<label for="address" class="" title="收货地址">收货地址</label>
</div>
<div class="ant-col ant-form-item-control">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<div id="sjld" style="position: relative; z-index: 999">
<div class="m_zlxg" id="shenfen">
<p title="">选择省份</p>
<div class="m_zlxg2">
<ul></ul>
</div>
</div>
<div class="m_zlxg" id="chengshi">
<p title="">选择城市</p>
<div class="m_zlxg2">
<ul></ul>
</div>
</div>
<div class="m_zlxg" id="quyu">
<p title="">选择区域</p>
<div class="m_zlxg2">
<ul></ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="_1pDMxc1H">
<div class="ant-row ant-form-item">
<div class="ant-col ant-form-item-label">
<label for="street" class="" title="街道">街道</label>
</div>
<div class="ant-col ant-form-item-control">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<input autocomplete="off" class="ant-input _3ON7kyGT" type="text" placeholder="请输入详细地址" id="street" value="" style="width: 584px" />
</div>
</div>
</div>
</div>
</div>
<div class="_349CzCYy xJQe3jRu _1pqrWIkU"><span>保存</span></div>
</form>
</div>
</template>
<script>
export default {
name: 'transRecord',
data() {
return {};
},
methods: {},
mounted() {
var mylaydate = laydate.render({
elem: '.ant-picker-input',
eventElem: '.ant-picker-input .datepicker',
theme: 'type-ym',
trigger: 'click',
btns: [],
type: 'date',
value: '2004-04-01',
});
$('._2tZRPt8E li').click(function () {
$(this).addClass('d1qCTAjZ').siblings().removeClass('d1qCTAjZ');
});
$(function () {
$('#sjld').sjld('#shenfen', '#chengshi', '#quyu');
});
},
};
</script>
<style lang="scss" scoped>
.layui-laydate-footer {
display: none;
}
/* m_zlxg */
.m_zlxg {
width: 93px;
height: 40px;
line-height: 40px;
cursor: pointer;
float: left;
margin: 0 10px 0 0;
display: inline;
background: #f9fafc !important;
box-shadow: inset 0 2px 4px 0 #d8e1f0 !important;
border-radius: 6px;
}
.m_zlxg:hover {
border: 1px solid #d7967f;
}
.m_zlxg p {
padding-left: 10px;
overflow: hidden;
line-height: 40px;
color: #666;
font-size: 12px;
font-family: '微软雅黑';
text-overflow: ellipsis;
white-space: nowrap;
}
.m_zlxg2 {
position: absolute;
top: 40px;
border: 1px solid #ded3c1;
background: #fff;
width: 91px;
display: none;
max-height: 224px;
-height: 224px;
overflow-x: hidden;
overflow-y: auto;
white-space: nowrap;
}
.m_zlxg2 li {
line-height: 28px;
white-space: nowrap;
padding-left: 10px;
font-family: '微软雅黑';
color: #333333;
font-size: 12px;
}
.m_zlxg2 li:hover {
color: #7a5a21;
}
</style>
<template>
<div class="ant-spin-nested-loading">
<div class="loading" v-if="lodingShow">
<div class="ant-spin ant-spin-spinning _2PSsJSST">
<span class="ant-spin-dot ant-spin-dot-spin"><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i></span>
</div>
</div>
<div :class="lodingShow ? 'ant-spin-container ant-spin-blur' : 'ant-spin-container'">
<form class="ant-form ant-form-horizontal UY0P2f1z">
<div class="_4ICMeQUV">
<div class="T5pPAuRQ">{{ $t('mine.welfare.label1') }}<span></span></div>
<a @click="goNav('/userredpacket')">{{ $t('mine.welfare.label2') }}</a>
</div>
<div class="_3Gq99aEO">
<div class="JJAq1KGQ">
<i class="_1QA1BIYf _-8TfUAAV"></i>
<div class="_1L44oUsP">
<span>{{ $t('mine.welfare.label3') }}</span><span class="_142Z-wIj">{{ userredpacket.acquirednum }}</span>
</div>
</div>
<div class="JJAq1KGQ" style="cursor: pointer" @click="goNav('/userredpacket')">
<i class="_1QA1BIYf _2-sh3L0L"></i>
<div class="_1L44oUsP">
<span>{{ $t('mine.welfare.label4') }}</span><span class="_142Z-wIj">{{ userredpacket.sendnums }} </span>
</div>
<!-- <span style="margin-left:10px">点击领取红包</span> -->
</div>
</div>
<div class="ant-table-wrapper fYo2DqtT">
<div class="ant-spin-nested-loading">
<div class="loading" style="display: none">
<div class="ant-spin ant-spin-spinning _2PSsJSST">
<span class="ant-spin-dot ant-spin-dot-spin"><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i></span>
</div>
</div>
<div class="_21o37iEs" v-if="redpacketList.length == 0">
<img src="/static/image/ill_norecord_day-b111.png" alt="" />
<div class="HzjbFc_d">{{ $t('mine.welfare.label5') }}</div>
</div>
<div class="ant-spin-container" v-if="redpacketList.length > 0">
<div class="ant-table">
<div class="ant-table-container">
<div class="ant-table-content">
<table style="table-layout: auto">
<colgroup></colgroup>
<thead class="ant-table-thead">
<tr>
<th class="ant-table-cell">{{ $t('mine.welfare.label6') }}</th>
<th class="ant-table-cell">{{ $t('mine.welfare.label7') }}</th>
<th class="ant-table-cell">{{ $t('mine.welfare.label8') }}</th>
<th class="ant-table-cell">{{ $t('mine.welfare.label9') }}</th>
</tr>
</thead>
<tbody class="ant-table-tbody">
<tr class="ant-table-row ant-table-row-level-0 tzNqBmRM false" v-for="(item, index) in redpacketList" :key="index">
<td class="ant-table-cell">{{ item.money }}</td>
<td class="ant-table-cell">{{ item.redpacketmoney }}</td>
<td class="ant-table-cell">{{ item.created_at }}</td>
<td class="ant-table-cell">{{ item.usetime }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<el-pagination v-if="redpacketShowData.total" class="ant-pagination ant-table-pagination ant-table-pagination-right mini" @current-change="getredpacket" :current-page.sync="page" :page-size="10" layout="prev, pager, next" :total="redpacketShowData.total"></el-pagination>
</div>
</div>
</form>
</div>
</div>
</template>
<script>
export default {
name: 'welfare',
data() {
return { redpacketList: [], lodingShow: false, page: 1, redpacketShowData: {}, userredpacket: {} };
},
created() {
let that = this;
that.getredpacket();
that.getuserredpacket();
},
methods: {
getwelfare() {
let that = this;
if (that.userredpacket.sendnums < 1) {
that.showTost(that.$t('mine.welfare.toast1'));
return;
}
that.showLoading();
that.$apiFun
.post('/api/douserredpacket', {})
.then(res => {
console.log(res);
that.showTost(res.message);
that.hideLoading();
that.getredpacket();
that.getuserredpacket();
})
.catch(() => {
that.showTost(that.$t('mine.welfare.toast2'));
that.hideLoading();
});
},
getuserredpacket() {
let that = this;
that.showLoading();
let info = {
page: that.page,
};
that.$apiFun.get('/api/userredpacket', info).then(res => {
console.log(res);
if (res.code != 200) {
that.showTost(res.message);
}
if (res.code == 200) {
that.userredpacket = res.data;
}
that.hideLoading();
});
},
// 获取红包记录
getredpacket() {
let that = this;
that.showLoading();
let info = {
page: that.page,
};
that.$apiFun.post('/api/redpacket', info).then(res => {
console.log(res);
if (res.code != 200) {
that.showTost(res.message);
}
if (res.code == 200) {
that.redpacketList = res.data.data;
that.redpacketShowData = res.data;
}
that.hideLoading();
});
},
goNav(url) {
let that = this;
if (url == '/userredpacket') {
if (that.$store.state.appInfo.redpacket_switch == 0) {
that.showTost(that.$t('mine.welfare.toast3'));
return;
}
let routerData = this.$router.resolve({
path: `/userredpacket`,
});
window.open(routerData.href, '_blank');
return;
}
this.$router.push({ path: url });
},
showTost(title) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${title}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
},
hideLoading() {
this.lodingShow = false;
},
showLoading() {
this.lodingShow = true;
},
},
mounted() {
//弹出下拉
$('.ant-select').click(function () {
$(this).find('.ant-select-dropdown').slideToggle(200);
});
//鼠标经过li变色
$('.ant-select-item').hover(
function () {
$(this).addClass('ant-select-item-option-active');
},
function () {
$(this).removeClass('ant-select-item-option-active');
},
);
},
updated() {
//选择下拉内容
$('.list .ant-select-item').click(function () {
$(this).addClass('ant-select-item-option-selected').siblings().removeClass('ant-select-item-option-selected');
var text = $(this).find('.ant-select-item-option-content').text();
$('.ant-select-selection-search-input').attr('value', text);
$('.ant-select-selection-item1').text(text);
});
$('.lists .ant-select-item').click(function () {
$(this).addClass('ant-select-item-option-selected').siblings().removeClass('ant-select-item-option-selected');
var text = $(this).find('.ant-select-item-option-content').text();
$('.ant-select-selection-search-input').attr('value', text);
$('.ant-select-selection-item2').text(text);
});
//选择最近日期
$('._3Ue4EhT5 ._3CZO3fNE').click(function () {
$(this).addClass('_8E8PME48').siblings().removeClass('_8E8PME48');
});
laydate.render({
elem: '.datepicker',
range: true,
});
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="_24vddGqv" v-if="dataInfo.title">
<div class="_3QmkAyzZ">
<div class="_3BGm9Gkr" style="max-height: 580px; overflow: hidden"><img class="_1fsZpeYT" alt="" :src="dataInfo.banner" /></div>
<div class="_15bQ4htP">
<div class="gLQ8yoBz">
<h1 class="MsoNormal">活动简介</h1>
<p class="MsoNormal">{{ dataInfo.title }}</p>
</div>
<div class="gLQ8yoBz" v-html="dataInfo.content"></div>
<div class="gLQ8yoBz">
<h1 class="MsoNormal">活动规则</h1>
<p class="MsoNormal" v-html="dataInfo.memo"></p>
<!-- _3SkQZ6Gu -->
<div @click="doactivityapply" class="_349CzCYy xJQe3jRu _2HG_3opa " style="margin:30px auto"><span>点我申请活动</span></div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'discountInfo',
data() {
return {
dataInfo: {},
};
},
created() {
let that = this;
let query = that.$route.query;
if (query.id) {
that.getInfo(query.id);
}
},
methods: {
getInfo(id) {
let that = this;
that.$apiFun.post('/api/activitydeatil', { id }).then(res => {
console.log(res);
if (res.code !== 200) {
that.showTost(res.message);
}
if (res.code === 200) {
that.dataInfo = res.data;
}
});
},
doactivityapply() {
let that = this;
that.$apiFun.post('/api/doactivityapply', { activityid: that.dataInfo.id }).then(res => {
that.showTost(res.message);
});
},
openKefu() {
let that = this;
that.$parent.openKefu();
},
showTost(title) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${title}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
},
},
mounted() {
let that = this;
},
updated() {
let that = this;
// 左侧菜单的显示与隐藏
$(window).on('load scroll', function () {
var top = $(document).scrollTop(),
wHeight = $('._2jLZUYlV').height() + $('.XA3_YiOo').height();
if (top > wHeight) {
$('._3_Y_edd7').css({ position: 'fixed', top: '100px' });
} else {
$('._3_Y_edd7').css({ position: '', top: '' });
}
});
},
beforeDestroy() {
let that = this;
},
// watch: {
// //监听路由地址的改变
// $route: {
// immediate: true,
// handler() {
// let that = this;
// console.log(this.$route.query)
// if (this.$route.query.topType) {
// let query = that.$route.query;
// //需要监听的参数
// that.topType = query.topType * 1 - 1;
// that.sumType = query.sumType;
// console.log(that.topType)
// console.log(that.sumType)
// }
// },
// },
// },
};
</script>
<style lang="scss" scoped>
._2rTkfNkl ._3d3FoD7X {
background: none;
}
.fangda {
animation: _308UEapr 0.5s ease-out;
}
.hover {
display: none;
}
._3gi7jqcw:hover ._2JoosS9F {
display: none;
}
._3gi7jqcw:hover .hover {
display: block;
}
._3gi7jqcw._12ZkQT2g ._2JoosS9F {
display: none;
}
._3gi7jqcw._12ZkQT2g .hover {
display: block;
}
._15bQ4htP {
padding-bottom: 0;
}
</style>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
//引入刚才的http.js文件
import https from './http.js';
//设置个对象,就不用一个个暴露了,直接暴露对象
let apiFun = {};
/* 获取列表 */
//查询列表,详情就是get
/* /api/getlist是请求接口地址,有http.js里面的Ip加上,如:http:192.168.0.1:9090//api/getlist */
apiFun.get = function(url,params) {
return https.get(url, params)
}
apiFun.post = function(url,params) {
return https.post(url, params)
}
apiFun.login = function(params) {
return https.post('/api/login_pc', params)
// return https.post('/api/login', params)
}
apiFun.register = function(params) {
return https.post('/api/v2/register', params)
}
// 彩票列表
apiFun.getCaipiaoListApi = (params) => {
return https.get('/api/lottery/list', params)
}
// 彩票玩法
apiFun.getCaipiaoPlayApi = (params) => {
return https.post('/api/lottery/play', params)
}
// 开奖时间
apiFun.getCaipiaoOpenTimeApi = (params) => {
return https.post('/api/lottery/times', params)
}
// 获取上一次开奖结果
apiFun.getCaipiaoLastOpenApi = (params) => {
return https.post('/api/lottery/loadopencode', params)
}
// 获取彩种开奖列表
apiFun.getCaipiaoOpenCodeApi = (params) => {
return https.post('/api/lottery/opencode', params)
}
// 投注
apiFun.lotterySubmitApi = (params) => {
return https.post('/api/lottery/submit_order', params)
}
// 投注列表
apiFun.getBetListApi = (params) => {
return https.get('/api/lottery/order', params)
}
// 流水類型
apiFun.getDealRecordTypeApi = (params) => {
return https.get('/api/money_change/type', params)
}
// 流水
apiFun.getDealRecordListApi = (params) => {
return https.get('/api/money_change', params)
}
// 劃賬
apiFun.transApi = (params) => {
return https.post('/api/agent_transfer', params)
}
// 團隊信息
apiFun.getAgentTeamInfoApi = (params) => {
return https.get('/api/agent/team/info', params)
}
// 團隊信息 - 提款
apiFun.getAgentTeamFundsApi = (params) => {
return https.get('/api/agent/team/funds', params)
}
// 设置邀请码
apiFun.agentSaveApi = (params) => {
return https.post('/api/agent/invite_code/save', params)
}
// 游戏列表
apiFun.getSonGameApi = (params) => {
return https.post('/api/getSonGame', params)
}
//暴露出这个对象
export default apiFun;
// 天美社区源码网 timibbs.net timibbs.com timibbs.vip
\ No newline at end of file
import axios from 'axios' //引入
import router from './../router'
let baseURL = 'https://97w5xg.tdrart.com/'
import _this from '../main.js'
sessionStorage.setItem("baseURL",baseURL)
//这一步的目的是判断出当前是开发环境还是生成环境,方法不止一种,达到目的就行
if(process.env.NODE_ENV=="development"){
baseURL=''
}
let config = {
baseURL: baseURL,
timeout: 30000 //设置最大请求时间
}
const _axios = axios.create(config)
/* 请求拦截器(请求之前的操作) */
_axios.interceptors.request.use(
config => {
//如果有需要在这里开启请求时的loading动画效果
// Authorization:Bearer hPxf6a8TQnCkExTYxceujYgXoW9GXB9909zsZtpvabw6yO9ngcMVKgLx4mzD
let token = sessionStorage.getItem('token') ? sessionStorage.getItem('token') : ''
config.headers.Authorization = 'Bearer ' + token; //添加token,需要结合自己的实际情况添加,
config.headers.lang = localStorage.getItem('locale') || 'kor'
return config;
},
err => Promise.reject(err)
);
// 天美社区源码网 timibbs.net timibbs.com timibbs.vip
/* 请求之后的操作 */
_axios.interceptors.response.use(
res => {
//在这里关闭请求时的loading动画效果
//这里用于处理返回的结果,比如如果是返回401无权限,可能会是跳回到登录页的操作,结合自己的业务逻辑写
if (res.data.code === 1000) {
// console.log(12)
}
if (res.data.code === 401) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${res.data.message}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
router.push('/login');
}
if (res.data.code === 500) {
$('body').append(`
<div class='ant-message' style='top: 400px;'><span><div class='ant-message-notice'><div class='ant-message-notice-content'>
<div class='ant-message-custom-content ant-message-info'><span role='img' aria-label='info-circle' class='anticon anticon-info-circle'>
<svg viewBox='64 64 896 896' focusable='false' data-icon='info-circle' width='1em' height='1em' fill='currentColor' aria-hidden='true'>
<path d='M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm32 664c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V456c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272zm-32-344a48.01 48.01 0 010-96 48.01 48.01 0 010 96z'></path></svg></span><span>
${res.data.message}
</span></div></div></div></span>
</div>`);
setTimeout('$(".ant-message").detach()', 2000);
}
return res;
},
err => {
if (err) {
//在这里关闭请求时的loading动画效果
// Toast("请求网络失败")
}
return Promise.reject(err);
}
);
//封装post,get方法
const http = {
get(url = '', params = {}) {
return new Promise((resolve, reject) => {
// 'Content-Type': 'application/json'
_axios({
url,
params,
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
method: 'GET'
}).then(res => {
resolve(res.data)
return res
}).catch(error => {
reject(error)
})
})
},
post(url = '', params = {}) {
if (url == '/api/register' || url == '/api/login_pc') {
sessionStorage.setItem("baseURL", baseURL)
}
return new Promise((resolve, reject) => {
_axios({
url,
data: params,
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
method: 'POST'
}).then(res => {
resolve(res.data)
return res
}).catch(error => {
reject(error)
})
})
}
}
export default http
import Vue from "vue";
import VueI18n from "vue-i18n";
Vue.use(VueI18n); // 全局挂载
export const i18n = new VueI18n({
locale: localStorage.getItem("locale") || "kor", // 从localStorage中获取 默认英文
messages: {
cn: require("./lan/cn"), // 中文语言包
en: require("./lan/en"), // 中文语言包
kor: require("./lan/kr") // 英文语言包
}
});
export default i18n;
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import apiFun from "@/http/api.js";
import i18n from './i18n/index';
import Vant from 'vant';
Vue.use(Vant);
// 引入 我们准备好的 store
import store from '@/store/index.js'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'
import kor from 'element-ui/lib/locale/lang/ko'
import en from 'element-ui/lib/locale/lang/en'
let lang = localStorage.getItem('locale')
Vue.use(ElementUI, {locale: lang == 'en' ? en : kor});
Vue.prototype.$apiFun = apiFun;//请求接口api
Vue.config.productionTip = false
router.afterEach((to, from, next) => {
window.scrollTo(0, 0);//没到一个新的页面 就自动回顶
});
router.beforeEach((to, from, next) => {
let token = sessionStorage.getItem('token') ? sessionStorage.getItem('token') : '';
console.log(token)
if (to.matched.some(res => res.meta.requireAuth)) { // 验证是否需要登陆
if (sessionStorage.getItem('token')) { // 查询本地存储信息是否已经登陆
next();
} else {
next({
path: '/login', // 未登录则跳转至login页面
query: { redirect: to.fullPath } // 登陆成功后回到当前页面,这里传值给login页面,to.fullPath为当前点击的页面
});
}
} else {
next();
}
});
/* eslint-disable no-new */
const vue = new Vue({
el: '#app',
store,//使用store
router,
i18n,
components: { App },
template: '<App/>'
})
export default vue
\ No newline at end of file
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
let userInfo = JSON.parse(localStorage.getItem('userInfo'))?JSON.parse(localStorage.getItem('userInfo')) :{};
let appInfo = JSON.parse(localStorage.getItem('appInfo'))?JSON.parse(localStorage.getItem('appInfo')) :{};
let messageNum = localStorage.getItem("messageNum") || 0 ;
let token = sessionStorage.getItem("token") || '';
export default new Vuex.Store({
//state存放状态,
state: {
userInfo,
token,
messageNum,
appInfo
},
//getter为state的计算属性
getters: {
},
//mutations可更改状态的逻辑,同步操作
mutations: {
changToken(state){
state.token = sessionStorage.getItem('token') || '';
},
changUserInfo(state){
let userInfo = JSON.parse(localStorage.getItem('userInfo'))
state.userInfo = userInfo ;
},
changappInfo(state){
let appInfo = JSON.parse(localStorage.getItem('appInfo'))
state.appInfo = appInfo ;
}
,changMessageNum(state){
let show = localStorage.getItem('show');
state.messageNum = show ? 0 : localStorage.getItem('messageNum');
}
},
//提交mutation,异步操作
actions: {
},
// 将store模块化
modules: {
}
})
This source diff could not be displayed because it is too large. You can view the blob instead.
._2UT0Kf_K{margin:100px auto 0;overflow:hidden;position:relative;top:0;width:100%}._2qyICCAn,._2UT0Kf_K{text-align:center;z-index:10}._2qyICCAn{margin:130px auto 0;width:476px;height:auto;top:85px}._2zoVUbLx{width:100vw;height:100vh;overflow:auto!important;background:url(/static/register-ac5a.jpg) top no-repeat #212121}._2zoVUbLx ._1MiUowxv{margin:10% auto;width:600px;text-align:center;overflow:hidden}._2FBwK8pA{position:fixed;right:0;bottom:0;min-width:100%;min-height:100%;width:auto;height:auto;z-index:0}.DZfPXDqq{margin:39px auto;position:relative;z-index:1}.DZfPXDqq img{width:372px}._3pvR4aic{width:48px;height:48px;background-color:#fff;background-repeat:no-repeat}._19rglWPh{height:20px;line-height:20px;white-space:nowrap;font-size:14px;width:100%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;align-items:center}._19rglWPh ._1XkWFucM{width:19px;height:19px;margin-right:10px;background-image:url(data:image/png;base64,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);background-size:100% 100%}._19rglWPh #_2TIK_7Dw{opacity:0;position:absolute;cursor:pointer;width:19px;height:19px}._19rglWPh #_2TIK_7Dw:checked+._1XkWFucM{background-image:url(data:image/png;base64,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)}._19rglWPh i{color:#3f5075}._19rglWPh i a{color:#d7967f}._1DjfQ1bQ{overflow:hidden;width:100%;height:48px!important}._1DjfQ1bQ .geetest_holder{width:100%!important;min-width:160px!important}._1DjfQ1bQ .geetest_holder.geetest_wind .geetest_radar_btn,._1DjfQ1bQ .geetest_holder.geetest_wind .geetest_success_btn{border-radius:5px!important}._1DjfQ1bQ .geetest_ghost_success,._1DjfQ1bQ .geetest_radar_btn,._1DjfQ1bQ .geetest_success_btn{height:48px!important;border:none!important}._1DjfQ1bQ .geetest_radar_tip,._1DjfQ1bQ .geetest_success_radar_tip{border:none!important;padding:0 69px!important;height:48px!important;line-height:48px!important}._1DjfQ1bQ .geetest_radar,._1DjfQ1bQ .geetest_success_box{margin:8px 12px!important}._1DjfQ1bQ .geetest_success_box{top:4px!important;left:4px!important}._1DjfQ1bQ .geetest_wait{margin:20px 12px!important}._1DjfQ1bQ .geetest_logo,._1DjfQ1bQ .geetest_success_logo{right:20px!important;top:14px!important}
\ No newline at end of file
.n1sHi1_gDox2Q8ezpdZH5{width:100%;background:#fbfeff;line-height:1.45;padding:40px 0;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center}.n1sHi1_gDox2Q8ezpdZH5 ._3nvVZbeP_KKFGRKZ3SxfW4{width:1020px;color:#363b47;font-size:14px}.n1sHi1_gDox2Q8ezpdZH5 ._2uM338LxSZnEUB6bCz4axi{height:170px;background:#fff;box-shadow:0 14px 60px -6px rgba(22,87,228,.15);border-radius:12px;padding:0 42px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.n1sHi1_gDox2Q8ezpdZH5 ._2uM338LxSZnEUB6bCz4axi ._3ATbZ84037ZhIQDiT-2nyD{height:110px;width:1px;background:#c3c9ce;margin:0 100px}.n1sHi1_gDox2Q8ezpdZH5 ._2xx45NdpwT5KPaYgeMsdYE{margin-top:20px;padding-bottom:44px;background:#fff;box-shadow:0 14px 60px -6px rgba(22,87,228,.15);border-radius:12px}.n1sHi1_gDox2Q8ezpdZH5 ._2xx45NdpwT5KPaYgeMsdYE,.n1sHi1_gDox2Q8ezpdZH5 ._2q5dKVSXvbkX8syq1-Hl2W{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center}.n1sHi1_gDox2Q8ezpdZH5 ._2q5dKVSXvbkX8syq1-Hl2W{-webkit-justify-content:center;justify-content:center;padding:44px 0 22px}.n1sHi1_gDox2Q8ezpdZH5 ._2q5dKVSXvbkX8syq1-Hl2W .f9bxdbnqcRudnKSP3y-bt{width:44px;height:24px;background:linear-gradient(225.87deg,#4698f0,#2f65dc 98.93%);border-radius:4px;font-size:14px;color:#fbfeff;font-weight:400;line-height:24px;text-align:center;display:inline-block;margin-left:12px;margin-top:4px}.n1sHi1_gDox2Q8ezpdZH5 ._1wLAJLwCylF-ornfuZ84xG{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;padding:202px 0 214px}.n1sHi1_gDox2Q8ezpdZH5 ._1wLAJLwCylF-ornfuZ84xG .-pvI714aj7J1HHr2hmnK0{width:70px;height:70px}.n1sHi1_gDox2Q8ezpdZH5 ._1wLAJLwCylF-ornfuZ84xG .tPeA9f5bZSl8Dfxesom4{margin-top:20px;font-size:24px;line-height:34px;color:#1657e4}.n1sHi1_gDox2Q8ezpdZH5 ._1wLAJLwCylF-ornfuZ84xG .oFFcNmDRL-_Ygpp7r-iTE{font-size:14px;line-height:20px;margin-top:5px}.n1sHi1_gDox2Q8ezpdZH5 .vL1BWPuRaiaNRO3dcHZn_{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;padding:202px 0 214px}.n1sHi1_gDox2Q8ezpdZH5 .vL1BWPuRaiaNRO3dcHZn_ .-pvI714aj7J1HHr2hmnK0{width:70px;height:70px}.n1sHi1_gDox2Q8ezpdZH5 .vL1BWPuRaiaNRO3dcHZn_ .tPeA9f5bZSl8Dfxesom4{margin-top:20px;font-size:24px;line-height:34px}.n1sHi1_gDox2Q8ezpdZH5 .vL1BWPuRaiaNRO3dcHZn_ .oFFcNmDRL-_Ygpp7r-iTE{margin-top:5px}.n1sHi1_gDox2Q8ezpdZH5 .vL1BWPuRaiaNRO3dcHZn_ .oFFcNmDRL-_Ygpp7r-iTE,.n1sHi1_gDox2Q8ezpdZH5 ._3VdBrxwboIJ2v_ON4OCRjS{font-size:14px;line-height:20px}.n1sHi1_gDox2Q8ezpdZH5 ._3785zJoWCXtLIHtAS_cA1C{font-family:Tahoma-Bold;font-weight:700;font-size:28px;height:34px;color:#1657e4;margin-top:9px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.n1sHi1_gDox2Q8ezpdZH5 ._1QI9TzXm1Ybnj9BJm4UQ7V{margin-top:22px;font-size:14px;line-height:20px}.n1sHi1_gDox2Q8ezpdZH5 ._21R49Y-pIno9CckiAjl0Id{margin-top:22px;width:320px;height:320px;background:#fff;box-shadow:0 1px 14px rgba(22,87,228,.16);border-radius:10px;position:relative;border:1px solid #4c8be5}.n1sHi1_gDox2Q8ezpdZH5 ._21R49Y-pIno9CckiAjl0Id ._1f6333Dfetv7YoltY9pL-t{height:40px;background:linear-gradient(225.87deg,#4698f0,#2f65dc 98.93%);box-shadow:0 4px 4px rgba(22,87,228,.25);border-radius:10px 10px 0 0;color:#fbfeff;font-weight:500;font-size:24px;line-height:26px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.n1sHi1_gDox2Q8ezpdZH5 ._21R49Y-pIno9CckiAjl0Id ._2_w4FbHMpnRRSdxBYtSL0e{width:220px;padding:5px;background:#fff;margin:20px auto 0}.n1sHi1_gDox2Q8ezpdZH5 ._3sbSiVFgNQ2SK94qDJaI90{background:#fff;padding:0 16px;margin-top:20px;min-width:390px}.n1sHi1_gDox2Q8ezpdZH5 ._3sbSiVFgNQ2SK94qDJaI90,.n1sHi1_gDox2Q8ezpdZH5 ._3sbSiVFgNQ2SK94qDJaI90 ._2Vrrgjd_XLAifnNQgYu0NQ{border-radius:16px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:32px}.n1sHi1_gDox2Q8ezpdZH5 ._3sbSiVFgNQ2SK94qDJaI90 ._2Vrrgjd_XLAifnNQgYu0NQ{background:#f7f7f8;padding:0 15px;font-size:14px;line-height:20px}.n1sHi1_gDox2Q8ezpdZH5 ._2eg9lTattt1yp1qvWhgifb ._2-xkzXq0hmbuW9CZeDhVx_{font-weight:600;font-size:14px;line-height:20px}.n1sHi1_gDox2Q8ezpdZH5 ._2eg9lTattt1yp1qvWhgifb .HU1qShwkRp6KtCq22dC6O{margin-top:10px;font-size:14px;line-height:22px}.n1sHi1_gDox2Q8ezpdZH5 ._2HCazjAzieT4L96opZihj9{color:#6d7588;font-size:16px;line-height:26px}.n1sHi1_gDox2Q8ezpdZH5 .M8ZjTEuW7Q3mUpU0PbEeW{color:#1657e4;margin:0 4px}.n1sHi1_gDox2Q8ezpdZH5 .M8ZjTEuW7Q3mUpU0PbEeW,.n1sHi1_gDox2Q8ezpdZH5 ._1ar3pTm_JYB-u2qWpt6e_z{font-family:PingFangSC-Semibold}.n1sHi1_gDox2Q8ezpdZH5 ._1ar3pTm_JYB-u2qWpt6e_z{font-size:34px;line-height:48px;font-weight:600}.n1sHi1_gDox2Q8ezpdZH5 ._3CQ4hAT8Rn9-ZCUrRPjV7M ._9SJLkU9QpzPYzWOZY3Rqk{font-size:16px;line-height:26px}.n1sHi1_gDox2Q8ezpdZH5 ._3CQ4hAT8Rn9-ZCUrRPjV7M ._9SJLkU9QpzPYzWOZY3Rqk span:first-child{margin-right:10px}.n1sHi1_gDox2Q8ezpdZH5 ._3CQ4hAT8Rn9-ZCUrRPjV7M ._9SJLkU9QpzPYzWOZY3Rqk ._3ZmEMAaXkrKqQ113p9F_uq{color:#1657e4}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment