作者 lihongjuan

1

正在显示 201 个修改的文件 包含 7369 行增加0 行删除
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-vue-jsx", "transform-runtime"],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
}
}
}
... ...
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
... ...
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
/test/unit/coverage/
/test/e2e/reports/
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
... ...
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
// to edit target browsers: use "browserslist" field in package.json
"autoprefixer": {}
}
}
... ...
# tangyuan
> 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
# run unit tests
npm run unit
# run e2e tests
npm run e2e
# run all tests
npm test
```
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).
... ...
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, (err, stats) => {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
chunks: false,
chunkModules: false
}) + '\n\n')
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' Build complete.\n'))
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
})
})
... ...
'use strict'
const chalk = require('chalk')
const semver = require('semver')
const packageConfig = require('../package.json')
const shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
const versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function () {
const warnings = []
for (let i = 0; i < versionRequirements.length; i++) {
const mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(mod.name + ': ' +
chalk.red(mod.currentVersion) + ' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (let i = 0; i < warnings.length; i++) {
const warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}
... ...
'use strict'
const path = require('path')
const config = require('../config')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const packageConfig = require('../package.json')
exports.assetsPath = function (_path) {
const assetsSubDirectory = process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
const cssLoader = {
loader: 'css-loader',
options: {
sourceMap: options.sourceMap
}
}
const postcssLoader = {
loader: 'postcss-loader',
options: {
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
const output = []
const loaders = exports.cssLoaders(options)
for (const extension in loaders) {
const loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
exports.createNotifierCallback = () => {
const notifier = require('node-notifier')
return (severity, errors) => {
if (severity !== 'error') return
const error = errors[0]
const filename = error.file && error.file.split('!').pop()
notifier.notify({
title: packageConfig.name,
message: severity + ': ' + error.name,
subtitle: filename || '',
icon: path.join(__dirname, 'logo.png')
})
}
}
... ...
'use strict'
const utils = require('./utils')
const config = require('../config')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap
module.exports = {
loaders: utils.cssLoaders({
sourceMap: sourceMapEnabled,
extract: isProduction
}),
cssSourceMap: sourceMapEnabled,
cacheBusting: config.dev.cacheBusting,
transformToRequire: {
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: 'xlink:href'
}
}
... ...
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}
... ...
'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: {
rewrites: [
{ from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
],
},
hot: true,
contentBase: false, // since we use CopyWebpackPlugin.
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll,
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
}))
resolve(devWebpackConfig)
}
})
})
... ...
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const env = process.env.NODE_ENV === 'testing'
? require('../config/test.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: process.env.NODE_ENV === 'testing'
? 'index.html'
: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.HashedModuleIdsPlugin(),
// enable scope hoisting
new webpack.optimize.ModuleConcatenationPlugin(),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks (module) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity
}),
// This instance extracts shared chunks from code splitted chunks and bundles them
// in a separate chunk, similar to the vendor chunk
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'vendor-async',
children: true,
minChunks: 3
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
... ...
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
... ...
"use strict";
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require("path");
module.exports = {
dev: {
// Paths
assetsSubDirectory: "static",
assetsPublicPath: "/",
proxyTable: {
"/api": {
target: "http://tangyuanji.t.brotop.cn", // 需要跨域请求的地址或者IP
changeOrigin: true, //是否跨域
pathRewrite: {
"^api": "/api" //需要rewrite重写的
}
}
},
// Various Dev Server settings
host: "localhost", // can be overwritten by process.env.HOST
port: 8081, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
/**
* Source Maps
*/
// https://webpack.js.org/configuration/devtool/#development
devtool: "cheap-module-eval-source-map",
// If you have problems debugging vue-files in devtools,
// set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true,
cssSourceMap: true
},
build: {
// Template for index.html
index: path.resolve(__dirname, "../dist/index.html"),
// Paths
assetsRoot: path.resolve(__dirname, "../dist"),
assetsSubDirectory: "static",
assetsPublicPath: "/",
/**
* Source Maps
*/
productionSourceMap: true,
// https://webpack.js.org/configuration/devtool/#production
devtool: "#source-map",
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ["js", "css"],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}
};
\ No newline at end of file
... ...
'use strict'
module.exports = {
NODE_ENV: '"production"'
}
... ...
'use strict'
const merge = require('webpack-merge')
const devEnv = require('./dev.env')
module.exports = merge(devEnv, {
NODE_ENV: '"testing"'
})
... ...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<title>tangyuan</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
<script>
// 尺寸计算
function setFontSize() {
document.documentElement.style.fontSize = document.documentElement.clientWidth / 7.5 + 'px';
};
window.addEventListener('resize', function() {
setFontSize();
}, false);
setFontSize();
</script>
</html>
\ No newline at end of file
... ...
此 diff 太大无法显示。
{
"name": "tangyuan",
"version": "1.0.0",
"description": "A Vue.js project",
"author": "lihongjuan <18848113498@163.com>",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"unit": "jest --config test/unit/jest.conf.js --coverage",
"e2e": "node test/e2e/runner.js",
"test": "npm run unit && npm run e2e",
"build": "node build/build.js"
},
"dependencies": {
"axios": "^0.19.2",
"vant": "^2.9.2",
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"weixin-js-sdk": "^1.6.0"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-jest": "^21.0.2",
"babel-loader": "^7.1.1",
"babel-plugin-dynamic-import-node": "^1.2.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.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",
"babel-register": "^6.22.0",
"chalk": "^2.0.1",
"chromedriver": "^2.27.2",
"copy-webpack-plugin": "^4.0.1",
"cross-spawn": "^5.0.1",
"css-loader": "^0.28.0",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"jest": "^22.0.4",
"jest-serializer-vue": "^0.3.0",
"nightwatch": "^0.9.12",
"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",
"selenium-server": "^3.0.1",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-jest": "^1.0.2",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
... ...
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
.van-list__finished-text {
width: 100% !important;
}
.van-list__loading {
width: 100% !important;
}
body,
html {
overflow-x: hidden;
}
#app {
width: 100%;
height: 100%;
}
.nodata {
color: #999;
font-size: 0.28rem;
text-align: center;
margin: 1.5rem auto 0;
}
* {
margin: 0;
padding: 0;
}
body,
html {
height: 100%;
padding: 0;
margin: 0;
background: #f9f9f9;
}
img {
width: 100%;
height: 100%;
}
.yourow {
width: 0.21rem;
height: 0.21rem;
font-size: 0;
}
/* 底部按钮 */
.kaishilu {
width: 100%;
height: 0.88rem;
background: linear-gradient(135deg, #87bd87 1%, #4a834a);
border-radius: 0.04rem;
color: #fff;
font-size: 0.32rem;
text-align: center;
line-height: 0.88rem;
position: fixed;
bottom: 0;
left: 0;
}
textarea {
border: none;
outline: none;
width: 100%;
height: 100%;
background: transparent;
}
/* 搜索框
*/
.searchhead {
width: 100%;
padding: 0.2rem 0.32rem;
box-sizing: border-box;
background: #fff;
}
.searchimg {
width: 0.3rem;
height: 0.28rem;
font-size: 0;
margin-right: 0.11rem;
}
.searchbox {
width: 6.96rem;
height: 0.68rem;
background: #f7f8fa;
border-radius: 0.04rem;
margin: 0 auto;
padding: 0.16rem;
box-sizing: border-box;
}
::-webkit-input-placeholder {
color: #b5bfba;
}
.searchtext {
height: 0.68rem;
color: #b5bfba;
font-size: 0.28rem;
}
.flex {
display: flex;
}
.flexone {
display: flex;
align-items: center;
}
.flextwo {
display: flex;
align-items: center;
justify-content: space-between;
}
.flexthree {
display: flex;
align-items: center;
justify-content: center;
}
.flexfour {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.flexfive {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
}
.flexsix {
display: flex;
align-items: center;
justify-content: space-around;
}
.flexseven {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.register {
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 5;
}
input {
width: 100%;
background: transparent;
border: none;
outline: none;
}
/* 消息列表 */
.send {
width: 1.14rem;
height: 0.6rem;
background: #599158;
border-radius: 0.04rem;
color: #fff;
font-size: 0.32rem;
text-align: center;
line-height: 0.6rem;
margin-left: 0.16rem;
}
.messagelist {
padding: 0.54rem 0.32rem;
box-sizing: border-box;
margin-bottom: 1.2rem;
margin-top: 0.6rem;
margin-bottom: 1.2rem;
}
.messageitemleft {
width: 1rem;
height: 1rem;
font-size: 0;
border-radius: 50%;
flex: 0 0 auto;
}
.messageitemleft img {
border-radius: 50%;
}
.messageitemleftk {
width: 1rem;
height: 1rem;
font-size: 0;
border-radius: 50%;
margin-left: 0.35rem;
}
.messageitemleftk img {
border-radius: 50%;
}
.messagecontent {
padding: 0.22rem 0.4rem;
box-sizing: border-box;
background: #ffffff;
border-radius: 0 0.24rem 0.24rem 0.24rem;
box-shadow: 0 0.06rem 0.12rem 0 rgba(0, 0, 0, 0.08);
color: #06121f;
font-size: 0.32rem;
}
.messagecontentk {
padding: 0.22rem 0.4rem;
background: #ffffff;
border-radius: 0.24rem 0 0.24rem 0.24rem;
box-shadow: 0 0.06rem 0.12rem 0 rgba(0, 0, 0, 0.08);
color: #06121f;
font-size: 0.32rem;
}
.messageitemright {
margin-left: 0.274rem;
}
.messagedate {
color: #bdc4ce;
font-size: 0.22rem;
margin-top: 0.1rem;
text-align: right;
}
.messageitem {
margin-bottom: 0.74rem;
}
.messageitemk {
justify-content: flex-end;
}
.messagebot {
width: 100%;
height: 1rem;
background: #f9f9f9;
padding: 0.16rem 0.32rem;
box-sizing: border-box;
position: fixed;
left: 0;
bottom: 0;
}
.writermessage {
width: 4.84rem;
height: 0.68rem;
background: #fff;
border-radius: 8px;
margin-left: 0.25rem;
color: #06121e;
font-size: 0.28rem;
display: flex;
}
.writermessage input {
padding: 0 0.32rem;
box-sizing: border-box;
}
.messagebotleft {
width: 0.52rem;
height: 0.52rem;
font-size: 0;
}
/* 顶部 */
.sharetop {
width: 100%;
padding: 0.18rem 0.32rem;
box-sizing: border-box;
background: #fff;
position: fixed;
top: 0;
left: 0;
}
.leftrow {
width: 0.44rem;
height: 0.44rem;
font-size: 0;
}
.sharemiddle {
color: #02170b;
font-size: 0.34rem;
}
.sharebtn {
width: 0.34rem;
height: 0.34rem;
font-size: 0;
}
</style>
... ...
不能预览此文件类型
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h2>Essential Links</h2>
<ul>
<li>
<a
href="https://vuejs.org"
target="_blank"
>
Core Docs
</a>
</li>
<li>
<a
href="https://forum.vuejs.org"
target="_blank"
>
Forum
</a>
</li>
<li>
<a
href="https://chat.vuejs.org"
target="_blank"
>
Community Chat
</a>
</li>
<li>
<a
href="https://twitter.com/vuejs"
target="_blank"
>
Twitter
</a>
</li>
<br>
<li>
<a
href="http://vuejs-templates.github.io/webpack/"
target="_blank"
>
Docs for This Template
</a>
</li>
</ul>
<h2>Ecosystem</h2>
<ul>
<li>
<a
href="http://router.vuejs.org/"
target="_blank"
>
vue-router
</a>
</li>
<li>
<a
href="http://vuex.vuejs.org/"
target="_blank"
>
vuex
</a>
</li>
<li>
<a
href="http://vue-loader.vuejs.org/"
target="_blank"
>
vue-loader
</a>
</li>
<li>
<a
href="https://github.com/vuejs/awesome-vue"
target="_blank"
>
awesome-vue
</a>
</li>
</ul>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h1, h2 {
font-weight: normal;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
... ...
<template>
<div class="container">
<van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
<van-swipe-item>
<div>
<img src="../../../assets/Group Copy@2x.png" alt />
</div>
</van-swipe-item>
<van-swipe-item>
<div>
<img src="../../../assets/Group Copy@2x.png" alt />
</div>
</van-swipe-item>
<van-swipe-item>
<div>
<img src="../../../assets/Group Copy@2x.png" alt />
</div>
</van-swipe-item>
<van-swipe-item>
<div>
<img src="../../../assets/Group Copy@2x.png" alt />
</div>
</van-swipe-item>
</van-swipe>
<div class="monthimg" @click="showcalendar">
<img src="../../../assets/sanyue.png" alt />
<div class="seeactivity">
<img src="../../../assets/seehuodong.png" alt />
</div>
</div>
<div class="spring">
<img src="../../../assets/come.png" alt />
</div>
<div class="spring">
<img src="../../../assets/spring.png" alt />
</div>
<van-calendar v-model="show" @confirm="onConfirm" />
<tabBar v-bind:active="2" />
</div>
</template>
<script>
import Vue from 'vue';
import { Swipe, SwipeItem } from 'vant';
import { Calendar } from 'vant';
Vue.use(Calendar);
Vue.use(Swipe);
Vue.use(SwipeItem);
import tabBar from "@/components/views/tabBar.vue";
export default {
components: {
tabBar
},
data() {
return {
selnav: 2,
date: '',
show: false,
};
},
methods: {
showcalendar() {
this.show = true
},
selcourse(e) {
console.log(37344);
console.log(e);
this.selnav = e.currentTarget.dataset.id;
},
//日历
formatDate(date) {
return `${date.getMonth() + 1}/${date.getDate()}`;
},
onConfirm(date) {
this.show = false;
this.date = this.formatDate(date);
},
}
};
</script>
<style scoped>
@import "../../../style/activity.css";
</style>
... ...
<template>
<div class="containerbox">
<van-calendar v-model="show" @confirm="onConfirm" />
</div>
</template>
<script>
import Vue from 'vue';
import { Calendar } from 'vant';
Vue.use(Calendar);
export default {
data() {
return {
date: '',
show: false,
}
},
methods: {
formatDate(date) {
return `${date.getMonth() + 1}/${date.getDate()}`;
},
onConfirm(date) {
this.show = false;
this.date = this.formatDate(date);
},
}
}
</script>
<style>
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<!-- 顶部搜素 -->
<div class="searchhead">
<div class="searchbox flexone">
<div class="searchimg">
<img src="../../../assets/search.png" alt />
</div>
<input type="text" placeholder="搜索你感兴趣的课程文章" class="searchtext" />
</div>
</div>
<!-- 课程列表 -->
<div class="courseitem flex">
<div class="courseimg">
<img src="../../../assets/courseimg.png" alt />
</div>
<div class="courseright">
<div class="coursetitle">关于减肥,除了科学运动</div>
<div class="zhibo flexone">
<img src="../../../assets/zhibo.png" alt class="zhiimg" />
<div class="zhiname">正在直播</div>
</div>
<div class="know flexone">
<span class="morepeople">很多人不能正确理解减肥</span>
<div class="knowmore">
了解详情
<img src="../../../assets/yourow.png" alt class="yourow" />
</div>
</div>
</div>
</div>
<div class="courseitem flex">
<div class="courseimg">
<img src="../../../assets/courseimg.png" alt />
</div>
<div class="courseright">
<div class="coursetitle">关于减肥,除了科学运动</div>
<div class="zhibo flexone">
<img src="../../../assets/ready.png" alt class="zhiimg" />
<div class="zhiname">正在直播</div>
</div>
<div class="know flexone">
<span class="morepeople">很多人不能正确理解减肥</span>
<div class="knowmore">
了解详情
<img src="../../../assets/yourow.png" alt class="yourow" />
</div>
</div>
</div>
</div>
<!-- 课程头部 -->
<div class="coursenav flexone">
<div
class="coursenavleft"
:class="selnav == 0 ? 'selactive' : ''"
:data-id="0"
@click="selectnav"
>音频课程</div>
<div
class="coursenavleft"
:class="selnav == 1 ? 'selactive' : ''"
:data-id="1"
@click="selectnav"
>营养小知识</div>
</div>
<!-- 课程 -->
<div v-if="selnav == 0">
<div class="nodata" v-if="videolist.length==0">暂无数据</div>
<van-list
class="courseboxk"
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
v-else
>
<div class="courseboxitem" v-for="item in videolist" :key="item">
<div class="coursenameimg">
<img :src="item.image" alt />
</div>
<div class="coursetext">
<div class="coursetitle">{{item.title}}</div>
<div class="coursename">{{item.description}}</div>
<div class="courseteacher">{{item.user.nickname}}</div>
</div>
</div>
</van-list>
</div>
<!-- 营养小知识 -->
<div v-if="selnav == 1">
<div class="nodata" v-if="yinglist.length==0">暂无数据</div>
<van-list
class="courseboxk"
v-model="loadingying"
:finished="finishedying"
finished-text="没有更多了"
@load="onLoadyinyang"
v-else
>
<div
class="courseboxitem"
v-for="item in yinglist"
:key="item.id"
@click="yingyangdetail(item.id)"
>
<div class="coursenameimg">
<img :src="item.image" alt />
</div>
<div class="coursetext">
<div class="coursename knowlagename" v-html="item.content"></div>
</div>
</div>
</van-list>
</div>
<!-- 底部导航 -->
<tabBar v-bind:active="0" />
</div>
</template>
<script>
import Vue from 'vue';
import tabBar from "@/components/views/tabBar.vue";
import { List } from 'vant';
Vue.use(List);
export default {
components: {
tabBar
},
data() {
return {
selnav: 0,
loading: false,
finished: false,
videolist: [],
// 营养知识
loadingying: false,
finishedying: false,
yinglist: [],
videopage: 1,
this_page: '',
total_page: ''
};
},
created() {
this.getvideolist()
},
methods: {
// 视频上拉加载
onLoad() {
let that = this;
// 异步更新数据
// setTimeout 仅做示例,真实场景中一般为 ajax 请求
setTimeout(() => {
console.log(3434)
let newvideopage = that.videopage
newvideopage++;
that.videopage = newvideopage;
console.log(that.videopage)
that.getvideolist()
// 加载状态结束
this.loading = false;
// 数据全部加载完成
if (that.this_page == that.total_page) {
this.finished = true;
}
}, 1000);
},
// 营养知识上拉加载
onLoadyinyang() {
let that = this;
// 异步更新数据
// setTimeout 仅做示例,真实场景中一般为 ajax 请求
setTimeout(() => {
console.log(3434)
let newvideopage = that.videopage
newvideopage++;
that.videopage = newvideopage;
console.log(that.videopage)
that.getyingyang()
// 加载状态结束
this.loadingying = false;
// 数据全部加载完成
if (that.this_page == that.total_page) {
this.finishedying = true;
}
}, 1000);
},
// 获取视频
getvideolist() {
let that = this;
var url = "/api/index/lesson_list";
let param = {
page: that.videopage
};
that.$axios
.post(url, param, Headers)
.then(res => {
console.log(res, "列表");
that.videolist = that.videolist.concat(res.data.lesson)
that.total_page = res.data.total_page;
that.this_page = res.data.this_page
})
.catch(err => {
console.log(err);
// setTimeout(function () {
// that.$router.go(-1)
// })
});
},
// 获取营养知识
getyingyang() {
console.log(9999)
let that = this;
var url = "/api/index/knowledge_list";
let param = {
page: that.videopage
};
that.$axios
.post(url, param)
.then(res => {
console.log(res, "列表");
that.yinglist = that.yinglist.concat(res.data.knowledge)
that.total_page = res.data.total_page;
that.this_page = res.data.this_page
})
.catch(err => {
console.log(err);
// setTimeout(function () {
// that.$router.go(-1)
// })
});
},
// 进入营养详情页面
yingyangdetail(id) {
this.$router.push({
path: "/yingyangdetail",
query: { id: id }
});
},
selectnav(e) {
let that = this;
this.selnav = e.currentTarget.dataset.id;
console.log(this.selnav)
if (this.selnav == 0) {
that.total_page = ''
that.this_page = ''
that.videopage = 1
that.videolist = []
this.getvideolist()
} else if (this.selnav == 1) {
that.total_page = ''
that.this_page = ''
this.yinglist = []
that.videopage = 1
this.getyingyang()
}
}
}
};
</script>
<style scoped>
@import "../../../style/course.css";
</style>
... ...
<template>
<div class="containerbox"></div>
</template>
<script>
export default {
data() {
return {
id: ''
}
},
methods: {
getdetail() {
let that = this;
var url = "/api/index/knowledge_detail";
let param = {
id: that.id
};
that.$axios
.post(url, param)
.then(function (res) {
console.log(res);
})
.catch(function (err) {
console.log(err);
});
}
},
created() {
this.id = this.$route.query.id;
this.getdetail()
}
}
</script>
<style scoped>
.containerbox {
padding: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<div class="sharetop flextwo">
<div class="leftrow">
<img src="../../../assets/leftrow.png" alt />
</div>
<div class="sharemiddle">直播</div>
<div class="sharebtn">
<img src="../../../assets/sharebtn.png" alt />
</div>
</div>
<div class="messagelist">
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
</div>
<div class="messagebot flexone">
<div class="messagebotleft">
<img src="../../../assets/yuyin.png" alt />
</div>
<div class="writermessage">
<input type="text" placeholder="写留言" />
</div>
<div class="send">发送</div>
</div>
<!-- 直播结束了 -->
<div class="register" v-if="iszhibo">
<div class="zhiboover">
<div class="zhibovoertop">讲师结束了直播</div>
<div class="zhiboque" @click="overvideo">确认</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
iszhibo: false
}
},
methods: {
overvideo() {
this.iszhibo = false
}
}
}
</script>
<style scoped>
.zhiboover {
width: 6.22rem;
background: #ffffff;
border-radius: 0.08rem 0.08rem 0 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.zhibovoertop {
padding: 0.68rem 0;
box-sizing: border-box;
border-bottom: 1px solid #f5f5f5;
color: #323233;
font-size: 0.28rem;
text-align: center;
}
.zhiboque {
color: #599158;
font-size: 0.32rem;
text-align: center;
padding: 0.24rem 0;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox"></div>
</template>
<script>
import Vue from "vue";
import { getUrlKey } from "../../utils/utils.js";
const murl = "http://tangyuan.h.brofirst.cn";
const now_url = sessionStorage.getItem("now_url");
console.log('页面路径', now_url)
export default {
//生命周期函数
created() {
const code = this.GetUrlParame("code"); // 截取code
console.log('9999', code)
if (!code) {
let urlk = window.location.href
console.log(urlk, 34893488493)
let that = this;
var url = "/api/user/authorize";
let param = {
redirect_uri: urlk
};
that.$axios
.post(url, param)
.then(function (res) {
console.log(res);
window.location.href = res.data.wechat_url
})
.catch(function (error) {
console.log(error);
});
} else {
let param = {
platform: 'wechat',
code: code
}
console.log(param);
this.$axios
.get("/api/user/third?code=" + code) //如果有code,说明用户点击了授权 将获取到的code传递给后台
.then(res => {
// 返回状态和UId
console.log(res, '返回的数据')
if (res.data) {
sessionStorage.setItem("token", res.data.token);
}
console.log(now_url, 99999)
if (now_url) {
window.location.replace(murl + now_url);
} else {
window.location.replace(murl);
}
});
}
},
data() {
return {};
},
methods: {
// 截取code
GetUrlParame(parameName) {
/// 获取地址栏指定参数的值
/// <param name="parameName">参数名</param>
// 获取url中跟在问号后面的部分
var parames = window.location.search;
// 检测参数是否存在
if (parames.indexOf(parameName) > -1) {
var parameValue = "";
parameValue = parames.substring(
parames.indexOf(parameName),
parames.length
);
// 检测后面是否还有参数
if (parameValue.indexOf("&") > -1) {
// 去除后面多余的参数, 得到最终 parameName=parameValue 形式的值
parameValue = parameValue.substring(0, parameValue.indexOf("&"));
// 去掉参数名, 得到最终纯值字符串
parameValue = parameValue.replace(parameName + "=", "");
return parameValue;
}
return "";
}
}
}
};
</script>
<style></style>
... ...
<template>
<div class="containerbox">
<div class="topcontainer">
<div class="publishitem flextwo" @click="selectkind">
<div class="publeft flexone">
<div class="kindname">{{kindname}}</div>
<div class="pubpicker" v-if="false">
<van-picker
show-toolbar
:columns="columns"
@confirm="onConfirm"
@cancel="onCancel"
@change="onChange"
/>
</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow" />
</div>
<div class="enterkind">
<textarea name id cols="30" rows="10" placeholder="请输入您的想法"></textarea>
</div>
<div class="pubimg">
<img src="../../../assets/addpub.png" alt />
</div>
</div>
<div class="kaishilu">发布</div>
<!-- 发布成功 -->
<div class="register" v-if="success">
<div class="pubsuccess">
<div class="pubsuccessname">发布成功</div>
<div class="pubsure" @click="sure">确认</div>
</div>
</div>
</div>
</template>
<script>
import Vue from 'vue';
import { Picker } from 'vant';
Vue.use(Picker);
export default {
data() {
return {
columns: ['杭州', '宁波', '温州', '嘉兴', '湖州'],
showkind: false,
kindname: '分类一',
success: false
}
},
methods: {
selectkind() {
this.showkind = true
},
onCancel() {
console.log(347344)
this.showkind = false
},
onConfirm(value, index) {
console.log(78343784)
this.showkind = false
console.log(this.showkind)
},
onChange(picker, value, index) {
},
sure() {
this.success = false
},
publish() {
let that = this;
var url = "/api/user/authorize";
let param = {
redirect_uri: urlk
};
that.$axios
.post(url, param)
.then(function (res) {
console.log(res);
})
.catch(function (err) {
console.log(err);
});
}
}
}
</script>
<style scoped>
@import "../../../style/society.css";
.topcontainer {
padding: 0 0.32rem;
box-sizing: border-box;
background: #fff;
padding-bottom: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<div class="coursenav flexone">
<div
class="coursenavleft"
:class="selnav == index ? 'selactive' : ''"
@click="selectnav(item.id,index)"
v-for="(item, index) in navarr"
:key="index"
>{{ item.sort_name }}</div>
</div>
<div class="societybox">
<div class="nodata" v-if="sortlist.length==0">暂无数据</div>
<van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad" v-else>
<div class="societyitem" v-for="item in sortlist" :key="item.id">
<div class="societytop flextwo">
<div class="societyleft flexone">
<div class="personimg">
<img :src="item.user.avatar" alt />
</div>
<div class="personright">
<div class="personname">{{item.user.nickname}}</div>
<div class="persondate">{{item.createtime}}</div>
</div>
</div>
<div class="dingimg" v-if="item.is_top==1">
<img src="../../../assets/ding.png" alt />
</div>
</div>
<div class="societytext">{{item.description}}</div>
<div class="societyimg flexone" v-if="item.images_arr.length!=0">
<div class="societyimgitem" v-for="item in item.images_arr" :key="item">
<img src="../../../assets/societyimg.png" alt />
</div>
</div>
<div class="jianzheng flexone">
<div class="jianzhengleft">#</div>
<div class="jianzhengright">见证蜕变</div>
</div>
<!-- 点赞 -->
<div class="dainzan flexone">
<div class="flexone dianitem">
<img src="../../../assets/zan.png" alt class="dianzanimg" />
<span class="number">960</span>
</div>
<div class="flexone dianitem">
<img src="../../../assets/star.png" alt class="dianzanimg" />
<span class="number">960</span>
</div>
<div class="flexone dianitem">
<img src="../../../assets/edit.png" alt class="dianzanimg" />
<span class="number">960</span>
</div>
<div class="flexone dianitem">
<img src="../../../assets/download.png" alt class="dianzanimg" />
<span class="number">960</span>
</div>
</div>
</div>
</van-list>
</div>
<!-- 图片没有上传 -->
<div class="gantanimg" v-if="nophoto">
<img src="../../../assets/gantan.png" class="ganimg" alt />
<div class="gantantext">用户未上传图片</div>
</div>
<!-- 添加 -->
<div class="addimg" @click="publish">
<img src="../../../assets/add.png" alt />
</div>
<tabBar v-bind:active="1" />
</div>
</template>
<script>
import tabBar from "@/components/views/tabBar.vue";
import Vue from 'vue';
import { List } from 'vant';
Vue.use(List);
export default {
components: {
tabBar
},
data() {
return {
selnav: 0,
navarr: [],
sort_id: '',
nophoto: false,
sortlist: [],
loading: false,
finished: false,
page: 1,
this_page: '',
total_page: ''
};
},
created() {
this.getsort()
},
methods: {
onLoad() {
let that = this;
// 异步更新数据
// setTimeout 仅做示例,真实场景中一般为 ajax 请求
setTimeout(() => {
// for (let i = 0; i < 10; i++) {
// this.list.push(this.list.length + 1);
// }
let newpage = that.page;
newpage++;
that.page = newpage;
that.getsocidtylist()
// 加载状态结束
that.loading = false;
// 数据全部加载完成
if (that.total_page == that.this_page) {
that.finished = true;
}
}, 1000);
},
selectnav(id, index) {
let that = this;
this.selnav = index;
this.sort_id = id
that.page = 1;
that.sortlist = [];
that.getsocidtylist()
},
publish() {
this.$router.push({
path: "/publish",
// query: { testId: item.test_student_id }
});
},
// 获取分类列表
getsort() {
let that = this;
var url = "/api/social/sort";
let param = {
};
that.$axios
.post(url, param)
.then(function (res) {
console.log(res);
that.navarr = res.data
that.sort_id = res.data[0].id
})
.catch(function (err) {
console.log(err);
});
},
// 获取社区列表
getsocidtylist() {
let that = this;
var url = "/api/social/social_list";
let param = {
sort_id: that.sort_id,
page: that.page
};
that.$axios
.post(url, param)
.then(function (res) {
console.log(res);
that.sortlist = that.sortlist.concat(res.data.social)
that.this_page = res.data.this_page;
that.total_page = res.data.total_page
})
.catch(function (err) {
console.log(err);
});
}
}
};
</script>
<style scoped>
@import "../../../style/society.css";
.societybox {
margin-bottom: 1.2rem;
}
</style>
... ...
<template>
<div class="tabbar">
<van-tabbar
v-model="tabbarTempValue"
@change="onChange"
active-color="#599158"
>
<van-tabbar-item>
课堂
<template #icon="props">
<img
class="icon-img"
:src="props.active ? icon.courseactive : icon.course"
/>
</template>
</van-tabbar-item>
<van-tabbar-item
>社区
<template #icon="props">
<img
class="icon-img"
:src="props.active ? icon.shequactive : icon.shequ"
/>
</template>
</van-tabbar-item>
<van-tabbar-item
>活动中心
<template #icon="props">
<img
class="icon-img"
:src="props.active ? icon.societyactive : icon.society"
/>
</template>
</van-tabbar-item>
<van-tabbar-item
>个人中心
<template #icon="props">
<img
class="icon-img"
:src="props.active ? icon.personactive : icon.person"
/>
</template>
</van-tabbar-item>
</van-tabbar>
</div>
</template>
<script>
import Vue from "vue";
import { Tabbar, TabbarItem } from "vant";
import { Icon } from "vant";
import { Notify } from "vant";
Vue.use(Notify);
Vue.use(Tabbar).use(TabbarItem);
Vue.use(Icon);
export default {
props: {
active: Number
},
data() {
return {
tabbarTempValue: this.active,
icon: {
course: require("../../assets/ketang.png"),
courseactive: require("../../assets/ketangactive.png"),
shequ: require("../../assets/shequ.png"),
shequactive: require("../../assets/shequactive.png"),
society: require("../../assets/society.png"),
societyactive: require("../../assets/societyactive.png"),
person: require("../../assets/person.png"),
personactive: require("../../assets/personactive.png")
}
};
},
methods: {
onChange(index) {
const routerArray = ["/", "/society", "/activity", "/usercenter"];
this.$router.push(routerArray[index]);
}
}
};
</script>
<style>
.van-tabbar-item__icon img {
width: 0.54rem;
height: 0.44rem;
}
</style>
... ...
<template>
<div class="containerbox">
<div class="anlibox">
<div class="comtexttop flexthree">
<div class="textleft flexone">
<div class="textleftheng"></div>
<div class="textyuan"></div>
</div>
<div class="textname">案例分析表</div>
<div class="textleft flexone">
<div class="textkyuan"></div>
<div class="textrightheng"></div>
</div>
</div>
<div class="anliimg">
<img src="../../../assets/anliimg.png" alt />
<div class="anlitext">
分析:亲爱的xx您好,根据您填写的资料,您最想减脂的部位是XXX,
唐元集益菌享瘦套组从根源上打造易瘦体质,针对性的减掉脂肪,帮助您健康享瘦!
唐元集帮助了很多不同的人实现了瘦身和健康的目标。这里有和您相似的人哦~
</div>
</div>
<div class="comtexttop flexthree bianmei">
<div class="textleft flexone">
<div class="textleftheng"></div>
<div class="textyuan"></div>
</div>
<div class="textname">变美案例</div>
<div class="textleft flexone">
<div class="textkyuan"></div>
<div class="textrightheng"></div>
</div>
</div>
<div class="bianmeibox">
<div class="flexone">
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">性别:</div>
<div class="bianmeiitemname">女</div>
</div>
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">年龄:</div>
<div class="bianmeiitemname">23</div>
</div>
</div>
<div class="flexone">
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">身高:</div>
<div class="bianmeiitemname">女</div>
</div>
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">职业:</div>
<div class="bianmeiitemname">23</div>
</div>
</div>
<div class="tangname">唐元前</div>
<div class="flexone">
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">体重:</div>
<div class="bianmeiitemname">女</div>
</div>
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">BIM:</div>
<div class="bianmeiitemname">23</div>
</div>
</div>
<div class="flexone">
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">体脂率:</div>
<div class="bianmeiitemname">女</div>
</div>
</div>
<div class="tangname">唐元后</div>
<div class="flexone">
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">体重:</div>
<div class="bianmeiitemname">女</div>
</div>
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">BIM:</div>
<div class="bianmeiitemname">23</div>
</div>
</div>
<div class="flexone">
<div class="bianmeiitem flexone">
<div class="bianmeiitemname">体脂率:</div>
<div class="bianmeiitemname">女</div>
</div>
</div>
<div class="tangboximg flexone">
<div class="tangleftimg">
<img src="../../../assets/tangqian.png" alt />
</div>
<div class="tangrightimg">
<img src="../../../assets/tanghou.png" alt />
</div>
</div>
</div>
</div>
<div class="comtexttop flexthree">
<div class="textleft flexone">
<div class="textleftheng"></div>
<div class="textyuan"></div>
</div>
<div class="textname">减脂案例</div>
<div class="textleft flexone">
<div class="textkyuan"></div>
<div class="textrightheng"></div>
</div>
</div>
<div class="videoimg anlivideo">
<img src="../../../assets/videoimg.png" alt />
<img src="../../../assets/anniu.png" alt class="videobtn" />
</div>
<div class="flextwo shiyebot anlibot">
<div class="shibotleft">上一页</div>
<div class="shibotright">上一页</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
.anlibox {
padding: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="applayjoinbox">
<div class="applayjoinitem flexone">
<div class="applayjoinleft">姓名</div>
<div class="applayjoinright">
<input type="text" placeholder="请输入姓名" />
</div>
</div>
<div class="applayjoinitem flexone">
<div class="applayjoinleft">联系方式</div>
<div class="applayjoinright">
<input type="text" placeholder="请输入联系方式" />
</div>
</div>
<div class="applayjoinitem">
<div class="applayjoinleft">问题一</div>
<div class="question">
<textarea name id cols="30" rows="10" placeholder="请输入您的答案"></textarea>
</div>
</div>
<div class="applayjoinitem">
<div class="applayjoinleft">问题二</div>
<div class="question">
<textarea name id cols="30" rows="10" placeholder="请输入您的答案"></textarea>
</div>
</div>
<div class="applayjoinitem">
<div class="applayjoinleft">问题三</div>
<div class="question">
<textarea name id cols="30" rows="10" placeholder="请输入您的答案"></textarea>
</div>
</div>
</div>
<div class="suciabot">
<div class="sucaibtn">提交申请</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="changeitem flextwo">
<div class="changeitemleft">头像</div>
<div class="changeitemright flexone">
<img src="../../../assets/touxiang.png" alt class="headimg" />
<img src="../../../assets/grayrow.png" alt class="yourow" />
</div>
</div>
<div class="changeitem flextwo">
<div class="changeitemleft">头像</div>
<div class="changeitemleft">欧阳娜娜</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="title">唐元集</div>
<div class="titlename">好礼送女神</div>
<div class="engname">New users will have a lucky draw, only once</div>
<div class="chouimg">
<div class="chouname">您有一次抽奖的机会</div>
<img src="../../../assets/chouimg.png" alt />
<div class="box">
<div @click="cj" class="list listk" :class="cjChange > 0 ? 'grey' : ''">
<img src="../../../assets/beginchou.png" alt />
</div>
<div
class="list"
:class="cjChange == item.index ? 'change_in' : ''"
v-for="(item,index) in prizeList"
:key="index"
>
<div class="list_t">
<img :src="item.imgsrc" alt />
</div>
<!-- <div class="list_b">{{item.prizeName}}</div> -->
</div>
</div>
</div>
<div class="register" v-if="hideshow">
<div class="lingimg">
<img src="../../../assets/daijinquan.png" alt />
<div class="money">200</div>
<div class="riqi">
<div class="youxiaodate">有效时间</div>
<div class="youxiaodate">2020.6.15 12:10-6.31</div>
</div>
</div>
<div class="chaimg" @click="closeimg">
<img src="../../../assets/chaimg.png" alt />
</div>
</div>
<!-- <div class="choujiangimg">
<img src="../../../assets/chujiangimg.png" alt />
</div>-->
<div class="uppage">上一页</div>
</div>
</template>
<script>
let timer;
let cjIn = false;
let cjChange = 0; //抽奖过程KEY
export default {
data() {
return {
closeimg: false,
prizeList: [
{ id: '001', index: 1, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称111' },
{ id: '002', index: 2, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称222' },
{ id: '003', index: 3, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称333' },
{ id: '004', index: 4, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称444' },
{ id: '005', index: 5, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称555' },
{ id: '006', index: 6, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称666' },
{ id: '007', index: 7, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称777' },
{ id: '008', index: 8, imgsrc: 'https://www.baidu.com/img/bd_logo1.png', prizeName: '奖品名称88888888888888' },
],
cjChange: null, //抽奖过程KEY
prizeResult: null, //抽奖结果KEY
prizeName: null, //抽奖结果KEY对应的奖品名称
showAgain: false, //是否抽奖后显示再抽一次按钮
}
},
methods: {
closeimg() {
this.closeimg = false
},
cj() {
console.log(9998)
if (cjIn) {
return;
} else {
cjIn = true;
}
let This = this;
clearInterval(timer);
timer = setInterval(This.changePrize, 80);
// test start
let res = {
stutus: 1,
prizeResult: 8,
prizeName: '奖品名称88888888888888',
}
if (res.stutus == 1) {
setTimeout(function () {
clearInterval(timer);
timer = setInterval(This.changePrize, 160);
setTimeout(function () {
clearInterval(timer);
timer = setInterval(This.changePrize, 300);
setTimeout(function () {
This.prizeResult = res.prizeResult
This.prizeName = res.prizeName
}, 1000)
}, 1000)
}, 2000)
}
// test end
},
//抽奖过程奖品切换
changePrize() {
cjChange++;
cjChange = cjChange > 8 ? 1 : cjChange;
let This = this;
This.cjChange = cjChange
if (This.prizeResult == cjChange) {
clearInterval(timer);
This.showAgain = true
console.log('获得奖品:' + This.prizeName)
}
},
//点击再抽一次按钮
againBtn() {
cjIn = false;
cjChange = 0; //抽奖过程KEY
let This = this;
This.setData({
cjChange: null, //抽奖过程KEY
prizeResult: null, //抽奖结果KEY
prizeName: null, //抽奖结果KEY对应的奖品名称
showAgain: false, //是否抽奖后显示再抽一次按钮
});
},
}
}
</script>
<style scoped>
.lingimg {
width: 7.5rem;
height: 8.5rem;
font-size: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.riqi {
position: absolute;
top: 4.9rem;
left: 50%;
transform: translateX(-50%);
}
.youxiaodate {
color: #437b6a;
font-size: 0.28rem;
text-align: center;
}
.chaimg {
width: 0.48rem;
height: 0.48rem;
font-size: 0;
position: absolute;
bottom: 1.82rem;
left: 3.52rem;
}
.money {
color: #0a5b5c;
font-size: 1.2rem;
position: absolute;
top: 3.6rem;
left: 3rem;
}
.chouname {
color: #39683c;
font-size: 0.32rem;
font-weight: bold;
position: absolute;
top: 0.65rem;
left: 50%;
transform: translateX(-50%);
}
.uppage {
position: fixed;
bottom: 0.4rem;
left: 0.32rem;
width: 6.86rem;
height: 0.88rem;
border: 0.02rem solid #ffffff;
border-radius: 0.08rem;
color: #fff;
font-size: 0.34rem;
text-align: center;
line-height: 0.88rem;
}
.choujiangimg {
width: 5.94rem;
height: 5.94rem;
font-size: 0;
margin: 0.2rem auto 0;
}
.chouimg {
width: 7.36rem;
height: 7.36rem;
margin: 0.2rem auto 0;
position: relative;
}
.titlename {
color: #fff;
font-size: 1.04rem;
text-align: center;
font-weight: bold;
margin-top: 0.22rem;
}
.engname {
color: #ffffff;
font-size: 0.24rem;
text-align: center;
margin-top: 0.1rem;
}
.title {
color: #fff;
font-size: 0.3rem;
position: relative;
text-align: center;
margin-top: 0.42rem;
margin-bottom: 0.22rem;
}
.title::before {
content: "";
position: absolute;
display: block;
left: 46%;
top: 50%;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
border-top: 0.02rem solid #fff;
width: 1.44rem;
}
.title::after {
content: "";
position: absolute;
display: block;
left: 56%;
top: 50%;
-webkit-transform: translate3d(-50%, -50%, 0);
transform: translate3d(-50%, -50%, 0);
border-top: 0.02rem solid #fff;
width: 1.44rem;
}
.title::before {
margin-left: -1.2rem;
}
.title::after {
margin-left: 1.2rem;
}
body,
html {
height: 100%;
background: #5e955d !important;
}
.containerbox {
height: 100%;
background: #5e955d;
overflow: hidden;
}
#app {
height: 100%;
background: #5e955d;
box-sizing: border-box;
padding-top: 0.25rem;
}
.box {
width: 5.5rem;
height: 4.2rem;
margin: 0 auto;
box-sizing: border-box;
position: relative;
/* -webkit-box-shadow: 0.08rem 0.08rem 0 rgba(0, 0, 0, 0.2);
box-shadow: 0.08rem 0.08rem 0 rgba(0, 0, 0, 0.2); */
position: absolute;
left: 50%;
top: 55%;
transform: translate(-50%, -50%);
}
.list {
width: 1.6rem;
height: 1.2rem;
position: absolute;
/* background-color: #fff; */
display: flex;
flex-direction: column;
/* flex-wrap: wrap; */
justify-content: center;
align-content: center;
align-items: center;
/* border: 1px solid red; */
display: flex;
justify-content: center;
align-items: center;
}
/* 抽奖过程中选定样式 */
.list.change_in {
color: #fff;
background-color: #5e955d;
}
.list_t {
width: 1.1rem;
height: 0.8rem;
font-size: 0;
}
.list_t image {
width: 100%;
height: 100%;
}
.list_b {
width: 90%;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 0.32rem;
}
.listk {
width: 1.7rem;
height: 1.4rem;
top: 51% !important;
}
/* 根据TOP */
.list:nth-child(1) {
left: 50%;
top: 50%;
color: #fff;
background-color: #1cbbb4;
display: flex;
justify-content: center;
align-content: center;
align-items: center;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.list.grey:nth-child(1) {
background-color: #5f9ea0;
}
.list:nth-child(2),
.list:nth-child(3),
.list:nth-child(4) {
top: 0;
}
.list:nth-child(6),
.list:nth-child(7),
.list:nth-child(8) {
bottom: 0;
}
.list:nth-child(5),
.list:nth-child(9) {
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
/* 根据LEFT */
.list:nth-child(2),
.list:nth-child(8),
.list:nth-child(9) {
left: 0;
}
.list:nth-child(3),
.list:nth-child(7) {
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
}
.list:nth-child(4),
.list:nth-child(5),
.list:nth-child(6) {
right: 0;
}
</style>
<style>
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="companytopimg">
<img src="../../../assets/companytop.png" alt />
<div class="intro">
<div class="introtitle">赵庆慧邀您了解唐元集</div>
<div class="introtext flexone">
<img src="../../../assets/xiaolian.png" alt class="xiaoimg" />
<div class="introtitlename">亲爱的黄小丽,欢迎您走进唐元集!</div>
</div>
</div>
<div class="companytext">
<div class="comtexttop flexthree">
<div class="textleft flexone">
<div class="textleftheng"></div>
<div class="textyuan"></div>
</div>
<div class="textname">唐元集</div>
<div class="textleft flexone">
<div class="textkyuan"></div>
<div class="textrightheng"></div>
</div>
</div>
<div class="companyintrotext">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及配套产品
方案提供为主营业务的服务型企业。 公司坐落于杭州市滨江区,毗邻钱
塘江江畔上,借助杭州高新科技政策支持的便利,目前已经与多家海内外
知名上市企业强强合作,拥有九大生物实验室,数十位硕士、博士组成的
高学历研发团队,以此来保证唐元集的核心研发能力与业务创新能力。
唐元集每一款产品从原料到成品,都经超过300多项检验项目。每一款产
品投入市场前不仅会经过大量实验测试与验证,拥有众多获奖专利与认证。
产品生产工厂获得了获得NCF、GMP、ISO、HACCP、BRC等国际权威认证。
唐元集希望以科学的产品和专业的指导,帮助大家实现自我健康管理。
</div>
</div>
</div>
<div class="zizhi">
<img src="../../../assets/beijing.png" alt />
<div class="zizhibox">
<div class="nameimg">
<img src="../../../assets/juxing.png" alt class="juxingone" />
<div class="nametext">唐元集权威资质</div>
<div class="zizhilist flexone">
<div class="zizhilistleft">
<img src="../../../assets/zizhileft.png" alt />
</div>
<div class="zizhilistright">
<img src="../../../assets/zizhiright.png" alt />
</div>
</div>
</div>
<div class="nameimgone">
<img src="../../../assets/juxing.png" alt class="juxingtwo" />
<div class="nametext">唐元集工厂注册证书 品质保证</div>
<div class="zizhilist flextwo">
<div class="zhuceleft">
<img src="../../../assets/zhuceleft.png" alt />
</div>
<div class="zhucemiddle">
<img src="../../../assets/zhucemiddle.png" alt />
</div>
<div class="zhuceright">
<img src="../../../assets/zhuceright.png" alt />
</div>
</div>
</div>
<div class="nameimg nameimgtwo">
<img src="../../../assets/juxing.png" alt class="juxingthree" />
<div class="nametext">食品生产许可证</div>
<div class="zizhilist flextwo">
<div class="zhuceleft">
<img src="../../../assets/shipinleft.png" alt />
</div>
<div class="zhucemiddle">
<img src="../../../assets/shipinmiddle.png" alt />
</div>
<div class="zhuceright">
<img src="../../../assets/shipinright.png" alt />
</div>
</div>
</div>
<div class="nameimg nameimgthree">
<img src="../../../assets/juxing.png" alt class="juxingfour" />
<div class="nametext">进口产品报税及入境单</div>
<div class="zizhilist flextwo">
<div class="shuileft">
<img src="../../../assets/shuileft.png" alt />
</div>
<div class="shuiright">
<img src="../../../assets/shuiright.png" alt />
</div>
</div>
</div>
<div class="nameimg nameimgfour">
<img src="../../../assets/juxing.png" alt class="juxingfive" />
<div class="nametext">上海工厂资质证书</div>
<div class="zizhilist flextwo">
<div class="zhengshuleft">
<img src="../../../assets/zhengshuleft.png" alt />
</div>
<div class="zhengshumiddle">
<img src="../../../assets/zhengshumiddle.png" alt />
</div>
<div class="zhengshuright">
<img src="../../../assets/zhengshuright.png" alt />
</div>
</div>
</div>
<div class="nameimg nameimgfive">
<div class="zizhilist flextwo">
<div class="zizhileftk">
<img src="../../../assets/zizhileftk.png" alt />
</div>
<div class="zizhimiddlek">
<img src="../../../assets/zizhimiddlek.png" alt />
</div>
<div class="zizhirightk">
<img src="../../../assets/zizhirightk.png" alt />
</div>
</div>
</div>
</div>
</div>
<div class="nextpage">下一页</div>
<!-- 弹层 -->
<div class="register" v-if="showshare">
<div class="fenwrap">
<img src="../../../assets/chahao.png" alt class="chahao" @click="hideshare" />
<div class="fenimg">
<img src="../../../assets/fenimg.png" alt />
<div class="fenname">结果已出,立即分享给朋友</div>
<div class="fenbtn">立即分享</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
showshare: false
}
},
methods: {
hideshare() {
this.showshare = false
}
}
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="couponimg">
<img src="../../../assets/couponone.png" alt />
<img src="../../../assets/unused.png" alt class="useimg" />
<div class="couponhezi">
<div class="coupontop flextwo">
<div class="moneynumber">
<span class="moneysign">¥</span>
<span class="moneynum">50</span>
</div>
</div>
<div class="couponname">抵扣优惠券(全场可用)</div>
<div class="coupondate">2020/12/25-2021/1/25</div>
</div>
</div>
<div class="couponimg">
<img src="../../../assets/coupontwo.png" alt />
<img src="../../../assets/used.png" alt class="useimg" />
<div class="couponhezi">
<div class="coupontop flextwo">
<div class="moneynumber">
<span class="moneysign">¥</span>
<span class="moneynum">50</span>
</div>
</div>
<div class="couponname">抵扣优惠券(全场可用)</div>
<div class="coupondate">2020/12/25-2021/1/25</div>
</div>
</div>
<div class="couponimg">
<img src="../../../assets/coupontwo.png" alt />
<img src="../../../assets/used.png" alt class="useimg" />
<div class="couponhezi">
<div class="coupontop flextwo">
<div class="moneynumber">
<span class="moneysign">¥</span>
<span class="moneynum">50</span>
</div>
</div>
<div class="couponname">抵扣优惠券(全场可用)</div>
<div class="coupondate">2020/12/25-2021/1/25</div>
</div>
</div>
<div class="couponimg">
<img src="../../../assets/coupontwo.png" alt />
<img src="../../../assets/used.png" alt class="useimg" />
<div class="couponhezi">
<div class="coupontop flextwo">
<div class="moneynumber">
<span class="moneysign">¥</span>
<span class="moneynum">50</span>
</div>
</div>
<div class="couponname">抵扣优惠券(全场可用)</div>
<div class="coupondate">2020/12/25-2021/1/25</div>
</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="dailiimg">
<img src="../../../assets/daili.png" alt />
<div class="dailitext">
亲爱的xx您好,根据您填写的资料,您是一
位想要创业的宝妈,唐元集帮助了很多素人创业,
期待您成为我们的一员哦
</div>
</div>
<div class="dailiimgk">
<img src="../../../assets/dailiimgk.png" alt />
</div>
<div class="shibot dailibot flextwo">
<div class="shibotleft">上一页</div>
<div class="shibotright">上一页</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
.containerbox {
padding: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<div class="formbox">
<div class="formitem flexone">
<div class="formitemleft">推荐经销商</div>
<div class="formitemright">
<input type="text" placeholder="请输入推荐经销商" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">经销商手机号</div>
<div class="formitemright">
<input type="text" placeholder="请输入推荐经销商手机号" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">姓名</div>
<div class="formitemright">
<input type="text" placeholder="请输入姓名" />
</div>
</div>
<div class="formitem flextwo">
<div class="flexone">
<div class="formitemleft">性别</div>
<div class="formitemright">请选择您的性别</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow downrow" />
</div>
<div class="formitem flextwo">
<div class="flexone">
<div class="formitemleft">性别</div>
<div class="formitemright">请选择您的性别</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow downrow" />
</div>
<div class="formitem flextwo">
<div class="flexone">
<div class="formitemleft">学历</div>
<div class="formitemright">请选择您的学历</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow downrow" />
</div>
<div class="formitem flexone">
<div class="formitemleft">年龄</div>
<div class="formitemright">
<input type="text" placeholder="请输入您的年龄" />
</div>
</div>
<div class="formitem flextwo">
<div class="flexone">
<div class="formitemleft">职业</div>
<div class="formitemright">请选择您的职业</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow downrow" />
</div>
<div class="formitem flextwo">
<div class="flexone">
<div class="formitemleft">年收入</div>
<div class="formitemright">请选择您的年收入</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow downrow" />
</div>
<div class="chuangye">
<div class="chaungyetitle">是否有其他创业经历</div>
<div class="chuangyetext">
<textarea name id cols="30" rows="10" placeholder="预设内容"></textarea>
</div>
</div>
</div>
<!-- 下一步 -->
<div class="nextstep">下一页</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<div class="formbox">
<div class="formitem flexone">
<div class="formitemleft">推荐经销商</div>
<div class="formitemright">
<input type="text" placeholder="请输入推荐经销商" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">经销商手机号</div>
<div class="formitemright">
<input type="text" placeholder="请输入推荐经销商手机号" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">姓名</div>
<div class="formitemright">
<input type="text" placeholder="请输入姓名" />
</div>
</div>
<div class="formitem flextwo">
<div class="flexone">
<div class="formitemleft">性别</div>
<div class="formitemright">请选择您的性别</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow downrow" />
</div>
<div class="formitem flexone">
<div class="formitemleft">年龄</div>
<div class="formitemright">
<input type="text" placeholder="请输入您的年龄" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">职业</div>
<div class="formitemright">
<input type="text" placeholder="输入您的职业" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">身高</div>
<div class="formitemright">
<input type="text" placeholder="请输入您的身高" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">体重</div>
<div class="formitemright">
<input type="text" placeholder="请输入您的体重" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">肥胖因素</div>
<div class="formitemright">
<input type="text" placeholder="请输入您的肥胖因素" />
</div>
</div>
<div class="formitem flexone">
<div class="formitemleft">减脂要求</div>
<div class="formitemright">
<input type="text" placeholder="请输入您的减脂要求" />
</div>
</div>
<div class="chuangye">
<div class="chaungyetitle">是否尝试过其他瘦身方法</div>
<div class="chuangyetext">
<textarea name id cols="30" rows="10" placeholder="预设内容"></textarea>
</div>
</div>
</div>
<!-- 下一步 -->
<div class="nextstep">下一页</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="jianzhongimg">
<img src="../../../assets/jianzhongfen.png" alt />
<div class="jianzhongbox">
<div class="nameimg">
<div class="fenxitext">
亲爱的xx您好,根据您填写的资料,您是由于
高糖高油饮食导致的肥胖,下面是营养师给您的建议哦
高糖高油导致肥胖的原因是摄入过多的热量,那多余的脂肪
就会以脂肪的形式囤积起来。 饮食生活需要注意减少高淀粉
高糖分的摄入,不吃过多油炸类食物。 唐元集益菌享瘦套组,
可以培养易瘦体质,核心成分益生菌将饮食中过多的油脂转化为
体内cla的含量,可以帮助塑型美体
</div>
<div class="jianfenimg">
<img src="../../../assets/huanzhuang.png" alt />
</div>
<div class="comtexttop flexthree fuwutop">
<div class="textleft flexone">
<div class="textleftheng"></div>
<div class="textyuan"></div>
</div>
<div class="textname">服务方案</div>
<div class="textleft flexone">
<div class="textkyuan"></div>
<div class="textrightheng"></div>
</div>
</div>
<div class="fangantext">减脂期间,营养师会一对一给您安排饮食和产品指导,只需2956元,你将得到:</div>
<div class="greentext">1.价值2956元的产品套餐(燃脂饮6盒+益生菌2盒+酵母浓汤4盒+香蕉豆薯粉4盒+大餐救星1瓶(赠送))</div>
<div class="fanganimg">
<img src="../../../assets/productbot.png" alt />
</div>
<div class="greentext">2.价值2956元的产品套餐(燃脂饮6盒+益生菌2盒+酵母浓汤4盒+香蕉豆薯粉4盒+大餐救星1瓶(赠送))</div>
<div class="fanganimg">
<img src="../../../assets/cai.png" alt />
</div>
<div class="xiaolist flexthree">
<img src="../../../assets/xiao.png" alt class="lian" />
<div class="clicknext">点击下一页有专属优惠哦</div>
</div>
</div>
</div>
</div>
<div class="flextwo shiyebot jianzhong">
<div class="shibotleft">上一页</div>
<div class="shibotright">上一页</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
.anlibox {
padding: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="jointext">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及配套产品方案提供为主
营业务的服务型企业。 公司坐落于杭州市滨江区,毗邻钱塘江江畔上,借助杭州高新科
技政策支持的便利,目前已经与多家海内外知名上市企业强强合作,拥有九大生物实验室,数十位硕士、博士组成的高学历研发团队,以此来保证唐元集的核心研发能力与业务创新能力。 唐元集每一款产品从原料到成品,都经超过300多项检验项目。每一款产品投入市场前不仅会经过大量实验测试与验证,拥有众多获奖专利与认证。 产品生产工厂获得了获得NCF、GMP、ISO、HACCP
、BRC等国际权威认证。唐元集希望以科学的产品和专业的指导,帮助大家实现自我健康管理。
</div>
<div class="joinimg">
<img src="../../../assets/main_bg@2x.png" alt />
</div>
<div class="suciabot">
<div class="sucaibtn">加入我们</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div clas="containerbox">
<div class="kefubox">
<div class="kefutitle">猜你想问</div>
<div class="coursenav flexone">
<div
class="kefunavitem"
:class="selnav == index ? 'selactive' : ''"
:data-id="index"
@click="selectnav"
v-for="(item, index) in navarr"
:key="index"
>{{ item }}</div>
</div>
<div class="quesname">如何加入唐元集,唐元集目前对各个岗位的薪资以及福利待遇</div>
<div class="quesname">如何加入唐元集,唐元集目前对各个岗位的薪资以及福利待遇</div>
</div>
<div class="kefucenterbox flexone">
<div class="courseboxitem kefuitem">
<div class="coursenameimg">
<img src="../../../assets/sucaiimg.png" alt />
<img src="../../../assets/anniu.png" alt class="rediaoplay" />
</div>
<div class="coursetext">
<div class="coursename">视频1</div>
</div>
</div>
<div class="courseboxitem kefuitem">
<div class="coursenameimg">
<img src="../../../assets/sucaiimg.png" alt />
<img src="../../../assets/anniu.png" alt class="rediaoplay" />
</div>
<div class="coursetext">
<div class="coursename">视频1</div>
</div>
</div>
</div>
<div class="suciabot">
<div class="sucaibtn">联系客服</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
selnav: 0,
navarr: [
"分类一",
"分类一",
"分类一",
"分类一",
"分类一",
"分类一",
"分类一",
"分类一",
"分类一",
"分类一",
"分类一"
]
}
}
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="xianshihui">
<img src="../../../assets/zizhi.png" alt />
<div class="xianshitext">
把我以前的战绩汇报给你,并不是要证明我有多大的本事,只是想告诉你一件事情,
如果你也想让自己的品牌突破瓶颈,业绩快速倍增,那么我敢肯定你来对了!
因为我把自己这些年的微商实战经验总结成了一套《微商实战课件》,并录制了
课程录音,内容绝对是干货中的干货,让你少走弯路!并且这套实战课件仅需599元,
一顿饭钱即可,还可以进群学习至少一年时间。 此刻,我知道你有所动心,但由于你
不知道实战课件中到底讲的是什么内容,所以你害怕现在支付599元! 不过,为了
不要让你因为犹豫而错失了机会(因为本次只限量招募100人),我给你一个超级跳板!
你现在只需要支付599元,然后获得
这一整套实战课件,看完你觉得不值,直接退你600元,你不但没有损失,
</div>
</div>
<div class="seeactivity">以展示全部,感谢您的观看与参与</div>
<div class="nextpage">上一页</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
.containerbox {
padding: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<div class="coursenav collectnav flexone">
<div
class="coursenavleft"
:class="selnav == 0 ? 'selactive' : ''"
:data-id="0"
@click="selectnav"
>帖子</div>
<div
class="coursenavleft"
:class="selnav == 1 ? 'selactive' : ''"
:data-id="1"
@click="selectnav"
>课程</div>
<div
class="coursenavleft"
:class="selnav == 2 ? 'selactive' : ''"
:data-id="2"
@click="selectnav"
>活动</div>
</div>
<!-- 课程 -->
<div class="coursebox" v-if="selnav ==1">
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/course.png" alt />
</div>
<div class="coursetext">
<div class="coursename">一个月减重20斤,健康减重没有副作用</div>
<div class="courseteacher">讲师:孙俪</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/course.png" alt />
</div>
<div class="coursetext">
<div class="coursename">一个月减重20斤,健康减重没有副作用</div>
<div class="courseteacher">讲师:孙俪</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/course.png" alt />
</div>
<div class="coursetext">
<div class="coursename">一个月减重20斤,健康减重没有副作用</div>
<div class="courseteacher">讲师:孙俪</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/course.png" alt />
</div>
<div class="coursetext">
<div class="coursename">一个月减重20斤,健康减重没有副作用</div>
<div class="courseteacher">讲师:孙俪</div>
</div>
</div>
</div>
<!-- 活动 -->
<div class="activitybox" v-if="selnav ==2">
<div class="activityimg">
<img src="../../../assets/spring.png" alt />
</div>
<div class="activityimg">
<img src="../../../assets/spring.png" alt />
</div>
<div class="activityimg">
<img src="../../../assets/spring.png" alt />
</div>
<div class="activityimg">
<img src="../../../assets/spring.png" alt />
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
selnav: 0
}
},
methods: {
selectnav(e) {
this.selnav = e.currentTarget.dataset.id;
}
}
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="opencoursetop flexone">
<div class="zhibo flexone" :class="selcourse==1?'courseactive':''" @click="chosecourse(1)">
<img src="../../../assets/zhibocourse.png" alt class="zhiboimg" v-if="selcourse==1" />
<img src="../../../assets/zhibogray.png" alt class="zhiboimg" v-else />
<div class="zhiboname">直播课</div>
</div>
<div
class="zhibo lubo flexone"
:class="selcourse==2?'courseactive':''"
:data-id="2"
@click="chosecourse(2)"
>
<img src="../../../assets/lubowhite.png" alt class="zhiboimg" v-if="selcourse==2" />
<img src="../../../assets/lubo.png" alt class="zhiboimg" v-else />
<div class="zhiboname">录播课</div>
</div>
</div>
<!-- 直播课程 -->
<div class="zhibotextbox" v-if="selcourse==1">
<div class="coursetitle flexone">
<div class="coursename">开课时间</div>
<div class="coursenameright" @click="showdate">
<input type="text" placeholder="开课时间" />
</div>
</div>
<div class="coursetitle flexone">
<div class="coursename">
直播标题
<img src="../../../assets/xuehua.png" alt class="xuehuaimg" />
</div>
<div class="coursenameright">
<input type="text" placeholder="直播标题" />
</div>
</div>
<div class="zhibocontent">
<div class="intro flexone">直播简介</div>
<div class="zhibotextbox">
<textarea name id cols="30" rows="10" placeholder="预设内容"></textarea>
</div>
</div>
<div class="coursetitle flexone">
<div class="coursename">
直播封面图
<img src="../../../assets/xuehua.png" alt class="xuehuaimg" />
</div>
</div>
<div class="courseimgbox">
<img src="../../../assets/addpub.png" alt class="addcourseimg" />
</div>
</div>
<!-- 录播课程 -->
<div class="zhibotextbox" v-if="selcourse==2">
<div class="coursetitle flexone">
<div class="coursename">
录播时间标题
<img src="../../../assets/xuehua.png" alt class="xuehuaimg" />
</div>
<div class="coursenameright">
<input type="text" placeholder="录播时间标题" />
</div>
</div>
<div class="coursetitle flexone">
<div class="coursename">
录播封面图
<img src="../../../assets/xuehua.png" alt class="xuehuaimg" />
</div>
</div>
<div class="courseimgbox">
<img src="../../../assets/addpub.png" alt class="addcourseimg" />
</div>
</div>
<!-- 直播时间 -->
<div class="register" v-if="zhibodate">
<van-datetime-picker
v-model="currentDate"
type="datetime"
title="选择完整时间"
:min-date="minDate"
:max-date="maxDate"
@confirm="sure"
@cancel="cancel"
/>
</div>
<!-- 开始录制 -->
<div class="kaishilu">开始录制</div>
</div>
</template>
<script>
import Vue from 'vue';
import { DatetimePicker } from 'vant';
Vue.use(DatetimePicker);
export default {
data() {
return {
selcourse: 1,
minDate: new Date(2020, 0, 1),
maxDate: new Date(2025, 10, 1),
currentDate: new Date(),
zhibodate: false
}
},
methods: {
chosecourse(event) {
console.log(event)
this.selcourse = event;
},
cancel() {
this.zhibodate = false
},
// 确定选择时间
sure(e) {
console.log(e)
var date = new Date()
// var hour=date.getHour()
let year = e.getFullYear();
var month = e.getMonth() + 1;
var date = e.getDate();
var hour = e.getHours()
var minute = e.getMinutes()
console.log(hour)
this.zhibodate = false
},
showdate() {
this.zhibodate = true
}
}
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<div class="picbox">
<img src="../../../assets/picdetail.png" alt />
<div class="touying">带投影版本</div>
</div>
<div class="suciabot">
<div class="sucaibtn">保存图片</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="companytopimg">
<img src="../../../assets/companytop.png" alt />
<div class="intro">
<div class="introtitle">赵庆慧邀您了解唐元集</div>
<div class="introtext flexone">
<img src="../../../assets/xiaolian.png" alt class="xiaoimg" />
<div class="introtitlename">亲爱的黄小丽,欢迎您走进唐元集!</div>
</div>
</div>
<div class="companytext">
<div class="comtexttop flexthree">
<div class="textleft flexone">
<div class="textleftheng"></div>
<div class="textyuan"></div>
</div>
<div class="textname">唐元集</div>
<div class="textleft flexone">
<div class="textkyuan"></div>
<div class="textrightheng"></div>
</div>
</div>
<div class="companyintrotext">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及配套产品
方案提供为主营业务的服务型企业。 公司坐落于杭州市滨江区,毗邻钱
塘江江畔上,借助杭州高新科技政策支持的便利,目前已经与多家海内外
知名上市企业强强合作,拥有九大生物实验室,数十位硕士、博士组成的
高学历研发团队,以此来保证唐元集的核心研发能力与业务创新能力。
唐元集每一款产品从原料到成品,都经超过300多项检验项目。每一款产
品投入市场前不仅会经过大量实验测试与验证,拥有众多获奖专利与认证。
产品生产工厂获得了获得NCF、GMP、ISO、HACCP、BRC等国际权威认证。
唐元集希望以科学的产品和专业的指导,帮助大家实现自我健康管理。
</div>
</div>
</div>
<div class="productimg">
<img src="../../../assets/productimg.png" alt />
<div class="zizhibox">
<div class="nameimg">
<img src="../../../assets/juxing.png" alt class="juxingone" />
<div class="nametext">唐元集益菌享瘦套组</div>
<div class="zizhilist flexone">
<div class="taozucontent">
唐元集益菌享瘦套组是以肠道益生菌群平衡为技术核心
,通过促进瘦子菌有效定殖,从根源上重造易瘦体质。
配合营养师在线服务,从营养学角度建立科学膳食体系,
提供个性化健康评估与指导。35天让你健康减脂塑型不复胖。
</div>
</div>
</div>
<div class="nameimgone youshione">
<img src="../../../assets/juxing.png" alt class="youshiimg" />
<div class="nametext">优势</div>
<div class="zizhilist">
<div class="jieshitext">
<div class="jieshititle">无需节食</div>
<div class="jieshicontent">
我们的瘦身顾问和专业营养师会制定合理的饮食方案,并给出科学健康的饮食指导
,科学控制能量差且必须保证足够营养,正常饮食,无需节食
</div>
</div>
<div class="jieshitext">
<div class="jieshititle">健康饮食</div>
<div class="jieshicontent">
唐元集所有产品都是食品,不是药,不是保健品,老人小孩都可以安全食用的,
有食品认证标志。
不挨饿、不控水、不运动、不反弹
</div>
</div>
<div class="jieshitext">
<div class="jieshititle">营养指导</div>
<div class="jieshicontent">
瘦身顾问35天全程陪伴+专业营养师为不同人群定制不同的方案,
及调整解决问题,帮助养成良好的减脂习惯,掌握减脂知识
,科学减脂,打造易瘦体质,不会复胖
</div>
</div>
<div class="productbotimg">
<img src="../../../assets/productbot.png" alt />
</div>
</div>
</div>
</div>
</div>
<div class="nextpage">下一页</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="videoimg">
<img src="../../../assets/videoimg.png" alt />
<img src="../../../assets/anniu.png" alt class="videobtn" />
</div>
<div class="productvideobox">
<div class="productname">唐元集产品宣传片</div>
<div class="productvideoimg">
<img src="../../../assets/producttui.png" alt />
<div class="chanpintuiboxpage">
<div class="nameimg">
<img src="../../../assets/juxing.png" alt class="yulan" />
<div class="nametext">产品预览</div>
<div class="zizhilist">
<div class="yulanimg">
<img src="../../../assets/yulanimg.png" alt />
</div>
</div>
</div>
</div>
</div>
<div class="flextwo shiyebot">
<div class="shibotleft">上一页</div>
<div class="shibotright">上一页</div>
</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
.productvideobox {
padding: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="fenxitop">唐元集品牌帮助小人物创业,轻资产创业,0风险开启素人创业之路 低投入 高回报 助力创业之路</div>
<div class="fenxione">
<img src="../../../assets/fenxione.png" alt />
</div>
<div class="fenxitwo">
<img src="../../../assets/fenxitwo.png" alt />
</div>
<div class="fenxithree">
<img src="../../../assets/fenxithree.png" alt />
</div>
<div class="seeactivity">点击下一页查看最新招商活动</div>
<div class="flextwo shiyebot">
<div class="shibotleft">上一页</div>
<div class="shibotright">上一页</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
.containerbox {
padding: 0.32rem;
box-sizing: border-box;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="shiyeimg">
<img src="../../../assets/shiyeyoushi.png" alt />
<div class="shiyebox">
<div class="shiyeitem">顶尖博士·博士研发团队</div>
<div class="shiyeitem">五人智能工厂,众多权威认证</div>
<div class="shiyeitem">深耕品牌与服务,渐收产品品质</div>
<div class="shiimg flexone">
<div class="shileftimg">
<img src="../../../assets/shileft.png" alt />
</div>
<div class="shileftimg">
<img src="../../../assets/shiright.png" alt />
</div>
</div>
<div class="wanshan">
<div class="shiyeitem">完善经销商培训,小白也能收获成功</div>
<div class="shiyeitem">0风险,纯货款,无需囤货</div>
<div class="shiyeitem">无代理费,无加盟费,无保证金</div>
<div class="shiyeitem">轻资产创业,0风险开启素人创业</div>
</div>
<div class="shiimg flexone">
<div class="shileftimg">
<img src="../../../assets/wanshanleft.png" alt />
</div>
<div class="shileftimg">
<img src="../../../assets/wanchanright.png" alt />
</div>
</div>
<div class="wanshan">
<div class="shiyeitem">一次授权,终生授权,没有月任务,不怕降级</div>
<div class="shiyeitem">不设限,有能力可以直接上总经销商</div>
<div class="shiyeitem">销售利润丰厚,详情经销商</div>
<div class="shiyeitem">成为公司合伙人,自己做老板,拥有自己的分公司</div>
</div>
<div class="hehuo">
<img src="../../../assets/hehuo.png" alt />
</div>
</div>
</div>
<div class="comtexttop flexthree zhaoshangtop">
<div class="textleft flexone">
<div class="textleftheng"></div>
<div class="textyuan"></div>
</div>
<div class="textname zhaoshangvideo">招商视频</div>
<div class="textleft flexone">
<div class="textkyuan"></div>
<div class="textrightheng"></div>
</div>
</div>
<div class="videoimg">
<img src="../../../assets/videoimg.png" alt />
<img src="../../../assets/anniu.png" alt class="videobtn" />
</div>
<div class="shibot flextwo">
<div class="shibotleft">上一页</div>
<div class="shibotright">上一页</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<!-- 搜索 -->
<div class="wordheadtop">
<div class="searchhead">
<div class="searchbox flexone">
<div class="searchimg">
<img src="../../../assets/search.png" alt />
</div>
<input type="text" placeholder="搜索你想要的素材" class="searchtext" @focus="enterword" />
</div>
</div>
<div class="coursenav flexone" v-if="showkeyword==false">
<div
class="coursenavleft"
:class="selnav == 0 ? 'selactive' : ''"
:data-id="0"
@click="selectnav"
>视频素材</div>
<div
class="coursenavleft"
:class="selnav == 1 ? 'selactive' : ''"
:data-id="1"
@click="selectnav"
>图片素材</div>
<div
class="coursenavleft"
:class="selnav == 2 ? 'selactive' : ''"
:data-id="2"
@click="selectnav"
>文字素材</div>
</div>
</div>
<div class="keyword flexone" v-if="showkeyword">
<div class="keyworditem">图片素材</div>
<div class="keyworditem">唐元集</div>
<div class="keyworditem">唐元集活动</div>
<div class="keyworditem">视频素材</div>
</div>
<div v-if="showkeyword==false">
<!-- 视频素材 -->
<div class="coursebox sucaicourse" v-if="selnav==0">
<div class="courseboxitem" @click="videodetail">
<div class="coursenameimg">
<img src="../../../assets/sucaiimg.png" alt />
<img src="../../../assets/anniu.png" alt class="rediaoplay" />
</div>
<div class="coursetext">
<div class="coursename">唐元集创新瑜伽操,让你身心平和</div>
<div class="courseteacher">减重经验</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/sucaiimg.png" alt />
<img src="../../../assets/anniu.png" alt class="rediaoplay" />
</div>
<div class="coursetext">
<div class="coursename">唐元集创新瑜伽操,让你身心平和</div>
<div class="courseteacher">减重经验</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/sucaiimg.png" alt />
<img src="../../../assets/anniu.png" alt class="rediaoplay" />
</div>
<div class="coursetext">
<div class="coursename">唐元集创新瑜伽操,让你身心平和</div>
<div class="courseteacher">减重经验</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/sucaiimg.png" alt />
<img src="../../../assets/anniu.png" alt class="rediaoplay" />
</div>
<div class="coursetext">
<div class="coursename">唐元集创新瑜伽操,让你身心平和</div>
<div class="courseteacher">减重经验</div>
</div>
</div>
</div>
<!-- 图片素材 -->
<div class="coursebox sucaicourse" v-if="selnav==1">
<div class="courseboxitem" @click="picdetail">
<div class="coursenameimg">
<img src="../../../assets/tupiansu.png" alt />
</div>
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/tupiansu.png" alt />
</div>
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/tupiansu.png" alt />
</div>
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursenameimg">
<img src="../../../assets/tupiansu.png" alt />
</div>
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
</div>
</div>
</div>
<!-- 文字素材 -->
<div class="coursebox sucaicourse" v-if="selnav==2">
<div class="courseboxitem" @click="textdetail">
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
<div class="sucaibox">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及
配套产品方案提供为主营业务的服务型企业。 公司坐
落于杭州市滨江区,毗邻钱塘江江畔上,借助杭州高新科
技政策支持的便利,目前已经与多家企业进行联合合作,
唐元集注定给减肥界带来新的冲击…
</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
<div class="sucaibox">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及
配套产品方案提供为主营业务的服务型企业。 公司坐
落于杭州市滨江区,毗邻钱塘江江畔上,借助杭州高新科
技政策支持的便利,目前已经与多家企业进行联合合作,
唐元集注定给减肥界带来新的冲击…
</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
<div class="sucaibox">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及
配套产品方案提供为主营业务的服务型企业。 公司坐
落于杭州市滨江区,毗邻钱塘江江畔上,借助杭州高新科
技政策支持的便利,目前已经与多家企业进行联合合作,
唐元集注定给减肥界带来新的冲击…
</div>
</div>
</div>
<div class="courseboxitem">
<div class="coursetext">
<div class="coursename">唐元集特约国际产品模特效果图1</div>
<div class="courseteacher">模特图片</div>
<div class="sucaibox">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及
配套产品方案提供为主营业务的服务型企业。 公司坐
落于杭州市滨江区,毗邻钱塘江江畔上,借助杭州高新科
技政策支持的便利,目前已经与多家企业进行联合合作,
唐元集注定给减肥界带来新的冲击…
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
selnav: 0,
showkeyword: false
}
},
methods: {
selectnav(e) {
this.selnav = e.currentTarget.dataset.id;
},
enterword() {
console.log(48834998)
this.showkeyword = true
},
videodetail() {
this.$router.push({
path: "/videosucaidetail",
// query: { testId: item.test_student_id }
});
},
picdetail() {
this.$router.push({
path: "/picsucaidetail",
// query: { testId: item.test_student_id }
});
},
textdetail() {
this.$router.push({
path: "/wenansucaidetail",
// query: { testId: item.test_student_id }
});
}
}
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="container">
<div class="usertop">
<div class="usertophead flextwo" @click="changeziliao">
<div class="usertopheadleft flexone">
<div class="userimg">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="username">欧阳娜娜</div>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow" />
</div>
<div class="userlsit flexsix">
<div class="userlistitem flexseven" @click="join(1)">
<img src="../../../assets/fatiezi.png" alt class="userlistimg" />
<div class="iserlistname">发帖子</div>
</div>
<div class="userlistitem flexseven" @click="join(2)">
<img src="../../../assets/joinus.png" alt class="userlistimg" />
<div class="iserlistname">加入我们</div>
</div>
<div class="userlistitem flexseven" @click="join(3)">
<img src="../../../assets/kefu.png" alt class="userlistimg" />
<div class="iserlistname">客服中心</div>
</div>
<div class="userlistitem flexseven" @click="join(4)">
<img src="../../../assets/jiangquan.png" alt class="userlistimg" />
<div class="iserlistname">获得奖券</div>
</div>
<div class="userlistitem flexseven" @click="join(5)">
<img src="../../../assets/collect.png" alt class="userlistimg" />
<div class="iserlistname">我的收藏</div>
</div>
</div>
</div>
<div class="kaikeitem flextwo" @click="jump(1)">
<div class="kaikeitemleft flexone">
<div class="courseimg">
<img src="../../../assets/kaike.png" alt />
</div>
<span class="kaiketext">去开课</span>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow" />
</div>
<div class="kaikeitem flextwo" @click="jump(2)">
<div class="kaikeitemleft flexone">
<div class="courseimg">
<img src="../../../assets/zuozhan.png" alt />
</div>
<span class="kaiketext">作战包</span>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow" />
</div>
<div class="kaikeitem flextwo" @click="jump(3)">
<div class="kaikeitemleft flexone">
<div class="courseimg">
<img src="../../../assets/sucai.png" alt />
</div>
<span class="kaiketext">素材</span>
</div>
<img src="../../../assets/grayrow.png" alt class="yourow" />
</div>
<tabBar v-bind:active="3" />
</div>
</template>
<script>
import tabBar from "@/components/views/tabBar.vue";
export default {
components: {
tabBar
},
data() {
return {
selnav: 3
};
},
methods: {
selcourse(e) {
console.log(37344);
console.log(e);
this.selnav = e.currentTarget.dataset.id;
},
// 修改资料
changeziliao() {
this.$router.push({
path: "/changeziliao",
// query: { testId: item.test_student_id }
});
},
jump(id) {
if (id == 1) {
this.$router.push({
path: "/opencourse",
// query: { testId: item.test_student_id }
});
} else if (id == 2) {
this.$router.push({
path: "/zuozhanbao",
// query: { testId: item.test_student_id }
});
} else if (id == 3) {
this.$router.push({
path: "/sucaibao",
// query: { testId: item.test_student_id }
});
}
},
// 上面跳转
join(id) {
if (id == 1) {
} else if (id == 2) {
this.$router.push({
path: "/joinus",
// query: { testId: item.test_student_id }
});
} else if (id == 3) {
this.$router.push({
path: "/kefucenter",
// query: { testId: item.test_student_id }
});
} else if (id == 4) {
this.$router.push({
path: "/coupon",
// query: { testId: item.test_student_id }
});
} else if (id == 5) {
this.$router.push({
path: "/mycollect",
// query: { testId: item.test_student_id }
});
}
}
}
};
</script>
<style>
@import "../../../style/usercenter.css";
</style>
... ...
<template>
<div class="container">
<div class="sharetop flextwo">
<div class="leftrow">
<img src="../../../assets/leftrow.png" alt />
</div>
<div class="sharemiddle">直播</div>
<div class="sharebtn">
<img src="../../../assets/sharebtn.png" alt />
</div>
</div>
<div class="messagelist">
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
<div class="messageitem flexone">
<div class="messageitemleft">
<img src="../../../assets/touxiang.png" alt />
</div>
<div class="messageitemright">
<div class="messagecontent">同学们大家准备好开始上课了 吗?让我们现在开始吧!</div>
</div>
</div>
<div class="messageitem messageitemk flexone">
<div class="messageitemrightk">
<div class="messagecontentk">亲,在的</div>
</div>
<div class="messageitemleftk">
<img src="../../../assets/touxiang.png" alt />
</div>
</div>
</div>
<div class="messagebot flextwo">
<img src="../../../assets/yuyin.png" alt class="zhibobtn" />
<img src="../../../assets/pic.png" alt class="zhibobtn" />
<img src="../../../assets/luyin.png" alt class="yuyinbtn" />
<img src="../../../assets/shangchuan.png" alt class="zhibobtn" />
<img src="../../../assets/kaiguan.png" alt class="zhibobtn" />
</div>
<div class="manypeople">
<img src="../../../assets/manypeople.png" alt class="manypeopleimg" />
8888
</div>
<!-- 直播结束了 -->
<div class="register" v-if="iszhibo">
<div class="zhiboover">
<div class="zhibovoertop">本次直播内容同步保存到录播</div>
<div class="zhiboque" @click="overvideo">同步到录音并结束</div>
</div>
</div>
<!-- 上传成功 -->
<div class="register" v-if="issuccess">
<div class="zhiboover">
<div class="zhibovoertop">
<img src="../../../assets/upsuccess.png" alt class="successimg" />
<div class="successname">上传成功</div>
</div>
<div class="zhiboque" @click="sureup">确认</div>
</div>
</div>
<!-- 开始录制 -->
<div class="register" style="z-index:999" v-if="beginlushow">
<div class="luwrap">
<div class="beginlu">开始录制</div>
<div>
<img src="../../../assets/beginlu.png" alt class="beginluimg" />
</div>
</div>
</div>
<!-- 正在录制 -->
<div class="register" style="z-index:999" v-if="zhengzailu">
<div class="luwrap">
<div class="beginlu">正在录音:59'</div>
<div>
<img src="../../../assets/zhengzailu.png" alt class="beginluimg" />
</div>
</div>
</div>
<!-- 录制过程 -->
<div class="register" style="z-index:999" v-if="luprocess">
<div class="luwrap">
<div class="beginlu">正在录音:59'</div>
<div class="flextwo chonglu">
<div class="relu">重录</div>
<div class="send">发送</div>
<div class="relu">试听</div>
</div>
</div>
</div>
<!-- 温馨提示 -->
<div class="register" style="z-index:999" v-if="chonglushow">
<div class="wentipswrap">
<div class="tipsname">温馨提示</div>
<div class="waittips">您确认舍弃该录音重新录制吗</div>
<div class="waitbot flexone">
<div class="waitbotleft">取消</div>
<div class="waitbotlright">重录</div>
</div>
</div>
</div>
<!-- 本次录音是否上传 -->
<div class="register" style="z-index:999" v-if="shanghcuanshow">
<div class="wentipswrap">
<div class="waittips benci">本次录音是否上传</div>
<div class="waitbot flexone">
<div class="waitbotleft">直接结束</div>
<div class="waitbotlright">上传录音</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
iszhibo: false,
issuccess: false,
beginlushow: false,
luprocess: false,
chonglushow: false,
shanghcuanshow: false
}
},
methods: {
overvideo() {
this.iszhibo = false
},
sureup() {
this.issuccess = false
}
}
}
</script>
<style scoped>
.waitbot {
border-top: 1px solid #f5f5f5;
margin-top: 0.48rem;
}
.waitbotlright {
width: 3.1rem;
height: 0.96rem;
text-align: center;
color: #579057;
font-size: 0.32rem;
line-height: 0.96rem;
}
.waitbotleft {
width: 3.1rem;
height: 0.96rem;
border-right: 1px solid #f5f5f5;
text-align: center;
color: #323233;
font-size: 0.32rem;
line-height: 0.96rem;
}
/* 温馨提示 */
.waittips {
color: #7d7e80;
font-size: 0.28rem;
text-align: center;
margin-top: 0.16rem;
}
.tipsname {
color: #323233;
font-size: 0.32rem;
font-weight: bold;
text-align: center;
margin-top: 0.48rem;
text-align: center;
}
.benci {
margin-top: 0.68rem;
}
.wentipswrap {
width: 6.22rem;
background: #ffffff;
border-radius: 0.08rem 0.08rem 0 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.chonglu {
padding: 0 0.84rem;
box-sizing: border-box;
margin-top: 0.2rem;
}
.relu {
width: 1.04rem;
height: 1.04rem;
border: 1px solid #72a970;
/* box-shadow: 0 0.04rem 0.36rem 0 rgba(125, 178, 121, 0.56); */
color: #5c945c;
font-size: 0.32rem;
text-align: center;
line-height: 1.04rem;
border-radius: 50%;
}
.send {
width: 1.6rem;
height: 1.6rem;
background: linear-gradient(135deg, #87bd87 1%, #4a834a);
box-shadow: 0 0.04rem 0.36rem 0 rgba(125, 178, 121, 0.56);
border-radius: 50%;
color: #ffffff;
font-size: 0.4rem;
text-align: center;
line-height: 1.6rem;
}
.beginlu {
color: #323233;
font-size: 0.28rem;
text-align: center;
}
.beginluimg {
width: 1.6rem;
height: 1.6rem;
font-size: 0;
margin-top: 0.16rem;
}
.luwrap {
padding: 0.4rem 0;
box-sizing: border-box;
text-align: center;
width: 100%;
position: fixed;
bottom: 0;
left: 0;
background: #fff;
z-index: 99999;
}
.successname {
color: #7d7e80;
font-size: 0.28rem;
margin-top: 0.16rem;
text-align: center;
}
.successimg {
width: 1.6rem;
height: 1.6rem;
font-size: 0;
}
.zhiboover {
width: 6.22rem;
background: #ffffff;
border-radius: 0.08rem 0.08rem 0 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.zhibovoertop {
padding: 0.48rem 0;
box-sizing: border-box;
border-bottom: 1px solid #f5f5f5;
color: #323233;
font-size: 0.28rem;
text-align: center;
}
.zhiboque {
color: #599158;
font-size: 0.32rem;
text-align: center;
padding: 0.24rem 0;
box-sizing: border-box;
}
.messagebot {
padding: 0 0.72rem;
box-sizing: border-box;
}
.zhibobtn {
width: 0.56rem;
height: 0.56rem;
font-size: 0;
}
.yuyinbtn {
width: 0.84rem;
height: 0.84rem;
font-size: 0;
}
.manypeople {
padding: 0.14rem 0.4rem;
color: #868686;
font-size: 0.28rem;
box-sizing: border-box;
opacity: 0.74;
background: #f7f7f7;
border-radius: 0.4rem;
box-shadow: 0 0.16rem 0.3rem 0 rgba(142, 190, 142, 0.33);
position: fixed;
bottom: 1.2rem;
right: 0.32rem;
z-index: 9;
}
.manypeopleimg {
width: 0.32rem;
height: 0.28rem;
font-size: 0;
}
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="sucaidetailimg">
<img src="../../../assets/sucaidetail.png" alt />
<img src="../../../assets/anniu.png" alt class="detailplay" />
</div>
<div class="sucaitext">唐元集创新瑜伽操,让你身心平和</div>
<div class="suciabot">
<div class="sucaibtn">下载素材</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="wenanbox">
<div class="wenanboxtitle">唐元集特约国际产品模特效果图1</div>
<div class="wenansectitle">模特图片</div>
<div class="wenandetailtext">
浙江唐元集健康管理有限公司是一家以线上化健康管理服务及配套
产品方案提供为主营业务的服务型企业。 公司坐落于杭州市滨江区,
毗邻钱塘江江畔上,借助杭州高新科技政策支持的便利,目前已经与
多家海内外知名上市企业强强合作,拥有九大生物实验室,数十位硕士、
博士组成的高学历研发团队,以此来保证唐元集的核心研发能力与业务创
新能力。 唐元集每一款产品从原料到成品,都经超过300多项检验项目
。每一款产品投入市场前不仅会经过大量实验测试与验证,拥有众多获奖
专利与认证。 产品生产工厂获得了获得NCF、GMP、ISO、HACCP、
BRC等国际权威认证。唐元集希望以科学的产品和专业的指导。
</div>
</div>
<div class="suciabot">
<div class="sucaibtn">复制文本</div>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
<template>
<div class="containerbox">
<div class="zuozhantop" @click="yixiang">
<div class="zuozhanimg">
<img src="../../../assets/yixiangdaili.png" alt />
</div>
<div class="yixiangname">意向顾问</div>
</div>
<div class="huozhename">或者</div>
<div class="zuozhantop">
<div class="zuozhanimg">
<img src="../../../assets/yixianggu.png" alt />
</div>
<div class="yixiangname">意向代理</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
yixiang() {
this.$router.push({
path: "/formsub",
// query: { testId: item.test_student_id }
});
}
}
}
</script>
<style scoped>
@import "../../../style/usercenter.css";
</style>
\ No newline at end of file
... ...
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from "vue";
import App from "./App";
import router from "./router";
import Vant from "vant";
import "vant/lib/index.css";
Vue.use(Vant);
Vue.config.productionTip = false;
import axios from "./utils/common.js";
if (sessionStorage.getItem("token")) {
axios.defaults.headers.common["token"] = sessionStorage.getItem("token");
}
Vue.prototype.$axios = axios;
sessionStorage.setItem("token", "89cf0730-59e2-4627-baa3-a4451454794b");
// router.beforeEach((to, from, next) => {
// const token = sessionStorage.getItem("token");
// console.log("我是token", token);
// console.log(to);
// console.log(next());
// if (!token) {
// if (to.path === "/login") {
// next();
// } else {
// sessionStorage.setItem("now_url", to.fullPath); //当前页url与参数放入缓存
// next("/login");
// }
// } else {
// next();
// }
// });
/* eslint-disable no-new */
new Vue({
el: "#app",
router,
components: { App },
template: "<App/>"
});
\ No newline at end of file
... ...
import Vue from "vue";
import Router from "vue-router";
// import HelloWorld from '@/components/HelloWorld'
import index from "@/components/views/course/index.vue";
Vue.use(Router);
export default new Router({
mode: "history",
routes: [{
path: "/",
name: "index",
component: index
},
{
path: "/society",
name: "society",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/society/society.vue"], resolve)
},
{
path: "/login",
name: "login",
meta: { title: "" },
component: resolve => require(["@/components/views/login.vue"], resolve)
},
{
path: "/activity",
name: "activity",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/activity/activity.vue"], resolve)
},
{
path: "/usercenter",
name: "usercenter",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/usercenter.vue"], resolve)
},
{
path: "/publish",
name: "publish",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/society/publish.vue"], resolve)
},
{
path: "/changeziliao",
name: "changeziliao",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/changeziliao.vue"], resolve)
},
{
path: "/opencourse",
name: "opencourse",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/opencourse.vue"], resolve)
},
{
path: "/zuozhanbao",
name: "zuozhanbao",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/zuozhanbao.vue"], resolve)
},
{
path: "/formsub",
name: "formsub",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/formsub.vue"], resolve)
},
{
path: "/sucaibao",
name: "sucaibao",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/sucaibao.vue"], resolve)
},
{
path: "/videosucaidetail",
name: "videosucaidetail",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/videosucaidetail.vue"], resolve)
},
{
path: "/picsucaidetail",
name: "picsucaidetail",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/picsucaidetail.vue"], resolve)
},
{
path: "/wenansucaidetail",
name: "wenansucaidetail",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/wenansucaidetail.vue"], resolve)
},
{
path: "/mycollect",
name: "mycollect",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/mycollect.vue"], resolve)
},
{
path: "/joinus",
name: "joinus",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/joinus.vue"], resolve)
},
{
path: "/applayjoin",
name: "applayjoin",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/applayjoin.vue"], resolve)
},
{
path: "/kefucenter",
name: "kefucenter",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/kefucenter.vue"], resolve)
},
{
path: "/coupon",
name: "coupon",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/coupon.vue"], resolve)
},
{
path: "/companyintro",
name: "companyintro",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/companyintro.vue"], resolve)
},
{
path: "/shiyeyoushi",
name: "shiyeyoushi",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/shiyeyoushi.vue"], resolve)
},
{
path: "/dailistory",
name: "dailistory",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/dailistory.vue"], resolve)
},
{
path: "/shiyefenxi",
name: "shiyefenxi",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/shiyefenxi.vue"], resolve)
},
{
path: "/menkanactivity",
name: "menkanactivity",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/menkanactivity.vue"], resolve)
},
{
path: "/formsubtwo",
name: "formsubtwo",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/formsubtwo.vue"], resolve)
},
{
path: "/productintro",
name: "productintro",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/productintro.vue"], resolve)
},
{
path: "/productvideo",
name: "productvideo",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/productvideo.vue"], resolve)
},
{
path: "/anlifenxi",
name: "anlifenxi",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/anlifenxi.vue"], resolve)
},
{
path: "/jianzhonganli",
name: "jianzhonganli",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/jianzhonganli.vue"], resolve)
},
{
path: "/zhibodetail",
name: "zhibodetail",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/course/zhibodetail.vue"], resolve)
},
{
path: "/yingyangdetail",
name: "yingyangdetail",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/course/yingyangdetail.vue"], resolve)
},
{
path: "/userzhibo",
name: "userzhibo",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/userzhibo.vue"], resolve)
},
{
path: "/calander",
name: "calander",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/activity/calander.vue"], resolve)
},
{
path: "/choujiang",
name: "choujiang",
meta: { title: "唐元集公众号" },
component: resolve =>
require(["@/components/views/usercenter/choujiang.vue"], resolve)
}
// {
// path: '/',
// name: 'HelloWorld',
// component: HelloWorld
// }
]
});
\ No newline at end of file
... ...
.my-swipe .van-swipe-item {
width: 100%;
height: 3.2rem;
}
.monthimg {
width: 6.86rem;
height: 2rem;
font-size: 0;
margin: 0.32rem auto 0;
position: relative;
}
.spring {
width: 6.86rem;
height: 2.88rem;
font-size: 0;
margin: 0.32rem auto 0
}
.seeactivity {
width: 1.26rem;
height: 0.5rem;
position: absolute;
top: 0.32rem;
right: 0.24rem;
}
\ No newline at end of file
... ...
.courseitem {
padding: 0.24rem 0.32rem;
box-sizing: border-box;
margin-bottom: 0.16rem;
background: #fff;
}
.courseimg {
width: 2.4rem;
height: 1.46rem;
font-size: 0;
flex: 0 0 auto;
}
.coursetitle {
color: #02170b;
font-size: 0.32rem;
font-weight: bold;
width: 4.4rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.zhiimg {
width: 0.34rem;
height: 0.34rem;
}
.zhiname {
color: #e1b16d;
font-size: 0.28rem;
margin-left: 0.06rem;
}
.morepeople {
width: 2.64rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #666e69;
font-size: 0.28rem;
}
.knowmore {
color: #4d864d;
font-size: 0.28rem;
}
.courseright {
margin-left: 0.16rem;
}
.zhibo {
margin-top: 0.18rem;
}
.know {
margin-top: 0.18rem;
}
/* 头部切换 */
.coursenav {
background: #fff;
margin-top: 0.32rem;
padding: 0.24rem 0;
box-sizing: border-box;
}
.coursenavleft {
color: #b5bfba;
font-size: 0.28rem;
width: 3.75rem;
text-align: center;
}
.selactive {
position: relative;
color: #599158;
}
.selactive::after {
display: block;
content: "";
width: 0.4rem;
height: 0.02rem;
background: #599158;
position: absolute;
bottom: -0.2rem;
left: 50%;
transform: translateX(-50%);
}
/* 课程 */
.courseboxk {
display: flex;
flex-wrap: wrap;
padding: 0.24rem 0.28rem;
box-sizing: border-box;
margin-bottom: 1.2rem;
}
.courseboxitem {
width: 3.35rem;
margin-bottom: 0.16rem;
}
.courseboxitem:nth-child(2n) {
margin-left: 0.17rem;
}
.coursenameimg {
width: 3.35rem;
font-size: 0;
}
.coursetext {
width: 3.35rem;
padding: 0.26rem 0.24rem;
box-sizing: border-box;
background: #fff;
}
.coursename {
color: #02170b;
font-size: 0.28rem;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
margin-top: 0.1rem;
}
.coursetitle {
color: #02170b;
font-size: 0.28rem;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
.courseteacher {
color: #666e69;
font-size: 0.24rem;
margin-top: 0.08rem;
}
.knowlagename {
color: #666e69;
}
\ No newline at end of file
... ...
.coursenav {
width: 100%;
overflow-x: scroll;
background: #fff;
padding: 0.24rem 0.58rem;
box-sizing: border-box;
}
.coursenavleft {
color: #b5bfba;
font-size: 0.28rem;
text-align: center;
flex: 0 0 auto;
margin-right: 0.52rem;
}
.selactive {
position: relative;
color: #599158;
}
.selactive::after {
display: block;
content: "";
width: 0.4rem;
height: 0.02rem;
background: #599158;
position: absolute;
bottom: -0.2rem;
left: 50%;
transform: translateX(-50%);
}
/* 社区盒子 */
.societyitem {
width: 6.86rem;
background: #ffffff;
border-radius: 0.08rem;
box-shadow: 0 0.26rem 0.44rem 0 rgba(49, 144, 49, 0.08);
padding: 0.24rem 0.26rem;
box-sizing: border-box;
margin: 0.32rem auto 0;
}
.societytop {
position: relative;
}
.personimg {
width: 0.8rem;
height: 0.8rem;
font-size: 0;
border-radius: 50%;
}
.personname {
color: #02170b;
font-size: 0.28rem;
}
.persondate {
color: #b5bfba;
font-size: 0.24rem;
margin-top: 0.1rem;
}
.dingimg {
width: 0.4rem;
height: 0.6rem;
font-size: 0;
position: absolute;
top: -0.24rem;
right: 0;
}
.personright {
margin-left: 0.16rem;
}
.societytext {
color: #344039;
font-size: 0.32rem;
margin-top: 0.18rem;
}
.societyimg {
flex-wrap: wrap;
margin-top: 0.24rem;
}
.societyimgitem {
width: 2.02rem;
height: 2.02rem;
font-size: 0;
margin-right: 0.09rem;
margin-bottom: 0.16rem;
}
.jianzheng {
width: 1.56rem;
height: 0.44rem;
border-radius: 0.08rem;
font-size: 0.16rem;
line-height: 0.44rem;
margin-top: 0.32rem;
}
.jianzhengleft {
width: 0.36rem;
height: 0.44rem;
background: #5d9a5c;
color: #fff;
text-align: center;
border-radius: 0.08rem 0 0 0.08rem;
}
.jianzhengright {
width: 1.2rem;
height: 0.44rem;
background: #e6ebe6;
text-align: center;
color: #5d9a5c;
border-radius: 0 0.08rem 0.08rem 0;
}
.dianzanimg {
width: 0.32rem;
height: 0.32rem;
font-size: 0;
}
.number {
color: #7b7b7b;
font-size: 0.2rem;
margin-left: 0.18rem;
margin-top: 0.1rem;
}
.dianitem {
margin-right: 0.58rem;
}
.dainzan {
margin-top: 0.26rem;
}
.gantanimg {
width: 2.4rem;
height: 2.4rem;
background: rgba(50, 50, 51, 0.7);
border-radius: 0.08rem;
position: absolute;
left: 50%;
top: 50%;
text-align: center;
transform: translateX(-50%);
}
.ganimg {
width: 0.72rem;
height: 0.72rem;
margin-top: 0.58rem;
}
.gantantext {
color: #fff;
font-size: 0.28rem;
text-align: center;
margin-top: 0.16rem;
}
.addimg {
width: 0.88rem;
height: 0.88rem;
font-size: 0;
position: absolute;
right: 0.32rem;
bottom: 1.32rem;
}
/* 发布 */
.publishitem {
padding: 0.26rem;
box-sizing: border-box;
border-bottom: 1px solid #eee;
}
.publeft {
color: rgba(50, 50, 51, 1);
font-size: 0.28rem;
}
.pubpicker {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
z-index: 99;
}
.kindname {
color: #999999;
font-size: 0.28rem;
margin-left: 0.32rem;
}
.enterkind {
width: 100%;
height: 5rem;
padding: 0.18rem 0.32rem;
color: #999999;
font-size: 0.28rem;
box-sizing: border-box;
}
.enterkind textarea {
width: 100%;
border: none;
outline: none;
}
.pubimg {
width: 1.78rem;
height: 1.78rem;
font-size: 0;
}
.pubsuccess {
width: 6.22rem;
height: 2.72rem;
background: #ffffff;
border-radius: 0.08rem 0.08rem 0 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.pubsuccessname {
color: #323233;
font-size: 0.28rem;
text-align: center;
padding: 0.68rem 0.48rem 0.68rem;
box-sizing: border-box;
border-bottom: 1px solid #eee;
}
.pubsure {
height: 0.96rem;
text-align: center;
line-height: 0.96rem;
color: #4f874f;
text-align: center;
font-size: 0.28rem;
}
\ No newline at end of file
... ...
.usertop {
padding: 0.32rem;
box-sizing: border-box;
background: #fff;
}
.userimg {
width: 1.52rem;
height: 1.52rem;
}
.username {
color: #323233;
font-size: 0.36rem;
margin-left: 0.32rem;
}
.usertophead {
padding-bottom: 0.32rem;
border-bottom: 1px solid #eee;
}
.userlsit {
padding: 0.35rem 0;
}
.userlistimg {
width: 0.7rem;
height: 0.7rem;
}
.iserlistname {
color: #344039;
font-size: 0.24rem;
text-align: center;
}
.kaikeitem {
padding: 0.32rem;
box-sizing: border-box;
margin-top: 0.16rem;
background: #fff;
}
.courseimg {
width: 0.44rem;
height: 0.44rem;
font-size: 0;
}
.kaiketext {
color: #454e57;
font-size: 0.32rem;
margin-left: 0.16rem;
}
.kaiketext {
color: #454e57;
font-size: 0.32rem;
margin-left: 0.16rem;
}
/* 修改资料 */
.changeitem {
padding: 0.44rem 0.32rem;
box-sizing: border-box;
background: #fff;
border-bottom: 1px solid #eee;
}
.headimg {
width: 0.78rem;
height: 0.78rem;
border-radius: 50%;
margin-right: 0.24rem;
}
.changeitemleft {
color: #02170b;
font-size: 0.32rem;
}
.opencoursetop {
padding: 0.38rem 0.32rem;
box-sizing: border-box;
}
.zhibo {
color: #666e69;
width: 3.35rem;
height: 1.6rem;
background: #fff;
font-size: 0.4rem;
border-radius: 0.08rem;
justify-content: center;
}
.zhiboimg {
width: 0.6rem;
height: 0.6rem;
font-size: 0;
}
.lubo {
margin-left: 0.17rem;
}
.zhiboname {
margin-left: 0.16rem;
/* margin-top: 0.1rem */
}
.courseactive {
background: #5e955d;
color: #fff;
}
.coursetitle {
padding: 0.26rem 0.32rem;
box-sizing: border-box;
}
.coursename {
color: #323233;
font-size: 0.28rem;
position: relative;
display: inline-block;
}
.xuehuaimg {
width: 0.15rem;
height: 0.15rem;
font-size: 0;
position: absolute;
top: 0;
right: -0.2rem;
}
.coursenameright {
color: #969799;
font-size: 0.28rem;
margin-left: 0.33rem;
}
.coursetitle {
background: #fff;
}
.addimg {
margin-top: 0.22rem;
}
.addcourseimg {
width: 1.78rem;
height: 1.78rem;
}
.zhibofeng {
padding-top: 0;
}
.courseimgbox {
padding: 0.22rem 0.32rem;
background: #fff;
}
.zhibotextbox {
width: 100%;
height: 2rem;
margin-top: 0.24rem;
}
.zhibotextbox textarea {
width: 100%;
height: 100%;
border: none;
outline: none;
color: #999999;
font-size: 0.28rem;
}
.intro {
color: #323233;
font-size: 0.28rem;
}
.zhibocontent {
padding: 0.26rem 0.32rem;
box-sizing: border-box;
background: #fff;
}
.van-picker {
width: 100%;
position: absolute;
bottom: 0;
left: 0;
}
/* 作战包 */
.zuozhanimg {
width: 4rem;
height: 2.6rem;
font-size: 0;
margin: 1.56rem auto 0;
}
.yixiangname {
width: 3.8rem;
height: 0.88rem;
background: linear-gradient(135deg, #87bd87 1%, #4a834a);
border-radius: 0.04rem;
color: #fff;
font-size: 0.32rem;
text-align: center;
line-height: 0.88rem;
margin: 0.26rem auto 0;
}
.huozhename {
color: #5e955d;
font-size: 0.24rem;
text-align: center;
margin-top: 1.56rem;
}
/* 表单信息 */
.formbox {
padding: 0 0.32rem;
box-sizing: border-box;
background: #fff;
}
.formitem {
padding: 0.26rem 0;
box-sizing: border-box;
border-bottom: 1px solid #eee;
}
.formitemleft {
color: #323233;
font-size: 0.28rem;
}
.formitemright {
color: #969799;
font-size: 0.28rem;
margin-left: 0.32rem;
}
.downrow {
transform: rotate(90deg) !important;
}
.chaungyetitle {
padding: 0.26rem 0;
box-sizing: border-box;
color: #323233;
font-size: 0.28rem;
}
.chuangyetext {
padding: 0.16rem 0;
box-sizing: border-box;
height: 1.78rem;
}
.chuangyetext textarea {
width: 100%;
height: 100%;
border: none;
outline: none;
color: #999999;
font-size: 0.28rem;
}
.nextstep {
width: 6.86rem;
height: 0.88rem;
background: linear-gradient(135deg, #87bd87 1%, #4a834a);
border-radius: 4px;
border-radius: 0.08rem;
color: #fff;
font-size: 0.34rem;
text-align: center;
line-height: 0.88rem;
margin: 1.56rem auto 0.48rem;
}
/* 素材包 */
.searchhead {
/* margin-top: 0.8rem */
/* border-bottom: 1px solid #f5f5f5 */
}
/* 头部切换 */
.coursenav {
background: #fff;
padding: 0.24rem 0;
box-sizing: border-box;
width: 100%;
}
.collectnav {
position: fixed;
top: 0;
left: 0;
}
.coursenavleft {
color: #b5bfba;
font-size: 0.28rem;
width: 2.5rem;
text-align: center;
}
.selactive {
position: relative;
color: #599158;
}
.selactive::after {
display: block;
content: "";
width: 0.4rem;
height: 0.02rem;
background: #599158;
position: absolute;
bottom: -0.2rem;
left: 50%;
transform: translateX(-50%);
}
/* 底部列表 */
.coursebox {
display: flex;
flex-wrap: wrap;
padding: 0.24rem 0.28rem;
box-sizing: border-box;
margin-bottom: 1.2rem;
margin-top: 1.2rem;
}
.courseboxitem {
width: 3.35rem;
margin-bottom: 0.16rem;
}
.courseboxitem:nth-child(2n) {
margin-left: 0.17rem;
}
.coursenameimg {
width: 3.35rem;
height: 2.8rem;
font-size: 0;
position: relative;
}
.rediaoplay {
width: 0.8rem;
height: 0.8rem;
font-size: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.coursetext {
width: 3.35rem;
padding: 0.26rem 0.24rem;
box-sizing: border-box;
background: #fff;
}
.coursename {
color: #02170b;
font-size: 0.28rem;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
/* margin-top: 0.26rem; */
}
.courseteacher {
color: #666e69;
font-size: 0.24rem;
margin-top: 0.08rem;
}
.knowlagename {
color: #666e69;
}
/* 素材详情 */
.sucaidetailimg {
width: 100%;
height: 5.3rem;
font-size: 0;
position: relative;
}
.detailplay {
width: 1.4rem;
height: 1.4rem;
font-size: 0;
position: absolute;
transform: translate(-50%, -50%);
}
.sucaitext {
color: #02170b;
font-size: 0.4rem;
padding: 0.36rem 0.32rem;
box-sizing: border-box;
margin-bottom: 1.2rem;
}
.suciabot {
width: 100%;
padding: 0.32rem;
box-sizing: border-box;
background: #fff;
position: absolute;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
}
.sucaibtn {
width: 6.86rem;
height: 0.88rem;
background: linear-gradient(135deg, #87bd87 1%, #4a834a);
border-radius: 4px;
border-radius: 0.08rem;
color: #fff;
font-size: 0.34rem;
color: #fff;
text-align: center;
line-height: 0.88rem;
}
.sucaibox {
width: 100%;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 9;
overflow: hidden;
color: #919391;
font-size: 0.2rem;
margin-top: 0.16rem;
}
/* 素材详情 */
.picbox {
width: 6.86rem;
position: relative;
}
.touying {
color: #ff0000;
font-size: 0.4rem;
text-align: right;
box-sizing: border-box;
margin-top: 0;
position: absolute;
bottom: 0.2rem;
right: 1.5rem;
}
.wenanbox {
width: 6.86rem;
background: #ffffff;
border-radius: 0.12rem;
margin: 0.32rem auto 0;
padding: 0.32rem;
box-sizing: border-box;
}
.wenandetailtext {
color: #666e69;
font-size: 0.32rem;
line-height: 1.5;
margin-top: 0.2rem;
margin-bottom: 1.2rem;
}
.wenanboxtitle {
color: #02170b;
font-size: 0.4rem;
font-weight: bold;
}
.wenansectitle {
color: #323233;
font-size: 0.32rem;
margin-top: 0.2rem;
}
/* 关键词搜索 */
.wordheadtop {
width: 100%;
background: #fff;
position: fixed;
top: 0;
left: 0;
}
.keyword {
padding: 0 0.32rem;
box-sizing: border-box;
background: #fff;
margin-top: 1.2rem;
flex-wrap: wrap;
}
.keyworditem {
padding: 0.12rem 0.32rem;
box-sizing: border-box;
background: #f7f8fa;
color: #323233;
font-size: 0.26rem;
text-align: center;
display: inline-block;
margin-right: 0.16rem;
border-radius: 0.04rem;
margin-bottom: 0.32rem;
}
.activityimg {
width: 6.86rem;
height: 2.88rem;
border-radius: 0.08rem;
margin: 0.32rem auto 0;
}
.activitybox {
margin-bottom: 0.5rem;
margin-top: 1.2rem;
}
.sucaicourse {
margin-top: 2rem;
}
/* 加入我们 */
.jointext {
padding: 0.32rem;
box-sizing: border-box;
color: #666e69;
font-size: 0.32rem;
line-height: 1.5;
}
.joinimg {
width: 100%;
height: 3.78rem;
font-size: 0;
}
/* 申请加入 */
.applayjoinbox {
padding: 0 0.32rem;
box-sizing: border-box;
}
.applayjoinitem {
padding: 0.26rem 0;
box-sizing: border-box;
border-bottom: 1px solid #eee;
}
.applayjoinleft {
color: #323233;
font-size: 0.28rem;
width: 1.5rem;
}
.applayjoinright {
margin-left: 0.16rem;
color: #969799;
font-size: 0.28rem;
}
.question {
height: 1.78rem;
}
.question textarea {
height: 100%;
padding: 0.16rem 0;
box-sizing: border-box;
color: #b5bfba;
font-size: 0.28rem;
}
/* 客服中心 */
.kefubox {
padding: 0 0.32rem 0.32rem;
box-sizing: border-box;
background: #fff;
}
.kefutitle {
color: #02170b;
font-size: 0.4rem;
margin-top: 0.24rem;
}
/* 客服头部 */
.coursenav {
width: 100%;
overflow-x: scroll;
background: #fff;
padding: 0.24rem 0;
box-sizing: border-box;
flex-wrap: nowrap;
}
.kefunavitem {
color: #b5bfba;
font-size: 0.28rem;
text-align: center;
flex: 0 0 auto;
margin-right: 0.52rem;
}
.selactive {
position: relative;
color: #599158;
}
.selactive::after {
display: block;
content: "";
width: 0.4rem;
height: 0.02rem;
background: #599158;
position: absolute;
bottom: -0.2rem;
left: 50%;
transform: translateX(-50%);
}
.quesname {
color: #344039;
font-size: 0.32rem;
margin-top: 0.32rem;
}
.kefucenterbox {
padding: 0 0.32rem;
box-sizing: border-box;
flex-wrap: wrap;
margin-top: 0.4rem;
}
.kefuitem:nth-child(2n) {
margin-left: 0.12rem;
}
/* 优惠券 */
.couponimg {
width: 6.86rem;
height: 2.42rem;
font-size: 0;
position: relative;
margin: 0.32rem auto 0;
}
.couponhezi {
position: absolute;
top: 0.32rem;
left: 2.4rem;
}
.moneysign {
color: #ffffff;
font-size: 0.28rem;
}
.moneynum {
color: #fff;
font-size: 0.5rem;
}
.useimg {
width: 1rem;
height: 0.75rem;
position: absolute;
right: 0.3rem;
top: 0.2rem;
}
.couponname {
color: #ffffff;
font-size: 0.32rem;
margin-top: 0.15rem;
}
.coupondate {
color: #ffffff;
font-size: 0.2rem;
margin-top: 0.15rem;
}
.moneynumber {
margin-top: 0.1rem;
}
/* 公司介绍 */
.companytopimg {
width: 100%;
height: 4rem;
font-size: 0;
position: relative;
}
.intro {
position: absolute;
top: 0.38rem;
left: 0.32rem;
}
.introtitle {
color: #ffffff;
font-size: 0.28rem;
text-align: center;
}
.xiaoimg {
width: 0.4rem;
height: 0.32rem;
}
.introtext {
margin-top: 0.16rem;
}
.introtitlename {
color: #ffffff;
font-size: 0.36rem;
margin-left: 0.08rem;
}
.companytext {
width: 6.86rem;
height: 8.16rem;
border-radius: 0.08rem;
background: #fff;
box-shadow: 0 0.2rem 0.44rem 0 rgba(117, 152, 117, 0.45);
position: absolute;
top: 1.8rem;
left: 0.32rem;
padding: 0.24rem 0.32rem;
box-sizing: border-box;
}
.textname {
color: #02170b;
font-size: 0.4rem;
font-weight: bold;
margin: 0 0.57rem;
}
.textleftheng {
width: 1.42rem;
height: 0.02rem;
background: linear-gradient(270deg, #518a51, rgba(255, 255, 255, 0.35));
}
.textrightheng {
width: 1.42rem;
height: 0.02rem;
background: linear-gradient(270deg, rgba(255, 255, 255, 0.35), #518a51);
}
.textyuan {
width: 0.08rem;
height: 0.08rem;
border-radius: 50%;
background: #518a51;
margin-left: 0.15rem;
}
.textkyuan {
width: 0.08rem;
height: 0.08rem;
border-radius: 50%;
background: #518a51;
margin-right: 0.15rem;
}
.companyintrotext {
color: #63636b;
font-size: 0.24rem;
margin-top: 0.24rem;
line-height: 2;
}
.fenwrap {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: right;
}
.chahao {
width: 0.48rem;
height: 0.48rem;
}
.fenimg {
width: 6.22rem;
height: 2.92rem;
font-size: 0;
position: relative;
}
.fenname {
color: #63636b;
font-size: 0.28rem;
top: 0.76rem;
left: 0.28rem;
position: absolute;
top: 0.76rem;
text-align: center;
width: 100%;
}
.fenbtn {
width: 2.12rem;
height: 0.8rem;
background: linear-gradient(133deg, #5d9f5d 6%, #2f7a2f 98%);
border-radius: 0.08rem;
box-shadow: 0 0.04rem 0.22rem 0px rgba(51, 125, 51, 0.6);
position: absolute;
bottom: 0.36rem;
left: 2.06rem;
color: #fff;
font-size: 0.32rem;
text-align: center;
line-height: 0.8rem;
}
.zizhi {
width: 6.86rem;
height: 25rem;
margin: 6.6rem auto 0;
position: relative;
}
.zizhibox {
position: absolute;
top: 1.5rem;
left: 0.32rem;
}
.nameimg {
/* width: 1.47rem; */
height: 0.06rem;
font-size: 0;
position: relative;
}
.nameimgone {
height: 0.06rem;
font-size: 0;
position: relative;
margin-top: 4.2rem;
}
.nameimgtwo,
.nameimgthree,
.nameimgfour {
margin-top: 4.2rem;
}
.nameimgfive {
margin-top: 2.8rem;
}
.nametext {
color: #02170b;
font-size: 0.32rem;
font-weight: bold;
position: absolute;
bottom: 0.1rem;
left: 0;
}
.zizhilistleft {
width: 3.62rem;
height: 2.8rem;
}
.zizhilistright {
width: 2.16rem;
height: 2.8rem;
font-size: 0;
margin-left: 0.38rem;
}
.zizhilist {
margin-top: 0.24rem;
}
.zhuceleft {
width: 1.7rem;
height: 2.4rem;
font-size: 0;
}
.zhucemiddle {
width: 2.26rem;
height: 3.2rem;
font-size: 0;
}
.zhuceright {
width: 1.7rem;
height: 2.4rem;
}
.shuileft {
width: 2rem;
height: 2.58rem;
font-size: 0;
}
.shuiright {
width: 3.92rem;
height: 2.8rem;
font-size: 0;
margin-left: 0.2rem;
}
.zhengshuleft,
.zhengshuright {
width: 1.4rem;
height: 2rem;
font-size: 0;
}
.zhengshumiddle {
width: 3.56rem;
height: 2rem;
font-size: 0;
}
.zizhileftk {
width: 1.64rem;
height: 2.3rem;
font-size: 0;
}
.zizhimiddlek {
width: 2.24rem;
height: 3.16rem;
font-size: 0;
}
.zizhirightk {
width: 1.64rem;
height: 2.3rem;
font-size: 0;
}
.juxingone {
width: 2.5rem;
}
.juxingtwo {
width: 4.5rem;
}
.juxingthree {
width: 2.5rem;
}
.juxingfour {
width: 3.2rem;
}
.juxingfive {
width: 2.56rem;
}
.nextpage {
width: 6.86rem;
height: 0.88rem;
background: linear-gradient(135deg, #87bd87 1%, #4a834a);
border-radius: 4px;
border-radius: 0.08rem;
color: #fff;
font-size: 0.34rem;
text-align: center;
line-height: 0.88rem;
margin: 0.65rem auto 0.65rem;
}
/* 事业优势 */
.shiyeimg {
width: 6.86rem;
margin: 0.3rem auto 0;
position: relative;
}
.shiyebox {
position: absolute;
top: 1rem;
left: 0.32rem;
}
.shiyeitem {
color: #2e2e30;
font-size: 0.28rem;
position: relative;
padding-left: 0.2rem;
margin-bottom: 0.08rem;
}
.shiyeitem::before {
display: block;
content: "";
width: 0.08rem;
height: 0.08rem;
background: #fecf51;
border-radius: 50%;
position: absolute;
top: 0.11rem;
left: 0;
}
.shiimg {
margin-top: 0.24rem;
}
.shileftimg {
width: 3.08rem;
height: 2.06rem;
font-size: 0;
}
.wanshan {
margin-top: 0.4rem;
}
.hehuo {
width: 6.18rem;
height: 4.1rem;
font-size: 0;
margin-top: 0.2rem;
}
.zhaoshangvideo {
color: #518a51;
}
.zhaoshangtop {
margin-top: 0.4rem;
}
.videoimg {
width: 100%;
height: 5.3rem;
font-size: 0;
position: relative;
margin-top: 0.24rem;
}
.videobtn {
width: 1.04rem;
height: 1.04rem;
font-size: 0;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.shibot {
padding: 0.64rem 0.32rem;
box-sizing: border-box;
}
.shibotleft {
width: 3.36rem;
height: 0.88rem;
opacity: 0.7;
border: 1px solid #548d54;
border-radius: 0.04rem;
color: #4d864d;
font-size: 0.34rem;
text-align: center;
line-height: 0.88rem;
}
.shibotright {
width: 3.36rem;
height: 0.88rem;
background: linear-gradient(135deg, #87bd87 1%, #4a834a);
border-radius: 0.04rem;
color: #fff;
font-size: 0.34rem;
text-align: center;
line-height: 0.88rem;
}
.dailiimg {
width: 6.86rem;
height: 2.34rem;
font-size: 0;
position: relative;
}
.dailitext {
color: #2e2e30;
font-size: 0.28rem;
position: absolute;
top: 0.4rem;
left: 0.36rem;
line-height: 1.8;
}
.dailiimgk {
width: 6.84rem;
height: 5rem;
font-size: 0;
margin: 0.4rem auot 0;
}
.dailibot {
width: 100%;
position: fixed;
left: 0;
bottom: 0;
}
.fenxitop {
color: #2e2e30;
font-size: 0.28rem;
line-height: 1.5;
}
.fenxione {
width: 6.86rem;
height: 10.72rem;
font-size: 0;
margin-top: 0.24rem;
}
.fenxitwo {
width: 6.86rem;
height: 7.88rem;
font-size: 0;
margin-top: 0.24rem;
}
.fenxithree {
width: 6.86rem;
height: 4.42rem;
font-size: 0;
margin-top: 0.24rem;
}
.seeactivity {
color: #b9c9b9;
font-size: 0.24rem;
text-align: center;
margin-top: 0.24rem;
}
.shiyebot {
margin: 0.64rem 0;
}
.xianshihui {
width: 6.86rem;
margin: 0.32rem auto 0;
position: relative;
}
.xianshitext {
width: 6.22rem;
color: #2e2e30;
font-size: 0.28rem;
position: absolute;
top: 0.8rem;
left: 0.32rem;
line-height: 1.5;
}
/* 产品介绍 */
.productimg {
width: 6.86rem;
margin: 6.4rem auto 0;
position: relative;
}
.taozucontent {
width: 6.08rem;
color: #2e2e30;
font-size: 0.28rem;
margin-top: 0.24rem;
}
.youshiimg {
width: 1rem;
}
.jieshitext {
padding: 0.26rem;
box-sizing: border-box;
width: 6.2rem;
margin: 0.16rem auto 0;
border: 1px solid #759875;
border-radius: 0.08rem;
}
.jieshititle {
color: #497b49;
font-size: 0.28rem;
position: relative;
padding-left: 0.2rem;
}
.jieshititle::before {
display: block;
content: "";
width: 0.08rem;
height: 0.08rem;
border-radius: 50%;
background: #fed052;
position: absolute;
top: 0.11rem;
left: 0;
}
.jieshicontent {
color: #2e2e30;
font-size: 0.28rem;
width: 5.76rem;
margin: 0.16rem auto 0;
}
.youshione {
margin-top: 3.6rem;
}
.productbotimg {
width: 6.22rem;
height: 4.54rem;
font-size: 0;
margin: 0.64rem auto 0;
}
.productname {
color: #02170b;
font-size: 0.4rem;
font-weight: bold;
}
.productvideoimg {
width: 6.876rem;
position: relative;
}
.chanpintuiboxpage {
position: absolute;
top: 1.5rem;
left: 0.32rem;
}
.yulan {
width: 1.28rem;
}
.yulanimg {
width: 6.08rem;
height: 4.64rem;
font-size: 0;
margin: 0.16rem auto 0;
}
/* 案例分析 */
.anliimg {
width: 6.86rem;
height: 3.72rem;
font-size: 0;
position: relative;
}
.anlitext {
width: 6.16rem;
color: #2e2e30;
font-size: 0.28rem;
position: absolute;
top: 0.4rem;
left: 0.36rem;
line-height: 1.8;
}
.bianmei {
margin-top: 0.4rem;
}
.bianmeibox {
width: 6.86rem;
background: #ffffff;
border-radius: 0.08rem;
box-shadow: 0 0.2rem 0.44rem 0 rgba(117, 152, 117, 0.45);
padding: 0.4rem 0.32rem;
box-sizing: border-box;
margin-top: 0.32rem;
}
.bianmeiitem {
margin-bottom: 0.24rem;
width: 3rem;
}
.bianmeiitemname {
color: #02170b;
font-size: 0.32rem;
}
.tangname {
color: #4a8b4a;
font-size: 0.32rem;
margin: 0 0 0.24rem;
}
.anlivideo {
margin-top: 0.24rem;
}
.anlibot {
padding: 0 0.32rem;
box-sizing: border-box;
}
.tangleftimg {
width: 2.62rem;
height: 3.48rem;
font-size: 0;
}
.tangrightimg {
width: 3.8rem;
height: 5.06rem;
font-size: 0;
}
/* 减重分析 */
.jianzhongimg {
width: 6.86rem;
margin: 0.06rem auto 0;
}
.jianzhongbox {
position: absolute;
top: 1rem;
left: 0.7rem;
}
.fenxitext {
width: 6.22rem;
color: #2e2e30;
font-size: 0.28rem;
line-height: 1.8;
}
.jianfenimg {
width: 6.22rem;
height: 7.18rem;
font-size: 0;
margin-top: 0.16rem;
}
.fuwutop {
margin-top: 0.16rem;
}
.fangantext {
color: #2e2e30;
font-size: 0.28rem;
width: 6.08rem;
margin-top: 0.24rem;
}
.greentext {
width: 6.08rem;
color: #4a8b4a;
font-size: 0.24rem;
/* margin-top: 0.16rem; */
}
.fanganimg {
width: 6.08rem;
height: 4.42rem;
font-size: 0;
margin-top: 0.16rem;
margin-bottom: 0.16rem;
}
.lian {
width: 0.2rem;
height: 0.16rem;
}
.clicknext {
color: #b5bfba;
font-size: 0.2rem;
margin-left: 0.16rem;
}
.xiaolist {
margin-top: 0.32rem;
}
.jianzhong {
padding: 0 0.32rem;
box-sizing: border-box;
}
\ No newline at end of file
... ...
import Axios from "axios";
// 请求拦截
Axios.interceptors.request.use(
function(config) {
return config;
},
function(err) {
return Promise.reject(error);
}
);
// 响应拦截
Axios.interceptors.response.use(
function(response) {
//对响应数据做事情
console.log("请求成功", response);
if (response.data.code == 1) {
return response.data;
}
},
function(error) {
console.log(error);
return Promise.reject(error);
}
);
export default Axios;
\ No newline at end of file
... ...
export function getUrlKey(name) {
return (
decodeURIComponent(
(new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
location.href
) || [, ""])[1].replace(/\+/g, "%20")
) || null
);
}
// var _hmt = _hmt || [];
// (function() {
// var hm = document.createElement("script");
// hm.src = "https://hm.baidu.com/hm.js?d69dc4a4f1e4c8b072def28f52878379";
// var s = document.getElementsByTagName("script")[0];
// s.parentNode.insertBefore(hm, s);
// })();
\ No newline at end of file
... ...
// A custom Nightwatch assertion.
// The assertion name is the filename.
// Example usage:
//
// browser.assert.elementCount(selector, count)
//
// For more information on custom assertions see:
// http://nightwatchjs.org/guide#writing-custom-assertions
exports.assertion = function (selector, count) {
this.message = 'Testing if element <' + selector + '> has count: ' + count
this.expected = count
this.pass = function (val) {
return val === this.expected
}
this.value = function (res) {
return res.value
}
this.command = function (cb) {
var self = this
return this.api.execute(function (selector) {
return document.querySelectorAll(selector).length
}, [selector], function (res) {
cb.call(self, res)
})
}
}
... ...
require('babel-register')
var config = require('../../config')
// http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
src_folders: ['test/e2e/specs'],
output_folder: 'test/e2e/reports',
custom_assertions_path: ['test/e2e/custom-assertions'],
selenium: {
start_process: true,
server_path: require('selenium-server').path,
host: '127.0.0.1',
port: 4444,
cli_args: {
'webdriver.chrome.driver': require('chromedriver').path
}
},
test_settings: {
default: {
selenium_port: 4444,
selenium_host: 'localhost',
silent: true,
globals: {
devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
}
},
chrome: {
desiredCapabilities: {
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true
}
},
firefox: {
desiredCapabilities: {
browserName: 'firefox',
javascriptEnabled: true,
acceptSslCerts: true
}
}
}
}
... ...
// 1. start the dev server using production config
process.env.NODE_ENV = 'testing'
const webpack = require('webpack')
const DevServer = require('webpack-dev-server')
const webpackConfig = require('../../build/webpack.prod.conf')
const devConfigPromise = require('../../build/webpack.dev.conf')
let server
devConfigPromise.then(devConfig => {
const devServerOptions = devConfig.devServer
const compiler = webpack(webpackConfig)
server = new DevServer(compiler, devServerOptions)
const port = devServerOptions.port
const host = devServerOptions.host
return server.listen(port, host)
})
.then(() => {
// 2. run the nightwatch test suite against it
// to run in additional browsers:
// 1. add an entry in test/e2e/nightwatch.conf.js under "test_settings"
// 2. add it to the --env flag below
// or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
// For more information on Nightwatch's config file, see
// http://nightwatchjs.org/guide#settings-file
let opts = process.argv.slice(2)
if (opts.indexOf('--config') === -1) {
opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js'])
}
if (opts.indexOf('--env') === -1) {
opts = opts.concat(['--env', 'chrome'])
}
const spawn = require('cross-spawn')
const runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' })
runner.on('exit', function (code) {
server.close()
process.exit(code)
})
runner.on('error', function (err) {
server.close()
throw err
})
})
... ...
// For authoring Nightwatch tests, see
// http://nightwatchjs.org/guide#usage
module.exports = {
'default e2e tests': function (browser) {
// automatically uses dev Server port from /config.index.js
// default: http://localhost:8080
// see nightwatch.conf.js
const devServer = browser.globals.devServerURL
browser
.url(devServer)
.waitForElementVisible('#app', 5000)
.assert.elementPresent('.hello')
.assert.containsText('h1', 'Welcome to Your Vue.js App')
.assert.elementCount('img', 1)
.end()
}
}
... ...
{
"env": {
"jest": true
},
"globals": {
}
}
... ...
const path = require('path')
module.exports = {
rootDir: path.resolve(__dirname, '../../'),
moduleFileExtensions: [
'js',
'json',
'vue'
],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
transform: {
'^.+\\.js$': '<rootDir>/node_modules/babel-jest',
'.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
},
testPathIgnorePatterns: [
'<rootDir>/test/e2e'
],
snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
setupFiles: ['<rootDir>/test/unit/setup'],
mapCoverage: true,
coverageDirectory: '<rootDir>/test/unit/coverage',
collectCoverageFrom: [
'src/**/*.{js,vue}',
'!src/main.js',
'!src/router/index.js',
'!**/node_modules/**'
]
}
... ...
import Vue from 'vue'
Vue.config.productionTip = false
... ...
import Vue from 'vue'
import HelloWorld from '@/components/HelloWorld'
describe('HelloWorld.vue', () => {
it('should render correct contents', () => {
const Constructor = Vue.extend(HelloWorld)
const vm = new Constructor().$mount()
expect(vm.$el.querySelector('.hello h1').textContent)
.toEqual('Welcome to Your Vue.js App')
})
})
... ...