转增代理页面install
This commit is contained in:
12
view/molistar/vue-project/rechargeAgent/.babelrc
Normal file
12
view/molistar/vue-project/rechargeAgent/.babelrc
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"presets": [
|
||||
["env", {
|
||||
"modules": false,
|
||||
"targets": {
|
||||
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
|
||||
}
|
||||
}],
|
||||
"stage-2"
|
||||
],
|
||||
"plugins": ["transform-vue-jsx", "transform-runtime"]
|
||||
}
|
9
view/molistar/vue-project/rechargeAgent/.editorconfig
Normal file
9
view/molistar/vue-project/rechargeAgent/.editorconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
14
view/molistar/vue-project/rechargeAgent/.gitignore
vendored
Normal file
14
view/molistar/vue-project/rechargeAgent/.gitignore
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
/dist/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
17
view/molistar/vue-project/rechargeAgent/.postcssrc.js
Normal file
17
view/molistar/vue-project/rechargeAgent/.postcssrc.js
Normal file
@@ -0,0 +1,17 @@
|
||||
// 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": {},
|
||||
"postcss-pxtorem": {
|
||||
"rootValue": 37.5,// 设计稿宽度的1/10
|
||||
"propList": [
|
||||
"*"
|
||||
]// 需要做转化处理的属性,如`hight`、`width`、`margin`等,`*`表示全部
|
||||
}
|
||||
|
||||
}
|
||||
}
|
21
view/molistar/vue-project/rechargeAgent/README.md
Normal file
21
view/molistar/vue-project/rechargeAgent/README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# myvue
|
||||
|
||||
> A Vue.js project
|
||||
|
||||
## 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).
|
41
view/molistar/vue-project/rechargeAgent/build/build.js
Normal file
41
view/molistar/vue-project/rechargeAgent/build/build.js
Normal file
@@ -0,0 +1,41 @@
|
||||
'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'
|
||||
))
|
||||
})
|
||||
})
|
@@ -0,0 +1,54 @@
|
||||
'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)
|
||||
}
|
||||
}
|
BIN
view/molistar/vue-project/rechargeAgent/build/logo.png
Normal file
BIN
view/molistar/vue-project/rechargeAgent/build/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
102
view/molistar/vue-project/rechargeAgent/build/utils.js
Normal file
102
view/molistar/vue-project/rechargeAgent/build/utils.js
Normal file
@@ -0,0 +1,102 @@
|
||||
'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',
|
||||
publicPath:'../../'
|
||||
})
|
||||
} 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')
|
||||
})
|
||||
}
|
||||
}
|
@@ -0,0 +1,22 @@
|
||||
'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'
|
||||
}
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
'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',
|
||||
exclude: [resolve('src'), resolve('src/icons')],
|
||||
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: /\.(png|jpe?g|gif|svg)(\?.*)?$/, //
|
||||
loader: 'url-loader',
|
||||
options: {
|
||||
limit: 10000,
|
||||
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.svg$/,
|
||||
loader: 'svg-sprite-loader',
|
||||
include: [resolve('src'), resolve('src/icons')],
|
||||
options: {
|
||||
symbolId: 'icon-[name]'
|
||||
}
|
||||
},
|
||||
// {
|
||||
// test: /\.(js|vue)$/,
|
||||
// loader: 'language-tw-loader',
|
||||
// },
|
||||
{
|
||||
test:/\.(js|vue)$/,
|
||||
loader:'language-hk-loader'
|
||||
}
|
||||
]
|
||||
},
|
||||
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'
|
||||
}
|
||||
}
|
@@ -0,0 +1,95 @@
|
||||
'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)
|
||||
}
|
||||
})
|
||||
})
|
@@ -0,0 +1,145 @@
|
||||
'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
|
@@ -0,0 +1,8 @@
|
||||
/*jshint esversion:6*/
|
||||
'use strict';
|
||||
const merge = require('webpack-merge');
|
||||
const prodEnv = require('./prod.env');
|
||||
|
||||
module.exports = merge(prodEnv, {
|
||||
NODE_ENV: '"development"'
|
||||
})
|
80
view/molistar/vue-project/rechargeAgent/config/index.js
Normal file
80
view/molistar/vue-project/rechargeAgent/config/index.js
Normal file
@@ -0,0 +1,80 @@
|
||||
'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://api.molistar.xyz',
|
||||
// target: 'http://120.79.211.243',
|
||||
target: 'http://beta.api.molistar.xyz',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
pathRewrite: {
|
||||
'^/api': '/'
|
||||
}
|
||||
}},
|
||||
|
||||
// Various Dev Server settings
|
||||
host: '127.0.0.1', // can be overwritten by process.env.HOST
|
||||
// host: '192.168.3.153', // can be overwritten by process.env.HOST
|
||||
// host: '192.168.9.200', // 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: false,
|
||||
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
|
||||
}
|
||||
}
|
@@ -0,0 +1,4 @@
|
||||
'use strict'
|
||||
module.exports = {
|
||||
NODE_ENV: '"production"'
|
||||
}
|
17
view/molistar/vue-project/rechargeAgent/index.html
Normal file
17
view/molistar/vue-project/rechargeAgent/index.html
Normal file
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<title>molistar</title>
|
||||
<!-- <script src="//unpkg.com/vue-ydui/dist/ydui.flexible.js"></script> -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
|
||||
</html>
|
13108
view/molistar/vue-project/rechargeAgent/package-lock.json
generated
Normal file
13108
view/molistar/vue-project/rechargeAgent/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
83
view/molistar/vue-project/rechargeAgent/package.json
Normal file
83
view/molistar/vue-project/rechargeAgent/package.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"name": "myvue",
|
||||
"version": "1.0.0",
|
||||
"description": "A Vue.js project",
|
||||
"author": "oyfangkun <oyfangkun@hotmail.com>",
|
||||
"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": {
|
||||
"axios": "^0.19.0",
|
||||
"crypto-js": "^4.0.0",
|
||||
"fastclick": "^1.0.6",
|
||||
"jsencrypt": "^3.0.0-rc.1",
|
||||
"language-hk-loader": "^1.0.1",
|
||||
"language-tw-loader": "^1.0.3",
|
||||
"lib-flexible": "^0.3.2",
|
||||
"node-sass": "^4.13.0",
|
||||
"postcss-pxtorem": "^5.1.1",
|
||||
"px2rem-loader": "^0.1.9",
|
||||
"qiniu-js": "^3.4.1",
|
||||
"style-loader": "^1.1.1",
|
||||
"svg-sprite-loader": "^4.1.6",
|
||||
"swiper": "^5.3.8",
|
||||
"vant": "^2.8.2",
|
||||
"vconsole": "^3.3.4",
|
||||
"vue": "^2.5.2",
|
||||
"vue-awesome-swiper": "^4.1.1",
|
||||
"vue-i18n": "^8.28.2",
|
||||
"vue-router": "^3.0.1",
|
||||
"vuex": "^3.2.0",
|
||||
"webpack-dev-server": "^2.9.6"
|
||||
},
|
||||
"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",
|
||||
"cli": "^1.0.1",
|
||||
"copy-webpack-plugin": "^4.0.1",
|
||||
"css-loader": "^0.28.11",
|
||||
"extract-text-webpack-plugin": "^3.0.0",
|
||||
"file-loader": "^1.1.11",
|
||||
"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-loader": "^7.3.1",
|
||||
"semver": "^5.3.0",
|
||||
"shelljs": "^0.7.6",
|
||||
"uglifyjs-webpack-plugin": "^1.1.1",
|
||||
"url-loader": "^0.5.9",
|
||||
"vue-loader": "^13.7.3",
|
||||
"vue-style-loader": "^3.1.2",
|
||||
"vue-template-compiler": "^2.5.2",
|
||||
"webpack": "^3.12.0",
|
||||
"webpack-bundle-analyzer": "^2.9.0",
|
||||
"webpack-merge": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6.0.0",
|
||||
"npm": ">= 3.0.0"
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not ie <= 8"
|
||||
]
|
||||
}
|
30
view/molistar/vue-project/rechargeAgent/src/App.vue
Normal file
30
view/molistar/vue-project/rechargeAgent/src/App.vue
Normal file
@@ -0,0 +1,30 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<!-- <img src="./assets/logo.png"> -->
|
||||
<!-- <keep-alive>
|
||||
<router-view v-if="$route.meta.keepAlive"></router-view>
|
||||
</keep-alive>
|
||||
<router-view v-if="!$route.meta.keepAlive"></router-view> -->
|
||||
<router-view></router-view>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "App"
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#app {
|
||||
font-family: "Avenir", Helvetica, Arial, sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
/* text-align: center; */
|
||||
/* color: #2c3e50; */
|
||||
/* margin-top: 60px; */
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
}
|
||||
</style>
|
@@ -0,0 +1,9 @@
|
||||
import request from '@/utils/request';
|
||||
export const diamondLog = (params) => {
|
||||
return request({
|
||||
url: '/bill/record/get',
|
||||
// url: '/api/box/drawrecord',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
259
view/molistar/vue-project/rechargeAgent/src/api/myincome.js
Normal file
259
view/molistar/vue-project/rechargeAgent/src/api/myincome.js
Normal file
@@ -0,0 +1,259 @@
|
||||
let host;
|
||||
import request from '@/utils/request';
|
||||
import { EnvCheck, checkVersion } from '@/utils/browser.js'
|
||||
let isApp = checkVersion().app
|
||||
if (EnvCheck() === 'test') {
|
||||
// console.log(12542);
|
||||
// baseURL = 'http://120.79.211.243'
|
||||
host = 'http://beta.api.molistar.xyz'
|
||||
// 正式环境
|
||||
} else {
|
||||
host = 'https://api.molistar.xyz'
|
||||
}
|
||||
|
||||
export const giftReceiveGet = (params) => {
|
||||
return request({
|
||||
url: '/bill/record/giftReceive/get',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
//我的收益
|
||||
export const getWithDrawList = (params) => {
|
||||
return request({
|
||||
// url: isApp ? "/api/withDraw/findList" : "/api/withDraw/h5/findList",
|
||||
url: isApp ? "/withDraw/findList" : "/withDraw/h5/findList",
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const myincome = (params) => {
|
||||
return request({
|
||||
// url: "/api/purse/query",
|
||||
url: "/purse/query",
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const getCrystals = (params) => {
|
||||
return request({
|
||||
// url: "/api/bill/record/get",
|
||||
url: "/bill/record/get",
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const exchange = (params) => {
|
||||
return request({
|
||||
// url: isApp ? "/api/change/gold" : "/api/change/h5/gold",
|
||||
url: isApp ? "/change/gold" : "/change/h5/gold",
|
||||
method: 'POST',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const getAlipayInfo = (params) => {
|
||||
return request({
|
||||
// url: isApp ? "/api/withDraw/exchange" : "/api/withDraw/h5/exchange/msg",
|
||||
url: isApp ? "/withDraw/exchange" : "/withDraw/h5/exchange/msg",
|
||||
method: 'GET',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const withdraw = (params) => {
|
||||
return request({
|
||||
// url: isApp ? "/api/withDraw/withDrawCash" : "/api/withDraw/h5/withDrawCash",
|
||||
url: isApp ? "/withDraw/withDrawCash" : "/withDraw/h5/withDrawCash",
|
||||
method: 'POST',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const bindAlipay = (params) => {
|
||||
return request({
|
||||
// url: isApp ? "/api/withDraw/bound" : "/api/withDraw/h5/bound2",
|
||||
url: isApp ? "/withDraw/bound" : "/withDraw/h5/bound2",
|
||||
method: 'POST',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const getSms = (params) => {
|
||||
return request({
|
||||
// url: "/api/sms/getCode",
|
||||
url: "/sms/getCode",
|
||||
method: 'POST',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const getWxUserInfoV2 = (params) => {
|
||||
return request({
|
||||
// url: "/api/getWxUserInfoV2",
|
||||
url: "/getWxUserInfoV2",
|
||||
method: 'POST',
|
||||
params,
|
||||
})
|
||||
}
|
||||
export const diamondLog = (params) => {
|
||||
return request({
|
||||
// url: '/api/bill/record/get',
|
||||
url: '/bill/record/get',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
//获取验证码接口
|
||||
export const getCode = (params) => {
|
||||
return request({
|
||||
url: '/sms/getCode',
|
||||
// url: '/api/sms/getCode',
|
||||
method: 'POST',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
export const login = (params) => {
|
||||
return request({
|
||||
url: '/oauth/h5/smsLogin',
|
||||
// url: '/api/oauth/h5/smsLogin',
|
||||
method: 'POST',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
export const weekTotal = (params) => {
|
||||
return request({
|
||||
url: '/room/revenue/weekTotal',
|
||||
// url: '/api/room/revenue/weekTotal',
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 新molistar赛事领奖h5接口
|
||||
export const listWithdrawProd = (params) => {
|
||||
return request({
|
||||
url: '/gameManage/withdraw/listWithdrawProd',
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const getGamePurse = (params) => {
|
||||
return request({
|
||||
url: '/gameManage/user/getPurse',
|
||||
method: 'GET',
|
||||
params: params
|
||||
})
|
||||
}
|
||||
|
||||
export const gameWithdraw = (params) => {
|
||||
return request({
|
||||
url: '/gameManage/withdraw/h5/withDrawCash',
|
||||
method: 'POST',
|
||||
params,
|
||||
})
|
||||
}
|
||||
|
||||
// 个播流水
|
||||
export const weekTotal_single_broadcast = (params) => {
|
||||
return request({
|
||||
url: '/room/revenue/singleBroadcast/weekTotal',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
/************************************新版提现相关接口*************************************/
|
||||
// 获取用户提现信息
|
||||
export const getUserWithdrawInfo = (params) => {
|
||||
return request({
|
||||
url: '/withdraw/v2/getUserWithdrawInfo',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 七牛上传
|
||||
export const getUploadToken = (params) => {
|
||||
return request({
|
||||
url: '/qiniu/upload/getUploadToken',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 用户绑定提现信息
|
||||
export const bindWithdrawInfo = (params) => {
|
||||
return request({
|
||||
url: '/withdraw/v2/bindWithdrawInfo',
|
||||
method: 'POST',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 校验验证码
|
||||
export const verifyCode = (params) => {
|
||||
return request({
|
||||
url: '/sms/verify',
|
||||
method: 'POST',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 获取用户提现配置信息
|
||||
export const getUserWithdrawConfig = (params) => {
|
||||
return request({
|
||||
url: '/withdraw/v2/getUerWithdrawConfigVO',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 新版提现接口
|
||||
export const withdrawV2 = (params) => {
|
||||
return request({
|
||||
url: '/withdraw/v2/applyWithdraw',
|
||||
method: 'POST',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 用户修改提现信息
|
||||
export const updateWithdrawInfo = (params) => {
|
||||
return request({
|
||||
url: '/withdraw/v2/updateWithdrawInfo',
|
||||
method: 'POST',
|
||||
params
|
||||
})
|
||||
}
|
||||
// //get
|
||||
// let myincome = host + '/purse/query?uid='
|
||||
// //提现列表get
|
||||
// let getWithDrawList = host + '/withDraw/findList'
|
||||
// //水晶记录get
|
||||
// let getCrystals = host + '/bill/record/get'
|
||||
// //兑换鉆石post
|
||||
// let exchange = host + '/change/gold'
|
||||
// //获取支付宝信息get
|
||||
// let getAlipayInfo = host + '/withDraw/exchange'
|
||||
// //提现post
|
||||
// let withdraw = host + '/withDraw/withDrawCash'
|
||||
// //绑定支付宝post
|
||||
// let bindAlipay = host + '/withDraw/bound'
|
||||
// //获取短信验证码post
|
||||
// let getSms = host + '/sms/getCode'
|
||||
// //POST获取微信网页授权后的微信用户信息
|
||||
// let getWxUserInfoV2 = host + '/getWxUserInfoV2'
|
||||
|
||||
//登录接口
|
||||
//常见问题
|
||||
// let faqLink = host + '/modules/guide/faq.html'
|
||||
let faqLink = host + '/molistar/modules/myincome/index.html#/DiamondLog'
|
||||
//提现规则
|
||||
let withdrawLink = host + '/molistar/modules/rule/output.html?platform=66'
|
||||
//排行榜
|
||||
let rankList = '/allrank/geth5'
|
||||
export {
|
||||
// myincome,
|
||||
// getWithDrawList,
|
||||
// getCrystals,
|
||||
// exchange,
|
||||
// getAlipayInfo,
|
||||
// withdraw,
|
||||
// bindAlipay,
|
||||
// getSms,
|
||||
// getWxUserInfoV2,
|
||||
faqLink,
|
||||
withdrawLink,
|
||||
rankList,
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
.in-all {
|
||||
background: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.van-index-anchor--sticky {
|
||||
background: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.van-index-anchor {
|
||||
background: #f5f5f5 !important;
|
||||
}
|
Binary file not shown.
29
view/molistar/vue-project/rechargeAgent/src/i18n/i18n.js
Normal file
29
view/molistar/vue-project/rechargeAgent/src/i18n/i18n.js
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
import Vue from 'vue';
|
||||
// import locale from 'element-ui/lib/locale' //element组件翻译
|
||||
import VueI18n from 'vue-i18n';
|
||||
import messages from './langs';
|
||||
|
||||
Vue.use(VueI18n);
|
||||
|
||||
const i18n = new VueI18n({ //从sessionStorage中取,没有就默认
|
||||
// locale: 'zh',
|
||||
locale: window.sessionStorage.getItem('language') ? window.sessionStorage.getItem('language') : getQueryString().lang ? getQueryString().lang : 'en',
|
||||
messages,
|
||||
silentTranslationWarn: true,
|
||||
})
|
||||
function getQueryString() {
|
||||
var _url = location.search;
|
||||
var theRequest = new Object();
|
||||
if (_url.indexOf('?') != -1) {
|
||||
var str = _url.substr(1);
|
||||
strs = str.split('&');
|
||||
for (var i in strs) {
|
||||
theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]);
|
||||
}
|
||||
}
|
||||
return theRequest;
|
||||
}
|
||||
// console.log('i18n.messages',i18n.messages);
|
||||
// console.log('i18n.locale',i18n.locale);
|
||||
export default i18n
|
208
view/molistar/vue-project/rechargeAgent/src/i18n/langs/ar.js
Normal file
208
view/molistar/vue-project/rechargeAgent/src/i18n/langs/ar.js
Normal file
@@ -0,0 +1,208 @@
|
||||
const ar = {
|
||||
diamondLog: {
|
||||
斋月送祝福:'رمضان مبارك',
|
||||
斋月金币瓜分: "تقسيم عملات رمضان الذهبية",
|
||||
公会usd兑换给会长支出: "نفقات تحويل USD للنقابة إلى القائد",
|
||||
私聊礼物支出: "نفقات الهدايا الخاصة",
|
||||
公款充值金币: "إيداع عملات نقدية من الأموال العامة",
|
||||
官方清除金币: "إزالة العملات النقدية من قبل الإدارة",
|
||||
购买个人页背景: "شراء خلفية الصفحة الشخصية",
|
||||
赠送个人页背景: "إهداء خلفية الصفحة الشخصية",
|
||||
禮物總價值: "إجمالي قيمة الهدية",
|
||||
邀請活動: "فعالية الدعوة",
|
||||
房間禮物支出: "نفقات هدايا الغرفة",
|
||||
總收入: "إجمالي الدخل:",
|
||||
總支出: "إجمالي المصروفات:",
|
||||
餘額: "الرصيد",
|
||||
全部: "الكل",
|
||||
公会周期结算会长钻石收入: "إيرادات الماس لرئيس النقابة عند التسوية الدورية",
|
||||
购买房间背景: "شراء خلفية الغرفة",
|
||||
自定义房间背景: "خلفية الغرفة المخصصة",
|
||||
自定义房间背景驳回: "رفض خلفية الغرفة المخصصة",
|
||||
公會usd兌換給代儲收入: 'دخل تبادل الدولار للإيداع',
|
||||
公會usd兌換金幣收入: 'دخل تبادل الدولار لعملات الذهب',
|
||||
遊戲開黑支出: 'الرهانات الرياضية',
|
||||
LUDO匹配收入: 'دخل مباراة لودو',
|
||||
LUDO匹配退還: 'استرداد مباراة لودو',
|
||||
LUDO匹配消耗: 'نفقات مباراة لودو',
|
||||
購買頭條消耗: 'استهلاك شراء العنوان',
|
||||
小遊戲收入: 'إيرادات اللعبة',
|
||||
小遊戲支出: 'نفقات اللعبة',
|
||||
加載中: 'جار التحميل...',
|
||||
金幣記錄: 'سجل العملات الذهبية',
|
||||
收入記錄: 'سجل الدخل',
|
||||
支出記錄: 'سجل المصروفات',
|
||||
禮物獲得: 'الهدايا المتلقاة',
|
||||
沒有更多了: 'لا مزيد',
|
||||
共收入: 'الدخل الإجمالي',
|
||||
共獲得價值: 'إجمالي القيمة المتلقاة',
|
||||
共支出: 'المصروفات الإجمالية',
|
||||
金幣: 'العملات الذهبية',
|
||||
金幣的禮物: 'هدايا العملات الذهبية',
|
||||
房間紅包_來自: 'حزمة حمراء الغرفة - من',
|
||||
全服紅包_來自: 'حزمة حمراء عامة - من',
|
||||
房間紅包退款_來自: 'استرداد حزمة حمراء الغرفة - من',
|
||||
全服紅包退款_來自: 'استرداد حزمة حمراء عامة - من',
|
||||
水晶兌換金幣: 'تحويل الكريستال إلى العملات الذهبية',
|
||||
金幣兌換金幣: 'العائد من تحويل الألماس إلى العملة',
|
||||
鉆石兌換金幣支出: 'المصروف من تحويل الألماس إلى العملة',
|
||||
活動贈送金幣: 'الهدايا النشطة من العملات الذهبية',
|
||||
充值: 'إعادة الشحن',
|
||||
塔羅佔蔔: 'قراءة التارو',
|
||||
集福氣瓜分金幣: 'تقسيم عملات ذهبية لجمع الحظ',
|
||||
CP邀請退還: 'استرداد الدعوة CP',
|
||||
贈送金幣: 'الهدايا من العملات الذهبية',
|
||||
首充禮包獲得金幣: 'استلام العملات الذهبية للحزمة الأولى المشحونة',
|
||||
星級廚房獎勵: 'مكافأة المطبخ النجمي',
|
||||
幸運塔羅收入: 'دخل التارو المحظوظ',
|
||||
中秋活動瓜分金幣: 'تقسيم عملات ذهبية لنشاط منتصف الخريف',
|
||||
官方贈送金幣: 'هدايا رسمية من العملات الذهبية',
|
||||
守護星球獲得: 'الحصول على كوكب الحارس',
|
||||
邀請好友註冊獎勵: 'مكافأة دعوة الأصدقاء للتسجيل',
|
||||
被邀請註冊獎勵: 'مكافأة التسجيل المدعو',
|
||||
直接邀請儲值返點: 'نقاط رد الاستثمار للدعوة المباشرة',
|
||||
間接邀請儲值返點: 'نقاط رد الاستثمار للدعوة غير المباشرة',
|
||||
超級幸運禮物價值分成: 'تقسيم قيمة الهدايا الخارقة للحظ',
|
||||
超級幸運禮物金幣返點: 'استرداد العملات الذهبية للهدايا الخارقة للحظ',
|
||||
貴族等級獎勵: 'مكافأة النبلاء',
|
||||
全服紅包_發生在: 'حزمة حمراء عامة - حدث في',
|
||||
房間紅包_發生在: 'حزمة حمراء الغرفة - حدث في',
|
||||
活動禮包支出: 'نفقات الهدايا النشطة',
|
||||
購買門票: 'شراء تذاكر',
|
||||
守護星球支出: 'نفقات كوكب الحارس',
|
||||
CP邀請支出: 'نفقات الدعوة CP',
|
||||
幸運塔羅支出: 'نفقات التارو المحظوظ',
|
||||
贈送頭飾支出: 'نفقات الهدايا من الزينة للرأس',
|
||||
購買頭飾支出: 'نفقات شراء الزينة للرأس',
|
||||
購買銘牌支出: 'نفقات شراء الشارة',
|
||||
贈送銘牌支出: 'نفقات الهدايا من الشارة',
|
||||
購買資料卡支出: 'نفقات شراء بطاقة المعلومات',
|
||||
贈送資料卡支出: 'نفقات الهدايا من بطاقة المعلومات',
|
||||
購買聊天氣泡支出: 'نفقات شراء فقاعة الدردشة',
|
||||
贈送聊天氣泡支出: 'نفقات الهدايا من فقاعة الدردشة',
|
||||
航海冒險禮包支出: 'نفقات هدية مغامرة الملاحة',
|
||||
購買座駕支出: 'نفقات شراء السيارة',
|
||||
贈送座駕支出: 'نفقات الهدايا من السيارة',
|
||||
星級廚房抽獎: 'سحب المطبخ النجمي',
|
||||
新年煙花抽獎: 'سحب الألعاب النارية للعام الجديد',
|
||||
奪寶精靈禮包購買支出: 'نفقات شراء هدية جنية الكنز',
|
||||
歡樂砸蛋抽獎: 'سحب رحلة الحب',
|
||||
金幣開通貴族: 'تفعيل النبلاء بالعملات الذهبية',
|
||||
轉贈金幣給: 'تحويل العملات الذهبية لـ',
|
||||
贈送: 'هدية',
|
||||
自己: 'نفسي',
|
||||
禮物: 'هدية',
|
||||
开通VIP: 'تفعيل VIP',
|
||||
私聊礼物收入: 'دخل هدية الدردشة الخاصة',
|
||||
福袋支出: ' تم إرسال حقيبة الحظ ',
|
||||
福袋收入: 'تم استلام حقيبة الحظ',
|
||||
福袋退回: 'إرجاع حقيبة الحظ ',
|
||||
游戏活动奖励: 'مكافآت نشاط اللعبة',
|
||||
付费动态头像上传: 'تحميل الصورة الرمزية الديناميكية',
|
||||
付费动态头像退款: 'استرداد الآلهة الديناميكي',
|
||||
Bravo礼物价值分成:'احصل على هدية برافو',
|
||||
Bravo礼物金币奖返点:'برافو يفوز',
|
||||
日房间奖励:'مكافأة الغرفة الأسبوعية'
|
||||
},
|
||||
// goldLog:{
|
||||
// 鉆石記錄:'سجل الماس',
|
||||
// 收入記錄:'سجل الدخل',
|
||||
// 支出記錄:'سجل المصروفات',
|
||||
// 無更多記錄:'لا يوجد المزيد من السجلات',
|
||||
// 禮物收入:'دخل الهدايا',
|
||||
// 官方贈送鉆石:'هدية رسمية',
|
||||
// 分成收入:'دخل التوزيع',
|
||||
// 鉆石提現:'سحب الماس',
|
||||
// 官方扣除:'الحسم الرسمي',
|
||||
// 鉆石兌換鉆石:'تحويل الماس',
|
||||
// 無更多分成記錄:'لا يوجد المزيد من سجلات التوزيع',
|
||||
// 無更多返還記錄:'لا يوجد المزيد من سجلات الاسترداد',
|
||||
// 無更多提現記錄:'لا يوجد المزيد من سجلات السحب',
|
||||
// 無更多兌換記錄:'لا يوجد المزيد من سجلات التحويل',
|
||||
// 充值:'شحن',
|
||||
// 水晶兌換鉆石收入:'تحويل الكريستال إلى الماس',
|
||||
// 鉆石兌換金幣收入:'تحويل الماس إلى عملة',
|
||||
// 打款至公賬充值鉆石:'شحن الماس إلى الحساب العام',
|
||||
// 開寶箱獲得鉆石:'الحصول على الماس من فتح الصندوق',
|
||||
// 活動贈送鉆石:'هدية نشاط',
|
||||
// 官方送鉆石:'هدية رسمية',
|
||||
// 轉贈鉆石收入:'الحصول على الماس من التحويل',
|
||||
// 房間紅包退款:'استرداد الحقيبة الحمراء في الغرفة',
|
||||
// 全服紅包退款:'استرداد الحقيبة الحمراء العامة',
|
||||
// 收到房間紅包:'استلام الحقيبة الحمراء في الغرفة',
|
||||
// 收到全服紅包:'استلام الحقيبة الحمراء العامة',
|
||||
// 塔羅充值:'شحن التارو',
|
||||
// 首充激勵獎勵鉆石:'مكافأة الشحن الأولى',
|
||||
// 守護星球獎勵鉆石:'مكافأة حارس الكواكب',
|
||||
// 星級廚房獎勵:'مكافأة المطبخ النجمي',
|
||||
// 轉贈禮物收入:'الحصول على الهدايا من التحويل',
|
||||
// 幸運塔羅中獎獎勵:'جائزة الطالع الحظ',
|
||||
// 中秋活動獎池瓜分:'تقسيم جائزة حوض الألعاب في عيد القمر',
|
||||
// 邀請裂變活動被邀請獎勵:'مكافأة الدعوة في فعالية الانقسام',
|
||||
// 邀請裂變活動直接邀請獎勵:'مكافأة الدعوة المباشرة في فعالية الانقسام',
|
||||
// 邀請裂變活動直接邀請儲值返點:'إعادة القيمة للشحن المباشر في فعالية الانقسام',
|
||||
// 邀請裂變活動間接邀請儲值返點:'إعادة القيمة للشحن غير المباشر في فعالية الانقسام',
|
||||
// 超級幸運禮物鉆石獎返點:'مكافأة الماس الخاصة بالهدايا السعيدة',
|
||||
// VIP等級獎勵:'مكافأة العضوية VIP',
|
||||
// 房間禮物支出:'مصروفات الهدايا في الغرفة',
|
||||
// 私聊禮物支出:'مصروفات الهدايا في المحادثة الخاصة',
|
||||
// 鉆石紅包支出:'مصروفات الحقيبة الحمراء بالماس',
|
||||
// 禮物紅包支出:'مصروفات الحقيبة الحمراء بالهدايا',
|
||||
// 官方消除鉆石:'سحب الماس الرسمي',
|
||||
// 活動禮包支出:'مصروفات الهدايا في الفعاليات',
|
||||
// 購買玩法門票支出:'مصروفات شراء تذاكر اللعبة',
|
||||
// 購買座駕:'شراء السيارة',
|
||||
// 座駕贈送:'هدية السيارة',
|
||||
// 轉贈鉆石支出:'مصروفات الماس في التحويل',
|
||||
// 發出房間紅包:'إصدار الحقيبة الحمراء في الغرفة',
|
||||
// 發出全服紅包:'إصدار الحقيبة الحمراء العامة',
|
||||
// 活動支出鉆石:'مصروفات الماس في الفعاليات',
|
||||
// 守護星球禮包支出:'مصروفات الهدايا في حارس الكواكب',
|
||||
// 開通貴族:'تفعيل النبلاء',
|
||||
// 幸運塔羅支付:'دفع الطالع الحظ',
|
||||
// 退款扣除鉆石:'خصم الماس في الاسترداد',
|
||||
// 購買頭飾:'شراء الزينة',
|
||||
// 贈送用戶頭飾:'هدية الزينة للمستخدم',
|
||||
// 購買銘牌:'شراء الشارة',
|
||||
// 贈送用戶銘牌:'هدية الشارة للمستخدم',
|
||||
// 購買資料卡:'شراء البطاقة الشخصية',
|
||||
// 贈送用戶資料卡:'هدية البطاقة الشخصية للمستخدم',
|
||||
// 購買聊天氣泡:'شراء فقاعات الدردشة',
|
||||
// 贈送用戶聊天氣泡:'هدية فقاعات الدردشة للمستخدم',
|
||||
// 航海冒險禮包支出:'مصروفات الهدايا في مغامرات البحر',
|
||||
// 星級廚房抽獎:'سحب المطبخ النجمي',
|
||||
// 轉贈鉆石支出:'مصروفات الماس في التحويل',
|
||||
// 新年煙花抽獎:'سحب ألعاب الألعاب النارية في العام الجديد',
|
||||
// 情人節CP購買信物:'شراء الهدايا في عيد الحب',
|
||||
// 精靈碎片購買:'شراء قطع الجني',
|
||||
// 歡樂砸蛋抽獎:'سحب رحلة الحب',
|
||||
// 鉆石開通貴族:'تفعيل النبلاء',
|
||||
// }
|
||||
goldLog: {
|
||||
公會鉆石提現支出: 'مصروفات سحب الألماس للجمعية',
|
||||
遊戲開黑收入: 'الاستلام الألعاب',
|
||||
鉆石記錄: 'سجل الماس',
|
||||
收入記錄: 'سجل الدخل',
|
||||
支出記錄: 'سجل المصروفات',
|
||||
無更多記錄: 'لا يوجد المزيد من السجلات',
|
||||
房間收禮物收入: 'دخل الغرفة من الهدايا',
|
||||
私聊禮物收入: 'دخل المحادثة الخاصة من الهدايا',
|
||||
房間流水抽成收入: 'دخل العمولة من الغرفة',
|
||||
水晶兌換鉆石收入: 'دخل تحويل الكريستال إلى الماس',
|
||||
提現駁回金幣返還: 'إعادة النقود المرفوضة للسحب',
|
||||
官方送金幣: 'هدية الذهب الرسمية',
|
||||
活動贈送金幣: 'هدية الذهب للفعالية',
|
||||
公會金幣結算收入: 'دخل تسوية نقود النقابة',
|
||||
超級幸運禮物價值分成: 'تقسيم قيمة هدية الحظ الخارق',
|
||||
提現: 'السحب',
|
||||
鉆石兌換金幣: 'تبديل الماس إلى نقود',
|
||||
官方消除金幣: 'إزالة النقود الرسمية',
|
||||
退款扣除金幣: 'خصم الاسترداد',
|
||||
公會金幣結算支出: 'صرف تسوية نقود النقابة',
|
||||
加入公會金幣清零: 'مسح دخول نقود النقابة',
|
||||
官方清除钻石: 'إزالة الألماس من قبل الإدارة',
|
||||
私聊礼物收入: 'نفقات الهدايا الخاصة',
|
||||
官方赠送钻石: 'هدايا رسمية من الألماس'
|
||||
}
|
||||
}
|
||||
export default ar
|
202
view/molistar/vue-project/rechargeAgent/src/i18n/langs/en.js
Normal file
202
view/molistar/vue-project/rechargeAgent/src/i18n/langs/en.js
Normal file
@@ -0,0 +1,202 @@
|
||||
const en = {
|
||||
diamondLog: {
|
||||
斋月送祝福:'Ramadan Mubarak',
|
||||
斋月金币瓜分: "Ramadan Gold Coin Sharing",
|
||||
公会usd兑换给会长支出: "Guild USD exchange expenditure for the leader",
|
||||
私聊礼物支出: "Private Chat Gift Expenses",
|
||||
公款充值金币: "Public Fund Recharge Coins",
|
||||
官方清除金币: "Officially Clear Coins",
|
||||
购买个人页背景: "Buy Personal Page Background",
|
||||
赠送个人页背景: "Gift Personal Page Background",
|
||||
官方贈送金幣: "Official Gold Gift",
|
||||
禮物總價值: "Total gift value",
|
||||
邀請活動: "Invitation event",
|
||||
房間禮物支出: "Room gift expense",
|
||||
總收入: "Total income:",
|
||||
總支出: "Total expense:",
|
||||
餘額: "Balance",
|
||||
全部: "All",
|
||||
公会周期结算会长钻石收入: "Guild Leader Diamond Income for Periodic Settlement",
|
||||
购买房间背景: "Purchase Room Background",
|
||||
自定义房间背景: "Custom Room Background",
|
||||
自定义房间背景驳回: "Custom Room Background Rejected",
|
||||
主播周奖励: "Host Weekly Rewards",
|
||||
解除CP手续费: 'Pay Fee',
|
||||
SS公会活动奖励: 'SS Guild Event Rewards',
|
||||
公會usd兌換給代儲收入: ' Guild USD for Deposit Income',
|
||||
公會usd兌換金幣收入: 'Guild USD for Gold Income',
|
||||
遊戲開黑支出: 'sports betting',
|
||||
LUDO匹配收入: 'LUDO Match Income',
|
||||
LUDO匹配退還: 'LUDO Match Refund',
|
||||
LUDO匹配消耗: 'LUDO Match Expenditure',
|
||||
購買頭條消耗: 'Purchase Headline Consumption',
|
||||
小遊戲收入: 'translates to "Game revenue',
|
||||
小遊戲支出: 'translates to "Game expenses',
|
||||
加載中: 'Loading...',
|
||||
金幣記錄: 'Gold Coin Records',
|
||||
收入記錄: 'Income',
|
||||
支出記錄: 'Expense',
|
||||
禮物獲得: 'Gift Received',
|
||||
沒有更多了: 'No More',
|
||||
共收入: 'Total Income',
|
||||
共獲得價值: 'Total Value Received',
|
||||
共支出: 'Total Expenses',
|
||||
金幣: 'Gold Coins',
|
||||
金幣的禮物: 'Gold Coin Gifts',
|
||||
房間紅包_來自: 'Room Red Packet - From',
|
||||
全服紅包_來自: 'Global Red Packet - From',
|
||||
房間紅包退款_來自: 'Room Red Packet Refund - From',
|
||||
全服紅包退款_來自: 'Global Red Packet Refund - From',
|
||||
水晶兌換金幣: 'Crystal to Gold Coins Conversion',
|
||||
金幣兌換金幣: 'Diamond to Coin Income',
|
||||
鉆石兌換金幣支出: 'Diamond to Coin Expenditure',
|
||||
活動贈送金幣: 'Activity Gift Gold Coins',
|
||||
充值: 'Recharge',
|
||||
塔羅佔蔔: 'Tarot Reading',
|
||||
集福氣瓜分金幣: 'Fortune Collection Gold Coin Split',
|
||||
CP邀請退還: 'CP Invitation Refund',
|
||||
贈送金幣: 'Gift Gold Coins',
|
||||
首充禮包獲得金幣: 'First Recharge Gift Gold Coins',
|
||||
星級廚房獎勵: 'Star Kitchen Reward',
|
||||
幸運塔羅收入: 'Lucky Tarot Income',
|
||||
中秋活動瓜分金幣: 'Mid-Autumn Activity Gold Coin Split',
|
||||
守護星球獲得: 'Guardian Planet Acquisition',
|
||||
邀請好友註冊獎勵: 'Invite Friend Registration Reward',
|
||||
被邀請註冊獎勵: 'Invited Registration Reward',
|
||||
直接邀請儲值返點: 'Direct Invitation Deposit Rebate',
|
||||
間接邀請儲值返點: 'Indirect Invitation Deposit Rebate',
|
||||
超級幸運禮物價值分成: 'Super Lucky Gift Value Sharing',
|
||||
超級幸運禮物金幣返點: 'Super Lucky Gift Gold Coin Rebate',
|
||||
貴族等級獎勵: 'Noble Level Reward',
|
||||
全服紅包_發生在: 'Global Red Packet - Happened At',
|
||||
房間紅包_發生在: 'Room Red Packet - Happened At',
|
||||
活動禮包支出: 'Activity Gift Expenditure',
|
||||
購買門票: 'Purchase Tickets',
|
||||
守護星球支出: 'Guardian Planet Expenditure',
|
||||
CP邀請支出: 'CP Invitation Expenditure',
|
||||
幸運塔羅支出: 'Lucky Tarot Expenditure',
|
||||
贈送頭飾支出: 'Gift Headwear Expenditure',
|
||||
購買頭飾支出: 'Purchase Headwear Expenditure',
|
||||
購買銘牌支出: 'Purchase Plaque Expenditure',
|
||||
贈送銘牌支出: 'Gift Plaque Expenditure',
|
||||
購買資料卡支出: 'Purchase Data Card Expenditure',
|
||||
贈送資料卡支出: 'Gift Data Card Expenditure',
|
||||
購買聊天氣泡支出: 'Purchase Chat Bubble Expenditure',
|
||||
贈送聊天氣泡支出: 'Gift Chat Bubble Expenditure',
|
||||
航海冒險禮包支出: 'Maritime Adventure Gift Expenditure',
|
||||
購買座駕支出: 'Purchase Vehicle Expenditure',
|
||||
贈送座駕支出: 'Gift Vehicle Expenditure',
|
||||
星級廚房抽獎: 'Star Kitchen Draw',
|
||||
新年煙花抽獎: 'New Year Fireworks Draw',
|
||||
奪寶精靈禮包購買支出: 'Treasure Elf Gift Purchase Expenditure',
|
||||
歡樂砸蛋抽獎: 'Love Journey Draw',
|
||||
金幣開通貴族: 'Gold Coin Nobility Activation',
|
||||
轉贈金幣給: 'Transfer Gold Coins To',
|
||||
贈送: 'Gift',
|
||||
自己: 'Self',
|
||||
禮物: 'Gift',
|
||||
开通VIP: 'Activate VIP',
|
||||
私聊礼物收入: 'Private Chat Gift Income',
|
||||
福袋支出: 'Sent lucky bag',
|
||||
福袋收入: ' Received lucky bag',
|
||||
福袋退回: ' Return lucky bag',
|
||||
游戏活动奖励: 'Game Activity Rewards',
|
||||
付费动态头像上传: 'Dynamic Avatar Upload',
|
||||
付费动态头像退款: 'Dynamic Avatar Refund',
|
||||
Bravo礼物价值分成:'Receive Bravo Gift',
|
||||
Bravo礼物金币奖返点:'Bravo Gift Win',
|
||||
日房间奖励:'Room Weekly Reward'
|
||||
},
|
||||
// goldLog:{
|
||||
// 鉆石記錄:'Diamond Record',
|
||||
// 收入記錄:'Income Record',
|
||||
// 支出記錄:'Expenditure Record',
|
||||
// 無更多記錄:'No More Records',
|
||||
// 禮物收入:'Gift Income',
|
||||
// 官方贈送鉆石:'Official Gift',
|
||||
// 分成收入:'Commission Income',
|
||||
// 鉆石提現:'Diamond Withdrawal',
|
||||
// 官方扣除:'Official Deduction',
|
||||
// 鉆石兌換鉆石:'Diamond Exchange',
|
||||
// 無更多分成記錄:'No More Commission Records',
|
||||
// 無更多返還記錄:'No More Refund Records',
|
||||
// 無更多提現記錄:'No More Withdrawal Records',
|
||||
// 無更多兌換記錄:'No More Exchange Records',
|
||||
// 充值:'Recharge',
|
||||
// 水晶兌換鉆石收入:'Crystal to Diamond Income',
|
||||
// 鉆石兌換金幣收入:'Diamond to Coin Income',
|
||||
// 打款至公賬充值鉆石:'Public Account Top-up',
|
||||
// 開寶箱獲得鉆石:'Open Treasure Box',
|
||||
// 活動贈送鉆石:'Activity Gift',
|
||||
// 官方送鉆石:'Official Gift',
|
||||
// 轉贈鉆石收入:'Transferred Diamond Income',
|
||||
// 房間紅包退款:'Room Red Envelope Refund',
|
||||
// 全服紅包退款:'Global Red Envelope Refund',
|
||||
// 收到房間紅包:'Received Room Red Envelope',
|
||||
// 收到全服紅包:'Received Global Red Envelope',
|
||||
// 塔羅充值:'Tarot Recharge',
|
||||
// 首充激勵獎勵鉆石:'First Top-up Incentive Diamond',
|
||||
// 守護星球獎勵鉆石:'Guardian Star Reward Diamond',
|
||||
// 星級廚房獎勵:'Star Kitchen Reward',
|
||||
// 轉贈禮物收入:'Transferred Gift Income',
|
||||
// 幸運塔羅中獎獎勵:'Lucky Tarot Prize',
|
||||
// 中秋活動獎池瓜分:'Mid-Autumn Activity Prize Pool Sharing',
|
||||
// 邀請裂變活動被邀請獎勵:'Invitation Fission Activity Invited Reward',
|
||||
// 邀請裂變活動直接邀請獎勵:'Invitation Fission Activity Direct Invitation Reward',
|
||||
// 邀請裂變活動直接邀請儲值返點:'Invitation Fission Activity Direct Invitation Top-up Rebate',
|
||||
// 邀請裂變活動間接邀請儲值返點:'Invitation Fission Activity Indirect Invitation Top-up Rebate',
|
||||
// 超級幸運禮物鉆石獎返點:'Super Lucky Gift Diamond Award Rebate',
|
||||
// VIP等級獎勵:'VIP Level Reward',
|
||||
// 房間禮物支出:'Room Gift Expenditure',
|
||||
// 私聊禮物支出:'Private Chat Gift Expenditure',
|
||||
// 鉆石紅包支出:'Diamond Red Envelope Expenditure',
|
||||
// 禮物紅包支出:'Gift Red Envelope Expenditure',
|
||||
// 活動支出鉆石:'Activity Expenditure Diamond',
|
||||
// 守護星球禮包支出:'Guardian Star Gift Expenditure',
|
||||
// 開通貴族:'Open Noble',
|
||||
// 幸運塔羅支付:'Lucky Tarot Payment',
|
||||
// 退款扣除鉆石:'Refund Deduction Diamond',
|
||||
// 購買頭飾:'Purchase Headdress',
|
||||
// 贈送用戶頭飾:'Gift User Headdress',
|
||||
// 購買銘牌:'Purchase Nameplate',
|
||||
// 贈送用戶銘牌:'Gift User Nameplate',
|
||||
// 購買資料卡:'Purchase Profile Card',
|
||||
// 贈送用戶資料卡:'Gift User Profile Card',
|
||||
// 購買聊天氣泡:'Purchase Chat Bubble',
|
||||
// 贈送用戶聊天氣泡:'Gift User Chat Bubble',
|
||||
// 航海冒險禮包支出:'Maritime Adventure Gift Expenditure',
|
||||
// 星級廚房抽獎:'Star Kitchen Draw',
|
||||
// 新年煙花抽獎:'New Year Fireworks Draw',
|
||||
// 情人節CP購買信物:'Valentine\'s Day CP Buy Token',
|
||||
// 精靈碎片購買:'Elf Fragment Purchase',
|
||||
// 歡樂砸蛋抽獎:'Love Journey Draw',
|
||||
// 鉆石開通貴族:'Diamond Open Noble',
|
||||
// }
|
||||
goldLog: {
|
||||
公會鉆石提現支出: 'Guild Diamond Withdrawal Expense',
|
||||
遊戲開黑收入: 'game orders',
|
||||
鉆石記錄: 'Diamond Record',
|
||||
收入記錄: 'Income Record',
|
||||
支出記錄: 'Expenditure Record',
|
||||
無更多記錄: 'No More Records',
|
||||
房間收禮物收入: 'Room Gift Income',
|
||||
私聊禮物收入: 'Private Gift Income',
|
||||
房間流水抽成收入: 'Room Commission Income',
|
||||
水晶兌換鉆石收入: 'Crystal to Diamond Income',
|
||||
提現駁回金幣返還: 'Rejected Withdrawal Refund',
|
||||
官方送金幣: 'Official Gold Gift',
|
||||
活動贈送金幣: 'Event Gold Gift',
|
||||
公會金幣結算收入: 'Guild Settlement Income',
|
||||
超級幸運禮物價值分成: 'Super Lucky Split',
|
||||
提現: 'Withdrawal',
|
||||
鉆石兌換金幣: 'Diamond to Gold Exchange',
|
||||
官方消除金幣: 'Official Coin Removal',
|
||||
退款扣除金幣: 'Refund Deduction',
|
||||
公會金幣結算支出: 'Guild Settlement Expenditure',
|
||||
加入公會金幣清零: 'Guild Entry Clearing',
|
||||
官方清除钻石: 'Officially Clear Diamonds',
|
||||
私聊礼物收入: 'Private Chat Gift Income',
|
||||
官方赠送钻石: 'Officially Gifted Diamonds'
|
||||
}
|
||||
}
|
||||
export default en
|
@@ -0,0 +1,5 @@
|
||||
const id = {
|
||||
diamondLog: {},
|
||||
}
|
||||
export default id
|
||||
|
@@ -0,0 +1,15 @@
|
||||
import en from './en';
|
||||
import zh from './zh';
|
||||
import id from './id';
|
||||
import ar from './ar';
|
||||
import tr from './tr';
|
||||
|
||||
const messages = {
|
||||
en: en,
|
||||
zh: zh,
|
||||
id: id,
|
||||
ar: ar,
|
||||
tr: tr,
|
||||
}
|
||||
// console.log('langmessages',messages);
|
||||
export default messages
|
138
view/molistar/vue-project/rechargeAgent/src/i18n/langs/tr.js
Normal file
138
view/molistar/vue-project/rechargeAgent/src/i18n/langs/tr.js
Normal file
@@ -0,0 +1,138 @@
|
||||
const tr = {
|
||||
diamondLog: {
|
||||
斋月送祝福:'Hayırlı Ramazanlar',
|
||||
斋月金币瓜分: "Ramazan Altın Paylaşımı",
|
||||
公会usd兑换给会长支出: "Lonca USD değişim harcaması için lider",
|
||||
私聊礼物支出: "Özel Sohbet Hediye Giderleri",
|
||||
公款充值金币: "Kamusal Fon Yükleme Paraları",
|
||||
官方清除金币: "Resmi Olarak Madeni Paraları Temizle",
|
||||
购买个人页背景: "Kişisel Sayfa Arka Planı Satın Al",
|
||||
赠送个人页背景: "Kişisel Sayfa Arka Planı Hediye Et",
|
||||
官方贈送金幣: "Resmi Altın Hediyesi",
|
||||
禮物總價值: "Toplam hediye değeri",
|
||||
邀請活動: "Davet Etkinliği",
|
||||
房間禮物支出: "Oda Hediye Gideri",
|
||||
總收入: "Toplam gelir:",
|
||||
總支出: "Toplam gider:",
|
||||
餘額: "Bakiye",
|
||||
全部: "Hepsi",
|
||||
公会周期结算会长钻石收入: "Lonca Lideri Periyodik Hesaplaşma Elmas Geliri",
|
||||
购买房间背景: "Oda Arka Planı Satın Al",
|
||||
自定义房间背景: "Özel Oda Arka Planı",
|
||||
自定义房间背景驳回: "Özel Oda Arka Planı Reddedildi",
|
||||
主播周奖励: "Yayıncı Haftalık Ödüller",
|
||||
解除CP手续费: 'Ücret Ödemesi',
|
||||
SS公会活动奖励: 'SS Lonca Etkinlik Ödülleri',
|
||||
公會usd兌換給代儲收入: 'Lonca USD Depozito Geliri',
|
||||
公會usd兌換金幣收入: 'Lonca USD Altın Geliri',
|
||||
遊戲開黑支出: 'Spor Bahisleri',
|
||||
LUDO匹配收入: 'LUDO Maç Geliri',
|
||||
LUDO匹配退還: 'LUDO Maç İade',
|
||||
LUDO匹配消耗: 'LUDO Maç Harcama',
|
||||
購買頭條消耗: 'Başlık Satın Alma Tüketimi',
|
||||
小遊戲收入: 'Oyun Geliri',
|
||||
小遊戲支出: 'Oyun Harcaması',
|
||||
加載中: 'Yükleniyor...',
|
||||
金幣記錄: 'Altın Koin Kayıtları',
|
||||
收入記錄: 'Gelir',
|
||||
支出記錄: 'Gider',
|
||||
禮物獲得: 'Hediye Alındı',
|
||||
沒有更多了: 'Daha Fazla Yok',
|
||||
共收入: 'Toplam Gelir',
|
||||
共獲得價值: 'Toplam Alınan Değer',
|
||||
共支出: 'Toplam Gider',
|
||||
金幣: 'Altın Koin',
|
||||
金幣的禮物: 'Altın Koin Hediye',
|
||||
房間紅包_來自: 'Oda Kırmızı Paket - Gönderen',
|
||||
全服紅包_來自: 'Global Kırmızı Paket - Gönderen',
|
||||
房間紅包退款_來自: 'Oda Kırmızı Paket İade - Gönderen',
|
||||
全服紅包退款_來自: 'Global Kırmızı Paket İade - Gönderen',
|
||||
水晶兌換金幣: 'Kristalden Altın Koin Dönüşümü',
|
||||
金幣兌換金幣: 'Elmas ile Altın Koin Geliri',
|
||||
鉆石兌換金幣支出: 'Elmas ile Altın Koin Gideri',
|
||||
活動贈送金幣: 'Etkinlik Altın Koin Hediye',
|
||||
充值: 'Yükleme',
|
||||
塔羅佔蔔: 'Tarot Okuma',
|
||||
集福氣瓜分金幣: 'Şans Toplama Altın Koin Paylaşımı',
|
||||
CP邀請退還: 'CP Daveti İadesi',
|
||||
贈送金幣: 'Altın Koin Hediye',
|
||||
首充禮包獲得金幣: 'İlk Yükleme Hediye Altın Koin',
|
||||
星級廚房獎勳: 'Yıldızlı Mutfak Ödülü',
|
||||
幸運塔羅收入: 'Şanslı Tarot Geliri',
|
||||
中秋活動瓜分金幣: 'Orta Sonbahar Etkinliği Altın Koin Paylaşımı',
|
||||
守護星球獲得: 'Koruyucu Gezegen Kazanımı',
|
||||
邀請好友註冊獎勳: 'Arkadaş Davet Kaydı Ödülü',
|
||||
被邀請註冊獎勳: 'Davetle Kaydolan Ödülü',
|
||||
直接邀請儲值返點: 'Doğrudan Davet Yatırım İade Puanı',
|
||||
間接邀請儲值返點: 'Dolaylı Davet Yatırım İade Puanı',
|
||||
超級幸運禮物價值分成: 'Süper Şanslı Hediye Değer Paylaşımı',
|
||||
超級幸運禮物金幣返點: 'Süper Şanslı Hediye Altın Koin İade Puanı',
|
||||
貴族等級獎勳: 'Noble Seviye Ödülü',
|
||||
全服紅包_發生在: 'Global Kırmızı Paket - Oluştuğu Zaman',
|
||||
房間紅包_發生在: 'Oda Kırmızı Paket - Oluştuğu Zaman',
|
||||
活動禮包支出: 'Etkinlik Hediye Gideri',
|
||||
購買門票: 'Bilet Satın Al',
|
||||
守護星球支出: 'Koruyucu Gezegen Harcaması',
|
||||
CP邀請支出: 'CP Daveti Harcaması',
|
||||
幸運塔羅支出: 'Şanslı Tarot Harcaması',
|
||||
贈送頭飾支出: 'Hediye Takı Harcaması',
|
||||
購買頭飾支出: 'Takı Satın Alma Harcaması',
|
||||
購買銘牌支出: 'Plak Satın Alma Harcaması',
|
||||
贈送銘牌支出: 'Hediye Plak Harcaması',
|
||||
購買資料卡支出: 'Veri Kartı Satın Alma Harcaması',
|
||||
贈送資料卡支出: 'Hediye Veri Kartı Harcaması',
|
||||
購買聊天氣泡支出: 'Sohbet Balonu Satın Alma Harcaması',
|
||||
贈送聊天氣泡支出: 'Hediye Sohbet Balonu Harcaması',
|
||||
航海冒險禮包支出: 'Denizcilik Macerası Hediye Harcaması',
|
||||
購買座駕支出: 'Araç Satın Alma Harcaması',
|
||||
贈送座駕支出: 'Hediye Araç Harcaması',
|
||||
星級廚房抽獎: 'Yıldızlı Mutfak Çekilişi',
|
||||
新年煙花抽獎: 'Yeni Yıl Havai Fişek Çekilişi',
|
||||
奪寶精靈禮包購買支出: 'Hazine Perisi Hediye Satın Alma Harcaması',
|
||||
歡樂砸蛋抽獎: 'Neşeli Yumurta Kırma Çekilişi',
|
||||
金幣開通貴族: 'Altın Koinle Asalet Aktivasyonu',
|
||||
轉贈金幣給: 'Altın Koin Transferi',
|
||||
贈送: 'Hediye',
|
||||
自己: 'Kendi',
|
||||
禮物: 'Hediye',
|
||||
开通VIP: 'VIP Aç',
|
||||
私聊礼物收入: 'Özel Sohbet Hediye Geliri',
|
||||
福袋支出 : 'Şanslı çanta gönderildi',
|
||||
福袋收入: 'Şanslı çanta alındı',
|
||||
福袋退回: 'Şanslı çantayı iade et',
|
||||
游戏活动奖励: 'oyun etkinliği ödülleri',
|
||||
付费动态头像上传: 'Dinamik avatar yükleme',
|
||||
付费动态头像退款: 'Dinamik Avatar Geri Ödeme',
|
||||
Bravo礼物价值分成:'Bravo Hediyesi Alın',
|
||||
Bravo礼物金币奖返点:'Bravo kazanır',
|
||||
日房间奖励:'Oda Haftalık Ödül'
|
||||
},
|
||||
goldLog: {
|
||||
公會鉆石提現支出: 'Lonca Elmas Çekim Gideri',
|
||||
遊戲開黑收入: 'Oyun Siparişleri',
|
||||
鉆石記錄: 'Elmas Kaydı',
|
||||
收入記錄: 'Gelir Kaydı',
|
||||
支出記錄: 'Gider Kaydı',
|
||||
無更多記錄: 'Daha Fazla Kayıt Yok',
|
||||
房間收禮物收入: 'Oda Hediye Geliri',
|
||||
私聊禮物收入: 'Özel Mesaj Hediye Geliri',
|
||||
房間流水抽成收入: 'Oda Komisyon Geliri',
|
||||
水晶兌換鉆石收入: 'Kristalden Elmas Geliri',
|
||||
提現駁回金幣返還: 'İptal Edilen Çekim İade Altın Koin',
|
||||
官方送金幣: 'Resmi Altın Hediye',
|
||||
活動贈送金幣: 'Etkinlik Altın Hediye',
|
||||
公會金幣結算收入: 'Lonca Altın Hesaplaşma Geliri',
|
||||
超級幸運禮物價值分成: 'Süper Şanslı Paylaşım',
|
||||
提現: 'Çekim',
|
||||
鉆石兌換金幣: 'Elmas ile Altın Dönüşümü',
|
||||
官方消除金幣: 'Resmi Coin Silme',
|
||||
退款扣除金幣: 'İade Kesintisi',
|
||||
公會金幣結算支出: 'Lonca Altın Hesaplaşma Gideri',
|
||||
加入公會金幣清零: 'Lonca Katılımı ile Altın Temizleme',
|
||||
官方清除钻石: 'Resmi Olarak Elmasları Temizle',
|
||||
私聊礼物收入: 'Özel Sohbet Hediye Gelirleri',
|
||||
官方赠送钻石: 'Resmi Olarak Verilen Elmaslar'
|
||||
}
|
||||
|
||||
}
|
||||
export default tr
|
137
view/molistar/vue-project/rechargeAgent/src/i18n/langs/zh.js
Normal file
137
view/molistar/vue-project/rechargeAgent/src/i18n/langs/zh.js
Normal file
@@ -0,0 +1,137 @@
|
||||
const zh = {
|
||||
diamondLog: {
|
||||
斋月送祝福:'斋月送祝福',
|
||||
斋月金币瓜分: "斋月金币瓜分",
|
||||
公会usd兑换给会长支出: "公会usd兑换给会长支出",
|
||||
私聊礼物支出: "私聊禮物支出",
|
||||
公款充值金币: "公款充值金幣",
|
||||
官方清除金币: "官方清除金幣",
|
||||
购买个人页背景: "購買個人頁背景",
|
||||
赠送个人页背景: "贈送個人頁背景",
|
||||
官方贈送金幣: "官方贈送金幣",
|
||||
禮物總價值: "禮物總價值",
|
||||
邀請活動: "邀請活動",
|
||||
房間禮物支出: "房間禮物支出",
|
||||
總收入: "總收入",
|
||||
總支出: "總支出",
|
||||
餘額: "餘額",
|
||||
全部: "全部",
|
||||
公会周期结算会长钻石收入: "公會週期結算會長鑽石收入",
|
||||
购买房间背景: "購買房間背景",
|
||||
自定义房间背景: "自訂房間背景",
|
||||
自定义房间背景驳回: "自訂房間背景駁回",
|
||||
主播周奖励: "主播周獎勵",
|
||||
解除CP手续费: '解除CP手續費',
|
||||
SS公会活动奖励: 'SS公會活動奬勵',
|
||||
公會usd兌換給代儲收入: '公會usd兌換給代儲收入',
|
||||
公會usd兌換金幣收入: '公會usd兌換金幣收入',
|
||||
遊戲開黑支出: '遊戲下單',
|
||||
LUDO匹配收入: 'LUDO匹配收入',
|
||||
LUDO匹配退還: 'LUDO匹配退還',
|
||||
LUDO匹配消耗: 'LUDO匹配消耗',
|
||||
購買頭條消耗: '購買頭條消耗',
|
||||
小遊戲收入: '小遊戲收入',
|
||||
小遊戲支出: '小遊戲支出',
|
||||
加載中: '加載中...',
|
||||
金幣記錄: '金幣記錄',
|
||||
收入記錄: '收入記錄',
|
||||
支出記錄: '支出記錄',
|
||||
禮物獲得: '禮物獲得',
|
||||
沒有更多了: '沒有更多了',
|
||||
共收入: '共收入',
|
||||
共獲得價值: '共獲得價值',
|
||||
共支出: '共支出',
|
||||
金幣: '金幣',
|
||||
金幣的禮物: '金幣的禮物',
|
||||
房間紅包_來自: '房間紅包-來自',
|
||||
全服紅包_來自: '全服紅包-來自',
|
||||
房間紅包退款_來自: '房間紅包退款-來自',
|
||||
全服紅包退款_來自: '全服紅包退款-來自',
|
||||
水晶兌換金幣: '水晶兌換金幣',
|
||||
金幣兌換金幣: '鉆石兌換金幣收入',
|
||||
鉆石兌換金幣支出: '鉆石兌換金幣支出',
|
||||
活動贈送金幣: '活動贈送金幣',
|
||||
充值: '充值',
|
||||
塔羅佔蔔: '塔羅佔蔔',
|
||||
集福氣瓜分金幣: '集福氣瓜分金幣',
|
||||
CP邀請退還: 'CP邀請退還',
|
||||
贈送金幣: '贈送金幣',
|
||||
首充禮包獲得金幣: '首充禮包獲得金幣',
|
||||
星級廚房獎勵: '星級廚房獎勵',
|
||||
幸運塔羅收入: '幸運塔羅收入',
|
||||
中秋活動瓜分金幣: '中秋活動瓜分金幣',
|
||||
守護星球獲得: '守護星球獲得',
|
||||
邀請好友註冊獎勵: '邀請好友註冊獎勵',
|
||||
被邀請註冊獎勵: '被邀請註冊獎勵',
|
||||
直接邀請儲值返點: '直接邀請儲值返點',
|
||||
間接邀請儲值返點: '間接邀請儲值返點',
|
||||
超級幸運禮物價值分成: '超級幸運禮物價值分成',
|
||||
超級幸運禮物金幣返點: '超級幸運禮物金幣返點',
|
||||
貴族等級獎勵: '貴族等級獎勵',
|
||||
全服紅包_發生在: '全服紅包-發生在',
|
||||
房間紅包_發生在: '房間紅包-發生在',
|
||||
活動禮包支出: '活動禮包支出',
|
||||
購買門票: '購買門票',
|
||||
守護星球支出: '守護星球支出',
|
||||
CP邀請支出: 'CP邀請支出',
|
||||
幸運塔羅支出: '幸運塔羅支出',
|
||||
贈送頭飾支出: '贈送頭飾支出',
|
||||
購買頭飾支出: '購買頭飾支出',
|
||||
購買銘牌支出: '購買銘牌支出',
|
||||
贈送銘牌支出: '贈送銘牌支出',
|
||||
購買資料卡支出: '購買資料卡支出',
|
||||
贈送資料卡支出: '贈送資料卡支出',
|
||||
購買聊天氣泡支出: '購買聊天氣泡支出',
|
||||
贈送聊天氣泡支出: '贈送聊天氣泡支出',
|
||||
航海冒險禮包支出: '航海冒險禮包支出',
|
||||
購買座駕支出: '購買座駕支出',
|
||||
贈送座駕支出: '贈送座駕支出',
|
||||
星級廚房抽獎: '星級廚房抽獎',
|
||||
新年煙花抽獎: '新年煙花抽獎',
|
||||
奪寶精靈禮包購買支出: '奪寶精靈禮包購買支出',
|
||||
歡樂砸蛋抽獎: '歡樂砸蛋抽獎',
|
||||
金幣開通貴族: '金幣開通貴族',
|
||||
轉贈金幣給: '轉贈金幣給',
|
||||
贈送: '贈送',
|
||||
自己: '自己',
|
||||
禮物: '禮物',
|
||||
开通VIP: '開通VIP',
|
||||
私聊礼物收入: '私聊禮物收入',
|
||||
福袋支出: '福袋支出',
|
||||
福袋收入: '福袋收入',
|
||||
福袋退回: '福袋退回',
|
||||
游戏活动奖励: '游戏活动奖励',
|
||||
付费动态头像上传: '動態頭像上傳',
|
||||
付费动态头像退款: '動態頭像退款',
|
||||
Bravo礼物价值分成:'收到Bravo',
|
||||
Bravo礼物金币奖返点:'Bravo 贏取',
|
||||
日房间奖励:'房间周奖励'
|
||||
},
|
||||
goldLog: {
|
||||
公會鉆石提現支出: '公會鉆石提現支出',
|
||||
遊戲開黑收入: '遊戲接單',
|
||||
鉆石記錄: '鉆石記錄',
|
||||
收入記錄: '收入記錄',
|
||||
支出記錄: '支出記錄',
|
||||
無更多記錄: '無更多記錄',
|
||||
房間收禮物收入: '房間收禮物收入',
|
||||
私聊禮物收入: '私聊禮物收入',
|
||||
房間流水抽成收入: '房間流水抽成收入',
|
||||
水晶兌換鉆石收入: '水晶兌換鉆石收入',
|
||||
提現駁回金幣返還: '提現駁回金幣返還',
|
||||
官方送金幣: '官方送金幣',
|
||||
活動贈送金幣: '活動贈送金幣',
|
||||
公會金幣結算收入: '公會金幣結算收入',
|
||||
超級幸運禮物價值分成: '超級幸運禮物價值分成',
|
||||
提現: '提現',
|
||||
鉆石兌換金幣: '鉆石兌換金幣',
|
||||
官方消除金幣: '官方消除金幣',
|
||||
退款扣除金幣: '退款扣除金幣',
|
||||
公會金幣結算支出: '公會金幣結算支出',
|
||||
加入公會金幣清零: '加入公會金幣清零',
|
||||
官方清除钻石: '官方清除鑽石',
|
||||
私聊礼物收入: '私聊禮物收入',
|
||||
官方赠送钻石: '官方贈送鑽石',
|
||||
},
|
||||
}
|
||||
export default zh
|
41
view/molistar/vue-project/rechargeAgent/src/main.js
Normal file
41
view/molistar/vue-project/rechargeAgent/src/main.js
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
import Vue from 'vue';
|
||||
import App from './App';
|
||||
import router from './router';
|
||||
import '@/static/css/reset.css';
|
||||
import store from '@/store/index.js';
|
||||
import getUid from '@/utils/getUid.js';
|
||||
getUid()
|
||||
Vue.config.productionTip = false;
|
||||
import 'vant/lib/index.css';
|
||||
import vant from 'vant';
|
||||
import 'lib-flexible/flexible'
|
||||
import Vconsole from 'vconsole'
|
||||
import { EnvCheck, checkVersion } from '@/utils/browser.js'
|
||||
if (EnvCheck() === 'test') {
|
||||
new Vconsole();
|
||||
}
|
||||
import i18n from '@/i18n/i18n.js'
|
||||
//300毫秒
|
||||
import fastClick from 'fastClick'
|
||||
fastClick.attach(document.body)
|
||||
//ios中input标签点击无效(或者需要点击多次)
|
||||
fastClick.prototype.focus = function (targetElement) {
|
||||
var length;
|
||||
if (targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') {
|
||||
length = targetElement.value.length;
|
||||
targetElement.focus();
|
||||
targetElement.setSelectionRange(length, length);
|
||||
} else {
|
||||
targetElement.focus();
|
||||
}
|
||||
};
|
||||
Vue.use(vant);
|
||||
new Vue({
|
||||
el: '#app',
|
||||
router,
|
||||
store,
|
||||
i18n,
|
||||
components: { App },
|
||||
template: '<App/>'
|
||||
});
|
54
view/molistar/vue-project/rechargeAgent/src/router/index.js
Normal file
54
view/molistar/vue-project/rechargeAgent/src/router/index.js
Normal file
@@ -0,0 +1,54 @@
|
||||
/*jshint esversion:6*/
|
||||
import Vue from 'vue';
|
||||
import Router from 'vue-router';
|
||||
|
||||
Vue.use(Router);
|
||||
|
||||
var routers = new Router({
|
||||
routes: [
|
||||
{ path: '/myTransfer', name: 'myTransfer', component: () => import('@/view/myTransfer.vue') },
|
||||
]
|
||||
});
|
||||
|
||||
routers.beforeEach((to, from, next) => {
|
||||
if ( window.sessionStorage.getItem('ticket')) {
|
||||
next()
|
||||
}
|
||||
else {
|
||||
setTimeout(() => {
|
||||
window.sessionStorage.setItem('uid', info.uid);
|
||||
window.sessionStorage.setItem('ticket', info.ticket);
|
||||
console.log(info, 'router')
|
||||
if (info.deviceInfo['Accept-Language']) {
|
||||
var language = info.deviceInfo['Accept-Language'];
|
||||
if (language.indexOf('en') != -1) {
|
||||
window.sessionStorage.setItem('language', 'en');
|
||||
} else {
|
||||
window.sessionStorage.setItem('language', info.deviceInfo['Accept-Language']);
|
||||
if (language === 'ar') document.documentElement.setAttribute("dir", "rtl")//i18n是我们项目里的全局变量,表示当前选择的语言,ar代表阿拉伯语
|
||||
}
|
||||
|
||||
} else {
|
||||
// 获取地址栏参数
|
||||
function getQueryString() {
|
||||
var _url = location.search;
|
||||
var theRequest = new Object();
|
||||
if (_url.indexOf('?') != -1) {
|
||||
var str = _url.substr(1);
|
||||
strs = str.split('&');
|
||||
for (var i in strs) {
|
||||
theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]);
|
||||
}
|
||||
}
|
||||
return theRequest;
|
||||
}
|
||||
var language = getQueryString().lang ? getQueryString().lang : 'en';
|
||||
window.sessionStorage.setItem('language', language);
|
||||
// var language = info.deviceInfo['Accept-Language'];
|
||||
if (language === 'ar') document.documentElement.setAttribute("dir", "rtl")//i18n是我们项目里的全局变量,表示当前选择的语言,ar代表阿拉伯语
|
||||
}
|
||||
next();
|
||||
}, 50)
|
||||
}
|
||||
});
|
||||
export default routers;
|
144
view/molistar/vue-project/rechargeAgent/src/static/css/reset.css
Normal file
144
view/molistar/vue-project/rechargeAgent/src/static/css/reset.css
Normal file
@@ -0,0 +1,144 @@
|
||||
/**
|
||||
* Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
|
||||
* http://cssreset.com
|
||||
*/
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video, input {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font-weight: normal;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/* custom */
|
||||
a {
|
||||
color: #7e8c8d;
|
||||
text-decoration: none;
|
||||
-webkit-backface-visibility: hidden;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track-piece {
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
-webkit-border-radius: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:vertical {
|
||||
height: 5px;
|
||||
background-color: rgba(125, 125, 125, 0.7);
|
||||
-webkit-border-radius: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:horizontal {
|
||||
width: 5px;
|
||||
background-color: rgba(125, 125, 125, 0.7);
|
||||
-webkit-border-radius: 6px;
|
||||
}
|
||||
|
||||
html, body {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-text-size-adjust: none;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
img{
|
||||
width: 100%;
|
||||
vertical-align: top;
|
||||
}
|
||||
.mask,.share-mask {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
height: 60px;
|
||||
align-items: center;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
justify-content: space-between;
|
||||
padding: 0 8px;
|
||||
box-sizing: border-box;
|
||||
color:#fff;
|
||||
display: none; }
|
||||
|
||||
.mask .logo {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
.mask .slogan {
|
||||
color: #fff;
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
#download {
|
||||
border: 1px solid #fff;
|
||||
color: #fff;
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
border-radius: 15px;
|
||||
line-height: 30px; }
|
||||
|
||||
#download a{
|
||||
color: #fff; }
|
||||
|
||||
.share-mask{
|
||||
padding: 0 16px;
|
||||
}
|
||||
.share-mask .shareBtn{
|
||||
border-radius: 6px;
|
||||
/*background: linear-gradient(to right,#fe95c0,#ff83b5);*/
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
}
|
||||
.singleTemplate{
|
||||
display: none;
|
||||
}
|
36
view/molistar/vue-project/rechargeAgent/src/store/index.js
Normal file
36
view/molistar/vue-project/rechargeAgent/src/store/index.js
Normal file
@@ -0,0 +1,36 @@
|
||||
import Vuex from 'vuex'
|
||||
import Vue from 'vue'
|
||||
import { EnvCheck, checkVersion } from '@/utils/browser.js'
|
||||
let isApp = checkVersion().app
|
||||
console.log(isApp, 'store')
|
||||
Vue.use(Vuex)
|
||||
|
||||
const store = new Vuex.Store({
|
||||
state: {
|
||||
info: {
|
||||
ticket: '123',
|
||||
uid: "678",
|
||||
},
|
||||
isApp
|
||||
},
|
||||
mutations: {
|
||||
setInfo(state, info) {
|
||||
state.info.ticket = info.ticket
|
||||
state.info.uid = info.uid
|
||||
}
|
||||
},
|
||||
getters: {
|
||||
getInfo(state) {
|
||||
return state.info
|
||||
},
|
||||
getIsApp(state) {
|
||||
return state.info
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
getUserInfo(state) {
|
||||
return state.state
|
||||
}
|
||||
}
|
||||
})
|
||||
export default store
|
149
view/molistar/vue-project/rechargeAgent/src/styles/btn.css
Normal file
149
view/molistar/vue-project/rechargeAgent/src/styles/btn.css
Normal file
@@ -0,0 +1,149 @@
|
||||
:export {
|
||||
menuText: #bfcbd9;
|
||||
menuActiveText: #409EFF;
|
||||
subMenuActiveText: #f4f4f5;
|
||||
menuBg: #304156;
|
||||
menuHover: #263445;
|
||||
subMenuBg: #1f2d3d;
|
||||
subMenuHover: #001528;
|
||||
sideBarWidth: 210px;
|
||||
}
|
||||
|
||||
.blue-btn {
|
||||
background: #324157;
|
||||
}
|
||||
|
||||
.blue-btn:hover {
|
||||
color: #324157;
|
||||
}
|
||||
|
||||
.blue-btn:hover:before, .blue-btn:hover:after {
|
||||
background: #324157;
|
||||
}
|
||||
|
||||
.light-blue-btn {
|
||||
background: #3A71A8;
|
||||
}
|
||||
|
||||
.light-blue-btn:hover {
|
||||
color: #3A71A8;
|
||||
}
|
||||
|
||||
.light-blue-btn:hover:before, .light-blue-btn:hover:after {
|
||||
background: #3A71A8;
|
||||
}
|
||||
|
||||
.red-btn {
|
||||
background: #C03639;
|
||||
}
|
||||
|
||||
.red-btn:hover {
|
||||
color: #C03639;
|
||||
}
|
||||
|
||||
.red-btn:hover:before, .red-btn:hover:after {
|
||||
background: #C03639;
|
||||
}
|
||||
|
||||
.pink-btn {
|
||||
background: #E65D6E;
|
||||
}
|
||||
|
||||
.pink-btn:hover {
|
||||
color: #E65D6E;
|
||||
}
|
||||
|
||||
.pink-btn:hover:before, .pink-btn:hover:after {
|
||||
background: #E65D6E;
|
||||
}
|
||||
|
||||
.green-btn {
|
||||
background: #30B08F;
|
||||
}
|
||||
|
||||
.green-btn:hover {
|
||||
color: #30B08F;
|
||||
}
|
||||
|
||||
.green-btn:hover:before, .green-btn:hover:after {
|
||||
background: #30B08F;
|
||||
}
|
||||
|
||||
.tiffany-btn {
|
||||
background: #4AB7BD;
|
||||
}
|
||||
|
||||
.tiffany-btn:hover {
|
||||
color: #4AB7BD;
|
||||
}
|
||||
|
||||
.tiffany-btn:hover:before, .tiffany-btn:hover:after {
|
||||
background: #4AB7BD;
|
||||
}
|
||||
|
||||
.yellow-btn {
|
||||
background: #FEC171;
|
||||
}
|
||||
|
||||
.yellow-btn:hover {
|
||||
color: #FEC171;
|
||||
}
|
||||
|
||||
.yellow-btn:hover:before, .yellow-btn:hover:after {
|
||||
background: #FEC171;
|
||||
}
|
||||
|
||||
.pan-btn {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
padding: 14px 36px;
|
||||
border-radius: 8px;
|
||||
border: none;
|
||||
outline: none;
|
||||
transition: 600ms ease all;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.pan-btn:hover {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.pan-btn:hover:before, .pan-btn:hover:after {
|
||||
width: 100%;
|
||||
transition: 600ms ease all;
|
||||
}
|
||||
|
||||
.pan-btn:before, .pan-btn:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 2px;
|
||||
width: 0;
|
||||
transition: 400ms ease all;
|
||||
}
|
||||
|
||||
.pan-btn::after {
|
||||
right: inherit;
|
||||
top: inherit;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.custom-button {
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
background: #fff;
|
||||
color: #fff;
|
||||
-webkit-appearance: none;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
outline: 0;
|
||||
margin: 0;
|
||||
padding: 10px 15px;
|
||||
font-size: 14px;
|
||||
border-radius: 4px;
|
||||
}
|
99
view/molistar/vue-project/rechargeAgent/src/styles/btn.scss
Normal file
99
view/molistar/vue-project/rechargeAgent/src/styles/btn.scss
Normal file
@@ -0,0 +1,99 @@
|
||||
@import './variables.scss';
|
||||
|
||||
@mixin colorBtn($color) {
|
||||
background: $color;
|
||||
|
||||
&:hover {
|
||||
color: $color;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
background: $color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.blue-btn {
|
||||
@include colorBtn($blue)
|
||||
}
|
||||
|
||||
.light-blue-btn {
|
||||
@include colorBtn($light-blue)
|
||||
}
|
||||
|
||||
.red-btn {
|
||||
@include colorBtn($red)
|
||||
}
|
||||
|
||||
.pink-btn {
|
||||
@include colorBtn($pink)
|
||||
}
|
||||
|
||||
.green-btn {
|
||||
@include colorBtn($green)
|
||||
}
|
||||
|
||||
.tiffany-btn {
|
||||
@include colorBtn($tiffany)
|
||||
}
|
||||
|
||||
.yellow-btn {
|
||||
@include colorBtn($yellow)
|
||||
}
|
||||
|
||||
.pan-btn {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
padding: 14px 36px;
|
||||
border-radius: 8px;
|
||||
border: none;
|
||||
outline: none;
|
||||
transition: 600ms ease all;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
|
||||
&:hover {
|
||||
background: #fff;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
width: 100%;
|
||||
transition: 600ms ease all;
|
||||
}
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 2px;
|
||||
width: 0;
|
||||
transition: 400ms ease all;
|
||||
}
|
||||
|
||||
&::after {
|
||||
right: inherit;
|
||||
top: inherit;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-button {
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
background: #fff;
|
||||
color: #fff;
|
||||
-webkit-appearance: none;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
outline: 0;
|
||||
margin: 0;
|
||||
padding: 10px 15px;
|
||||
font-size: 14px;
|
||||
border-radius: 4px;
|
||||
}
|
566
view/molistar/vue-project/rechargeAgent/src/styles/index.css
Normal file
566
view/molistar/vue-project/rechargeAgent/src/styles/index.css
Normal file
@@ -0,0 +1,566 @@
|
||||
:export {
|
||||
menuText: #bfcbd9;
|
||||
menuActiveText: #409EFF;
|
||||
subMenuActiveText: #f4f4f5;
|
||||
menuBg: #304156;
|
||||
menuHover: #263445;
|
||||
subMenuBg: #1f2d3d;
|
||||
subMenuHover: #001528;
|
||||
sideBarWidth: 210px;
|
||||
}
|
||||
|
||||
/* fade */
|
||||
.fade-enter-active,
|
||||
.fade-leave-active {
|
||||
transition: opacity 0.28s;
|
||||
}
|
||||
|
||||
.fade-enter,
|
||||
.fade-leave-active {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* fade-transform */
|
||||
.fade-transform-leave-active,
|
||||
.fade-transform-enter-active {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.fade-transform-enter {
|
||||
opacity: 0;
|
||||
transform: translateX(-30px);
|
||||
}
|
||||
|
||||
.fade-transform-leave-to {
|
||||
opacity: 0;
|
||||
transform: translateX(30px);
|
||||
}
|
||||
|
||||
/* breadcrumb transition */
|
||||
.breadcrumb-enter-active,
|
||||
.breadcrumb-leave-active {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.breadcrumb-enter,
|
||||
.breadcrumb-leave-active {
|
||||
opacity: 0;
|
||||
transform: translateX(20px);
|
||||
}
|
||||
|
||||
.breadcrumb-move {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.breadcrumb-leave-active {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#app .main-container {
|
||||
min-height: 100%;
|
||||
transition: margin-left .28s;
|
||||
margin-left: 210px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#app .sidebar-container {
|
||||
transition: width 0.28s;
|
||||
width: 210px !important;
|
||||
background-color: #304156;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
font-size: 0px;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1001;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#app .sidebar-container .horizontal-collapse-transition {
|
||||
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
|
||||
}
|
||||
|
||||
#app .sidebar-container .scrollbar-wrapper {
|
||||
overflow-x: hidden !important;
|
||||
}
|
||||
|
||||
#app .sidebar-container .el-scrollbar__bar.is-vertical {
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#app .sidebar-container .el-scrollbar {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#app .sidebar-container.has-logo .el-scrollbar {
|
||||
height: calc(100% - 50px);
|
||||
}
|
||||
|
||||
#app .sidebar-container .is-horizontal {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#app .sidebar-container a {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#app .sidebar-container .svg-icon {
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
#app .sidebar-container .el-menu {
|
||||
border: none;
|
||||
height: 100%;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
#app .sidebar-container .submenu-title-noDropdown:hover,
|
||||
#app .sidebar-container .el-submenu__title:hover {
|
||||
background-color: #263445 !important;
|
||||
}
|
||||
|
||||
#app .sidebar-container .is-active > .el-submenu__title {
|
||||
color: #f4f4f5 !important;
|
||||
}
|
||||
|
||||
#app .sidebar-container .nest-menu .el-submenu > .el-submenu__title,
|
||||
#app .sidebar-container .el-submenu .el-menu-item {
|
||||
min-width: 210px !important;
|
||||
background-color: #1f2d3d !important;
|
||||
}
|
||||
|
||||
#app .sidebar-container .nest-menu .el-submenu > .el-submenu__title:hover,
|
||||
#app .sidebar-container .el-submenu .el-menu-item:hover {
|
||||
background-color: #001528 !important;
|
||||
}
|
||||
|
||||
#app .hideSidebar .sidebar-container {
|
||||
width: 54px !important;
|
||||
}
|
||||
|
||||
#app .hideSidebar .main-container {
|
||||
margin-left: 54px;
|
||||
}
|
||||
|
||||
#app .hideSidebar .submenu-title-noDropdown {
|
||||
padding: 0 !important;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#app .hideSidebar .submenu-title-noDropdown .el-tooltip {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
#app .hideSidebar .submenu-title-noDropdown .el-tooltip .svg-icon {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#app .hideSidebar .el-submenu {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#app .hideSidebar .el-submenu > .el-submenu__title {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
#app .hideSidebar .el-submenu > .el-submenu__title .svg-icon {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#app .hideSidebar .el-submenu > .el-submenu__title .el-submenu__icon-arrow {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#app .hideSidebar .el-menu--collapse .el-submenu > .el-submenu__title > span {
|
||||
height: 0;
|
||||
width: 0;
|
||||
overflow: hidden;
|
||||
visibility: hidden;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#app .el-menu--collapse .el-menu .el-submenu {
|
||||
min-width: 210px !important;
|
||||
}
|
||||
|
||||
#app .mobile .main-container {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
#app .mobile .sidebar-container {
|
||||
transition: transform .28s;
|
||||
width: 210px !important;
|
||||
}
|
||||
|
||||
#app .mobile.hideSidebar .sidebar-container {
|
||||
pointer-events: none;
|
||||
transition-duration: 0.3s;
|
||||
transform: translate3d(-210px, 0, 0);
|
||||
}
|
||||
|
||||
#app .withoutAnimation .main-container,
|
||||
#app .withoutAnimation .sidebar-container {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
.el-menu--vertical > .el-menu .svg-icon {
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.el-menu--vertical .nest-menu .el-submenu > .el-submenu__title:hover,
|
||||
.el-menu--vertical .el-menu-item:hover {
|
||||
background-color: #263445 !important;
|
||||
}
|
||||
|
||||
.el-menu--vertical > .el-menu--popup {
|
||||
max-height: 100vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.el-menu--vertical > .el-menu--popup::-webkit-scrollbar-track-piece {
|
||||
background: #d3dce6;
|
||||
}
|
||||
|
||||
.el-menu--vertical > .el-menu--popup::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
.el-menu--vertical > .el-menu--popup::-webkit-scrollbar-thumb {
|
||||
background: #99a9bf;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
:export {
|
||||
menuText: #bfcbd9;
|
||||
menuActiveText: #409EFF;
|
||||
subMenuActiveText: #f4f4f5;
|
||||
menuBg: #304156;
|
||||
menuHover: #263445;
|
||||
subMenuBg: #1f2d3d;
|
||||
subMenuHover: #001528;
|
||||
sideBarWidth: 210px;
|
||||
}
|
||||
|
||||
.blue-btn {
|
||||
background: #324157;
|
||||
}
|
||||
|
||||
.blue-btn:hover {
|
||||
color: #324157;
|
||||
}
|
||||
|
||||
.blue-btn:hover:before, .blue-btn:hover:after {
|
||||
background: #324157;
|
||||
}
|
||||
|
||||
.light-blue-btn {
|
||||
background: #3A71A8;
|
||||
}
|
||||
|
||||
.light-blue-btn:hover {
|
||||
color: #3A71A8;
|
||||
}
|
||||
|
||||
.light-blue-btn:hover:before, .light-blue-btn:hover:after {
|
||||
background: #3A71A8;
|
||||
}
|
||||
|
||||
.red-btn {
|
||||
background: #C03639;
|
||||
}
|
||||
|
||||
.red-btn:hover {
|
||||
color: #C03639;
|
||||
}
|
||||
|
||||
.red-btn:hover:before, .red-btn:hover:after {
|
||||
background: #C03639;
|
||||
}
|
||||
|
||||
.pink-btn {
|
||||
background: #E65D6E;
|
||||
}
|
||||
|
||||
.pink-btn:hover {
|
||||
color: #E65D6E;
|
||||
}
|
||||
|
||||
.pink-btn:hover:before, .pink-btn:hover:after {
|
||||
background: #E65D6E;
|
||||
}
|
||||
|
||||
.green-btn {
|
||||
background: #30B08F;
|
||||
}
|
||||
|
||||
.green-btn:hover {
|
||||
color: #30B08F;
|
||||
}
|
||||
|
||||
.green-btn:hover:before, .green-btn:hover:after {
|
||||
background: #30B08F;
|
||||
}
|
||||
|
||||
.tiffany-btn {
|
||||
background: #4AB7BD;
|
||||
}
|
||||
|
||||
.tiffany-btn:hover {
|
||||
color: #4AB7BD;
|
||||
}
|
||||
|
||||
.tiffany-btn:hover:before, .tiffany-btn:hover:after {
|
||||
background: #4AB7BD;
|
||||
}
|
||||
|
||||
.yellow-btn {
|
||||
background: #FEC171;
|
||||
}
|
||||
|
||||
.yellow-btn:hover {
|
||||
color: #FEC171;
|
||||
}
|
||||
|
||||
.yellow-btn:hover:before, .yellow-btn:hover:after {
|
||||
background: #FEC171;
|
||||
}
|
||||
|
||||
.pan-btn {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
padding: 14px 36px;
|
||||
border-radius: 8px;
|
||||
border: none;
|
||||
outline: none;
|
||||
transition: 600ms ease all;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.pan-btn:hover {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.pan-btn:hover:before, .pan-btn:hover:after {
|
||||
width: 100%;
|
||||
transition: 600ms ease all;
|
||||
}
|
||||
|
||||
.pan-btn:before, .pan-btn:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 2px;
|
||||
width: 0;
|
||||
transition: 400ms ease all;
|
||||
}
|
||||
|
||||
.pan-btn::after {
|
||||
right: inherit;
|
||||
top: inherit;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.custom-button {
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
background: #fff;
|
||||
color: #fff;
|
||||
-webkit-appearance: none;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
outline: 0;
|
||||
margin: 0;
|
||||
padding: 10px 15px;
|
||||
font-size: 14px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
body {
|
||||
height: 100%;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
#app {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
.no-padding {
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
.padding-content {
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
a:focus,
|
||||
a:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a,
|
||||
a:focus,
|
||||
a:hover {
|
||||
cursor: pointer;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.fr {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.fl {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.pr-5 {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.pl-5 {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.inlineBlock {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
font-size: 0;
|
||||
content: " ";
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
aside {
|
||||
background: #eef1f6;
|
||||
padding: 8px 24px;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 2px;
|
||||
display: block;
|
||||
line-height: 32px;
|
||||
font-size: 16px;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
|
||||
color: #2c3e50;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
aside a {
|
||||
color: #337ab7;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
aside a:hover {
|
||||
color: #20a0ff;
|
||||
}
|
||||
|
||||
.app-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.components-container {
|
||||
margin: 30px 50px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.pagination-container {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sub-navbar {
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
padding-right: 20px;
|
||||
transition: 600ms ease position;
|
||||
background: linear-gradient(90deg, #20b6f9 0%, #20b6f9 0%, #2178f1 100%, #2178f1 100%);
|
||||
}
|
||||
|
||||
.sub-navbar .subtitle {
|
||||
font-size: 20px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.sub-navbar.draft {
|
||||
background: #d0d0d0;
|
||||
}
|
||||
|
||||
.sub-navbar.deleted {
|
||||
background: #d0d0d0;
|
||||
}
|
||||
|
||||
.link-type,
|
||||
.link-type:focus {
|
||||
color: #337ab7;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.link-type:hover,
|
||||
.link-type:focus:hover {
|
||||
color: #20a0ff;
|
||||
}
|
||||
|
||||
.filter-container {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.filter-container .filter-item {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.multiselect {
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.multiselect--active {
|
||||
z-index: 1000 !important;
|
||||
}
|
191
view/molistar/vue-project/rechargeAgent/src/styles/index.scss
Normal file
191
view/molistar/vue-project/rechargeAgent/src/styles/index.scss
Normal file
@@ -0,0 +1,191 @@
|
||||
@import './variables.scss';
|
||||
@import './mixin.scss';
|
||||
@import './transition.scss';
|
||||
// @import './element-ui.scss';
|
||||
@import './sidebar.scss';
|
||||
@import './btn.scss';
|
||||
|
||||
body {
|
||||
height: 100%;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
|
||||
}
|
||||
|
||||
label {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
#app {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
*,
|
||||
*:before,
|
||||
*:after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
|
||||
.no-padding {
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
.padding-content {
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
a:focus,
|
||||
a:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a,
|
||||
a:focus,
|
||||
a:hover {
|
||||
cursor: pointer;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.fr {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.fl {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.pr-5 {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.pl-5 {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.inlineBlock {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.clearfix {
|
||||
&:after {
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
font-size: 0;
|
||||
content: " ";
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
}
|
||||
|
||||
aside {
|
||||
background: #eef1f6;
|
||||
padding: 8px 24px;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 2px;
|
||||
display: block;
|
||||
line-height: 32px;
|
||||
font-size: 16px;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
|
||||
color: #2c3e50;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
|
||||
a {
|
||||
color: #337ab7;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
color: rgb(32, 160, 255);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//main-container全局样式
|
||||
.app-container {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.components-container {
|
||||
margin: 30px 50px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.pagination-container {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center
|
||||
}
|
||||
|
||||
.sub-navbar {
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
padding-right: 20px;
|
||||
transition: 600ms ease position;
|
||||
background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);
|
||||
|
||||
.subtitle {
|
||||
font-size: 20px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
&.draft {
|
||||
background: #d0d0d0;
|
||||
}
|
||||
|
||||
&.deleted {
|
||||
background: #d0d0d0;
|
||||
}
|
||||
}
|
||||
|
||||
.link-type,
|
||||
.link-type:focus {
|
||||
color: #337ab7;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
color: rgb(32, 160, 255);
|
||||
}
|
||||
}
|
||||
|
||||
.filter-container {
|
||||
padding-bottom: 10px;
|
||||
|
||||
.filter-item {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
//refine vue-multiselect plugin
|
||||
.multiselect {
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.multiselect--active {
|
||||
z-index: 1000 !important;
|
||||
}
|
@@ -0,0 +1 @@
|
||||
/* No CSS */
|
@@ -0,0 +1,66 @@
|
||||
@mixin clearfix {
|
||||
&:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin scrollBar {
|
||||
&::-webkit-scrollbar-track-piece {
|
||||
background: #d3dce6;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background: #99a9bf;
|
||||
border-radius: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin relative {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@mixin pct($pct) {
|
||||
width: #{$pct};
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
@mixin triangle($width, $height, $color, $direction) {
|
||||
$width: $width/2;
|
||||
$color-border-style: $height solid $color;
|
||||
$transparent-border-style: $width solid transparent;
|
||||
height: 0;
|
||||
width: 0;
|
||||
|
||||
@if $direction==up {
|
||||
border-bottom: $color-border-style;
|
||||
border-left: $transparent-border-style;
|
||||
border-right: $transparent-border-style;
|
||||
}
|
||||
|
||||
@else if $direction==right {
|
||||
border-left: $color-border-style;
|
||||
border-top: $transparent-border-style;
|
||||
border-bottom: $transparent-border-style;
|
||||
}
|
||||
|
||||
@else if $direction==down {
|
||||
border-top: $color-border-style;
|
||||
border-left: $transparent-border-style;
|
||||
border-right: $transparent-border-style;
|
||||
}
|
||||
|
||||
@else if $direction==left {
|
||||
border-right: $color-border-style;
|
||||
border-top: $transparent-border-style;
|
||||
border-bottom: $transparent-border-style;
|
||||
}
|
||||
}
|
209
view/molistar/vue-project/rechargeAgent/src/styles/sidebar.scss
Normal file
209
view/molistar/vue-project/rechargeAgent/src/styles/sidebar.scss
Normal file
@@ -0,0 +1,209 @@
|
||||
#app {
|
||||
|
||||
.main-container {
|
||||
min-height: 100%;
|
||||
transition: margin-left .28s;
|
||||
margin-left: $sideBarWidth;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sidebar-container {
|
||||
transition: width 0.28s;
|
||||
width: $sideBarWidth !important;
|
||||
background-color: $menuBg;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
font-size: 0px;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 1001;
|
||||
overflow: hidden;
|
||||
|
||||
// reset element-ui css
|
||||
.horizontal-collapse-transition {
|
||||
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
|
||||
}
|
||||
|
||||
.scrollbar-wrapper {
|
||||
overflow-x: hidden !important;
|
||||
}
|
||||
|
||||
.el-scrollbar__bar.is-vertical {
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
.el-scrollbar {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
&.has-logo {
|
||||
.el-scrollbar {
|
||||
height: calc(100% - 50px);
|
||||
}
|
||||
}
|
||||
|
||||
.is-horizontal {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.svg-icon {
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.el-menu {
|
||||
border: none;
|
||||
height: 100%;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
// menu hover
|
||||
.submenu-title-noDropdown,
|
||||
.el-submenu__title {
|
||||
&:hover {
|
||||
background-color: $menuHover !important;
|
||||
}
|
||||
}
|
||||
|
||||
.is-active>.el-submenu__title {
|
||||
color: $subMenuActiveText !important;
|
||||
}
|
||||
|
||||
& .nest-menu .el-submenu>.el-submenu__title,
|
||||
& .el-submenu .el-menu-item {
|
||||
min-width: $sideBarWidth !important;
|
||||
background-color: $subMenuBg !important;
|
||||
|
||||
&:hover {
|
||||
background-color: $subMenuHover !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hideSidebar {
|
||||
.sidebar-container {
|
||||
width: 54px !important;
|
||||
}
|
||||
|
||||
.main-container {
|
||||
margin-left: 54px;
|
||||
}
|
||||
|
||||
.submenu-title-noDropdown {
|
||||
padding: 0 !important;
|
||||
position: relative;
|
||||
|
||||
.el-tooltip {
|
||||
padding: 0 !important;
|
||||
|
||||
.svg-icon {
|
||||
margin-left: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.el-submenu {
|
||||
overflow: hidden;
|
||||
|
||||
&>.el-submenu__title {
|
||||
padding: 0 !important;
|
||||
|
||||
.svg-icon {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.el-submenu__icon-arrow {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.el-menu--collapse {
|
||||
.el-submenu {
|
||||
&>.el-submenu__title {
|
||||
&>span {
|
||||
height: 0;
|
||||
width: 0;
|
||||
overflow: hidden;
|
||||
visibility: hidden;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.el-menu--collapse .el-menu .el-submenu {
|
||||
min-width: $sideBarWidth !important;
|
||||
}
|
||||
|
||||
// mobile responsive
|
||||
.mobile {
|
||||
.main-container {
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.sidebar-container {
|
||||
transition: transform .28s;
|
||||
width: $sideBarWidth !important;
|
||||
}
|
||||
|
||||
&.hideSidebar {
|
||||
.sidebar-container {
|
||||
pointer-events: none;
|
||||
transition-duration: 0.3s;
|
||||
transform: translate3d(-$sideBarWidth, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.withoutAnimation {
|
||||
|
||||
.main-container,
|
||||
.sidebar-container {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// when menu collapsed
|
||||
.el-menu--vertical {
|
||||
&>.el-menu {
|
||||
.svg-icon {
|
||||
margin-right: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.nest-menu .el-submenu>.el-submenu__title,
|
||||
.el-menu-item {
|
||||
&:hover {
|
||||
// you can use $subMenuHover
|
||||
background-color: $menuHover !important;
|
||||
}
|
||||
}
|
||||
|
||||
// the scroll bar appears when the subMenu is too long
|
||||
>.el-menu--popup {
|
||||
max-height: 100vh;
|
||||
overflow-y: auto;
|
||||
|
||||
&::-webkit-scrollbar-track-piece {
|
||||
background: #d3dce6;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background: #99a9bf;
|
||||
border-radius: 20px;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,46 @@
|
||||
/* fade */
|
||||
.fade-enter-active,
|
||||
.fade-leave-active {
|
||||
transition: opacity 0.28s;
|
||||
}
|
||||
|
||||
.fade-enter,
|
||||
.fade-leave-active {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* fade-transform */
|
||||
.fade-transform-leave-active,
|
||||
.fade-transform-enter-active {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.fade-transform-enter {
|
||||
opacity: 0;
|
||||
transform: translateX(-30px);
|
||||
}
|
||||
|
||||
.fade-transform-leave-to {
|
||||
opacity: 0;
|
||||
transform: translateX(30px);
|
||||
}
|
||||
|
||||
/* breadcrumb transition */
|
||||
.breadcrumb-enter-active,
|
||||
.breadcrumb-leave-active {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.breadcrumb-enter,
|
||||
.breadcrumb-leave-active {
|
||||
opacity: 0;
|
||||
transform: translateX(20px);
|
||||
}
|
||||
|
||||
.breadcrumb-move {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.breadcrumb-leave-active {
|
||||
position: absolute;
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
// global transition css
|
||||
|
||||
/* fade */
|
||||
.fade-enter-active,
|
||||
.fade-leave-active {
|
||||
transition: opacity 0.28s;
|
||||
}
|
||||
|
||||
.fade-enter,
|
||||
.fade-leave-active {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* fade-transform */
|
||||
.fade-transform-leave-active,
|
||||
.fade-transform-enter-active {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.fade-transform-enter {
|
||||
opacity: 0;
|
||||
transform: translateX(-30px);
|
||||
}
|
||||
|
||||
.fade-transform-leave-to {
|
||||
opacity: 0;
|
||||
transform: translateX(30px);
|
||||
}
|
||||
|
||||
/* breadcrumb transition */
|
||||
.breadcrumb-enter-active,
|
||||
.breadcrumb-leave-active {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.breadcrumb-enter,
|
||||
.breadcrumb-leave-active {
|
||||
opacity: 0;
|
||||
transform: translateX(20px);
|
||||
}
|
||||
|
||||
.breadcrumb-move {
|
||||
transition: all .5s;
|
||||
}
|
||||
|
||||
.breadcrumb-leave-active {
|
||||
position: absolute;
|
||||
}
|
@@ -0,0 +1,10 @@
|
||||
:export {
|
||||
menuText: #bfcbd9;
|
||||
menuActiveText: #409EFF;
|
||||
subMenuActiveText: #f4f4f5;
|
||||
menuBg: #304156;
|
||||
menuHover: #263445;
|
||||
subMenuBg: #1f2d3d;
|
||||
subMenuHover: #001528;
|
||||
sideBarWidth: 210px;
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
// base color
|
||||
$blue:#324157;
|
||||
$light-blue:#3A71A8;
|
||||
$red:#C03639;
|
||||
$pink: #E65D6E;
|
||||
$green: #30B08F;
|
||||
$tiffany: #4AB7BD;
|
||||
$yellow:#FEC171;
|
||||
$panGreen: #30B08F;
|
||||
|
||||
// sidebar
|
||||
$menuText:#bfcbd9;
|
||||
$menuActiveText:#409EFF;
|
||||
$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
|
||||
|
||||
$menuBg:#304156;
|
||||
$menuHover:#263445;
|
||||
|
||||
$subMenuBg:#1f2d3d;
|
||||
$subMenuHover:#001528;
|
||||
|
||||
$sideBarWidth: 210px;
|
||||
|
||||
// the :export directive is the magic sauce for webpack
|
||||
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
|
||||
:export {
|
||||
menuText: $menuText;
|
||||
menuActiveText: $menuActiveText;
|
||||
subMenuActiveText: $subMenuActiveText;
|
||||
menuBg: $menuBg;
|
||||
menuHover: $menuHover;
|
||||
subMenuBg: $subMenuBg;
|
||||
subMenuHover: $subMenuHover;
|
||||
sideBarWidth: $sideBarWidth;
|
||||
}
|
35
view/molistar/vue-project/rechargeAgent/src/utils/browser.js
Normal file
35
view/molistar/vue-project/rechargeAgent/src/utils/browser.js
Normal file
@@ -0,0 +1,35 @@
|
||||
export const checkVersion = () => {
|
||||
var u = navigator.userAgent, app = navigator.appVersion;
|
||||
return {
|
||||
trident: u.indexOf('Trident') > -1, //IE内核
|
||||
presto: u.indexOf('Presto') > -1, //opera内核
|
||||
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
|
||||
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核
|
||||
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
|
||||
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
|
||||
android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
|
||||
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
|
||||
iPad: u.indexOf('iPad') > -1, //是否iPad
|
||||
webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
|
||||
weixin: u.indexOf('MicroMessenger') > -1, //是否微信
|
||||
qq: u.match(/\sQQ/i) == " qq", //是否QQ
|
||||
app: u.match('molistarApp') == 'molistarApp' //是否在app内
|
||||
};
|
||||
}
|
||||
export const EnvCheck = () => {
|
||||
if (window.location.href) {
|
||||
var _url = window.location.href;
|
||||
var res = _url.match(/api.uat.z/);
|
||||
var res1 = _url.match(/120.79.211.243/);
|
||||
var res2 = _url.match(/192.168/);
|
||||
var res3 = _url.match(/127.0.0.1/);
|
||||
var res4 = _url.match(/api.uat/);
|
||||
var res5 = _url.match(/beta./);
|
||||
|
||||
if (res || res1 || res2 || res3 || res4 || res5 ) {
|
||||
return 'test';
|
||||
} else {
|
||||
return 'live';
|
||||
}
|
||||
}
|
||||
}
|
276
view/molistar/vue-project/rechargeAgent/src/utils/common.js
Normal file
276
view/molistar/vue-project/rechargeAgent/src/utils/common.js
Normal file
@@ -0,0 +1,276 @@
|
||||
// 指定全部变量
|
||||
/* global linkedme wx */
|
||||
|
||||
// import axios from 'axios'
|
||||
// const axios = require('axios')
|
||||
|
||||
|
||||
|
||||
const commonJs = {
|
||||
// 获取设备信息
|
||||
checkVersion: function () {
|
||||
let u = navigator.userAgent
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
let app = navigator.appVersion
|
||||
return {
|
||||
trident: u.indexOf('Trident') > -1, // IE内核
|
||||
presto: u.indexOf('Presto') > -1, // opera内核
|
||||
webKit: u.indexOf('AppleWebKit') > -1, // 苹果、谷歌内核
|
||||
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1, // 火狐内核
|
||||
mobile: !!u.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端
|
||||
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端
|
||||
android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, // android终端
|
||||
iPhone: u.indexOf('iPhone') > -1, // 是否为iPhone或者QQHD浏览器
|
||||
iPad: u.indexOf('iPad') > -1, // 是否iPad
|
||||
webApp: u.indexOf('Safari') > -1, // 是否web应该程序,没有头部与底部
|
||||
weixin: u.indexOf('MicroMessenger') > -1, // 是否微信
|
||||
qq: u.match(/\sQQ/i) === ' qq', // 是否QQ
|
||||
molistar: u.match('molistarApp'),
|
||||
app: u.match('molistarApp') // 是否在app内
|
||||
}
|
||||
},
|
||||
// 适配服务器环境(正式/测试)
|
||||
EnvCheck: function () {
|
||||
if (window.location.href) {
|
||||
let _url = window.location.href
|
||||
let res = _url.match(/beta/)
|
||||
return (res) ? 'test' : 'live'
|
||||
}
|
||||
},
|
||||
// 获取当前链接需要配置的代理字符串
|
||||
locateJudge: function () {
|
||||
if (window.location.href) {
|
||||
let _url = window.location.href
|
||||
let res = _url.match(/test|localhost/)
|
||||
return (res) ? '/api' : ''
|
||||
// if (res) {
|
||||
// return '/api';
|
||||
// } else {
|
||||
// return '';
|
||||
// }
|
||||
}
|
||||
},
|
||||
// 获取当前链接参数
|
||||
getQueryString: function () {
|
||||
let _url = location.search
|
||||
// eslint-disable-next-line no-new-object
|
||||
let theRequest = new Object()
|
||||
if (_url.indexOf('?') !== -1) {
|
||||
let str = _url.substr(1)
|
||||
let strs = str.split('&')
|
||||
for (let i in strs) {
|
||||
theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1])
|
||||
}
|
||||
}
|
||||
return theRequest
|
||||
},
|
||||
// 客户端方法
|
||||
tools: {
|
||||
cookieUtils: {
|
||||
set: function (key, val, time) {
|
||||
let date = new Date()
|
||||
let expiresDays = time
|
||||
date.setTime(date.getTime() + expiresDays * 24 * 3600 * 1000)
|
||||
document.cookie = key + '=' + val + ';expires=' + date.toGMTString()
|
||||
},
|
||||
|
||||
get: function (key) {
|
||||
let getCookie = document.cookie.replace(/[ ]/g, '')
|
||||
let arrCookie = getCookie.split(';')
|
||||
let val
|
||||
for (let i = 0; i < arrCookie.length; i++) {
|
||||
let arr = arrCookie[i].split('=')
|
||||
if (key === arr[0]) {
|
||||
val = arr[1]
|
||||
break
|
||||
}
|
||||
}
|
||||
return val
|
||||
},
|
||||
|
||||
delete: function (key) {
|
||||
let date = new Date()
|
||||
date.setTime(date.getTime() - 10000)
|
||||
document.cookie = key + '+v; expires =' + date.toGMTString()
|
||||
}
|
||||
},
|
||||
|
||||
routerTypeContent: {
|
||||
ROOM_PAGE: 1, // 跳转房间页 传参(routerType): uid
|
||||
H5_PAGE: 2, // 跳转h5
|
||||
PURSE_PAGE: 3, // 跳转钱包页
|
||||
RED_PAGE: 4, // xcRedColor
|
||||
RECHARGE_PAGE: 5, // 跳转充值页
|
||||
PERSON_PAGE: 6, // 跳转个人页 传参(routerType) : uid
|
||||
CAR_PAGE: 7, // 跳转座驾 传参(routerType) : 0 (装扮商城) 或者 1 (车库)
|
||||
HEADWEAR_PAGE: 8, // 跳转到头饰 传参(routerType) : 0 (装扮商城) 或者 1 (头饰库)
|
||||
SYSTEMMESSAGE_PAGE: 9, // 系统消息
|
||||
FAMILY_PAGE: 10, // 跳转到家族页面
|
||||
GROUP_PAGE: 11, // 跳转到群组
|
||||
BACKGROUND_PAGE: 12, // 跳转到背景设置 传参(routerType): 0 (装扮商城) 或者 1 (背景库)
|
||||
NEW_USER_PAGE: 13, // 新秀玩友
|
||||
INVITE_FRIEND_PAGE: 14, // 邀请好友
|
||||
PUBLICCHAT_PAGE: 15, // 公聊大厅
|
||||
XCZ_ACCOUNT_PAGE: 16, // 绑定 xcz 账号
|
||||
PHONE_NUM_PAGE: 17, // 绑定手机号
|
||||
PAY_PWD_PAGE: 18, // 设置支付密码
|
||||
WITHDRAW_RECORD_PAGE: 19, // 提现记录页面
|
||||
RECOMMEND_CARD_PAGE: 20, // 跳转到推荐卡仓库
|
||||
TEACHER_PUPIL_PAGE: 28 // 跳转到师徒页面入口
|
||||
},
|
||||
|
||||
nativeUtils: {
|
||||
jumpAppointPage: function (type, val) {
|
||||
// routerType 跳转名称
|
||||
// routerVal 跳转需要传的参数
|
||||
|
||||
let browser = commonJs.checkVersion()
|
||||
let jumpObj = {}
|
||||
jumpObj.routerType = commonJs.tools.routerTypeContent[type]
|
||||
if (val) jumpObj.routerVal = val
|
||||
|
||||
if (browser.app) {
|
||||
if (browser.ios) {
|
||||
if (type.indexOf('_') > -1) {
|
||||
window.webkit.messageHandlers.jumpAppointPage.postMessage(jumpObj)
|
||||
} else {
|
||||
if (val) {
|
||||
window.webkit.messageHandlers.type.postMessage(val)
|
||||
} else {
|
||||
window.webkit.messageHandlers.type.postMessage(null)
|
||||
}
|
||||
}
|
||||
} else if (browser.android) {
|
||||
// eslint-disable-next-line no-undef
|
||||
if (androidJsObj && typeof androidJsObj === 'object') {
|
||||
if (type.indexOf('_') > -1) {
|
||||
window.androidJsObj.jumpAppointPage(JSON.stringify(jumpObj))
|
||||
} else {
|
||||
window.androidJsObj.jumpAppointPage(type)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getUid: function () {
|
||||
let browser = commonJs.checkVersion()
|
||||
let val
|
||||
if (browser.app) {
|
||||
if (browser.ios) {
|
||||
val = commonJs.tools.cookieUtils.get('uid')
|
||||
} else if (browser.android) {
|
||||
// eslint-disable-next-line no-undef
|
||||
if (androidJsObj && typeof androidJsObj === 'object') {
|
||||
val = parseInt(window.androidJsObj.getUid())
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let locate = commonJs.getQueryString()
|
||||
if (!locate.uid && !locate.shareUid) {
|
||||
val = 935006
|
||||
} else {
|
||||
if (locate.shareUid) {
|
||||
val = locate.shareUid
|
||||
} else {
|
||||
val = locate.uid
|
||||
}
|
||||
}
|
||||
}
|
||||
return val
|
||||
},
|
||||
|
||||
getTicket: function () {
|
||||
let browser = commonJs.checkVersion()
|
||||
let val
|
||||
if (browser.app) {
|
||||
if (browser.ios) {
|
||||
val = window.webkit.messageHandlers.getTicket.postMessage(null)
|
||||
} else if (browser.android) {
|
||||
// eslint-disable-next-line no-undef
|
||||
if (androidJsObj && typeof androidJsObj === 'object') {
|
||||
val = window.androidJsObj.getTicket()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val = ''
|
||||
}
|
||||
return val
|
||||
},
|
||||
|
||||
getRoomUid: function () {
|
||||
let browser = commonJs.checkVersion()
|
||||
let val
|
||||
if (browser.app) {
|
||||
if (browser.ios) {
|
||||
val = window.webkit.messageHandlers.GetRoomUid.postMessage(null)
|
||||
} else if (browser.android) {
|
||||
// eslint-disable-next-line no-undef
|
||||
if (androidJsObj && typeof androidJsObj === 'object') {
|
||||
val = window.androidJsObj.getRoomUid()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val = 'app外'
|
||||
}
|
||||
return val
|
||||
},
|
||||
|
||||
getDeviceId: function () {
|
||||
let browser = commonJs.checkVersion()
|
||||
let val
|
||||
if (browser.app) {
|
||||
if (browser.ios) {
|
||||
val = window.webkit.messageHandlers.getDeviceId.postMessage(null)
|
||||
} else if (browser.android) {
|
||||
// eslint-disable-next-line no-undef
|
||||
if (androidJsObj && typeof androidJsObj === 'object') {
|
||||
val = window.androidJsObj.getDeviceId()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
val = 'app外'
|
||||
}
|
||||
return val
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 图片预加载
|
||||
preloadImage: function (obj) {
|
||||
let loadLength = 0
|
||||
let newImages = []
|
||||
for (let i = 0; i < obj.imageArr.length; i++) {
|
||||
newImages[i] = new Image()
|
||||
newImages[i].src = obj.imageArr[i]
|
||||
newImages[i].onload = newImages[i].onerror = () => {
|
||||
loadLength++
|
||||
typeof obj.preloadPreFunc === 'function' && obj.preloadPreFunc(loadLength)
|
||||
// eslint-disable-next-line eqeqeq
|
||||
if (loadLength == obj.imageArr.length) {
|
||||
typeof obj.doneFunc === 'function' && obj.doneFunc()
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// 调用客户端分享方法
|
||||
initNav: function (obj) {
|
||||
// console.log('查看是否调用initNav:', Object.keys(obj).length)
|
||||
if (Object.keys(obj).length === 0) {
|
||||
// eslint-disable-next-line no-useless-return
|
||||
return
|
||||
}
|
||||
let browser = commonJs.checkVersion()
|
||||
if (browser.app) {
|
||||
if (browser.ios) {
|
||||
window.webkit.messageHandlers.initNav.postMessage(obj)
|
||||
} else if (browser.android) {
|
||||
let json = JSON.stringify(obj)
|
||||
window.androidJsObj.initNav(json)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// module.exports = commonJs
|
||||
export default commonJs
|
43
view/molistar/vue-project/rechargeAgent/src/utils/des.js
Normal file
43
view/molistar/vue-project/rechargeAgent/src/utils/des.js
Normal file
@@ -0,0 +1,43 @@
|
||||
import cryptoJs from 'crypto-js';
|
||||
|
||||
//随机生成指定数量的16进制key
|
||||
export const generatekey = (num) => {
|
||||
let library = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
let key = "";
|
||||
for (var i = 0; i < num; i++) {
|
||||
let randomPoz = Math.floor(Math.random() * library.length);
|
||||
key += library.substring(randomPoz, randomPoz + 1);
|
||||
}
|
||||
return '1ea53d260ecf11e7b56e00163e046a26';
|
||||
}
|
||||
|
||||
//DES加密
|
||||
export const encryptDes = (message, key) => {
|
||||
// var keyHex = cryptoJs.enc.Utf8.parse(key)
|
||||
// var option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 }
|
||||
// var encrypted = cryptoJs.DES.encrypt(message, keyHex, option)
|
||||
// return encrypted.ciphertext.toString()
|
||||
var keyHex = cryptoJs.enc.Utf8.parse(key);
|
||||
var encrypted = cryptoJs.DES.encrypt(message, keyHex, {
|
||||
mode: cryptoJs.mode.ECB,
|
||||
padding: cryptoJs.pad.Pkcs7
|
||||
});
|
||||
return encrypted.toString();
|
||||
}
|
||||
|
||||
|
||||
//DES解密
|
||||
export const decryptDes = (message, key) => {
|
||||
var keyHex = cryptoJs.enc.Utf8.parse(key)
|
||||
var decrypted = cryptoJs.DES.decrypt(
|
||||
{
|
||||
ciphertext: cryptoJs.enc.Hex.parse(message)
|
||||
},
|
||||
keyHex,
|
||||
{
|
||||
mode: cryptoJs.mode.ECB,
|
||||
padding: cryptoJs.pad.Pkcs7
|
||||
}
|
||||
)
|
||||
return decrypted.toString(cryptoJs.enc.Utf8)
|
||||
}
|
@@ -0,0 +1,17 @@
|
||||
export const formatDate = (value) => {
|
||||
let date = new Date(value);
|
||||
let y = date.getFullYear();
|
||||
let MM = date.getMonth() + 1;
|
||||
MM = MM < 10 ? ('0' + MM) : MM;
|
||||
let d = date.getDate();
|
||||
d = d < 10 ? ('0' + d) : d;
|
||||
let h = date.getHours();
|
||||
h = h < 10 ? ('0' + h) : h;
|
||||
let m = date.getMinutes();
|
||||
m = m < 10 ? ('0' + m) : m;
|
||||
let s = date.getSeconds();
|
||||
s = s < 10 ? ('0' + s) : s;
|
||||
return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
|
||||
// return MM + '-' + d + ' ' + h + ':' + m + ':' + s;
|
||||
// return MM + '-' + d + ' ' + h + ':' + m;
|
||||
}
|
62
view/molistar/vue-project/rechargeAgent/src/utils/getUid.js
Normal file
62
view/molistar/vue-project/rechargeAgent/src/utils/getUid.js
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
import { checkVersion } from '@/utils/browser.js'
|
||||
window.info = {}
|
||||
window.getMessage = (key, value) => {
|
||||
// value = parseInt(value);
|
||||
info[key] = value;
|
||||
|
||||
}
|
||||
export default function getId() {
|
||||
let browser = checkVersion()
|
||||
if (browser.app) {
|
||||
window.sessionStorage.clear();
|
||||
if (browser.ios) {
|
||||
var allcookies = document.cookie;
|
||||
var $uid = allcookies.match(/\d+/);
|
||||
info.uid = $uid[0];
|
||||
window.webkit.messageHandlers.getTicket.postMessage(null);
|
||||
window.webkit.messageHandlers.getDeviceId.postMessage(null);
|
||||
window.webkit.messageHandlers.getDeviceInfo.postMessage(null);
|
||||
// console.log("ios");
|
||||
// console.log(info.ticket);
|
||||
} else if (browser.android) {
|
||||
if (androidJsObj && typeof androidJsObj === 'object') {
|
||||
info.uid = parseInt(window.androidJsObj.getUid());
|
||||
info.ticket = window.androidJsObj.getTicket();
|
||||
info.deviceId = window.androidJsObj.getDeviceId();
|
||||
info.deviceInfo = JSON.parse(window.androidJsObj.getDeviceInfo());
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
// info.uid = sessionStorage.getItem("uid") ? sessionStorage.getItem("uid") : '';
|
||||
// info.ticket = sessionStorage.getItem("ticket") ? sessionStorage.getItem("ticket") : '';
|
||||
// 获取地址栏参数
|
||||
function getQueryString() {
|
||||
var _url = location.search;
|
||||
var theRequest = new Object();
|
||||
if (_url.indexOf('?') != -1) {
|
||||
var str = _url.substr(1);
|
||||
strs = str.split('&');
|
||||
for (var i in strs) {
|
||||
theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]);
|
||||
}
|
||||
}
|
||||
return theRequest;
|
||||
}
|
||||
info.uid = '0',
|
||||
info.ticket = '0',
|
||||
info.deviceInfo = {
|
||||
app: 'molistar',
|
||||
appVersion: '0.0.0',
|
||||
os: '0.0.0',
|
||||
osVersion: '0.0.0',
|
||||
channel: 'browser',
|
||||
client: 'h5',
|
||||
'Accept-Language': getQueryString().lang ? getQueryString().lang : 'en'
|
||||
}
|
||||
}
|
||||
}
|
||||
// export default function getJurisdiction() {
|
||||
|
||||
// }
|
@@ -0,0 +1,27 @@
|
||||
/* jslint esversion: 6 */
|
||||
import JsEncrypt from 'jsencrypt';
|
||||
|
||||
export const jes = (obj) => {
|
||||
const env = process.env.NODE_ENV;
|
||||
console.log(env)
|
||||
let code = '';
|
||||
// if (env !== 'production') {
|
||||
if (env === 'development') {
|
||||
// code = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZ4GMf5m94duX87Qoy6ynIwgxNUaG9uWP0l3eBFKp4kwWEckAfJajm5s0WNgCQ9BJBpCiHyG8CLF+hAHGb0fElmffa2R4udWhM0UIAyMqWFblaeSSZPBtHE62OWSDdszYsTO4S6YD6wUl9wIrzGEPIAekIWOKuYEntmrRn3w1zbwIDAQAB';
|
||||
code = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUC2ego+6rvaaA2g6M0iGgyO1FpdGPQd/7r3X+eFbwip7sBorD3NEATDd0QRK43/zNJAAMfjE7mIPCwZOBDOgFNb8/H93pFXDQ5Tv6lRQd9PGcFHQOz3pr1xgO7wSbUjbwXusmgZgo5SemTDUnlIQJsmzCzJGpct91PZNRPzYK5QIDAQAB';
|
||||
} else {
|
||||
// code = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUC2ego+6rvaaA2g6M0iGgyO1FpdGPQd/7r3X+eFbwip7sBorD3NEATDd0QRK43/zNJAAMfjE7mIPCwZOBDOgFNb8/H93pFXDQ5Tv6lRQd9PGcFHQOz3pr1xgO7wSbUjbwXusmgZgo5SemTDUnlIQJsmzCzJGpct91PZNRPzYK5QIDAQAB';
|
||||
code = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUC2ego+6rvaaA2g6M0iGgyO1FpdGPQd/7r3X+eFbwip7sBorD3NEATDd0QRK43/zNJAAMfjE7mIPCwZOBDOgFNb8/H93pFXDQ5Tv6lRQd9PGcFHQOz3pr1xgO7wSbUjbwXusmgZgo5SemTDUnlIQJsmzCzJGpct91PZNRPzYK5QIDAQAB';
|
||||
// code = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCh5Nk2GLiyQFMIU+h3OEA4UeFbu3dCH5sjd/sLTxxvwjXq7JLqJbt2rCIdzpAXOi4jL+FRGQnHaxUlHUBZsojnCcHvhrz2knV6rXNogt0emL7f7ZMRo8IsQGV8mlKIC9xLnlOQQdRNUssmrROrCG99wpTRRNZjOmLvkcoXdeuaCQIDAQAB'
|
||||
}
|
||||
console.log(env);
|
||||
// debugger;
|
||||
let encrypt = new JsEncrypt();
|
||||
encrypt.setPublicKey(
|
||||
`-----BEGIN PUBLIC KEY -----
|
||||
${code}
|
||||
-----END PUBLIC KEY-----`
|
||||
);
|
||||
// encrypt.setPublicKey(code);
|
||||
return encrypt.encrypt(obj);
|
||||
}
|
243
view/molistar/vue-project/rechargeAgent/src/utils/md5.js
Normal file
243
view/molistar/vue-project/rechargeAgent/src/utils/md5.js
Normal file
@@ -0,0 +1,243 @@
|
||||
/*
|
||||
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
|
||||
* Digest Algorithm, as defined in RFC 1321.
|
||||
* Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
|
||||
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
|
||||
* Distributed under the BSD License
|
||||
* See http://pajhome.org.uk/crypt/md5 for more info.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Configurable variables. You may need to tweak these to be compatible with
|
||||
* the server-side, but the defaults work in most cases.
|
||||
*/
|
||||
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
|
||||
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
|
||||
var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
|
||||
|
||||
/*
|
||||
* These are the functions you'll usually want to call
|
||||
* They take string arguments and return either hex or base-64 encoded strings
|
||||
*/
|
||||
function hex_md5(s) { return binl2hex(core_md5(str2binl(s), s.length * chrsz)); }
|
||||
function b64_md5(s) { return binl2b64(core_md5(str2binl(s), s.length * chrsz)); }
|
||||
function str_md5(s) { return binl2str(core_md5(str2binl(s), s.length * chrsz)); }
|
||||
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
|
||||
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
|
||||
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
|
||||
|
||||
/*
|
||||
* Perform a simple self-test to see if the VM is working
|
||||
*/
|
||||
function md5_vm_test() {
|
||||
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the MD5 of an array of little-endian words, and a bit length
|
||||
*/
|
||||
function core_md5(x, len) {
|
||||
/* append padding */
|
||||
x[len >> 5] |= 0x80 << ((len) % 32);
|
||||
x[(((len + 64) >>> 9) << 4) + 14] = len;
|
||||
|
||||
var a = 1732584193;
|
||||
var b = -271733879;
|
||||
var c = -1732584194;
|
||||
var d = 271733878;
|
||||
|
||||
for (var i = 0; i < x.length; i += 16) {
|
||||
var olda = a;
|
||||
var oldb = b;
|
||||
var oldc = c;
|
||||
var oldd = d;
|
||||
|
||||
a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
|
||||
d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
|
||||
c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
|
||||
b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
|
||||
a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
|
||||
d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
|
||||
c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
|
||||
b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
|
||||
a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
|
||||
d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
|
||||
c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
|
||||
b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
|
||||
a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
|
||||
d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
|
||||
c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
|
||||
b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
|
||||
|
||||
a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
|
||||
d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
|
||||
c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
|
||||
b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
|
||||
a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
|
||||
d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
|
||||
c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
|
||||
b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
|
||||
a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
|
||||
d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
|
||||
c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
|
||||
b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
|
||||
a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
|
||||
d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
|
||||
c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
|
||||
b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
|
||||
|
||||
a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
|
||||
d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
|
||||
c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
|
||||
b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
|
||||
a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
|
||||
d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
|
||||
c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
|
||||
b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
|
||||
a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
|
||||
d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
|
||||
c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
|
||||
b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
|
||||
a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
|
||||
d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
|
||||
c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
|
||||
b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
|
||||
|
||||
a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
|
||||
d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
|
||||
c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
|
||||
b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
|
||||
a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
|
||||
d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
|
||||
c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
|
||||
b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
|
||||
a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
|
||||
d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
|
||||
c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
|
||||
b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
|
||||
a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
|
||||
d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
|
||||
c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
|
||||
b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
|
||||
|
||||
a = safe_add(a, olda);
|
||||
b = safe_add(b, oldb);
|
||||
c = safe_add(c, oldc);
|
||||
d = safe_add(d, oldd);
|
||||
}
|
||||
return Array(a, b, c, d);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* These functions implement the four basic operations the algorithm uses.
|
||||
*/
|
||||
function md5_cmn(q, a, b, x, s, t) {
|
||||
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
|
||||
}
|
||||
function md5_ff(a, b, c, d, x, s, t) {
|
||||
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
|
||||
}
|
||||
function md5_gg(a, b, c, d, x, s, t) {
|
||||
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
|
||||
}
|
||||
function md5_hh(a, b, c, d, x, s, t) {
|
||||
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
|
||||
}
|
||||
function md5_ii(a, b, c, d, x, s, t) {
|
||||
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
|
||||
}
|
||||
|
||||
/*
|
||||
* Calculate the HMAC-MD5, of a key and some data
|
||||
*/
|
||||
function core_hmac_md5(key, data) {
|
||||
var bkey = str2binl(key);
|
||||
if (bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
|
||||
|
||||
var ipad = Array(16), opad = Array(16);
|
||||
for (var i = 0; i < 16; i++) {
|
||||
ipad[i] = bkey[i] ^ 0x36363636;
|
||||
opad[i] = bkey[i] ^ 0x5C5C5C5C;
|
||||
}
|
||||
|
||||
var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
|
||||
return core_md5(opad.concat(hash), 512 + 128);
|
||||
}
|
||||
|
||||
/*
|
||||
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
|
||||
* to work around bugs in some JS interpreters.
|
||||
*/
|
||||
function safe_add(x, y) {
|
||||
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
|
||||
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
|
||||
return (msw << 16) | (lsw & 0xFFFF);
|
||||
}
|
||||
|
||||
/*
|
||||
* Bitwise rotate a 32-bit number to the left.
|
||||
*/
|
||||
function bit_rol(num, cnt) {
|
||||
return (num << cnt) | (num >>> (32 - cnt));
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a string to an array of little-endian words
|
||||
* If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
|
||||
*/
|
||||
function str2binl(str) {
|
||||
var bin = Array();
|
||||
var mask = (1 << chrsz) - 1;
|
||||
for (var i = 0; i < str.length * chrsz; i += chrsz)
|
||||
bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);
|
||||
return bin;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert an array of little-endian words to a string
|
||||
*/
|
||||
function binl2str(bin) {
|
||||
var str = "";
|
||||
var mask = (1 << chrsz) - 1;
|
||||
for (var i = 0; i < bin.length * 32; i += chrsz)
|
||||
str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);
|
||||
return str;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert an array of little-endian words to a hex string.
|
||||
*/
|
||||
function binl2hex(binarray) {
|
||||
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
|
||||
var str = "";
|
||||
for (var i = 0; i < binarray.length * 4; i++) {
|
||||
str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) +
|
||||
hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert an array of little-endian words to a base-64 string
|
||||
*/
|
||||
function binl2b64(binarray) {
|
||||
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
var str = "";
|
||||
for (var i = 0; i < binarray.length * 4; i += 3) {
|
||||
var triplet = (((binarray[i >> 2] >> 8 * (i % 4)) & 0xFF) << 16)
|
||||
| (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 0xFF) << 8)
|
||||
| ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 0xFF);
|
||||
for (var j = 0; j < 4; j++) {
|
||||
if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
|
||||
else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
export {
|
||||
hex_md5,
|
||||
b64_md5,
|
||||
}
|
19
view/molistar/vue-project/rechargeAgent/src/utils/relDate.js
Normal file
19
view/molistar/vue-project/rechargeAgent/src/utils/relDate.js
Normal file
@@ -0,0 +1,19 @@
|
||||
export const formatDate = (value, think) => {
|
||||
let date = new Date(value);
|
||||
let y = date.getFullYear();
|
||||
let MM = date.getMonth() + 1;
|
||||
MM = MM < 10 ? "0" + MM : MM;
|
||||
let d = date.getDate();
|
||||
d = d < 10 ? "0" + d : d;
|
||||
let h = date.getHours();
|
||||
h = h < 10 ? "0" + h : h;
|
||||
let m = date.getMinutes();
|
||||
m = m < 10 ? "0" + m : m;
|
||||
let s = date.getSeconds();
|
||||
s = s < 10 ? "0" + s : s;
|
||||
let time = !think
|
||||
? y + "-" + MM + "-" + d
|
||||
: y + "-" + MM + "-" + d + " " + h + ":" + m;
|
||||
return time;
|
||||
// return MM + "-" + d + " " + h + ":" + m;
|
||||
}
|
106
view/molistar/vue-project/rechargeAgent/src/utils/request.js
Normal file
106
view/molistar/vue-project/rechargeAgent/src/utils/request.js
Normal file
@@ -0,0 +1,106 @@
|
||||
import axios from 'axios'
|
||||
import { Toast } from 'vant';
|
||||
import router from '@/router'
|
||||
import { EnvCheck, checkVersion } from '@/utils/browser.js'
|
||||
let baseURL;
|
||||
if (EnvCheck() === 'test') {
|
||||
// console.log('test');
|
||||
// baseURL = 'http://120.79.211.243'
|
||||
baseURL = 'http://beta.api.molistar.xyz'
|
||||
// 正式环境
|
||||
} else {
|
||||
baseURL = 'https://api.molistar.xyz'
|
||||
}
|
||||
// baseURL = ''
|
||||
const service = axios.create({
|
||||
// baseURL: process.env.VUE_APP_BASE_API,
|
||||
baseURL,
|
||||
// baseURL: 'http://www.if66.cn/',
|
||||
// baseURL: '',
|
||||
'timeout': 10000,
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
})
|
||||
|
||||
service.interceptors.request.use(config => {
|
||||
if (router.apps[0]._route.name === 'Login') {
|
||||
config.headers = {}
|
||||
} else if (!checkVersion().app) {//false
|
||||
if (router.apps[0]._route.name === 'WithDrawInfoBind' && config.url == `/sms/verify` || config.url == `/sms/getCode`) {
|
||||
config.headers = {
|
||||
'h5_token': window.sessionStorage.getItem('ticket'),
|
||||
// 'pub_uid': window.sessionStorage.getItem('uid'),
|
||||
'client': 'h5',
|
||||
'Accept-language': info.deviceInfo['Accept-Language'],
|
||||
}
|
||||
// } if(router.apps[0]._route.name === 'GoldLog'){
|
||||
// config.headers = {
|
||||
// 'h5_token': window.sessionStorage.getItem('ticket'),
|
||||
// 'pub_uid': window.sessionStorage.getItem('uid'),
|
||||
// 'client': 'h5',
|
||||
// }
|
||||
} else {
|
||||
config.headers = {
|
||||
'h5_token': window.sessionStorage.getItem('ticket'),
|
||||
'pub_uid': window.sessionStorage.getItem('uid'),
|
||||
'client': 'h5',
|
||||
'Accept-language': info.deviceInfo['Accept-Language'],
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
if (router.apps[0]._route.name === 'WithDrawInfoBind' && config.url == `/sms/verify` || config.url == `/sms/getCode`) {
|
||||
config.headers = {
|
||||
'pub_ticket': window.sessionStorage.getItem('ticket'),
|
||||
// 'pub_uid': window.sessionStorage.getItem('uid'),
|
||||
'client': 'h5',
|
||||
'Accept-language': info.deviceInfo['Accept-Language'],
|
||||
}
|
||||
} else {
|
||||
config.headers = {
|
||||
'pub_ticket': window.sessionStorage.getItem('ticket'),
|
||||
'pub_uid': window.sessionStorage.getItem('uid'),
|
||||
'client': 'h5',
|
||||
'Accept-language': info.deviceInfo['Accept-Language'],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// console.log(window.sessionStorage.getItem('ticket'))
|
||||
// console.log(config)
|
||||
return config;
|
||||
},
|
||||
error => {
|
||||
console.log('网络请求出错了', error);
|
||||
Promise.reject(error);
|
||||
}
|
||||
)
|
||||
service.interceptors.response.use(response => {
|
||||
const res = response
|
||||
if (res.data.code !== 200) {
|
||||
if (res.data.code === 10111) {
|
||||
return Promise.reject(res.data)
|
||||
} else if (res.data.code === 25006) {
|
||||
return Promise.reject(res.data)
|
||||
} else if (res.data.code === 503) {
|
||||
return Promise.reject(res.data)
|
||||
} else {
|
||||
Toast(res.data.message || 'Error')
|
||||
return Promise.reject(new Error(res.data.message || 'Error'))
|
||||
}
|
||||
} else {
|
||||
return Promise.resolve(res);
|
||||
}
|
||||
},
|
||||
error => {
|
||||
if (!checkVersion().app && error.response.status === 401) {
|
||||
window.localStorage.clear();
|
||||
Toast('登录失效,请重新登录')
|
||||
// router.replace({ path: '/Login' })
|
||||
return
|
||||
}
|
||||
Toast(`HTTP ${error.response.status}` || 'Error')
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
export default service
|
@@ -0,0 +1,17 @@
|
||||
<template>
|
||||
<div>
|
||||
666
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data(){
|
||||
return{}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
Reference in New Issue
Block a user