Commit a4ad4f7c by zhangmeng

init

parents
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-vue-jsx", "transform-runtime"]
}
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
/build/
/config/
/dist/
/node_modules/
/*.js
// https://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint'
},
env: {
browser: true,
},
extends: [
// https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
// consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
'plugin:vue/essential',
// https://github.com/standard/standard/blob/master/docs/RULES-en.md
'standard'
],
// required to lint *.vue files
plugins: [
'vue'
],
// add your custom rules here
rules: {
// ----------------------------------------------------静态检测----------------------------------------------------------
/**
* 静态检测:
* 以下基本位能够帮助发现代码错误的规则
* */
// 禁止与负零进行比较
'no-compare-neg-zero': 'error',
// 禁止将常量作为 if 或三元表达式的测试条件,比如 if (true), let foo = 0 ? 'foo' : 'bar'
'no-constant-condition': [
'error',
{
checkLoops: false
}
],
// 禁止在函数参数中出现重复名称的参数 【辅助检测】
'no-dupe-args': 'error',
// 禁止在对象字面量中出现重复名称的键名 【辅助检测】
'no-dupe-keys': 'error',
// 禁止出现空代码块 【可读性差】
'no-empty': [
'error',
{
allowEmptyCatch: true
}
],
// 禁止将 catch 的第一个参数 error 重新赋值 【重新赋值,error将没有意义】
'no-ex-assign': 'error',
// @fixable 禁止函数表达式中出现多余的括号,比如 let foo = (function () { return 1 }) 【一般不会这么写,可读性差】
'no-extra-parens': ['error', 'functions'],
// 禁止将一个函数申明重新赋值,如:
// function foo() {}
// foo = bar [静态检测:无意义]
'no-func-assign': 'error',
// 禁止在 if 内出现函数申明或使用 var 定义变量 [eg: if(var i=0;i<10;i++)]
'no-inner-declarations': ['error', 'both'],
// 禁止使用特殊空白符(比如全角空格),除非是出现在字符串、正则表达式或模版字符串中
'no-irregular-whitespace': [
'error',
{
skipStrings: true,
skipComments: false,
skipRegExps: true,
skipTemplates: true
}
],
// typeof 表达式比较的对象必须是 'undefined', 'object', 'boolean', 'number', 'string', 'function' 或 'symbol'
'valid-typeof': 'error',
// ----------------------------------------------------最佳实践----------------------------------------------------------
//
//
// 最佳实践
// 这些规则通过一些最佳实践帮助你避免问题
//
// 禁止函数的循环复杂度超过 20,【https://en.wikipedia.org/wiki/Cyclomatic_complexity】
'complexity': [
'error',
{
max: 20
}
],
// 不允许有空函数,除非是将一个空函数设置为某个项的默认值 【否则空函数并没有实际意义】
'no-empty-function': [
'error',
{
allow: [
'functions',
'arrowFunctions'
]
}
],
// 禁止修改原生对象 【例如 Array.protype.xxx=funcion(){},很容易出问题,比如for in 循环数组 会出问题】
'no-extend-native': 'error',
// @fixable 表示小数时,禁止省略 0,比如 .5 【可读性】
'no-floating-decimal': 'error',
// 禁止直接 new 一个类而不赋值 【 那么除了占用内存还有什么意义呢? @off vue语法糖大量存在此类语义 先手动关闭】
'no-new': 'off',
// 禁止使用 new Function,比如 let x = new Function("a", "b", "return a + b"); 【可读性差】
'no-new-func': 'error',
// 禁止将自己赋值给自己 [规则帮助检测]
'no-self-assign': 'error',
// 禁止将自己与自己比较 [规则帮助检测]
'no-self-compare': 'error',
// @fixable 立即执行的函数必须符合如下格式 (function () { alert('Hello') })() 【立即函数写法很多,这个是最易读最标准的】
'wrap-iife': [
'error',
'inside',
{
functionPrototypeMethods: true
}
],
// 禁止使用保留字作为变量名 [规则帮助检测保留字,通常ide难以发现,生产会出现问题]
'no-shadow-restricted-names': 'error',
// 禁止使用未定义的变量
'no-undef': [
'error',
{
typeof: false
}
],
// 定义过的变量必须使用 【正规应该是这样的,具体可以大家讨论】
'no-unused-vars': [
'error',
{
vars: 'all',
args: 'none',
caughtErrors: 'none',
ignoreRestSiblings: true
}
],
// 变量必须先定义后使用 【ps:涉及到es6存在不允许变量提升的问题,以免引起意想不到的错误,具体可以大家讨论】
'no-use-before-define': [
'error',
{
functions: false,
classes: false,
variables: false
}
],
// ----------------------------------------------------代码规范----------------------------------------------------------
/**
* 代码规范
* 有关【空格】、【链式换行】、【缩进】、【=、{}、()、首位空格】规范没有添加,怕大家一时间接受不了,目前所挑选的规则都是:保障我们的代码可读性、可维护性的
* */
// 变量名必须是 camelcase 风格的
// @off 【涉及到 很多 api 或文件名可能都不是 camelcase 先关闭】
'camelcase': 'off',
// @fixable 禁止在行首写逗号
'comma-style': ['error', 'last'],
// @fixable 一个缩进必须用两个空格替代
// @off 【不限制大家,为了关闭eslint默认值,所以手动关闭,off不可去掉】
'indent': 'off',
//@off 手动关闭//前面需要回车的规则
'spaced-comment': 'off',
//@off 手动关闭: 大括号前不允许回车
'no-trailing-spaces': 'off',
//@off 手动关闭: 不允许多行回车
'no-multiple-empty-lines': 'off',
//@off 手动关闭: 逗号钱必须加空格
'comma-spacing': 'off',
//@off 手动关闭: 冒号后必须加空格
'key-spacing': 'off',
// @fixable 结尾禁止使用分号
//@off [vue官方推荐无分号,不知道大家是否可以接受?先手动off掉]
// "semi": [2,"never"],
"semi": 'off',
// 代码块嵌套的深度禁止超过 5 层
'max-depth': ['error', 5],
// 回调函数嵌套禁止超过 4 层,多了请用 async await 替代
'max-nested-callbacks': ['error', 4],
// 函数的参数禁止超过 7 个
'max-params': ['error', 7],
// new 后面的类名必须首字母大写 【面向对象编程原则】
'new-cap': [
'error',
{
newIsCap: true,
capIsNew: false,
properties: true
}
],
// @fixable new 后面的类必须有小括号 【没有小括号、指针指过去没有意义】
'new-parens': 'error',
// @fixable 禁止属性前有空格,比如 foo. bar() 【可读性太差,一般也没人这么写】
'no-whitespace-before-property': 'error',
// @fixable 禁止 if 后面不加大括号而写两行代码 eg: if(a>b) a=0 b=0
'nonblock-statement-body-position': ['error', 'beside', { overrides: { while: 'below' } }],
// 禁止变量申明时用逗号一次申明多个 eg: let a,b,c,d,e,f,g = [] 【debug并不好审查、并且没办法单独写注释】
'one-var': ['error', 'never'],
// @fixable 【变量申明必须每行一个,同上】
'one-var-declaration-per-line': ['error', 'always'],
// ----------------------------------------------------ECMAScript 6----------------------------------------------------------
/**
* ECMAScript 6
* 这些规则与 ES6 有关 【请大家 尝试使用正确使用const和let代替var,以后大家熟悉之后可能会提升规则】
* */
// 禁止对定义过的 class 重新赋值
'no-class-assign': 'error',
// @fixable 禁止出现难以理解的箭头函数,比如 let x = a => 1 ? 2 : 3
'no-confusing-arrow': ['error', { allowParens: true }],
// 禁止对使用 const 定义的常量重新赋值
'no-const-assign': 'error',
// 禁止重复定义类
'no-dupe-class-members': 'error',
// 禁止重复 import 模块
'no-duplicate-imports': 'error',
//@off 以后可能会开启 禁止 var
'no-var': 'off',
// ---------------------------------被关闭的规则-----------------------
'radix': 'off',
'quotes': 'off',
'space-before-function-paren': [0, "always"],
'space-in-parens': [0, "never"],
"space-after-keywords": [0, "always"],
"func-call-spacing": [0, "never"]
}
}
.DS_Store
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
// to edit target browsers: use "browserslist" field in package.json
"autoprefixer": {}
}
}
# integral-mall
> A Vue.js project
## Build Setup
``` bash
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
```
For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
'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)
}
const createLintingRule = () => ({
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter'),
emitWarning: !config.dev.showEslintErrorsInOverlay
}
})
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: [
...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.(css|scss)$/,
loader: 'style!css!sass',
include: [resolve('src')]
},
{
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 = require('../config/prod.env')
const webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false
}
},
sourceMap: config.build.productionSourceMap,
parallel: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css'),
// Setting the following option to `false` will not extract CSS from codesplit chunks.
// Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
// It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
// increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
allChunks: true,
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: config.build.productionSourceMap
? { safe: true, map: { inline: false } }
: { safe: true }
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.HashedModuleIdsPlugin(),
// enable scope hoisting
new webpack.optimize.ModuleConcatenationPlugin(),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks (module) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity
}),
// This instance extracts shared chunks from code splitted chunks and bundles them
// in a separate chunk, similar to the vendor chunk
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'vendor-async',
children: true,
minChunks: 3
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
'use strict'
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/dmApi/':{
target:'http://gicdev.demogic.com/',
changeOrigin:true,
pathRewrite:{
'^/dmApi':''
}
}
},
// Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST
port: 8888, // 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-
// Use Eslint Loader?
// If true, your code will be linted during bundling and
// linting errors and warnings will be shown in the console.
useEslint: false,
// If true, eslint errors and warnings will also be shown in the error overlay
// in the browser.
// showEslintErrorsInOverlay: false,
/**
* 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: '/integral-mall/',
/**
* Source Maps
*/
productionSourceMap: false,
// https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map',
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}
}
'use strict'
module.exports = {
NODE_ENV: '"production"'
}
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/css/iconfont.css><link rel=stylesheet type=text/css href=static/css/common.css><link href=/integral-mall/static/css/app.c2e813e6ae86c7080f885907588f7340.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/integral-mall/static/js/manifest.003beacb9c9ae622c7f2.js></script><script type=text/javascript src=/integral-mall/static/js/vendor.567b5be279b1403c5cc7.js></script><script type=text/javascript src=/integral-mall/static/js/app.82a5a41a76952ec58a87.js></script></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
* http://cssreset.com
*/
html,
body,
div,
span,
applet,
object,
iframe,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video,
input,
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
padding: 0;
border: 0;
font-weight: normal;
vertical-align: baseline;
font-family:100%;
}
h1,
h2,
h3,
h4,
h5,
h6{
font-size:14px;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
/* custom */
a {
color: #7e8c8d;
text-decoration: none;
-webkit-backface-visibility: hidden;
}
li {
list-style: none;
}
::-webkit-scrollbar {
width: 5px;
height: 5px;
}
::-webkit-scrollbar-track-piece {
background-color: rgba(0, 0, 0, 0.2);
-webkit-border-radius: 6px;
}
::-webkit-scrollbar-thumb:vertical {
height: 5px;
background-color: rgba(125, 125, 125, 0.7);
-webkit-border-radius: 6px;
}
::-webkit-scrollbar-thumb:horizontal {
width: 5px;
background-color: rgba(125, 125, 125, 0.7);
-webkit-border-radius: 6px;
}
html,
body {
width: 100%;
min-height: 100%;
height: 100%;
/*background-color: #ffffff;*/
background-color: #fff;
box-sizing: border-box;
font-family:"PingFangSC";
}
body {
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
input:focus {
box-shadow: none;
outline: none;
}
a {
color: #5092e1;
}
a:hover{
color: #1e6cd5;
}
.fl{
float: left;
}
.fr{
float: right;
}
.el-table th{
background: #f1f3f7!important;
}
/*tab切换的线条大小*/
.el-tabs__nav-wrap::after{
height:1px!important;
}
/*搜索的删除按钮*/
.el-input .el-input__clear:hover {
color: #f25058!important;
}
/*自定义表格*/
/*表格start*/
.brand-table{
width:100%;
font-size:14px;
color:#606266;
}
.brand-table thead tr{
height:48px;
line-height:48px;
background: #f1f3f7;
text-align: left;
}
.brand-table thead th{
padding:0 15px;
}
.brand-table thead .sort{
position: relative;
display:inline-block;
width:40px;
}
.brand-table .sort .el-icon-caret-top{
position:absolute;
top:15px;
cursor: pointer;
color:#c0c4ce;
}
.brand-table .sort .el-icon-caret-bottom{
position: absolute;
top:22px;
cursor: pointer;
color:#c0c4ce;
}
.brand-table .sort .grayColor{
color:#606266;
}
.brand-table thead .el-icon-question{
color:#c0c4ce;
cursor: pointer;
font-size:14px;
}
.brand-table thead .el-icon-question:hover{
color:#909399;
}
.brand-table tbody tr{
border-bottom:1px solid #ebeef5;
}
.brand-table tbody td{
padding:20px 15px;
vertical-align: middle;
}
.brand-table .operate a{
margin-right:15px;
}
.brand-table .icon-move i{
font-size:22px;
cursor: pointer;
}
.brand-table tbody tr:first-child .el-icon-upload2{
color:#e6e6e6;
cursor:not-allowed;
}
.brand-table tbody tr:first-child .icon-up{
color:#e6e6e6;
cursor:not-allowed;
}
.brand-table tbody tr:last-child .icon-down{
color:#e6e6e6;
cursor:not-allowed;
}
.brand-table tbody tr:last-child .el-icon-download{
color:#e6e6e6;
cursor:not-allowed;
}
.icon-arrowdown:before{
font-size:19px;
vertical-align: top;
}
.icon-up:before{
display:inline-block;
transform: rotate(180deg);
font-size:19px;
vertical-align: top;
}
/*表格end*/
/*数据为空*/
.table-list-null{
text-align: center;
/*min-height:200px;*/
margin:70px 0;
}
.table-list-null i{
color:#a3adb6;
font-size:30px;
}
.table-list-null p{
font-size: 14px;
color: #a3adb6;
margin:14px 0;
}
@font-face {font-family: "iconfont";
src: url('../fonts/iconfont.eot?t=1527754741672'); /* IE9*/
src: url('../fonts/iconfont.eot?t=1527754741672#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
url('../fonts/iconfont.ttf?t=1527754741672') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('../fonts/iconfont.svg?t=1527754741672#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-arrowdown:before { content: "\e613"; }
.icon-guige:before { content: "\e9fa"; }
.icon-leimupinleifenleileibie--1:before { content: "\e600"; }
.icon-zhankai:before { content: "\e742"; }
.icon-shouqi:before { content: "\e743"; }
.icon-dingdan-:before { content: "\e67e"; }
.icon-shuxingguanli:before { content: "\e65d"; }
.icon-zhuzuoquan:before { content: "\e60f"; }
.icon-pinpai-:before { content: "\e6de"; }
.icon-icon_yunxiazai fz14:before { content: "\e6e8"; }
(function(window){var svgSprite='<svg><symbol id="icon-arrowdown" viewBox="0 0 1024 1024"><path d="M512 85.333333q17.664 0 30.165333 12.501333t12.501333 30.165333l0 665.002667 225.664-226.005333q12.330667-12.330667 30.336-12.330667 18.346667 0 30.506667 12.16t12.16 30.506667q0 18.005333-12.330667 30.336l-298.666667 298.666667q-12.330667 12.330667-30.336 12.330667t-30.336-12.330667l-298.666667-298.666667q-12.330667-12.330667-12.330667-30.336 0-18.346667 12.16-30.506667t30.506667-12.16q18.005333 0 30.336 12.330667l225.664 226.005333 0-665.002667q0-17.664 12.501333-30.165333t30.165333-12.501333z" ></path></symbol><symbol id="icon-guige" viewBox="0 0 1024 1024"><path d="M76.8128 960l268.7808-108.8128-160-166.3744L76.8128 960z m576-742.4064l-435.2192 435.2192 160 160 435.2192-435.2192-160-160z m-179.2192 96l-64-64-108.7808 115.2192L256 326.4064l115.1872-115.2192L230.4064 64 64 224l249.5936 249.5936 160-160zM166.4064 243.1872c-19.2192-19.1872-19.2192-51.1872 0-76.7808 19.1872-19.2192 57.5936-19.2192 76.7808 0 19.2192 19.1872 19.2192 57.5936 0 76.7808-19.1872 25.6256-51.1872 25.6256-76.7808 0zM960 230.4064l-160-160-115.1872 115.1872 160 160L960 230.4064zM793.5936 864l-44.7808-44.8128L864 710.4064l-51.1872-57.5936L697.5936 768l-44.7808-44.8128L768 608l-51.1872-51.1872-160 166.3744L793.5936 960l160-166.4064-44.7808-44.7808L793.5936 864z" ></path></symbol><symbol id="icon-leimupinleifenleileibie--1" viewBox="0 0 1024 1024"><path d="M352.903955 0h-231.41243C52.067797 0 0 52.067797 0 115.706215v231.412429c0 63.638418 52.067797 115.706215 115.706215 115.706215h231.412429c63.638418 0 115.706215-52.067797 115.706215-115.706215V115.706215c5.785311-63.638418-46.282486-115.706215-109.920904-115.706215z m46.282486 341.333333c0 34.711864-28.926554 57.853107-57.853108 57.853108H133.062147c-34.711864 0-57.853107-28.926554-57.853107-57.853108V127.276836c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271186c34.711864 0 57.853107 28.926554 57.853108 57.853107v214.056497zM902.508475 0h-231.41243c-63.638418 0-115.706215 52.067797-115.706214 115.706215v231.412429c0 63.638418 52.067797 115.706215 115.706214 115.706215h231.41243c63.638418 0 115.706215-52.067797 115.706214-115.706215V115.706215c5.785311-63.638418-52.067797-115.706215-115.706214-115.706215z m52.067796 341.333333c0 34.711864-28.926554 57.853107-57.853107 57.853108h-208.271187c-34.711864 0-57.853107-28.926554-57.853107-57.853108V127.276836c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271187c34.711864 0 57.853107 28.926554 57.853107 57.853107v214.056497zM352.903955 555.389831h-231.41243c-63.638418 0-115.706215 52.067797-115.706214 115.706214v231.41243c0 63.638418 52.067797 115.706215 115.706214 115.706214h231.41243c63.638418 0 115.706215-52.067797 115.706214-115.706214v-231.41243c0-63.638418-52.067797-115.706215-115.706214-115.706214z m46.282486 341.333333c0 34.711864-28.926554 57.853107-57.853108 57.853107H133.062147c-34.711864 0-57.853107-28.926554-57.853107-57.853107v-208.271187c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271186c34.711864 0 57.853107 28.926554 57.853108 57.853107v208.271187zM902.508475 555.389831h-231.41243c-63.638418 0-115.706215 52.067797-115.706214 115.706214v231.41243c0 63.638418 52.067797 115.706215 115.706214 115.706214h231.41243c63.638418 0 115.706215-52.067797 115.706214-115.706214v-231.41243c5.785311-63.638418-52.067797-115.706215-115.706214-115.706214z m52.067796 341.333333c0 34.711864-28.926554 57.853107-57.853107 57.853107h-208.271187c-34.711864 0-57.853107-28.926554-57.853107-57.853107v-208.271187c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271187c34.711864 0 57.853107 28.926554 57.853107 57.853107v208.271187z" fill="#707070" ></path></symbol><symbol id="icon-zhankai" viewBox="0 0 1089 1024"><path d="M535.744 455.936h-535.68v114.112h535.68V455.936z m489.28 389.952H1.28V960h1023.744v-114.112z m-260.096-145.472V320l260.096 190.208-260.096 190.208zM1025.024 64H2.624v116.096h1022.4V64z" fill="#979797" ></path></symbol><symbol id="icon-shouqi" viewBox="0 0 1088 1024"><path d="M489.536 455.936h535.68v114.112H489.6V455.936zM0.256 845.888H1024V960H0.256v-114.112z m260.096-145.472V320L0.256 510.208l260.096 190.208zM0.256 64h1022.4v116.096H0.256V64z" fill="#979797" ></path></symbol><symbol id="icon-dingdan-" viewBox="0 0 1024 1024"><path d="M739.328 956.928H330.752c-57.344 0-104.448-48.128-104.448-106.496V265.728c0-58.88 46.592-106.496 104.448-106.496h466.944c57.344 0 104.448 48.128 104.448 106.496v524.8l-162.816 166.4z" fill="#EBEDEF" ></path><path d="M793.088 37.376H230.912c-76.288 0-137.216 61.44-137.216 136.192v677.888c0 74.752 61.44 136.192 137.216 136.192H721.92c3.584 0 6.144-1.024 8.704-3.584l194.56-193.536c2.56-2.56 3.584-5.12 3.584-8.704V173.568c0.512-74.752-60.928-136.192-135.68-136.192zM135.68 837.12v-650.24c0-58.88 48.128-106.496 108.032-106.496h538.624c59.904 0 108.032 48.128 108.032 106.496v557.568h-148.48c-30.208 0-53.76 24.064-53.76 52.736v146.432H242.176c-58.88 0-106.496-47.616-106.496-106.496z m583.68 121.856V808.96c0-16.384 13.824-30.208 31.232-30.208h152.576l-183.808 180.224z" fill="#A3ADB6" ></path><path d="M335.872 336.384h353.28c7.68 0 12.288-8.192 12.288-20.48s-5.12-20.48-12.288-20.48h-353.28c-7.68 0-12.288 8.192-12.288 20.48s4.608 20.48 12.288 20.48z m0 202.24h353.28c7.68 0 12.288-8.192 12.288-20.48s-5.12-20.48-12.288-20.48h-353.28c-7.68 0-12.288 8.192-12.288 20.48s4.608 20.48 12.288 20.48z m163.84 148.992h-163.84c-7.68 0-12.288 8.192-12.288 20.48s5.12 20.48 12.288 20.48h163.84c7.68 0 12.288-8.192 12.288-20.48s-5.12-20.48-12.288-20.48z" fill="#A3ADB6" ></path></symbol><symbol id="icon-shuxingguanli" viewBox="0 0 1024 1024"><path d="M263.649 531.8v-9.311c-0.41-5.628-1.433-11.154-3.48-16.68-8.39-21.591-28.14-35.098-49.73-36.94h-8.903c-5.73 0.409-11.359 1.33-16.987 3.581-21.898 8.493-35.61 28.857-37.043 50.857v5.628l0.205 271.784v11.154c0.512 5.219 1.433 10.438 3.48 15.452 8.288 21.284 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.768 0 5.116-0.512 10.13-1.433 15.144-3.377 22.103-8.596 35.917-29.164 37.145-51.471v-3.786L263.65 531.8zM147.711 122.795v11.154c0.512 5.219 1.433 10.437 3.48 15.451 8.288 21.182 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.768 0 5.116-0.511 10.13-1.432 15.144-3.377 22.103-8.595 35.917-29.265 37.145-51.47V127.5l-0.307-64.467v-9.312c-0.409-5.628-1.432-11.153-3.479-16.68-8.493-21.59-28.345-35.2-49.936-36.94h-8.903c-5.73 0.41-11.358 1.33-16.986 3.582-21.898 8.493-35.61 28.856-37.043 50.857v5.628l0.307 62.625z m-65.08 205.475c0 16.066 3.171 32.234 9.413 47.071 6.14 14.838 15.247 28.55 26.708 39.909 11.359 11.358 25.07 20.465 39.908 26.707 14.838 6.14 31.006 9.414 47.071 9.414s32.234-3.172 47.071-9.414c14.838-6.14 28.55-15.247 39.908-26.707 11.359-11.359 20.466-25.07 26.708-39.909 6.14-14.837 9.414-31.005 9.414-47.07s-3.172-32.234-9.414-47.072c-6.14-14.837-15.247-28.55-26.708-39.908-11.358-11.358-25.07-20.465-39.908-26.707-14.837-6.14-31.005-9.312-47.07-9.312s-32.234 3.172-47.072 9.312-28.55 15.247-39.908 26.707c-11.358 11.359-20.466 25.07-26.708 39.908-6.242 14.838-9.414 30.904-9.414 47.071z m487.39 6.652v-9.312c-0.41-5.628-1.433-11.154-3.48-16.68-8.39-21.59-28.14-35.098-49.732-36.94h-8.902c-5.73 0.41-11.359 1.33-16.987 3.581-21.898 8.494-35.61 28.857-37.043 50.858v5.628l0.205 468.663v11.154c0.512 5.219 1.433 10.438 3.48 15.452 8.288 21.284 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.768 0 5.116-0.512 10.13-1.433 15.144-3.377 22.103-8.596 35.918-29.266 37.145-51.471v-3.786l-0.409-470.506zM389 123.1c0 16.066 3.172 32.233 9.415 47.071 6.14 14.838 15.246 28.55 26.707 39.908 11.359 11.359 25.07 20.466 39.908 26.708 14.838 6.14 31.006 9.414 47.071 9.414s32.234-3.172 47.071-9.414c14.838-6.14 28.55-15.247 39.908-26.708 11.359-11.358 20.466-25.07 26.708-39.908 6.14-14.838 9.414-31.005 9.414-47.071s-3.172-32.233-9.414-47.071c-6.14-14.838-15.247-28.55-26.708-39.908-11.358-11.359-25.07-20.466-39.908-26.708C544.336 3.274 528.168 0 512.103 0s-32.234 3.172-47.072 9.414c-14.837 6.14-28.55 15.247-39.908 26.708-11.358 11.358-20.465 25.07-26.707 39.908-6.243 14.94-9.415 31.005-9.415 47.071z m371.35 199.643v11.153c0.512 5.22 1.433 10.438 3.48 15.554 8.288 21.182 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.665 0 5.117-0.511 10.13-1.432 15.145-3.377 22.103-8.595 35.917-29.265 37.145-51.47v-3.787l-0.307-264.416v-9.415c-0.41-5.628-1.433-11.153-3.48-16.68-8.39-21.59-28.242-35.2-49.833-36.94h-8.903c-5.73 0.41-11.358 1.33-16.986 3.582-21.898 8.493-35.61 28.856-37.043 50.857v5.628l0.307 262.575z m115.938 415.248v-9.414c-0.41-5.628-1.433-11.154-3.48-16.68-8.39-21.59-28.14-35.098-49.73-36.838h-8.903c-5.73 0.41-11.359 1.33-16.987 3.582-21.898 8.493-35.61 28.856-37.043 50.857v5.628l0.205 65.695v11.154c0.512 5.218 1.433 10.437 3.48 15.451 8.288 21.285 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.665 0 5.117-0.512 10.13-1.433 15.145-3.377 22.103-8.595 35.917-29.266 37.145-51.47v-3.787l-0.307-67.537zM695.27 529.754c0 16.066 3.172 32.233 9.414 47.071 6.14 14.838 15.247 28.55 26.708 39.908 11.358 11.359 25.07 20.466 39.908 26.708 14.838 6.14 31.006 9.414 47.071 9.414s32.234-3.172 47.071-9.414c14.838-6.14 28.55-15.247 39.908-26.708 11.359-11.358 20.466-25.07 26.708-39.908 6.14-14.838 9.414-31.005 9.414-47.071s-3.172-32.233-9.414-47.071c-6.14-14.838-15.247-28.55-26.708-39.908-11.358-11.359-25.07-20.466-39.908-26.708-14.837-6.14-31.005-9.414-47.07-9.414s-32.234 3.172-47.072 9.414c-14.838 6.14-28.55 15.247-39.908 26.708-11.358 11.358-20.466 25.07-26.708 39.908-6.242 14.838-9.414 30.903-9.414 47.071z m0 0" ></path></symbol><symbol id="icon-zhuzuoquan" viewBox="0 0 1024 1024"><path d="M828.3 195.7C742.1 110.3 632.7 65.1 512 65.1c-119.6 0-232 46.4-316.3 130.6C110.3 282 65.1 391.3 65.1 512c0 121.5 45.1 230.8 130.6 316.3 83.5 84.3 195.9 130.6 316.3 130.6 121.5 0 230.8-45.2 316.3-130.6 85.5-85.5 130.6-194.8 130.6-316.3 0-120.7-45.1-230-130.6-316.3z m-37.5 595.4c-36.2 36.2-78.4 64.6-125.4 84.4-48.6 20.5-100.3 30.9-153.4 30.9-53.2 0-104.8-10.4-153.4-30.9-47-19.9-89.2-48.3-125.4-84.4-74.6-74.5-115.6-173.6-115.6-279.1 0-217.5 176.9-394.5 394.5-394.5 217.5 0 394.5 176.9 394.5 394.5-0.1 105.4-41.2 204.6-115.8 279.1z m0 0" ></path><path d="M646.7 599.7c-28.2 39.2-73.6 65.8-125.3 65.8-84.6 0-155.1-68.9-155.1-155.1 0-86.2 68.9-155.1 155.1-155.1 51.7 0 97.1 25.1 125.3 65.8h92.4c-36-86.2-119.1-145.7-217.7-145.7-130 0-236.5 106.5-236.5 236.5s106.5 236.5 236.5 236.5c98.7 0 183.3-61.1 217.7-145.7h-92.4v-3z m0 0" ></path></symbol><symbol id="icon-pinpai-" viewBox="0 0 1024 1024"><path d="M512 20.48C241.152 20.48 20.48 241.152 20.48 512s220.672 491.52 491.52 491.52 491.52-220.672 491.52-491.52-220.672-491.52-491.52-491.52z m0 912.896c-232.448 0-421.376-188.928-421.376-421.376S279.552 90.624 512 90.624s421.376 188.928 421.376 421.376-188.928 421.376-421.376 421.376z m245.76-526.848c0-96.768-78.848-175.616-175.616-175.616H301.568c-19.456 0-35.328 15.872-35.328 35.328 0 19.456 15.872 35.328 35.328 35.328h281.088c57.856 0 105.472 47.104 105.472 105.472s-47.104 105.472-105.472 105.472H406.528V406.528c0-19.456-15.872-35.328-35.328-35.328-19.456 0-35.328 15.872-35.328 35.328v315.904h-35.328c-19.456 0-35.328 15.872-35.328 35.328s15.872 35.328 35.328 35.328h140.288c19.456 0 35.328-15.872 35.328-35.328s-15.872-35.328-35.328-35.328h-35.328v-140.288h86.528l130.048 195.072c1.024 1.536 2.048 2.56 3.584 4.096l1.536 1.536c3.072 2.56 6.144 5.12 9.728 6.656 0.512 0.512 1.536 0.512 2.56 1.024 4.096 1.536 8.192 2.56 12.288 2.56H721.92c19.456 0 35.328-15.872 35.328-35.328s-15.872-35.328-35.328-35.328h-51.2l-93.696-140.288h4.608c97.28 0 176.128-78.848 176.128-175.616z" fill="#272636" ></path></symbol><symbol id="icon-icon_yunxiazai fz14" viewBox="0 0 1024 1024"><path d="M790.528 409.6c-18.432-141.824-136.704-252.416-278.528-252.416S251.904 267.264 233.472 409.6C117.76 417.28 25.6 517.12 25.6 637.952c0 125.952 99.84 228.864 220.672 228.864h533.504c120.832-2.56 218.112-102.4 218.112-228.864C998.4 517.12 906.24 417.28 790.528 409.6z m-286.208 389.12l-194.56-223.232h131.584V367.616h125.952v207.872h131.584l-194.56 223.232z" fill="" ></path></symbol></svg>';var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window)
\ No newline at end of file
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="arrowdown" unicode="&#58899;" d="M512 810.666667q17.664 0 30.165333-12.501333t12.501333-30.165333l0-665.002667 225.664 226.005333q12.330667 12.330667 30.336 12.330667 18.346667 0 30.506667-12.16t12.16-30.506667q0-18.005333-12.330667-30.336l-298.666667-298.666667q-12.330667-12.330667-30.336-12.330667t-30.336 12.330667l-298.666667 298.666667q-12.330667 12.330667-12.330667 30.336 0 18.346667 12.16 30.506667t30.506667 12.16q18.005333 0 30.336-12.330667l225.664-226.005333 0 665.002667q0 17.664 12.501333 30.165333t30.165333 12.501333z" horiz-adv-x="1024" />
<glyph glyph-name="guige" unicode="&#59898;" d="M76.8128-64l268.7808 108.8128-160 166.3744L76.8128-64z m576 742.4064l-435.2192-435.2192 160-160 435.2192 435.2192-160 160z m-179.2192-96l-64 64-108.7808-115.2192L256 569.5936l115.1872 115.2192L230.4064 832 64 672l249.5936-249.5936 160 160zM166.4064 652.8128c-19.2192 19.1872-19.2192 51.1872 0 76.7808 19.1872 19.2192 57.5936 19.2192 76.7808 0 19.2192-19.1872 19.2192-57.5936 0-76.7808-19.1872-25.6256-51.1872-25.6256-76.7808 0zM960 665.5936l-160 160-115.1872-115.1872 160-160L960 665.5936zM793.5936 32l-44.7808 44.8128L864 185.5936l-51.1872 57.5936L697.5936 128l-44.7808 44.8128L768 288l-51.1872 51.1872-160-166.3744L793.5936-64l160 166.4064-44.7808 44.7808L793.5936 32z" horiz-adv-x="1024" />
<glyph glyph-name="leimupinleifenleileibie--1" unicode="&#58880;" d="M352.903955 896h-231.41243C52.067797 896 0 843.932203 0 780.293785v-231.412429c0-63.638418 52.067797-115.706215 115.706215-115.706215h231.412429c63.638418 0 115.706215 52.067797 115.706215 115.706215V780.293785c5.785311 63.638418-46.282486 115.706215-109.920904 115.706215z m46.282486-341.333333c0-34.711864-28.926554-57.853107-57.853108-57.853108H133.062147c-34.711864 0-57.853107 28.926554-57.853107 57.853108V768.723164c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271186c34.711864 0 57.853107-28.926554 57.853108-57.853107v-214.056497zM902.508475 896h-231.41243c-63.638418 0-115.706215-52.067797-115.706214-115.706215v-231.412429c0-63.638418 52.067797-115.706215 115.706214-115.706215h231.41243c63.638418 0 115.706215 52.067797 115.706214 115.706215V780.293785c5.785311 63.638418-52.067797 115.706215-115.706214 115.706215z m52.067796-341.333333c0-34.711864-28.926554-57.853107-57.853107-57.853108h-208.271187c-34.711864 0-57.853107 28.926554-57.853107 57.853108V768.723164c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271187c34.711864 0 57.853107-28.926554 57.853107-57.853107v-214.056497zM352.903955 340.61016900000004h-231.41243c-63.638418 0-115.706215-52.067797-115.706214-115.706214v-231.41243c0-63.638418 52.067797-115.706215 115.706214-115.706214h231.41243c63.638418 0 115.706215 52.067797 115.706214 115.706214v231.41243c0 63.638418-52.067797 115.706215-115.706214 115.706214z m46.282486-341.333333c0-34.711864-28.926554-57.853107-57.853108-57.853107H133.062147c-34.711864 0-57.853107 28.926554-57.853107 57.853107v208.271187c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271186c34.711864 0 57.853107-28.926554 57.853108-57.853107v-208.271187zM902.508475 340.61016900000004h-231.41243c-63.638418 0-115.706215-52.067797-115.706214-115.706214v-231.41243c0-63.638418 52.067797-115.706215 115.706214-115.706214h231.41243c63.638418 0 115.706215 52.067797 115.706214 115.706214v231.41243c5.785311 63.638418-52.067797 115.706215-115.706214 115.706214z m52.067796-341.333333c0-34.711864-28.926554-57.853107-57.853107-57.853107h-208.271187c-34.711864 0-57.853107 28.926554-57.853107 57.853107v208.271187c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271187c34.711864 0 57.853107-28.926554 57.853107-57.853107v-208.271187z" horiz-adv-x="1024" />
<glyph glyph-name="zhankai" unicode="&#59202;" d="M535.744 440.064h-535.68v-114.112h535.68V440.064z m489.28-389.952H1.28V-64h1023.744v114.112z m-260.096 145.472V576l260.096-190.208-260.096-190.208zM1025.024 832H2.624v-116.096h1022.4V832z" horiz-adv-x="1089" />
<glyph glyph-name="shouqi" unicode="&#59203;" d="M489.536 440.064h535.68v-114.112H489.6V440.064zM0.256 50.112H1024V-64H0.256v114.112z m260.096 145.472V576L0.256 385.792l260.096-190.208zM0.256 832h1022.4v-116.096H0.256V832z" horiz-adv-x="1088" />
<glyph glyph-name="dingdan-" unicode="&#59006;" d="M739.328-60.928H330.752c-57.344 0-104.448 48.128-104.448 106.496V630.272c0 58.88 46.592 106.496 104.448 106.496h466.944c57.344 0 104.448-48.128 104.448-106.496v-524.8l-162.816-166.4zM793.088 858.624H230.912c-76.288 0-137.216-61.44-137.216-136.192v-677.888c0-74.752 61.44-136.192 137.216-136.192H721.92c3.584 0 6.144 1.024 8.704 3.584l194.56 193.536c2.56 2.56 3.584 5.12 3.584 8.704V722.432c0.512 74.752-60.928 136.192-135.68 136.192zM135.68 58.88v650.24c0 58.88 48.128 106.496 108.032 106.496h538.624c59.904 0 108.032-48.128 108.032-106.496v-557.568h-148.48c-30.208 0-53.76-24.064-53.76-52.736v-146.432H242.176c-58.88 0-106.496 47.616-106.496 106.496z m583.68-121.856V87.04c0 16.384 13.824 30.208 31.232 30.208h152.576l-183.808-180.224zM335.872 559.616h353.28c7.68 0 12.288 8.192 12.288 20.48s-5.12 20.48-12.288 20.48h-353.28c-7.68 0-12.288-8.192-12.288-20.48s4.608-20.48 12.288-20.48z m0-202.24h353.28c7.68 0 12.288 8.192 12.288 20.48s-5.12 20.48-12.288 20.48h-353.28c-7.68 0-12.288-8.192-12.288-20.48s4.608-20.48 12.288-20.48z m163.84-148.992h-163.84c-7.68 0-12.288-8.192-12.288-20.48s5.12-20.48 12.288-20.48h163.84c7.68 0 12.288 8.192 12.288 20.48s-5.12 20.48-12.288 20.48z" horiz-adv-x="1024" />
<glyph glyph-name="shuxingguanli" unicode="&#58973;" d="M263.649 364.2v9.311c-0.41 5.628-1.433 11.154-3.48 16.68-8.39 21.591-28.14 35.098-49.73 36.94h-8.903c-5.73-0.409-11.359-1.33-16.987-3.581-21.898-8.493-35.61-28.857-37.043-50.857v-5.628l0.205-271.784v-11.154c0.512-5.219 1.433-10.438 3.48-15.452 8.288-21.284 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.768 0 5.116 0.512 10.13 1.433 15.144 3.377 22.103 8.596 35.917 29.164 37.145 51.471v3.786L263.65 364.2zM147.711 773.205v-11.154c0.512-5.219 1.433-10.437 3.48-15.451 8.288-21.182 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.768 0 5.116 0.511 10.13 1.432 15.144 3.377 22.103 8.595 35.917 29.265 37.145 51.47V768.5l-0.307 64.467v9.312c-0.409 5.628-1.432 11.153-3.479 16.68-8.493 21.59-28.345 35.2-49.936 36.94h-8.903c-5.73-0.41-11.358-1.33-16.986-3.582-21.898-8.493-35.61-28.856-37.043-50.857v-5.628l0.307-62.625z m-65.08-205.475c0-16.066 3.171-32.234 9.413-47.071 6.14-14.838 15.247-28.55 26.708-39.909 11.359-11.358 25.07-20.465 39.908-26.707 14.838-6.14 31.006-9.414 47.071-9.414s32.234 3.172 47.071 9.414c14.838 6.14 28.55 15.247 39.908 26.707 11.359 11.359 20.466 25.07 26.708 39.909 6.14 14.837 9.414 31.005 9.414 47.07s-3.172 32.234-9.414 47.072c-6.14 14.837-15.247 28.55-26.708 39.908-11.358 11.358-25.07 20.465-39.908 26.707-14.837 6.14-31.005 9.312-47.07 9.312s-32.234-3.172-47.072-9.312-28.55-15.247-39.908-26.707c-11.358-11.359-20.466-25.07-26.708-39.908-6.242-14.838-9.414-30.904-9.414-47.071z m487.39-6.652v9.312c-0.41 5.628-1.433 11.154-3.48 16.68-8.39 21.59-28.14 35.098-49.732 36.94h-8.902c-5.73-0.41-11.359-1.33-16.987-3.581-21.898-8.494-35.61-28.857-37.043-50.858v-5.628l0.205-468.663v-11.154c0.512-5.219 1.433-10.438 3.48-15.452 8.288-21.284 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.768 0 5.116 0.512 10.13 1.433 15.144 3.377 22.103 8.596 35.918 29.266 37.145 51.471v3.786l-0.409 470.506zM389 772.9c0-16.066 3.172-32.233 9.415-47.071 6.14-14.838 15.246-28.55 26.707-39.908 11.359-11.359 25.07-20.466 39.908-26.708 14.838-6.14 31.006-9.414 47.071-9.414s32.234 3.172 47.071 9.414c14.838 6.14 28.55 15.247 39.908 26.708 11.359 11.358 20.466 25.07 26.708 39.908 6.14 14.838 9.414 31.005 9.414 47.071s-3.172 32.233-9.414 47.071c-6.14 14.838-15.247 28.55-26.708 39.908-11.358 11.359-25.07 20.466-39.908 26.708C544.336 892.726 528.168 896 512.103 896s-32.234-3.172-47.072-9.414c-14.837-6.14-28.55-15.247-39.908-26.708-11.358-11.358-20.465-25.07-26.707-39.908-6.243-14.94-9.415-31.005-9.415-47.071z m371.35-199.643v-11.153c0.512-5.22 1.433-10.438 3.48-15.554 8.288-21.182 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.665 0 5.117 0.511 10.13 1.432 15.145 3.377 22.103 8.595 35.917 29.265 37.145 51.47v3.787l-0.307 264.416v9.415c-0.41 5.628-1.433 11.153-3.48 16.68-8.39 21.59-28.242 35.2-49.833 36.94h-8.903c-5.73-0.41-11.358-1.33-16.986-3.582-21.898-8.493-35.61-28.856-37.043-50.857v-5.628l0.307-262.575z m115.938-415.248v9.414c-0.41 5.628-1.433 11.154-3.48 16.68-8.39 21.59-28.14 35.098-49.73 36.838h-8.903c-5.73-0.41-11.359-1.33-16.987-3.582-21.898-8.493-35.61-28.856-37.043-50.857v-5.628l0.205-65.695v-11.154c0.512-5.218 1.433-10.437 3.48-15.451 8.288-21.285 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.665 0 5.117 0.512 10.13 1.433 15.145 3.377 22.103 8.595 35.917 29.266 37.145 51.47v3.787l-0.307 67.537zM695.27 366.246c0-16.066 3.172-32.233 9.414-47.071 6.14-14.838 15.247-28.55 26.708-39.908 11.358-11.359 25.07-20.466 39.908-26.708 14.838-6.14 31.006-9.414 47.071-9.414s32.234 3.172 47.071 9.414c14.838 6.14 28.55 15.247 39.908 26.708 11.359 11.358 20.466 25.07 26.708 39.908 6.14 14.838 9.414 31.005 9.414 47.071s-3.172 32.233-9.414 47.071c-6.14 14.838-15.247 28.55-26.708 39.908-11.358 11.359-25.07 20.466-39.908 26.708-14.837 6.14-31.005 9.414-47.07 9.414s-32.234-3.172-47.072-9.414c-14.838-6.14-28.55-15.247-39.908-26.708-11.358-11.358-20.466-25.07-26.708-39.908-6.242-14.838-9.414-30.903-9.414-47.071z m0 0" horiz-adv-x="1024" />
<glyph glyph-name="zhuzuoquan" unicode="&#58895;" d="M828.3 700.3C742.1 785.7 632.7 830.9 512 830.9c-119.6 0-232-46.4-316.3-130.6C110.3 614 65.1 504.7 65.1 384c0-121.5 45.1-230.8 130.6-316.3 83.5-84.3 195.9-130.6 316.3-130.6 121.5 0 230.8 45.2 316.3 130.6 85.5 85.5 130.6 194.8 130.6 316.3 0 120.7-45.1 230-130.6 316.3z m-37.5-595.4c-36.2-36.2-78.4-64.6-125.4-84.4-48.6-20.5-100.3-30.9-153.4-30.9-53.2 0-104.8 10.4-153.4 30.9-47 19.9-89.2 48.3-125.4 84.4-74.6 74.5-115.6 173.6-115.6 279.1 0 217.5 176.9 394.5 394.5 394.5 217.5 0 394.5-176.9 394.5-394.5-0.1-105.4-41.2-204.6-115.8-279.1z m0 0M646.7 296.3c-28.2-39.2-73.6-65.8-125.3-65.8-84.6 0-155.1 68.9-155.1 155.1 0 86.2 68.9 155.1 155.1 155.1 51.7 0 97.1-25.1 125.3-65.8h92.4c-36 86.2-119.1 145.7-217.7 145.7-130 0-236.5-106.5-236.5-236.5s106.5-236.5 236.5-236.5c98.7 0 183.3 61.1 217.7 145.7h-92.4v3z m0 0" horiz-adv-x="1024" />
<glyph glyph-name="pinpai-" unicode="&#59102;" d="M512 875.52C241.152 875.52 20.48 654.848 20.48 384s220.672-491.52 491.52-491.52 491.52 220.672 491.52 491.52-220.672 491.52-491.52 491.52z m0-912.896c-232.448 0-421.376 188.928-421.376 421.376S279.552 805.376 512 805.376s421.376-188.928 421.376-421.376-188.928-421.376-421.376-421.376z m245.76 526.848c0 96.768-78.848 175.616-175.616 175.616H301.568c-19.456 0-35.328-15.872-35.328-35.328 0-19.456 15.872-35.328 35.328-35.328h281.088c57.856 0 105.472-47.104 105.472-105.472s-47.104-105.472-105.472-105.472H406.528V489.472c0 19.456-15.872 35.328-35.328 35.328-19.456 0-35.328-15.872-35.328-35.328v-315.904h-35.328c-19.456 0-35.328-15.872-35.328-35.328s15.872-35.328 35.328-35.328h140.288c19.456 0 35.328 15.872 35.328 35.328s-15.872 35.328-35.328 35.328h-35.328v140.288h86.528l130.048-195.072c1.024-1.536 2.048-2.56 3.584-4.096l1.536-1.536c3.072-2.56 6.144-5.12 9.728-6.656 0.512-0.512 1.536-0.512 2.56-1.024 4.096-1.536 8.192-2.56 12.288-2.56H721.92c19.456 0 35.328 15.872 35.328 35.328s-15.872 35.328-35.328 35.328h-51.2l-93.696 140.288h4.608c97.28 0 176.128 78.848 176.128 175.616z" horiz-adv-x="1024" />
<glyph glyph-name="icon_yunxiazai" unicode="&#59112;" d="M790.528 486.4c-18.432 141.824-136.704 252.416-278.528 252.416S251.904 628.736 233.472 486.4C117.76 478.72 25.6 378.88 25.6 258.048c0-125.952 99.84-228.864 220.672-228.864h533.504c120.832 2.56 218.112 102.4 218.112 228.864C998.4 378.88 906.24 478.72 790.528 486.4z m-286.208-389.12l-194.56 223.232h131.584V528.384h125.952v-207.872h131.584l-194.56-223.232z" horiz-adv-x="1024" />
</font>
</defs></svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 400 335" style="enable-background:new 0 0 400 335;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FAFCFF;}
.st1{fill:#DBE5F1;}
.st2{fill:#DEE7F4;}
.st3{fill:#B9C7DB;}
.st4{fill:#FFFFFF;}
.st5{fill:none;stroke:#B9C7DB;stroke-width:4;stroke-miterlimit:10;}
.st6{fill:none;stroke:#B6C7D8;stroke-miterlimit:10;}
</style>
<path class="st0" d="M80.9,159.3c0,50.2,40.7,90.9,90.9,90.9s90.9-40.7,90.9-90.9l0,0c0-50.2-40.7-90.9-90.9-90.9
C121.6,68.3,80.9,109,80.9,159.3C80.9,159.2,80.9,159.3,80.9,159.3z"/>
<path class="st1" d="M96.3,264.2c-0.9,0-2,0-2.8-0.1l0.3-2.7c1.6,0.1,3.3,0.1,5.1,0l0.1,2.7C98,264.1,97.1,264.2,96.3,264.2z
M104.3,263.4l-0.4-2.7c1.6-0.3,3.3-0.7,5.1-1.1l0.7,2.5C107.9,262.8,106,263.2,104.3,263.4z M87.8,263c-1.9-0.5-3.6-1.3-5.2-2.3
l1.3-2.3c1.3,0.8,2.9,1.5,4.5,2L87.8,263L87.8,263z M114.8,260.6l-0.8-2.5c1.6-0.5,3.3-1.2,4.9-1.9l0.9,2.5
C118.2,259.6,116.6,260.1,114.8,260.6z M78.2,257.1c-1.2-1.3-2.3-2.9-3.2-4.7l2.4-1.2c0.8,1.5,1.7,2.9,2.8,4.1L78.2,257.1z
M125,256.7l-1.1-2.4c1.6-0.7,3.2-1.5,4.8-2.3l1.2,2.4C128.2,255.3,126.5,255.9,125,256.7z M134.6,251.9l-1.2-2.4
c1.5-0.8,3.1-1.7,4.7-2.5l1.3,2.3C137.7,250.2,136.1,251.1,134.6,251.9z M72.9,247.3c-0.5-1.7-0.9-3.5-1.2-5.5l2.7-0.4
c0.3,1.7,0.7,3.5,1.1,5.1L72.9,247.3L72.9,247.3z M144,246.6l-1.3-2.3c1.5-0.9,2.9-1.9,4.5-2.8l1.5,2.3
C146.9,244.6,145.5,245.6,144,246.6z M153,240.7l-1.5-2.3c1.5-0.9,2.9-2,4.4-3.1l1.6,2.1C155.9,238.7,154.4,239.6,153,240.7z
M71.3,236.4v-1.2c0-1.3,0-2.8,0.1-4.3l2.7,0.1c-0.1,1.3-0.1,2.8-0.1,4.1v1.1L71.3,236.4z M161.8,234.4l-1.6-2.1
c1.5-1.1,2.8-2.1,4.3-3.2l1.6,2.1C164.6,232.3,163.1,233.3,161.8,234.4z M170.2,227.9l-1.6-2.1c1.3-1.1,2.8-2.3,4.1-3.3l1.7,2
C173,225.6,171.7,226.8,170.2,227.9z M74.7,225.9l-2.7-0.4c0.3-1.7,0.5-3.5,0.9-5.3l2.7,0.5C75.3,222.5,75,224.3,74.7,225.9
L74.7,225.9z M178.5,221l-1.7-2c1.3-1.2,2.7-2.3,4-3.5l1.7,2C181.3,218.8,179.8,219.8,178.5,221z M76.9,215.6l-2.5-0.7l1.6-5.2
l2.5,0.8C77.9,212.2,77.4,214,76.9,215.6z M186.6,214l-1.7-2c1.3-1.2,2.7-2.4,3.9-3.6l1.9,2C189.2,211.6,188,212.8,186.6,214z
M194.4,206.6l-1.9-1.9c1.3-1.2,2.5-2.4,3.9-3.7l1.9,1.9C197.1,204.2,195.7,205.4,194.4,206.6z M80.2,205.5l-2.5-0.9
c0.7-1.6,1.3-3.3,2-4.9l2.5,1.1L80.2,205.5z M202.2,199.1l-1.9-1.9c1.2-1.2,2.5-2.5,3.7-3.9l1.9,1.9
C204.6,196.6,203.4,197.8,202.2,199.1z M84.5,195.6l-2.5-0.7c0.1-0.3,0.1-0.7,0.1-1.2c0-0.9-0.1-2-0.4-3.6l2.7-0.4
c0.3,1.7,0.4,3.1,0.4,4C84.6,194.4,84.6,195.1,84.5,195.6z M209.5,191.4l-2-1.9c1.2-1.3,2.4-2.5,3.6-3.9l2,1.7
C212,188.8,210.7,190,209.5,191.4z M80.8,184.9v-0.4c-0.3-1.5-0.5-3.2-0.9-4.9l2.7-0.4c0.3,1.7,0.7,3.3,0.9,4.9v0.4L80.8,184.9z
M215.5,184.8l-2-1.7c1.2-1.3,2.4-2.7,3.5-4l2,1.7C217.9,182.1,216.7,183.5,215.5,184.8z M222.6,176.8l-2-1.7c1.2-1.3,2.3-2.7,3.5-4
l2,1.7C225,174,223.8,175.5,222.6,176.8z M78.9,174.4c-0.3-1.9-0.5-3.6-0.7-5.3l2.7-0.3c0.1,1.7,0.4,3.5,0.7,5.2L78.9,174.4z
M229.6,168.5l-2.1-1.7c1.1-1.3,2.3-2.8,3.3-4.1l2.1,1.6C231.8,165.7,230.6,167.2,229.6,168.5z M77.7,163.6
c-0.1-1.9-0.1-3.6-0.1-5.5h2.7c0,1.7,0,3.5,0.1,5.2L77.7,163.6z M236.3,160.1l-2.1-1.6c1.1-1.5,2.1-2.8,3.2-4.3l2.1,1.6
C238.4,157.3,237.3,158.6,236.3,160.1z M80.4,152.9l-2.7-0.1c0.1-1.9,0.3-3.6,0.5-5.5l2.7,0.3C80.6,149.4,80.5,151.1,80.4,152.9z
M242.5,151.5l-2.1-1.6c1.1-1.5,2.1-2.9,3.1-4.3l2.1,1.5C244.7,148.6,243.6,150,242.5,151.5z M248.8,142.7l-2.3-1.5
c1.1-1.5,2-2.9,2.9-4.4l2.3,1.5C250.8,139.8,249.8,141.2,248.8,142.7z M81.7,142.4l-2.7-0.5c0.4-1.7,0.8-3.6,1.2-5.3l2.5,0.7
C82.4,139.1,82,140.7,81.7,142.4z M254.7,133.7l-2.3-1.5c0.9-1.5,1.9-3.1,2.8-4.5l2.3,1.3C256.6,130.7,255.6,132.1,254.7,133.7z
M84.5,132.4l-2.5-0.9c0.7-1.7,1.3-3.3,2.1-5.1l2.4,1.1C85.7,129.2,85,130.8,84.5,132.4z M260.2,124.5l-2.3-1.3
c0.9-1.6,1.7-3.1,2.7-4.7l2.3,1.3C262.1,121.4,261.1,122.9,260.2,124.5z M88.9,122.9l-2.3-1.3l0.9-1.6c0.5-0.9,1.1-2,1.7-2.9
l2.3,1.3c-0.5,1.1-1.2,2-1.7,2.9L88.9,122.9z M265.4,115.2L263,114c0.8-1.6,1.6-3.2,2.4-4.7l2.4,1.2
C267.1,111.9,266.3,113.5,265.4,115.2z M94.3,113.7l-2.3-1.3c0.9-1.5,1.9-3.1,2.8-4.5l2.3,1.5L94.3,113.7z M270.2,105.5l-2.4-1.1
c0.8-1.6,1.5-3.2,2.1-4.8l2.4,1.1C271.8,102.2,271,103.8,270.2,105.5z M100,104.9l-2.1-1.6l3.2-4.4l2.1,1.6
C102.1,101.9,101.1,103.3,100,104.9z M106.6,96.4l-2-1.7l3.6-4l1.9,1.9C108.8,93.8,107.6,95.1,106.6,96.4z M274.5,95.6l-2.5-0.9
c0.7-1.6,1.3-3.3,1.9-4.9l2.5,0.9C275.8,92.2,275.2,93.9,274.5,95.6z M113.9,88.9l-1.7-2c1.3-1.2,2.8-2.4,4.1-3.5l1.6,2.1
C116.6,86.7,115.1,87.7,113.9,88.9z M278.1,85.5l-2.5-0.8c0.5-1.7,1.1-3.5,1.5-5.1l2.5,0.7C279.2,81.9,278.8,83.6,278.1,85.5z
M122.1,82.4l-1.5-2.3c1.5-1.1,3.1-2,4.5-2.9l1.3,2.3C125,80.5,123.5,81.5,122.1,82.4z M131.2,77.2l-1.2-2.4
c1.6-0.8,3.3-1.5,4.9-2.3L136,75C134.4,75.7,132.8,76.4,131.2,77.2z M280.9,74.9l-2.7-0.5c0.4-1.7,0.7-3.5,0.8-5.2l2.7,0.4
C281.6,71.3,281.3,73.2,280.9,74.9z M140.9,73.2l-0.8-2.5l5.2-1.6l0.7,2.5C144.3,72.1,142.7,72.6,140.9,73.2z M151.1,70.4l-0.5-2.7
c1.7-0.4,3.6-0.8,5.3-1.1l0.4,2.7C154.6,69.7,152.8,70,151.1,70.4z M187.8,69.2c-1.5-0.1-3.2-0.4-5.2-0.5l0.3-2.7
c2.1,0.1,3.9,0.4,5.3,0.7L187.8,69.2z M194,68.9l-1.6-2.1c1.5-1.1,2.9-2.1,4.3-3.2l1.6,2.1C196.9,66.7,195.5,67.8,194,68.9z
M161.5,68.6l-0.3-2.7c1.7-0.3,3.6-0.4,5.3-0.4l0.1,2.7L161.5,68.6z M177.3,68.1c-1.6-0.1-3.2-0.1-4.8-0.1H172v-2.7h0.5
c1.6,0,3.2,0,4.9,0.1L177.3,68.1z M282.2,64.1l-2.7-0.1v-1.7c0-1.2,0-2.4-0.1-3.5l2.7-0.3c0.1,1.2,0.1,2.4,0.1,3.6V64.1z
M202.7,62.6l-1.5-2.3c1.5-1.1,2.9-2,4.4-2.9l1.5,2.3C205.6,60.6,204.2,61.7,202.7,62.6L202.7,62.6z M211.6,56.9l-1.5-2.3
c1.6-0.9,3.1-1.9,4.7-2.8l1.3,2.3C214.6,55,213.1,55.9,211.6,56.9z M278.6,53.8c-0.4-1.7-1.1-3.3-1.7-4.7l2.4-1.2
c0.8,1.6,1.5,3.3,2,5.3L278.6,53.8L278.6,53.8z M220.7,51.5l-1.3-2.4c1.6-0.9,3.2-1.7,4.8-2.5l1.2,2.4
C223.9,49.8,222.3,50.7,220.7,51.5z M230.2,46.7l-1.1-2.4c1.7-0.8,3.3-1.5,4.9-2.1l0.9,2.5C233.6,45.4,231.8,46,230.2,46.7z
M274.1,45l-0.9-0.9c-0.9-0.8-1.9-1.5-2.9-2.1l1.3-2.3c1.2,0.7,2.4,1.5,3.3,2.4c0.4,0.4,0.8,0.7,1.1,1.1L274.1,45L274.1,45z
M240,42.8l-0.8-2.5c1.7-0.7,3.5-1.2,5.2-1.6l0.7,2.5C243.5,41.7,241.7,42.3,240,42.8z M265.5,40.1c-1.6-0.4-3.2-0.7-5.1-0.8
l0.1-2.7c2,0.1,3.9,0.4,5.5,0.8L265.5,40.1L265.5,40.1z M250.2,40.1l-0.5-2.7c1.9-0.4,3.7-0.5,5.5-0.8l0.3,2.7
C253.8,39.5,252,39.7,250.2,40.1L250.2,40.1z"/>
<path class="st2" d="M92.1,178.4c5.6,5.9,32.8-11.2,60.8-38.2s46.2-53.7,40.6-59.6c0,0,0,0-0.1-0.1c-5.6-5.8-32.9,11.3-60.9,38.4
C104.6,145.9,86.5,172.6,92.1,178.4L92.1,178.4z"/>
<path class="st0" d="M122.1,117.3l5.7-5.7l25.5,25.5l-5.7,5.7L122.1,117.3z M163.8,147.2h148.4c3.7,0,6.7,2.9,6.7,6.7v61.5
c0,3.7-2.9,6.7-6.7,6.7H163.8c-3.7,0-6.7-2.9-6.7-6.7v-61.5C157.1,150.2,160,147.2,163.8,147.2z"/>
<path class="st3" d="M325.8,134.1v-5.6h2v5.6h5.6v2h-5.6v5.7h-2v-5.6h-5.6v-2L325.8,134.1L325.8,134.1z M86.6,202.5l-1.3-2.9
c-0.4-0.9-0.8-1.7-1.3-2.9l-0.8-3.3c-4-10.6-6.3-21.9-6.3-34c0-23.9,9-45.9,23.8-62.3L85.3,80.8c-1.6-1.7-1.6-4.5,0.1-6.2
c1.7-1.7,4.4-1.7,6.2-0.1l16.3,15.4c16.6-15,38.5-24.1,62.7-24.1c17.8,0,34.5,4.9,48.7,13.6c10.7,7.2,13.4,8.7,21,17.6
c5.7,6.7,6,6.4,10.7,14.2c0.8,0.1,7.5,11.8,7.5,15.6c2.4,6.3,4,13,4.9,19.7h48.4c2.7,0,5.1,1.1,7,2.9c1.9,1.9,2.9,4.4,2.9,7v57.8
c0,2.7-1.1,5.1-2.9,7c-1.9,1.9-4.4,2.9-7,2.9h-73.4c-17.1,17.8-41.2,28.9-67.8,28.9c-10.8,0-21.7-1.9-31.8-5.5
c-17.8-7.9-17.1-7.2-26.1-14.2s-10-9.4-22.7-25.9C88.6,205.3,87.7,204.5,86.6,202.5z M91.7,202.6c10.2,18.5,26.7,33,46.7,40.6
c8.6-5.3,23.7-16.8,25.5-19.3c-2.7,0-5.1-1.1-7-2.9s-2.9-4.4-2.9-7v-46.8c-9.6,6.3-20.6,10.8-31.7,13.5c-13.9,3.3-26.7,3.1-30.4-0.5
c-6.3-6.3,9.1-30.2,34.2-56.4l-23-24.2c-14,15.9-22.7,36.8-22.7,59.6c0,10.8,1.9,21.5,5.7,31.6l2,5.5
C88.8,197.4,89.3,198.9,91.7,202.6L91.7,202.6z M110.6,92.3l24.3,22.9l0.1-0.1c27-26.2,51.5-42,57.9-35.6c3.6,3.6,3.7,16.4,0.3,30.5
c-3.2,13-8.8,25.5-16.8,36.4h64.4c5.1-7,9.6-13.6,13.6-20.1c-13.1-33.4-45.7-57-83.7-57C147.5,69.4,126.5,78,110.6,92.3z M137.8,118
l17,16c11-11.4,20.5-22.7,26.7-32.2c6.6-9.9,9.1-16.8,7.5-18.5c-1.6-1.6-8.6,0.9-18.5,7.5C161,97.2,149.5,106.7,137.8,118z
M152.3,136.7L89,77c-0.3-0.3-0.8-0.3-1.1,0s-0.3,0.8,0,1.1l59.6,63.1C149.2,139.8,150.7,138.1,152.3,136.7z M144.9,143.8L129,127
c-10.6,11.1-19.7,21.9-25.7,31.2c-6.6,9.9-9.1,16.8-7.5,18.5c1.6,1.6,8.6-0.9,18.5-7.5C123.3,163,134.1,154.2,144.9,143.8
L144.9,143.8z M192,90.1c-4,11.5-18.7,30.8-38.6,50.7c-20.1,20.1-39.3,34.8-50.9,38.6c5.1,0.1,11.9-0.5,19-2.3
c16.3-3.9,32-11.9,44-23.9c12-11.9,20.2-27.7,24.2-44.1C191.3,102,192,95.2,192,90.1z M157.6,164.8v49.3c0,1.6,0.7,3.2,1.7,4.4
c1.2,1.2,2.7,1.7,4.4,1.7h147.9c3.3,0,6.2-2.8,6.2-6.2v-57.9c0-3.3-2.8-6.2-6.2-6.2H173.3c-0.1,0.3-0.4,0.4-0.5,0.7l3.1,2.8
c3.1,2.9,3.2,7.9,0.1,11c-2.9,3.1-7.9,3.2-11,0.1l-3.1-3.2C160.6,162.6,159.1,163.7,157.6,164.8z M170.3,153.5
c-1.7,2-3.7,3.7-5.6,5.6l2.8,2.9c1.7,1.7,4.3,1.7,5.9,0.1c0.8-0.8,1.2-1.9,1.2-2.9s-0.5-2.1-1.3-2.9
C173.3,156.3,170.3,153.5,170.3,153.5z M233,224h-68.7c-9.8,8-17,13.4-26.1,19.3c9.1,3.3,22.9,6,32.4,6
C194.8,249.1,216.9,239.5,233,224z M259.6,146.3c-0.8-5.3-3.7-15-5.3-20.1c-4.3,7.1-9.1,14.4-13.9,20.1H259.6z M196.5,206.7v-9
h-21.8v-5.1c1.9-3.5,4.1-7.4,7.1-11.8c2.8-4.4,6.8-10.3,12-17.6h8v29.5h6.2v4.8h-6.2v9h-5.3V206.7z M243.6,207.4c-5.1,0-9-2-11.8-6
s-4.1-9.5-4.1-16.3s1.5-12.2,4.3-16.3c2.8-4,6.7-6.2,11.8-6.2s9,2,11.8,6s4.1,9.5,4.1,16.3s-1.3,12.3-4.1,16.3
C252.6,205.4,248.7,207.4,243.6,207.4z M243.6,202.7c3.3,0,6-1.6,7.8-4.8c1.9-3.2,2.7-7.5,2.7-13c0-5.3-0.9-9.6-2.7-12.8
c-1.9-3.2-4.4-4.8-7.8-4.8c-3.3,0-5.9,1.6-7.8,4.8c-1.9,3.2-2.8,7.5-2.8,12.8s0.9,9.8,2.7,13C237.6,201.1,240.1,202.7,243.6,202.7z
M301.6,206.7v-9h-21.8v-5.1c1.9-3.5,4.1-7.4,7.1-11.8c2.8-4.4,6.8-10.3,12-17.6h8v29.5h6.2v4.8h-6.3v9h-5.2V206.7z M180.1,192.8
l16.4,0.1v-25.1h-0.1c-4.1,5.9-7.5,10.7-10,14.6C184,186.3,181.8,189.8,180.1,192.8L180.1,192.8z M285.2,192.8l16.4,0.1v-25.1h-0.1
c-4.1,5.9-7.5,10.7-10,14.6C288.9,186.3,286.9,189.8,285.2,192.8L285.2,192.8z M51.5,100.4l4-4l1.3,1.3l-4,4l4,4l-1.3,1.3l-4-4l-4,4
l-1.3-1.3l4-4l-4-4l1.3-1.3L51.5,100.4z M344.6,167.6V158h3.3v9.6h9.6v3.3h-9.6v9.6h-3.3v-9.6H335v-3.3H344.6z"/>
<path class="st4" d="M52.1,248.9c2.5,0,4.7-2.1,4.7-4.7s-2.1-4.7-4.7-4.7c-2.5,0-4.7,2.1-4.7,4.7S49.6,248.9,52.1,248.9z"/>
<path class="st3" d="M52.1,250.2c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S55.5,250.2,52.1,250.2z M52.1,240.8c-1.9,0-3.3,1.5-3.3,3.3
s1.5,3.3,3.3,3.3c1.9,0,3.3-1.5,3.3-3.3S54,240.8,52.1,240.8z"/>
<path class="st3" d="M276.6,70.1l5.2-6.4l2.8,7.9l6.4,5.2l-7.9,2.8l-5.2,6.4l-2.8-7.9l-6.4-5.2L276.6,70.1z"/>
<path class="st3" d="M277.4,88.7l-3.5-9.8l-8-6.6l9.8-3.5l6.6-8l3.5,9.8l8,6.6l-9.8,3.5L277.4,88.7z M271.4,73.3l4.9,4l2.1,6l4-4.9
l6-2.1l-4.9-4l-2.1-6l-4,4.9L271.4,73.3z"/>
<path class="st3" d="M109.7,274.7h60.4c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4h-60.4c-0.7,0-1.3-0.6-1.3-1.3
C108.3,275.3,108.9,274.7,109.7,274.7"/>
<path class="st3" d="M202.3,274.7h34.9c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-34.9c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C201.6,274.9,201.9,274.7,202.3,274.7"/>
<path class="st3" d="M141.9,284.2h131.5c0.7,0,1.3,0.6,1.4,1.3c0,0.4-0.1,0.7-0.4,1c-0.3,0.3-0.6,0.4-1,0.4H141.9
c-0.7,0-1.3-0.6-1.3-1.3l0,0C140.5,284.8,141.1,284.2,141.9,284.2"/>
<path class="st3" d="M77.5,284.2h34.9c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4l0,0H77.5c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C76.8,284.3,77.1,284.2,77.5,284.2"/>
<path class="st3" d="M180.8,274.7h8.1c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-8.1c-0.7,0.1-1.4-0.5-1.4-1.3
c-0.1-0.7,0.5-1.4,1.3-1.4C180.6,274.7,180.7,274.7,180.8,274.7"/>
<path class="st3" d="M268,266.6h8.1c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.3H268c-0.7,0-1.3-0.6-1.3-1.3
C266.7,267.3,267.3,266.6,268,266.6"/>
<path class="st3" d="M82.8,266.6h171.8c0.4,0,0.7,0.1,0.9,0.4c0.4,0.4,0.5,1,0.3,1.5s-0.7,0.8-1.2,0.8H82.8c-0.7,0-1.3-0.6-1.3-1.3
C81.5,267.3,82.1,266.6,82.8,266.6"/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 400 335" style="enable-background:new 0 0 400 335;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FAFCFF;}
.st1{fill:#DBE5F1;}
.st2{fill:#DEE7F4;}
.st3{fill:#B9C7DB;}
.st4{fill:#FFFFFF;}
.st5{fill:none;stroke:#B9C7DB;stroke-width:4;stroke-miterlimit:10;}
.st6{fill:none;stroke:#B6C7D8;stroke-miterlimit:10;}
</style>
<path class="st3" d="M37.7,141.1c-2.4,0-4.4-1.9-4.4-4.4c0-2.4,1.9-4.4,4.4-4.4c2.4,0,4.4,1.9,4.4,4.4
C42,139.2,40.1,141.1,37.7,141.1z"/>
<path class="st3" d="M264.6,80.4c-2.1,0-3.8-1.7-3.8-3.8s1.7-3.8,3.8-3.8c2.1,0,3.8,1.7,3.8,3.8C268.4,78.7,266.7,80.4,264.6,80.4z
M264.6,74.4c-1.2,0-2.1,0.9-2.1,2.1s0.9,2.1,2.1,2.1s2.1-0.9,2.1-2.1C266.7,75.4,265.8,74.4,264.6,74.4z"/>
<path class="st3" d="M98.8,136.7c-2.6,0-4.7-2.1-4.7-4.7s2.1-4.7,4.7-4.7s4.7,2.1,4.7,4.7S101.4,136.7,98.8,136.7z M98.8,129.4
c-1.5,0-2.6,1.2-2.6,2.6s1.2,2.6,2.6,2.6c1.5,0,2.6-1.2,2.6-2.6S100.2,129.4,98.8,129.4z"/>
<path class="st3" d="M144.3,113.8h8.2c0.4,0,0.7,0.1,1,0.4c0.5,0.5,0.5,1.3,0,1.9l0,0c-0.3,0.3-0.6,0.4-1,0.4h-8.2
c-0.4,0-0.7-0.1-1-0.4c-0.5-0.5-0.5-1.3,0-1.9l0,0C143.6,113.9,143.9,113.8,144.3,113.8"/>
<path class="st3" d="M148.4,89.1v5.7c0,0.3-0.1,0.5-0.3,0.7c-0.4,0.4-0.9,0.4-1.3,0l0,0c-0.2-0.2-0.3-0.4-0.3-0.7v-5.7
c0-0.2,0.1-0.5,0.3-0.7c0.4-0.4,0.9-0.4,1.3,0l0,0C148.3,88.6,148.4,88.8,148.4,89.1"/>
<g>
<path class="st3" d="M193.5,123.6l5.1-5.1c0.2-0.2,0.5-0.4,0.8-0.4s0.6,0.1,0.8,0.3c0.5,0.5,0.4,1.2,0,1.7l-5.1,5.1
c-0.3,0.3-0.7,0.4-1.1,0.3c-0.4-0.1-0.7-0.4-0.8-0.8C193.1,124.3,193.2,123.9,193.5,123.6"/>
<path class="st3" d="M195.3,118.6l5,5c0.2,0.2,0.3,0.5,0.3,0.8c0,0.7-0.6,1.2-1.2,1.2c-0.3,0-0.6-0.1-0.8-0.3l-5-5
c-0.2-0.2-0.3-0.5-0.3-0.8c0-0.7,0.5-1.2,1.2-1.2C194.7,118.2,195,118.4,195.3,118.6"/>
</g>
<g>
<path class="st3" d="M355,85.8l5.1-5.1c0.2-0.2,0.5-0.4,0.8-0.4s0.6,0.1,0.8,0.3c0.5,0.5,0.4,1.2,0,1.7l-5.1,5.1
c-0.3,0.3-0.7,0.4-1.1,0.3s-0.7-0.4-0.8-0.8S354.7,86.1,355,85.8"/>
<path class="st3" d="M356.8,80.8l5,5c0.2,0.2,0.3,0.5,0.3,0.8c0,0.7-0.6,1.2-1.2,1.2c-0.3,0-0.6-0.1-0.8-0.3l-5-5
c-0.2-0.2-0.3-0.5-0.3-0.8c0-0.7,0.5-1.2,1.2-1.2C356.2,80.4,356.5,80.5,356.8,80.8"/>
</g>
<path class="st1" d="M87.8,267.9h99.5c1.2,0,2.2,0.6,2.2,1.3l0,0c0,0.7-1,1.3-2.2,1.4H87.8c-1.2,0-2.2-0.6-2.2-1.3
C85.6,268.5,86.6,267.9,87.8,267.9"/>
<path class="st1" d="M240.5,267.9H298c1.2,0,2.2,0.6,2.2,1.3c0,0.7-1,1.3-2.2,1.3h-57.5c-1.2,0-2.2-0.6-2.2-1.3c0-0.4,0.2-0.7,0.7-1
C239.3,268,239.9,267.9,240.5,267.9"/>
<path class="st1" d="M140.9,277.3h216.8c1.2,0,2.2,0.6,2.2,1.3c0,0.4-0.2,0.7-0.7,1c-0.4,0.3-1,0.4-1.6,0.4H140.9
c-1.2,0-2.2-0.6-2.2-1.3l0,0C138.7,277.9,139.7,277.3,140.9,277.3"/>
<path class="st1" d="M34.7,277.3h57.5c1.2,0,2.2,0.6,2.2,1.3l0,0c0,0.7-1,1.3-2.2,1.4l0,0H34.7c-1.2,0-2.2-0.6-2.2-1.3
c0-0.4,0.2-0.7,0.7-1C33.6,277.5,34.1,277.3,34.7,277.3"/>
<path class="st1" d="M205.1,267.9h13.3c1.2,0,2.2,0.6,2.2,1.3c0,0.7-1,1.3-2.2,1.3h-13.3c-1.2,0.1-2.3-0.5-2.4-1.3s0.8-1.4,2.1-1.4
C204.8,267.9,205,267.9,205.1,267.9"/>
<path class="st1" d="M348.8,259.8h13.3c1.2,0,2.2,0.6,2.2,1.3l0,0c0,0.7-1,1.3-2.2,1.3h-13.3c-1.2,0-2.2-0.6-2.2-1.3
C346.6,260.4,347.6,259.8,348.8,259.8"/>
<path class="st1" d="M43.6,259.8h283.1c0.6,0,1.1,0.1,1.6,0.4c0.6,0.4,0.8,1,0.5,1.5s-1.1,0.8-2,0.8H43.6c-1.2,0-2.2-0.6-2.2-1.3
S42.4,259.8,43.6,259.8"/>
<path class="st3" d="M180.3,240h-41.9c-0.6,0-1-0.4-1-1v-11.9c0-0.6,0.4-1,1-1s1,0.4,1,1v11h40v-41c0-0.6,0.4-1,1-1h10.5
c0.6,0,1,0.4,1,1s-0.4,1-1,1h-9.5v41C181.2,239.6,180.9,240,180.3,240L180.3,240z M237.5,240h-22c-0.6,0-1-0.4-1-1v-41H205
c-0.6,0-1-0.4-1-1s0.4-1,1-1h10.5c0.6,0,1,0.4,1,1v41h21c0.6,0,1,0.4,1,1S238,240,237.5,240z M105.9,231l2.7,18.2H95.7l2.7-18.2
H105.9 M107.5,229.1H96.7l-3.2,22h17.2L107.5,229.1z"/>
<path class="st6" d="M157.7,231.2H46.1c-5.1,0-9.2-4.1-9.2-9.2v-10.5h129.9v10.8C166.8,227.2,162.7,231.2,157.7,231.2L157.7,231.2z"
/>
<path class="st2" d="M167.4,210.9h-125v-47c0-3.6,3-6.7,6.7-6.7H163c2.5,0,4.6,2,4.6,4.6L167.4,210.9L167.4,210.9z"/>
<path class="st3" d="M158.8,154.2c3.9,0,7,3.1,7,7v61.9c0,3.9-3.1,7-7,7H45.4c-3.9,0-7-3.1-7-7v-61.9c0-3.9,3.1-7,7-7L158.8,154.2
M158.8,152.3H45.4c-5,0-9,4-9,9v61.9c0,5,4,9,9,9h113.4c5,0,9-4,9-9v-61.9C167.7,156.3,163.7,152.3,158.8,152.3z M116.2,251.8H88.1
c-0.6,0-1-0.4-1-1s0.4-1,1-1h28.1c0.6,0,1,0.4,1,1C117.1,251.4,116.7,251.8,116.2,251.8L116.2,251.8z"/>
<path class="st3" d="M37.6,210.6h129.1v1.9H37.6V210.6z"/>
<path class="st3" d="M101.7,222.9c1.4,0.9,3.3,0.6,4.2-0.8c0.9-1.4,0.6-3.3-0.8-4.2l0,0c-1.4-0.9-3.3-0.6-4.2,0.8
C99.9,220.1,100.3,222,101.7,222.9L101.7,222.9z"/>
<path class="st3" d="M102.1,223.7c-1.8,0-3.3-1.5-3.3-3.3s1.5-3.3,3.3-3.3s3.3,1.5,3.3,3.3S103.9,223.7,102.1,223.7z M102.1,218.1
c-1.3,0-2.4,1-2.4,2.4s1,2.4,2.4,2.4c1.3,0,2.4-1,2.4-2.4S103.4,218.1,102.1,218.1z M348.1,252.4H244.9c-3.5,0-6.5-2.9-6.5-6.5V114
c0-3.5,2.9-6.5,6.5-6.5h103.3c3.5,0,6.5,2.9,6.5,6.5v131.9C354.6,249.5,351.7,252.4,348.1,252.4L348.1,252.4z M244.9,109.5
c-2.5,0-4.6,2-4.6,4.6V246c0,2.5,2,4.6,4.6,4.6h103.3c2.5,0,4.6-2,4.6-4.6V114c0-2.5-2-4.6-4.6-4.6L244.9,109.5z"/>
<path class="st3" d="M238.9,131.9h114.3v1.9H238.9V131.9z M238.9,155.7h114.3v1.9H238.9V155.7z M238.9,179.5h114.3v1.9H238.9V179.5z
M239.8,202.4h114.3v1.9H239.8V202.4z M238.9,227.1h114.3v1.9H238.9V227.1z"/>
<g>
<path class="st3" d="M255,120.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,119.4,255,120.5
L255,120.5z"/>
<path class="st3" d="M264.6,120.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,118.6,264.6,119.4,264.6,120.5L264.6,120.5z"/>
<path class="st3" d="M274.1,120.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,118.6,274.1,119.4,274.1,120.5L274.1,120.5z"/>
<path class="st3" d="M255,145.2c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,144.2,255,145.2
L255,145.2z"/>
<path class="st3" d="M264.6,145.2c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,143.3,264.6,144.2,264.6,145.2L264.6,145.2z"/>
<path class="st3" d="M274.1,145.2c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,143.3,274.1,144.2,274.1,145.2L274.1,145.2z"/>
<path class="st3" d="M255,169c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,168,255,169L255,169z"/>
<path class="st3" d="M264.6,169c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,167.1,264.6,168,264.6,169L264.6,169z"/>
<path class="st3" d="M274.1,169c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,167.1,274.1,168,274.1,169L274.1,169z"/>
<path class="st3" d="M255,191.9c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,190.8,255,191.9
L255,191.9z"/>
<path class="st3" d="M264.6,191.9c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S264.6,190.8,264.6,191.9
L264.6,191.9z"/>
<path class="st3" d="M274.1,191.9c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S274.1,190.8,274.1,191.9
L274.1,191.9z"/>
<path class="st3" d="M255,215.7c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,214.6,255,215.7
L255,215.7z"/>
<path class="st3" d="M264.6,215.7c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,213.8,264.6,214.6,264.6,215.7L264.6,215.7z"/>
<path class="st3" d="M274.1,215.7c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,213.8,274.1,214.6,274.1,215.7L274.1,215.7z"/>
<path class="st3" d="M255,239.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,238.5,255,239.5
L255,239.5z"/>
<path class="st3" d="M264.6,239.5c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S264.6,238.5,264.6,239.5
L264.6,239.5z"/>
<path class="st3" d="M274.1,239.5c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S274.1,238.5,274.1,239.5
L274.1,239.5z"/>
</g>
<path class="st3" d="M310.3,126.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C311.2,125.8,310.9,126.2,310.3,126.2z
M319.8,126.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C320.8,125.8,320.4,126.2,319.8,126.2z M329.3,126.2
c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C330.3,125.8,329.9,126.2,329.3,126.2z M338.9,126.2c-0.6,0-1-0.4-1-1v-9.5
c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C339.8,125.8,339.4,126.2,338.9,126.2z M310.3,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1
v9.5C311.2,149.6,310.9,150,310.3,150z M319.8,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,149.6,320.4,150,319.8,150z M329.3,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,149.6,329.9,150,329.3,150z M338.9,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,149.6,339.4,150,338.9,150z M310.3,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,174.4,310.9,174.7,310.3,174.7L310.3,174.7z M319.8,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,174.4,320.4,174.7,319.8,174.7L319.8,174.7z M329.3,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,174.4,329.9,174.7,329.3,174.7L329.3,174.7z M338.9,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,174.4,339.4,174.7,338.9,174.7L338.9,174.7z M310.3,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,197.2,310.9,197.6,310.3,197.6z M319.8,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,197.2,320.4,197.6,319.8,197.6z M329.3,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,197.2,329.9,197.6,329.3,197.6z M338.9,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,197.2,339.4,197.6,338.9,197.6z M310.3,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,221,310.9,221.4,310.3,221.4z M319.8,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,221,320.4,221.4,319.8,221.4z M329.3,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,221,329.9,221.4,329.3,221.4z M338.9,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,221,339.4,221.4,338.9,221.4z M310.3,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,244.8,310.9,245.2,310.3,245.2z M319.8,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,244.8,320.4,245.2,319.8,245.2z M329.3,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,244.8,329.9,245.2,329.3,245.2z M338.9,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,244.8,339.4,245.2,338.9,245.2z M353.6,149.9V148c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-1.9
c7.6,0,13.7,6.2,13.7,13.7S361.2,149.9,353.6,149.9z"/>
<path class="st3" d="M353.6,165.1v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-1.9c7.6,0,13.7,6.2,13.7,13.7
C367.3,158.9,361.2,165.1,353.6,165.1z M353.6,204.2v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-1.9
c7.6,0,13.7,6.2,13.7,13.7C367.3,198,361.2,204.2,353.6,204.2z"/>
<path class="st3" d="M353.6,219.4v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8V192c7.6,0,13.7,6.2,13.7,13.7
C367.3,213.2,361.2,219.4,353.6,219.4z"/>
<path class="st3" d="M353.6,238.5v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-2c7.6,0,13.7,6.2,13.7,13.7
C367.3,232.3,361.2,238.5,353.6,238.5z M235,231.9h3.8v14.3H235V231.9z"/>
<path class="st3" d="M190.3,193.8h2.9v6.7h-2.9V193.8z M202.7,193.8h2.9v6.7h-2.9V193.8z"/>
<path class="st3" d="M192.2,189.5c-0.2,0-0.3-0.1-0.4-0.2l-2.9-4.8c-0.1-0.2-0.1-0.5,0.2-0.7c0.2-0.1,0.5-0.1,0.7,0.2l2.9,4.8
c0.1,0.2,0.1,0.5-0.2,0.7H192.2z M197.4,188c-0.3,0-0.5-0.2-0.5-0.5V182c0-0.3,0.2-0.5,0.5-0.5s0.5,0.2,0.5,0.5v5.5
C197.9,187.8,197.7,188,197.4,188z M202.6,189.4c-0.1,0-0.2,0-0.3-0.1c-0.2-0.2-0.3-0.5-0.1-0.7l3-4.7c0.2-0.2,0.5-0.3,0.7-0.1
s0.3,0.5,0.1,0.7l-3,4.7C202.9,189.3,202.7,189.4,202.6,189.4z"/>
<path class="st3" d="M69.7,190.5l5.7-0.9c0.6,1.9,1.9,2.9,4.2,3c2.4-0.2,3.7-1.2,4-3.3c-0.1-2.2-1.5-3.3-4.2-3.4
c-1.7,0.1-3,0.5-4,1.1h-4.7l1-11.2h16.1v3.6H76.5l-0.6,4.6c1.5-0.8,3.2-1.1,5-1.1c5.3,0.1,8.2,2.2,8.4,6.3c-0.2,4.3-3.4,6.5-9.7,6.7
C74.4,195.6,71.1,193.9,69.7,190.5L69.7,190.5z M111.2,185.5c0.2,6.9-3.1,10.3-9.9,10.1c-6.6-0.1-9.8-3.4-9.9-10
c0.2-6.7,3.5-10.2,9.9-10.4C107.8,175.2,111.1,178.7,111.2,185.5z M105.1,185.6c0.1-4.9-1.1-7.2-3.7-7c-2.7-0.1-4,2.3-4,7
c0,4.6,1.3,7,4,7C104,192.5,105.2,190.2,105.1,185.6z M133.1,185.5c0.2,6.9-3.1,10.3-9.9,10.1c-6.6-0.1-9.8-3.4-9.9-10
c0.2-6.7,3.5-10.2,9.9-10.4C129.7,175.2,133,178.7,133.1,185.5z M127,185.6c0.1-4.9-1.1-7.2-3.7-7c-2.7-0.1-4,2.3-4,7
c0,4.6,1.3,7,4,7C125.9,192.5,127.1,190.2,127,185.6z"/>
</svg>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
export default{
//输入框的输入限制
getInputVal: function(val, max) {
var returnValue = '';
var byteValLen = 0;
for (var i = 0; i < val.length; i++) {
if (val[i].match(/[^\x00-\xff]/ig) != null)
byteValLen += 1;
else
byteValLen += 0.5;
if (byteValLen > max)
break;
returnValue += val[i];
}
return returnValue;
},
/*
* 一个汉字算一个字,一个英文字母或数字算半个字
*/
getZhLen: function (val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 1;
}
else {
len += 0.5;
}
}
return Math.ceil(len);
},
}
\ No newline at end of file
!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,l,a=0,p=[];a<e.length;a++)i=e[a],t[i]&&p.push(t[i][0]),t[i]=0;for(f in u)Object.prototype.hasOwnProperty.call(u,f)&&(r[f]=u[f]);for(n&&n(e,u,c);p.length;)p.shift()();if(c)for(a=0;a<c.length;a++)l=o(o.s=c[a]);return l};var e={},t={2:0};function o(n){if(e[n])return e[n].exports;var t=e[n]={i:n,l:!1,exports:{}};return r[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=e,o.d=function(r,n,e){o.o(r,n)||Object.defineProperty(r,n,{configurable:!1,enumerable:!0,get:e})},o.n=function(r){var n=r&&r.__esModule?function(){return r.default}:function(){return r};return o.d(n,"a",n),n},o.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},o.p="/integral-mall/",o.oe=function(r){throw console.error(r),r}}([]);
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="shortcut icon" href="./static/img/favicon.ico">
<title>GIC后台</title>
<link rel="stylesheet" type="text/css" href="static/css/iconfont.css">
<link rel="stylesheet" type="text/css" href="static/css/common.css">
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
{
"name": "integral-mall",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@gic-test/vue-gic-aside-menu": {
"version": "1.1.45",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-aside-menu/download/@gic-test/vue-gic-aside-menu-1.1.45.tgz",
"integrity": "sha1-07g0DhRAhJUzyB4ujaJulSflEik=",
"requires": {
"axios": "0.18.0",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-card": {
"version": "1.0.35",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-card/download/@gic-test/vue-gic-card-1.0.35.tgz",
"integrity": "sha1-o1AmqFFtBdVXumHXbaMjbRJrJ/Q=",
"requires": {
"axios": "0.18.0",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-confirm-people": {
"version": "1.0.2",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-confirm-people/download/@gic-test/vue-gic-confirm-people-1.0.2.tgz",
"integrity": "sha1-AFkmY2d2PXgz7ELwGQCfKSryzBY=",
"requires": {
"axios": "0.18.0",
"qs": "6.5.2",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-footer": {
"version": "1.0.9",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-footer/download/@gic-test/vue-gic-footer-1.0.9.tgz",
"integrity": "sha1-rFQTTFVAiLmiYQIU8ghi6LCjSSs=",
"requires": {
"axios": "0.18.0",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-header": {
"version": "1.3.30",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-header/download/@gic-test/vue-gic-header-1.3.30.tgz",
"integrity": "sha1-g14tZkQuUVzQcLrUYC4UBMOFK88=",
"requires": {
"axios": "0.18.0",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-people": {
"version": "1.2.8",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-people/download/@gic-test/vue-gic-people-1.2.8.tgz",
"integrity": "sha1-s4OI2Z4nQ9A82GAAPfTEGXjaXdM=",
"requires": {
"@riophae/vue-treeselect": "0.0.35",
"axios": "0.18.0",
"localforage": "1.7.2",
"vue": "2.5.17"
},
"dependencies": {
"@riophae/vue-treeselect": {
"version": "0.0.35",
"resolved": "https://registry.npmjs.org/@riophae/vue-treeselect/-/vue-treeselect-0.0.35.tgz",
"integrity": "sha512-MluY8JRx7yD3AE39g54HnYtcD9cxVTUsqXo6Tjs4+gq41XzlTJhyUJLsSSMtT49qonKbL6gOjK7F/wm+Y9LFQA==",
"requires": {
"babel-helper-vue-jsx-merge-props": "2.0.3",
"easings-css": "1.0.0",
"fuzzysearch": "1.0.3",
"google-material-color": "1.3.1",
"is-promise": "2.1.0",
"lodash": "4.17.11",
"watch-size": "2.0.0"
}
},
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-store": {
"version": "1.0.38",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-store/download/@gic-test/vue-gic-store-1.0.38.tgz",
"integrity": "sha1-RZg9tNtGtS4UQ38glIWx4MCZQEo=",
"requires": {
"axios": "0.18.0",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-store-group": {
"version": "1.0.4",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-store-group/download/@gic-test/vue-gic-store-group-1.0.4.tgz",
"integrity": "sha1-Ak5uUtJJstlqYY5RCAgCJSV3+jk=",
"requires": {
"axios": "0.18.0",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"@gic-test/vue-gic-store-linkage": {
"version": "1.0.6",
"resolved": "http://www.gicdev.com:7001/@gic-test/vue-gic-store-linkage/download/@gic-test/vue-gic-store-linkage-1.0.6.tgz",
"integrity": "sha1-thiyJQQFMXVnC87YfqkPSCK7XzU=",
"requires": {
"axios": "0.18.0",
"vue": "2.5.17"
},
"dependencies": {
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npm.taobao.org/axios/download/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "1.5.8",
"is-buffer": "1.1.6"
}
},
"vue": {
"version": "2.5.17",
"resolved": "http://registry.npm.taobao.org/vue/download/vue-2.5.17.tgz",
"integrity": "sha1-D4eJrXGL5oyhhyYpgy7VM1icato="
}
}
},
"babel-helper-vue-jsx-merge-props": {
"version": "2.0.3",
"resolved": "http://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
"integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
},
"debug": {
"version": "3.1.0",
"resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"requires": {
"ms": "2.0.0"
}
},
"easings-css": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/easings-css/download/easings-css-1.0.0.tgz",
"integrity": "sha1-3eVpADu3pKDAt3h49ds+C+VnnIE="
},
"follow-redirects": {
"version": "1.5.8",
"resolved": "http://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.8.tgz",
"integrity": "sha1-Hb/hPkWtlp+BPobADlKW9SXIhaE=",
"requires": {
"debug": "3.1.0"
}
},
"fuzzysearch": {
"version": "1.0.3",
"resolved": "http://registry.npm.taobao.org/fuzzysearch/download/fuzzysearch-1.0.3.tgz",
"integrity": "sha1-3/yA9tawQiPyImqnndGUIxCW0Ag="
},
"google-material-color": {
"version": "1.3.1",
"resolved": "http://registry.npm.taobao.org/google-material-color/download/google-material-color-1.3.1.tgz",
"integrity": "sha1-mAgtTthq9DuzqxHEmoHrmcrKEFY=",
"requires": {
"lodash": "2.4.2"
},
"dependencies": {
"lodash": {
"version": "2.4.2",
"resolved": "http://registry.npm.taobao.org/lodash/download/lodash-2.4.2.tgz",
"integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
}
}
},
"immediate": {
"version": "3.0.6",
"resolved": "http://registry.npm.taobao.org/immediate/download/immediate-3.0.6.tgz",
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
"is-buffer": {
"version": "1.1.6",
"resolved": "http://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz",
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
},
"is-promise": {
"version": "2.1.0",
"resolved": "http://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"lie": {
"version": "3.1.1",
"resolved": "http://registry.npm.taobao.org/lie/download/lie-3.1.1.tgz",
"integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
"requires": {
"immediate": "3.0.6"
}
},
"localforage": {
"version": "1.7.2",
"resolved": "http://registry.npm.taobao.org/localforage/download/localforage-1.7.2.tgz",
"integrity": "sha1-+kRCYC+Abt0rympUq05lbwMfEhw=",
"requires": {
"lie": "3.1.1"
}
},
"lodash": {
"version": "4.17.11",
"resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz",
"integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40="
},
"ms": {
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"qs": {
"version": "6.5.2",
"resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
"integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
},
"watch-size": {
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/watch-size/download/watch-size-2.0.0.tgz",
"integrity": "sha1-CW7ijQNlvX6gPZyL8fL1CnO+FHQ="
}
}
}
{
"name": "integral-mall",
"version": "1.0.0",
"description": "A Vue.js project",
"author": "",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js",
"publish": "publish.bat"
},
"dependencies": {
"@antv/data-set": "^0.8.9",
"@antv/g2": "^3.2.6",
"@gic-test/vue-gic-aside-menu": "^1.1.45",
"@gic-test/vue-gic-card": "^1.0.35",
"@gic-test/vue-gic-confirm-people": "^1.0.2",
"@gic-test/vue-gic-footer": "^1.0.9",
"@gic-test/vue-gic-header": "^1.3.30",
"@gic-test/vue-gic-people": "^1.2.8",
"@gic-test/vue-gic-store": "^1.0.38",
"@gic-test/vue-gic-store-group": "^1.0.4",
"@gic-test/vue-gic-store-linkage": "^1.0.6",
"@riophae/vue-treeselect": "^0.0.36",
"@tinymce/tinymce-vue": "^1.0.8",
"axios": "^0.18.0",
"echarts": "^4.1.0",
"element-ui": "^2.4.1",
"packele": "^1.0.3",
"scriptjs": "^2.5.8",
"tinymce": "^4.8.2",
"v-charts": "^1.17.8",
"viser-vue": "^2.2.5",
"vue": "^2.5.2",
"vue-axios": "^2.1.1",
"vue-photo-preview": "^1.0.9",
"vue-qr": "^1.3.8",
"vue-router": "^3.0.1",
"vue-ueditor-wrap": "^1.3.4",
"vue2-editor": "^2.5.0",
"vuedraggable": "^2.16.0",
"vuex": "^3.0.1"
},
"devDependencies": {
"ansi-html": "^0.0.7",
"autoprefixer": "^7.1.2",
"babel-cli": "^6.26.0",
"babel-core": "^6.22.1",
"babel-eslint": "^9.0.0",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.1",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2",
"babel-preset-flow": "^6.23.0",
"babel-preset-stage-2": "^6.22.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"element-theme-chalk": "^2.4.1",
"eslint": "^5.6.0",
"eslint-config-standard": "^12.0.0",
"eslint-friendly-formatter": "^4.0.1",
"eslint-loader": "^2.1.1",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^7.0.1",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^4.7.1",
"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",
"localforage": "^1.7.2",
"node-notifier": "^5.1.2",
"node-sass": "^4.9.0",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0",
"portfinder": "^1.0.13",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1",
"rimraf": "^2.6.0",
"sass-loader": "^7.0.3",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-lazyload": "^1.2.6",
"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">
<keep-alive :include="include">
<router-view></router-view>
</keep-alive>
</div>
</template>
<script>
export default {
name: 'App',
data(){
return {
include:[]
}
}
}
</script>
<style lang="scss">
@import './assets/theme/index.css';
@import './assets/style/base/index.scss';
@import './assets/iconfont/iconfont.css';
#app{
height: 100%;
background-color: #f0f2f5;
}
</style>
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1538039525675'); /* IE9*/
src: url('iconfont.eot?t=1538039525675#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
url('iconfont.ttf?t=1538039525675') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('iconfont.svg?t=1538039525675#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-tupian:before { content: "\e6d2"; }
.icon-guaguaqia:before { content: "\e6e0"; }
.icon-video:before { content: "\e620"; }
.icon-dazhuanpan:before { content: "\e602"; }
.icon-tupian1:before { content: "\e6ff"; }
.icon-17:before { content: "\e613"; }
.icon-shuangxianghujiao:before { content: "\e617"; }
.icon-qiaquanyingxiao:before { content: "\e614"; }
.icon-jia:before { content: "\e652"; }
.icon-erweima:before { content: "\e6bc"; }
.icon-lianjie:before { content: "\e627"; }
.icon-fenzu:before { content: "\e6d6"; }
.icon-mobanku:before { content: "\e659"; }
.icon-yuyinxiaoxi:before { content: "\e65d"; }
.icon-tijianyi:before { content: "\e7b1"; }
.icon-tiaoxingma101:before { content: "\e6f7"; }
.icon-shangchuan:before { content: "\e667"; }
.icon-wxcard-copy:before { content: "\e603"; }
.icon-wsc:before { content: "\e60b"; }
.icon-jibenxinxi:before { content: "\e649"; }
.icon-chuzhi:before { content: "\e60a"; }
.icon-jihua:before { content: "\e607"; }
.icon-duanxin:before { content: "\e61d"; }
.icon-qiaquan:before { content: "\e60d"; }
.icon-duanxinyingxiao:before { content: "\e615"; }
.icon-pintu:before { content: "\e683"; }
.icon-shipin:before { content: "\e63a"; }
.icon-liebiao:before { content: "\e62f"; }
.icon-youxi1:before { content: "\e62d"; }
.icon-mendian1:before { content: "\e82a"; }
.icon-hexiao:before { content: "\e606"; }
.icon-weixinyingxiao:before { content: "\e653"; }
.icon-fenxi:before { content: "\e608"; }
.icon-shoujiyanzhengma:before { content: "\e619"; }
.icon-shanchu:before { content: "\e605"; }
.icon-next-:before { content: "\e611"; }
.icon-xiaofei:before { content: "\e609"; }
.icon-icon-QRcode:before { content: "\e6fd"; }
.icon-qiaquanbao:before { content: "\e604"; }
.icon-paixu_up-copy:before { content: "\e600"; }
.icon-xinxiguanli:before { content: "\e610"; }
.icon-huiyuanguanli:before { content: "\e60c"; }
.icon-tonghuajilu:before { content: "\e69b"; }
.icon-jilu:before { content: "\e756"; }
.icon-duankailianjie:before { content: "\e674"; }
.icon-xiaofei1:before { content: "\e6e3"; }
.icon-guijijiansuo:before { content: "\e616"; }
.icon-zhankai:before { content: "\e742"; }
.icon-shouqi:before { content: "\e743"; }
.icon-hudong:before { content: "\e60e"; }
.icon-yuyin:before { content: "\e650"; }
.icon-record-actice:before { content: "\e672"; }
.icon-bianji:before { content: "\e618"; }
.icon-zhinengyinqing:before { content: "\e734"; }
.icon-tuozhuai:before { content: "\ea17"; }
.icon-yingxiaohuodongguanli:before { content: "\e785"; }
.icon-zhuzuoquan:before { content: "\e60f"; }
.icon-tiaoxingma:before { content: "\ea30"; }
.icon-weixin-:before { content: "\e6ab"; }
.icon-huiyuanpengyou:before { content: "\e6ad"; }
.icon-dianshangtupian:before { content: "\e6ae"; }
.icon-jifen:before { content: "\e6b0"; }
.icon-renzhengxinxi:before { content: "\e6b2"; }
.icon-huiyuantequan-:before { content: "\e6b3"; }
.icon-huiyuanjiazhifenlei:before { content: "\e6b4"; }
.icon-sucaiku:before { content: "\e6b5"; }
.icon-qiapian-:before { content: "\e6b6"; }
.icon-qiaquan-:before { content: "\e6ba"; }
.icon-wodeqiaquan-:before { content: "\e6bb"; }
.icon-mima:before { content: "\e6be"; }
.icon-moban:before { content: "\e6bf"; }
.icon-fenxi-:before { content: "\e6c0"; }
.icon-qiandao-:before { content: "\e6c1"; }
.icon-qiandaopx:before { content: "\e6c2"; }
.icon-pingjiaguanli:before { content: "\e6c3"; }
.icon-shu:before { content: "\e6c4"; }
.icon-pintu1:before { content: "\e6c7"; }
.icon-mendian:before { content: "\e6c8"; }
.icon-shanghuxinxi:before { content: "\e6c9"; }
.icon-huafei:before { content: "\e6ca"; }
.icon-icon_huiyuanguanli:before { content: "\e6cb"; }
.icon-erjicaidan-jiesuanguanli:before { content: "\e6cc"; }
.icon-xinyongqiajiesuanfuwu:before { content: "\e6cd"; }
.icon-laowujiesuan:before { content: "\e6ce"; }
.icon-huifu:before { content: "\e6cf"; }
.icon-zidingyicaidan-:before { content: "\e6d0"; }
.icon-zujian-lunbo:before { content: "\e6d1"; }
.icon-cg-yuanshengguanggao:before { content: "\e6d3"; }
.icon-youxi:before { content: "\e6d4"; }
.icon-icon_zidingyiyemianshezhi:before { content: "\e6d5"; }
.icon-daohang-:before { content: "\e6d7"; }
.icon-huiyuan-:before { content: "\e6d9"; }
.icon-shequ-zhutifenxiang:before { content: "\e6da"; }
.icon-icon_yunxiazai:before { content: "\e6e8"; }
.icon-Icon_addPhotoB:before { content: "\e68a"; }
.icon-mobanxiaoxiku:before { content: "\e6e9"; }
.icon-mobanxiaoxiqunfa:before { content: "\e6ea"; }
.icon-yd-icon-upload2:before { content: "\e6ec"; }
.icon-tubiaoweikong:before { content: "\e7ae"; }
.icon-CSV:before { content: "\e601"; }
.icon-huiyuanzaixiangoutong:before { content: "\e708"; }
.icon-shiwufenpeijizhi:before { content: "\e709"; }
.icon-oa_nofind:before { content: "\e612"; }
.icon-selected:before { content: "\e6bd"; }
.icon-saomiao:before { content: "\e65e"; }
.icon-shipin1:before { content: "\e625"; }
.icon-jifenmingxibiao:before { content: "\e746"; }
.icon-jifenjiesuanguishu:before { content: "\e747"; }
.icon-jifenchengbenpeizhi:before { content: "\e748"; }
.icon-dongjie:before { content: "\e749"; }
.icon-yemianshezhi:before { content: "\e74e"; }
.icon-xinxixianshi:before { content: "\e74f"; }
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 400 335" style="enable-background:new 0 0 400 335;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FAFCFF;}
.st1{fill:#DBE5F1;}
.st2{fill:#DEE7F4;}
.st3{fill:#B9C7DB;}
.st4{fill:#FFFFFF;}
.st5{fill:none;stroke:#B9C7DB;stroke-width:4;stroke-miterlimit:10;}
.st6{fill:none;stroke:#B6C7D8;stroke-miterlimit:10;}
</style>
<path class="st5" d="M274.5,241.3c-5.3-5.3-4.4,4.4-6.7,6.7c-3.1,3.1-6.3,6-9.7,8.6H125.2c-3.4-2.7-6.6-5.6-9.7-8.7
c-28.4-28.5-38.6-70.5-26.6-109l-10.5-10.6c-5.3-5.3-5.3-13.8,0-19.2c5.2-5.3,13.7-5.3,19-0.1c0,0,0,0,0.1,0.1l6.6,6.8
c3.1,3.2,8.2,3.2,11.4,0l0,0c3.2-3.2,3.2-8.3,0-11.5L103.1,92c-3.2-3.2-3.2-8.3,0-11.5c3.1-3.2,8.2-3.2,11.4,0l0,0l17.2,17.2
c-0.9,3.7,0.9,7.6,4.4,9.3c3.5,1.7,7.7,0.6,9.9-2.5c2.3-3.1,2.1-7.4-0.5-10.3c-3.3-3.8-6.5-7.2-6.5-7.2l-7.3-7.4
c34.8-21.3,82.6-21.7,117.2,0c34.5,21.7,53.9,61.2,50,101.9l15.4,15.6c3.2,3.2,3.2,8.3,0,11.5c-3.1,3.2-8.2,3.2-11.4,0l0,0
l-15.1-15.3c-3.1-3.2-8.2-3.2-11.4,0l0,0c-3.2,3.2-3.2,8.3,0,11.5l17.1,17.2c5.2,5.3,5.2,13.8,0,19.1
C288.4,246.6,279.9,246.6,274.5,241.3C274.6,241.3,274.6,241.3,274.5,241.3L274.5,241.3z"/>
<path class="st3" d="M86.6,71.4c0,4.7,3.8,8.5,8.5,8.5c1.5,0,3-0.4,4.3-1.1c4.1-2.3,5.5-7.5,3.1-11.6c-1.5-2.6-4.3-4.3-7.4-4.3
C90.4,62.9,86.6,66.7,86.6,71.4"/>
<path class="st3" d="M216.4,145.4h24.3l-7.4,17.9c2.6,1.8,4.5,3.8,5.8,6c1.2,2.2,1.9,4.8,1.9,7.8c0,4.6-1.6,8.4-4.8,11.2
c-3.2,2.9-7.3,4.3-12.3,4.3c-2.5,0-5.1-0.4-7.5-1.1v-13.1c2,0.9,3.9,1.4,5.5,1.4s2.9-0.5,3.7-1.4c0.9-1,1.3-2.3,1.3-4.1
c0-1.9-0.8-3.4-2.4-4.6c-1.6-1.2-3.7-1.7-6.4-1.7l3.4-9.1h-5.1V145.4L216.4,145.4z M207.5,181.6c0,1.5-0.3,3-0.8,4.3
s-1.3,2.5-2.3,3.5s-2.2,1.8-3.4,2.3c-1.3,0.6-2.8,0.9-4.3,0.9h-9.6c-1.5,0-2.9-0.3-4.3-0.9c-1.3-0.6-2.5-1.3-3.4-2.3
c-0.4-0.4-0.8-0.9-1.2-1.4l11.7-17.3v6c0,0.6,0.2,1.1,0.6,1.4c0.4,0.4,0.8,0.6,1.4,0.6c1.1,0,2-0.8,2-1.9v-0.1v-11.9l10.9-16.1
c1.8,2,2.8,4.6,2.7,7.3L207.5,181.6L207.5,181.6L207.5,181.6z M177.1,185.9c-0.6-1.4-0.9-2.8-0.8-4.3V156c0-1.5,0.3-3,0.8-4.3
s1.3-2.5,2.3-3.5s2.2-1.8,3.4-2.3c1.3-0.6,2.8-0.9,4.3-0.9h9.6c1.5,0,2.9,0.3,4.3,0.9c1.3,0.5,2.4,1.3,3.4,2.3l-10.5,15.4v-2.7
c0-0.5-0.2-1.1-0.6-1.4c-0.4-0.4-0.9-0.6-1.4-0.6c-1.1,0-2,0.8-2,1.9v0.1v8.6l-12.1,17.9C177.5,186.9,177.3,186.4,177.1,185.9
L177.1,185.9z M243.8,192.7c3.5-7.4,5.3-15.5,5.3-23.7c0-30.5-24.4-55.2-54.6-55.2s-54.6,24.7-54.6,55.2c0,0.4,0,0.8,0,1.1
l19.6-24.6h11.4L154,171.3h5.5v-6.5l11.7-18.5v46.8h-11.7v-9.8h-17.8c5.1,19.2,20.1,34.3,39.2,39.2c-1.2,3.1-4.8,10.7-10.7,12
c-7.3,1.7,19.9,0.4,39.4-12.5c14.9-4.4,27.2-15,33.9-28.9L243.8,192.7L243.8,192.7z"/>
<path class="st4" d="M238.9,154.3l-24.4,35.4l0.5,0.3l24.4-35.4L238.9,154.3z"/>
<path class="st3" d="M266.2,66.6h8c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.4-0.1,0.7-0.4,1c-0.2,0.3-0.6,0.4-0.9,0.4h-8
c-0.4,0-0.7-0.1-0.9-0.4c-0.5-0.5-0.5-1.4,0-1.9C265.5,66.7,265.8,66.6,266.2,66.6 M116.5,201.9c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1
s8-3.6,8-8.1S120.9,201.9,116.5,201.9L116.5,201.9z M121.4,212.1c-0.8,2-2.8,3.3-4.9,3.3c-3,0-5.3-2.4-5.3-5.4c0-2.2,1.3-4.1,3.3-5
c2-0.8,4.3-0.4,5.8,1.2C121.8,207.7,122.2,210,121.4,212.1L121.4,212.1z M191.3,78.7c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1
c2.1,0,4.2-0.9,5.7-2.4s2.3-3.6,2.3-5.7C199.3,82.4,195.7,78.7,191.3,78.7z M196.3,88.9c-0.8,2-2.8,3.3-4.9,3.3
c-3,0-5.3-2.4-5.3-5.4c0-2.2,1.3-4.2,3.3-5s4.3-0.4,5.8,1.2C196.6,84.6,197.1,86.9,196.3,88.9L196.3,88.9z M270.2,162.6
c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1s8-3.6,8-8.1C278.2,166.3,274.6,162.6,270.2,162.6z M275.1,172.8c-0.8,2-2.8,3.3-4.9,3.3
c-3,0-5.3-2.4-5.3-5.4c0-2.2,1.3-4.2,3.3-5s4.3-0.4,5.8,1.2S275.9,170.8,275.1,172.8z M230.1,31.4c-4.4,0-8,3.6-8,8.1s3.6,8.1,8,8.1
c2.1,0,4.2-0.9,5.7-2.4s2.3-3.6,2.3-5.7C238.1,35,234.5,31.4,230.1,31.4z M235,41.6c-0.8,2-2.8,3.3-4.9,3.3c-3,0-5.3-2.4-5.3-5.4
c0-2.2,1.3-4.2,3.3-5s4.3-0.4,5.8,1.2C235.4,37.2,235.8,39.5,235,41.6z"/>
<path class="st3" d="M163.2,45.9h8.2c0.4,0,0.7,0.1,1,0.4c0.5,0.5,0.5,1.3,0,1.9l0,0c-0.3,0.3-0.6,0.4-1,0.4h-8.2
c-0.4,0-0.7-0.1-1-0.4c-0.5-0.5-0.5-1.3,0-1.9l0,0C162.4,46.1,162.8,45.9,163.2,45.9 M271.7,63.5v8c0,0.4-0.1,0.7-0.4,0.9
c-0.3,0.3-0.6,0.4-1,0.4c-0.7,0-1.4-0.6-1.4-1.3l0,0v-8c0-0.4,0.1-0.7,0.4-0.9c0.5-0.5,1.4-0.5,1.9,0
C271.6,62.8,271.7,63.2,271.7,63.5"/>
<path class="st3" d="M107.4,154.8h8.2c0.4,0,0.7,0.1,1,0.4c0.3,0.2,0.4,0.6,0.4,0.9c0,0.7-0.6,1.3-1.4,1.3h-8.2
c-0.5,0-0.9-0.3-1.2-0.7c-0.2-0.4-0.2-0.9,0-1.3C106.4,155.1,106.9,154.8,107.4,154.8 M169,42.7v8c0,0.4-0.1,0.7-0.4,0.9
c-0.5,0.5-1.4,0.5-2,0c-0.2-0.2-0.4-0.6-0.4-0.9v-8c0-0.4,0.1-0.7,0.4-0.9c0.5-0.5,1.4-0.5,1.9,0C168.8,42,169,42.3,169,42.7"/>
<path class="st3" d="M230.9,110.3h8.1c0.7,0,1.3,0.6,1.3,1.4c0,0.7-0.6,1.3-1.3,1.4h-8.1c-0.8,0-1.4-0.6-1.4-1.4
c0-0.4,0.1-0.7,0.4-1C230.2,110.4,230.6,110.3,230.9,110.3"/>
<path class="st3" d="M114.6,163.8v8.2c0,0.4-0.1,0.7-0.4,1c-0.5,0.5-1.4,0.5-1.9,0c-0.3-0.3-0.4-0.6-0.4-1v-8.2c0-0.4,0.1-0.7,0.4-1
c0.5-0.5,1.4-0.5,1.9,0l0,0C114.4,163.1,114.6,163.4,114.6,163.8"/>
<path class="st1" d="M126,272.7h60.4c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4H126c-0.7,0-1.3-0.6-1.3-1.3
C124.7,273.3,125.3,272.7,126,272.7"/>
<path class="st1" d="M218.6,272.7h34.9c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-34.9c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C217.9,272.9,218.2,272.7,218.6,272.7"/>
<path class="st1" d="M158.2,282.2h131.5c0.7,0,1.3,0.6,1.4,1.3c0,0.4-0.1,0.7-0.4,1c-0.3,0.3-0.6,0.4-1,0.4H158.2
c-0.7,0-1.3-0.6-1.3-1.3l0,0C156.9,282.8,157.5,282.2,158.2,282.2"/>
<path class="st1" d="M93.8,282.2h34.9c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4l0,0H93.8c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C93.1,282.3,93.5,282.2,93.8,282.2"/>
<path class="st1" d="M197.1,272.7h8.1c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-8.1c-0.7,0.1-1.4-0.5-1.4-1.3
c-0.1-0.7,0.5-1.4,1.3-1.4C197,272.7,197.1,272.7,197.1,272.7"/>
<path class="st1" d="M284.4,264.6h8.1c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.3h-8.1c-0.7,0-1.3-0.6-1.3-1.3
C283,265.3,283.6,264.6,284.4,264.6"/>
<path class="st1" d="M99.2,264.6h171.7c0.4,0,0.7,0.1,0.9,0.4c0.4,0.4,0.5,1,0.3,1.5c-0.2,0.5-0.7,0.8-1.2,0.8H99.1
c-0.7,0-1.3-0.6-1.3-1.3C97.8,265.3,98.4,264.6,99.2,264.6"/>
<path class="st3" d="M235,95.8v8.1c0,0.7-0.6,1.3-1.3,1.3s-1.3-0.6-1.3-1.3v-8.1c0-0.7,0.6-1.3,1.3-1.4C234.4,94.4,235,95,235,95.8"
/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 400 335" style="enable-background:new 0 0 400 335;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FAFCFF;}
.st1{fill:#DBE5F1;}
.st2{fill:#DEE7F4;}
.st3{fill:#B9C7DB;}
.st4{fill:#FFFFFF;}
.st5{fill:none;stroke:#B9C7DB;stroke-width:4;stroke-miterlimit:10;}
.st6{fill:none;stroke:#B6C7D8;stroke-miterlimit:10;}
</style>
<path class="st0" d="M80.9,159.3c0,50.2,40.7,90.9,90.9,90.9s90.9-40.7,90.9-90.9l0,0c0-50.2-40.7-90.9-90.9-90.9
C121.6,68.3,80.9,109,80.9,159.3C80.9,159.2,80.9,159.3,80.9,159.3z"/>
<path class="st1" d="M96.3,264.2c-0.9,0-2,0-2.8-0.1l0.3-2.7c1.6,0.1,3.3,0.1,5.1,0l0.1,2.7C98,264.1,97.1,264.2,96.3,264.2z
M104.3,263.4l-0.4-2.7c1.6-0.3,3.3-0.7,5.1-1.1l0.7,2.5C107.9,262.8,106,263.2,104.3,263.4z M87.8,263c-1.9-0.5-3.6-1.3-5.2-2.3
l1.3-2.3c1.3,0.8,2.9,1.5,4.5,2L87.8,263L87.8,263z M114.8,260.6l-0.8-2.5c1.6-0.5,3.3-1.2,4.9-1.9l0.9,2.5
C118.2,259.6,116.6,260.1,114.8,260.6z M78.2,257.1c-1.2-1.3-2.3-2.9-3.2-4.7l2.4-1.2c0.8,1.5,1.7,2.9,2.8,4.1L78.2,257.1z
M125,256.7l-1.1-2.4c1.6-0.7,3.2-1.5,4.8-2.3l1.2,2.4C128.2,255.3,126.5,255.9,125,256.7z M134.6,251.9l-1.2-2.4
c1.5-0.8,3.1-1.7,4.7-2.5l1.3,2.3C137.7,250.2,136.1,251.1,134.6,251.9z M72.9,247.3c-0.5-1.7-0.9-3.5-1.2-5.5l2.7-0.4
c0.3,1.7,0.7,3.5,1.1,5.1L72.9,247.3L72.9,247.3z M144,246.6l-1.3-2.3c1.5-0.9,2.9-1.9,4.5-2.8l1.5,2.3
C146.9,244.6,145.5,245.6,144,246.6z M153,240.7l-1.5-2.3c1.5-0.9,2.9-2,4.4-3.1l1.6,2.1C155.9,238.7,154.4,239.6,153,240.7z
M71.3,236.4v-1.2c0-1.3,0-2.8,0.1-4.3l2.7,0.1c-0.1,1.3-0.1,2.8-0.1,4.1v1.1L71.3,236.4z M161.8,234.4l-1.6-2.1
c1.5-1.1,2.8-2.1,4.3-3.2l1.6,2.1C164.6,232.3,163.1,233.3,161.8,234.4z M170.2,227.9l-1.6-2.1c1.3-1.1,2.8-2.3,4.1-3.3l1.7,2
C173,225.6,171.7,226.8,170.2,227.9z M74.7,225.9l-2.7-0.4c0.3-1.7,0.5-3.5,0.9-5.3l2.7,0.5C75.3,222.5,75,224.3,74.7,225.9
L74.7,225.9z M178.5,221l-1.7-2c1.3-1.2,2.7-2.3,4-3.5l1.7,2C181.3,218.8,179.8,219.8,178.5,221z M76.9,215.6l-2.5-0.7l1.6-5.2
l2.5,0.8C77.9,212.2,77.4,214,76.9,215.6z M186.6,214l-1.7-2c1.3-1.2,2.7-2.4,3.9-3.6l1.9,2C189.2,211.6,188,212.8,186.6,214z
M194.4,206.6l-1.9-1.9c1.3-1.2,2.5-2.4,3.9-3.7l1.9,1.9C197.1,204.2,195.7,205.4,194.4,206.6z M80.2,205.5l-2.5-0.9
c0.7-1.6,1.3-3.3,2-4.9l2.5,1.1L80.2,205.5z M202.2,199.1l-1.9-1.9c1.2-1.2,2.5-2.5,3.7-3.9l1.9,1.9
C204.6,196.6,203.4,197.8,202.2,199.1z M84.5,195.6l-2.5-0.7c0.1-0.3,0.1-0.7,0.1-1.2c0-0.9-0.1-2-0.4-3.6l2.7-0.4
c0.3,1.7,0.4,3.1,0.4,4C84.6,194.4,84.6,195.1,84.5,195.6z M209.5,191.4l-2-1.9c1.2-1.3,2.4-2.5,3.6-3.9l2,1.7
C212,188.8,210.7,190,209.5,191.4z M80.8,184.9v-0.4c-0.3-1.5-0.5-3.2-0.9-4.9l2.7-0.4c0.3,1.7,0.7,3.3,0.9,4.9v0.4L80.8,184.9z
M215.5,184.8l-2-1.7c1.2-1.3,2.4-2.7,3.5-4l2,1.7C217.9,182.1,216.7,183.5,215.5,184.8z M222.6,176.8l-2-1.7c1.2-1.3,2.3-2.7,3.5-4
l2,1.7C225,174,223.8,175.5,222.6,176.8z M78.9,174.4c-0.3-1.9-0.5-3.6-0.7-5.3l2.7-0.3c0.1,1.7,0.4,3.5,0.7,5.2L78.9,174.4z
M229.6,168.5l-2.1-1.7c1.1-1.3,2.3-2.8,3.3-4.1l2.1,1.6C231.8,165.7,230.6,167.2,229.6,168.5z M77.7,163.6
c-0.1-1.9-0.1-3.6-0.1-5.5h2.7c0,1.7,0,3.5,0.1,5.2L77.7,163.6z M236.3,160.1l-2.1-1.6c1.1-1.5,2.1-2.8,3.2-4.3l2.1,1.6
C238.4,157.3,237.3,158.6,236.3,160.1z M80.4,152.9l-2.7-0.1c0.1-1.9,0.3-3.6,0.5-5.5l2.7,0.3C80.6,149.4,80.5,151.1,80.4,152.9z
M242.5,151.5l-2.1-1.6c1.1-1.5,2.1-2.9,3.1-4.3l2.1,1.5C244.7,148.6,243.6,150,242.5,151.5z M248.8,142.7l-2.3-1.5
c1.1-1.5,2-2.9,2.9-4.4l2.3,1.5C250.8,139.8,249.8,141.2,248.8,142.7z M81.7,142.4l-2.7-0.5c0.4-1.7,0.8-3.6,1.2-5.3l2.5,0.7
C82.4,139.1,82,140.7,81.7,142.4z M254.7,133.7l-2.3-1.5c0.9-1.5,1.9-3.1,2.8-4.5l2.3,1.3C256.6,130.7,255.6,132.1,254.7,133.7z
M84.5,132.4l-2.5-0.9c0.7-1.7,1.3-3.3,2.1-5.1l2.4,1.1C85.7,129.2,85,130.8,84.5,132.4z M260.2,124.5l-2.3-1.3
c0.9-1.6,1.7-3.1,2.7-4.7l2.3,1.3C262.1,121.4,261.1,122.9,260.2,124.5z M88.9,122.9l-2.3-1.3l0.9-1.6c0.5-0.9,1.1-2,1.7-2.9
l2.3,1.3c-0.5,1.1-1.2,2-1.7,2.9L88.9,122.9z M265.4,115.2L263,114c0.8-1.6,1.6-3.2,2.4-4.7l2.4,1.2
C267.1,111.9,266.3,113.5,265.4,115.2z M94.3,113.7l-2.3-1.3c0.9-1.5,1.9-3.1,2.8-4.5l2.3,1.5L94.3,113.7z M270.2,105.5l-2.4-1.1
c0.8-1.6,1.5-3.2,2.1-4.8l2.4,1.1C271.8,102.2,271,103.8,270.2,105.5z M100,104.9l-2.1-1.6l3.2-4.4l2.1,1.6
C102.1,101.9,101.1,103.3,100,104.9z M106.6,96.4l-2-1.7l3.6-4l1.9,1.9C108.8,93.8,107.6,95.1,106.6,96.4z M274.5,95.6l-2.5-0.9
c0.7-1.6,1.3-3.3,1.9-4.9l2.5,0.9C275.8,92.2,275.2,93.9,274.5,95.6z M113.9,88.9l-1.7-2c1.3-1.2,2.8-2.4,4.1-3.5l1.6,2.1
C116.6,86.7,115.1,87.7,113.9,88.9z M278.1,85.5l-2.5-0.8c0.5-1.7,1.1-3.5,1.5-5.1l2.5,0.7C279.2,81.9,278.8,83.6,278.1,85.5z
M122.1,82.4l-1.5-2.3c1.5-1.1,3.1-2,4.5-2.9l1.3,2.3C125,80.5,123.5,81.5,122.1,82.4z M131.2,77.2l-1.2-2.4
c1.6-0.8,3.3-1.5,4.9-2.3L136,75C134.4,75.7,132.8,76.4,131.2,77.2z M280.9,74.9l-2.7-0.5c0.4-1.7,0.7-3.5,0.8-5.2l2.7,0.4
C281.6,71.3,281.3,73.2,280.9,74.9z M140.9,73.2l-0.8-2.5l5.2-1.6l0.7,2.5C144.3,72.1,142.7,72.6,140.9,73.2z M151.1,70.4l-0.5-2.7
c1.7-0.4,3.6-0.8,5.3-1.1l0.4,2.7C154.6,69.7,152.8,70,151.1,70.4z M187.8,69.2c-1.5-0.1-3.2-0.4-5.2-0.5l0.3-2.7
c2.1,0.1,3.9,0.4,5.3,0.7L187.8,69.2z M194,68.9l-1.6-2.1c1.5-1.1,2.9-2.1,4.3-3.2l1.6,2.1C196.9,66.7,195.5,67.8,194,68.9z
M161.5,68.6l-0.3-2.7c1.7-0.3,3.6-0.4,5.3-0.4l0.1,2.7L161.5,68.6z M177.3,68.1c-1.6-0.1-3.2-0.1-4.8-0.1H172v-2.7h0.5
c1.6,0,3.2,0,4.9,0.1L177.3,68.1z M282.2,64.1l-2.7-0.1v-1.7c0-1.2,0-2.4-0.1-3.5l2.7-0.3c0.1,1.2,0.1,2.4,0.1,3.6V64.1z
M202.7,62.6l-1.5-2.3c1.5-1.1,2.9-2,4.4-2.9l1.5,2.3C205.6,60.6,204.2,61.7,202.7,62.6L202.7,62.6z M211.6,56.9l-1.5-2.3
c1.6-0.9,3.1-1.9,4.7-2.8l1.3,2.3C214.6,55,213.1,55.9,211.6,56.9z M278.6,53.8c-0.4-1.7-1.1-3.3-1.7-4.7l2.4-1.2
c0.8,1.6,1.5,3.3,2,5.3L278.6,53.8L278.6,53.8z M220.7,51.5l-1.3-2.4c1.6-0.9,3.2-1.7,4.8-2.5l1.2,2.4
C223.9,49.8,222.3,50.7,220.7,51.5z M230.2,46.7l-1.1-2.4c1.7-0.8,3.3-1.5,4.9-2.1l0.9,2.5C233.6,45.4,231.8,46,230.2,46.7z
M274.1,45l-0.9-0.9c-0.9-0.8-1.9-1.5-2.9-2.1l1.3-2.3c1.2,0.7,2.4,1.5,3.3,2.4c0.4,0.4,0.8,0.7,1.1,1.1L274.1,45L274.1,45z
M240,42.8l-0.8-2.5c1.7-0.7,3.5-1.2,5.2-1.6l0.7,2.5C243.5,41.7,241.7,42.3,240,42.8z M265.5,40.1c-1.6-0.4-3.2-0.7-5.1-0.8
l0.1-2.7c2,0.1,3.9,0.4,5.5,0.8L265.5,40.1L265.5,40.1z M250.2,40.1l-0.5-2.7c1.9-0.4,3.7-0.5,5.5-0.8l0.3,2.7
C253.8,39.5,252,39.7,250.2,40.1L250.2,40.1z"/>
<path class="st2" d="M92.1,178.4c5.6,5.9,32.8-11.2,60.8-38.2s46.2-53.7,40.6-59.6c0,0,0,0-0.1-0.1c-5.6-5.8-32.9,11.3-60.9,38.4
C104.6,145.9,86.5,172.6,92.1,178.4L92.1,178.4z"/>
<path class="st0" d="M122.1,117.3l5.7-5.7l25.5,25.5l-5.7,5.7L122.1,117.3z M163.8,147.2h148.4c3.7,0,6.7,2.9,6.7,6.7v61.5
c0,3.7-2.9,6.7-6.7,6.7H163.8c-3.7,0-6.7-2.9-6.7-6.7v-61.5C157.1,150.2,160,147.2,163.8,147.2z"/>
<path class="st3" d="M325.8,134.1v-5.6h2v5.6h5.6v2h-5.6v5.7h-2v-5.6h-5.6v-2L325.8,134.1L325.8,134.1z M86.6,202.5l-1.3-2.9
c-0.4-0.9-0.8-1.7-1.3-2.9l-0.8-3.3c-4-10.6-6.3-21.9-6.3-34c0-23.9,9-45.9,23.8-62.3L85.3,80.8c-1.6-1.7-1.6-4.5,0.1-6.2
c1.7-1.7,4.4-1.7,6.2-0.1l16.3,15.4c16.6-15,38.5-24.1,62.7-24.1c17.8,0,34.5,4.9,48.7,13.6c10.7,7.2,13.4,8.7,21,17.6
c5.7,6.7,6,6.4,10.7,14.2c0.8,0.1,7.5,11.8,7.5,15.6c2.4,6.3,4,13,4.9,19.7h48.4c2.7,0,5.1,1.1,7,2.9c1.9,1.9,2.9,4.4,2.9,7v57.8
c0,2.7-1.1,5.1-2.9,7c-1.9,1.9-4.4,2.9-7,2.9h-73.4c-17.1,17.8-41.2,28.9-67.8,28.9c-10.8,0-21.7-1.9-31.8-5.5
c-17.8-7.9-17.1-7.2-26.1-14.2s-10-9.4-22.7-25.9C88.6,205.3,87.7,204.5,86.6,202.5z M91.7,202.6c10.2,18.5,26.7,33,46.7,40.6
c8.6-5.3,23.7-16.8,25.5-19.3c-2.7,0-5.1-1.1-7-2.9s-2.9-4.4-2.9-7v-46.8c-9.6,6.3-20.6,10.8-31.7,13.5c-13.9,3.3-26.7,3.1-30.4-0.5
c-6.3-6.3,9.1-30.2,34.2-56.4l-23-24.2c-14,15.9-22.7,36.8-22.7,59.6c0,10.8,1.9,21.5,5.7,31.6l2,5.5
C88.8,197.4,89.3,198.9,91.7,202.6L91.7,202.6z M110.6,92.3l24.3,22.9l0.1-0.1c27-26.2,51.5-42,57.9-35.6c3.6,3.6,3.7,16.4,0.3,30.5
c-3.2,13-8.8,25.5-16.8,36.4h64.4c5.1-7,9.6-13.6,13.6-20.1c-13.1-33.4-45.7-57-83.7-57C147.5,69.4,126.5,78,110.6,92.3z M137.8,118
l17,16c11-11.4,20.5-22.7,26.7-32.2c6.6-9.9,9.1-16.8,7.5-18.5c-1.6-1.6-8.6,0.9-18.5,7.5C161,97.2,149.5,106.7,137.8,118z
M152.3,136.7L89,77c-0.3-0.3-0.8-0.3-1.1,0s-0.3,0.8,0,1.1l59.6,63.1C149.2,139.8,150.7,138.1,152.3,136.7z M144.9,143.8L129,127
c-10.6,11.1-19.7,21.9-25.7,31.2c-6.6,9.9-9.1,16.8-7.5,18.5c1.6,1.6,8.6-0.9,18.5-7.5C123.3,163,134.1,154.2,144.9,143.8
L144.9,143.8z M192,90.1c-4,11.5-18.7,30.8-38.6,50.7c-20.1,20.1-39.3,34.8-50.9,38.6c5.1,0.1,11.9-0.5,19-2.3
c16.3-3.9,32-11.9,44-23.9c12-11.9,20.2-27.7,24.2-44.1C191.3,102,192,95.2,192,90.1z M157.6,164.8v49.3c0,1.6,0.7,3.2,1.7,4.4
c1.2,1.2,2.7,1.7,4.4,1.7h147.9c3.3,0,6.2-2.8,6.2-6.2v-57.9c0-3.3-2.8-6.2-6.2-6.2H173.3c-0.1,0.3-0.4,0.4-0.5,0.7l3.1,2.8
c3.1,2.9,3.2,7.9,0.1,11c-2.9,3.1-7.9,3.2-11,0.1l-3.1-3.2C160.6,162.6,159.1,163.7,157.6,164.8z M170.3,153.5
c-1.7,2-3.7,3.7-5.6,5.6l2.8,2.9c1.7,1.7,4.3,1.7,5.9,0.1c0.8-0.8,1.2-1.9,1.2-2.9s-0.5-2.1-1.3-2.9
C173.3,156.3,170.3,153.5,170.3,153.5z M233,224h-68.7c-9.8,8-17,13.4-26.1,19.3c9.1,3.3,22.9,6,32.4,6
C194.8,249.1,216.9,239.5,233,224z M259.6,146.3c-0.8-5.3-3.7-15-5.3-20.1c-4.3,7.1-9.1,14.4-13.9,20.1H259.6z M196.5,206.7v-9
h-21.8v-5.1c1.9-3.5,4.1-7.4,7.1-11.8c2.8-4.4,6.8-10.3,12-17.6h8v29.5h6.2v4.8h-6.2v9h-5.3V206.7z M243.6,207.4c-5.1,0-9-2-11.8-6
s-4.1-9.5-4.1-16.3s1.5-12.2,4.3-16.3c2.8-4,6.7-6.2,11.8-6.2s9,2,11.8,6s4.1,9.5,4.1,16.3s-1.3,12.3-4.1,16.3
C252.6,205.4,248.7,207.4,243.6,207.4z M243.6,202.7c3.3,0,6-1.6,7.8-4.8c1.9-3.2,2.7-7.5,2.7-13c0-5.3-0.9-9.6-2.7-12.8
c-1.9-3.2-4.4-4.8-7.8-4.8c-3.3,0-5.9,1.6-7.8,4.8c-1.9,3.2-2.8,7.5-2.8,12.8s0.9,9.8,2.7,13C237.6,201.1,240.1,202.7,243.6,202.7z
M301.6,206.7v-9h-21.8v-5.1c1.9-3.5,4.1-7.4,7.1-11.8c2.8-4.4,6.8-10.3,12-17.6h8v29.5h6.2v4.8h-6.3v9h-5.2V206.7z M180.1,192.8
l16.4,0.1v-25.1h-0.1c-4.1,5.9-7.5,10.7-10,14.6C184,186.3,181.8,189.8,180.1,192.8L180.1,192.8z M285.2,192.8l16.4,0.1v-25.1h-0.1
c-4.1,5.9-7.5,10.7-10,14.6C288.9,186.3,286.9,189.8,285.2,192.8L285.2,192.8z M51.5,100.4l4-4l1.3,1.3l-4,4l4,4l-1.3,1.3l-4-4l-4,4
l-1.3-1.3l4-4l-4-4l1.3-1.3L51.5,100.4z M344.6,167.6V158h3.3v9.6h9.6v3.3h-9.6v9.6h-3.3v-9.6H335v-3.3H344.6z"/>
<path class="st4" d="M52.1,248.9c2.5,0,4.7-2.1,4.7-4.7s-2.1-4.7-4.7-4.7c-2.5,0-4.7,2.1-4.7,4.7S49.6,248.9,52.1,248.9z"/>
<path class="st3" d="M52.1,250.2c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S55.5,250.2,52.1,250.2z M52.1,240.8c-1.9,0-3.3,1.5-3.3,3.3
s1.5,3.3,3.3,3.3c1.9,0,3.3-1.5,3.3-3.3S54,240.8,52.1,240.8z"/>
<path class="st3" d="M276.6,70.1l5.2-6.4l2.8,7.9l6.4,5.2l-7.9,2.8l-5.2,6.4l-2.8-7.9l-6.4-5.2L276.6,70.1z"/>
<path class="st3" d="M277.4,88.7l-3.5-9.8l-8-6.6l9.8-3.5l6.6-8l3.5,9.8l8,6.6l-9.8,3.5L277.4,88.7z M271.4,73.3l4.9,4l2.1,6l4-4.9
l6-2.1l-4.9-4l-2.1-6l-4,4.9L271.4,73.3z"/>
<path class="st3" d="M109.7,274.7h60.4c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4h-60.4c-0.7,0-1.3-0.6-1.3-1.3
C108.3,275.3,108.9,274.7,109.7,274.7"/>
<path class="st3" d="M202.3,274.7h34.9c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-34.9c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C201.6,274.9,201.9,274.7,202.3,274.7"/>
<path class="st3" d="M141.9,284.2h131.5c0.7,0,1.3,0.6,1.4,1.3c0,0.4-0.1,0.7-0.4,1c-0.3,0.3-0.6,0.4-1,0.4H141.9
c-0.7,0-1.3-0.6-1.3-1.3l0,0C140.5,284.8,141.1,284.2,141.9,284.2"/>
<path class="st3" d="M77.5,284.2h34.9c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.4l0,0H77.5c-0.7,0-1.3-0.6-1.4-1.3
c0-0.4,0.1-0.7,0.4-1C76.8,284.3,77.1,284.2,77.5,284.2"/>
<path class="st3" d="M180.8,274.7h8.1c0.7,0,1.3,0.6,1.3,1.3c0,0.7-0.6,1.3-1.3,1.3h-8.1c-0.7,0.1-1.4-0.5-1.4-1.3
c-0.1-0.7,0.5-1.4,1.3-1.4C180.6,274.7,180.7,274.7,180.8,274.7"/>
<path class="st3" d="M268,266.6h8.1c0.7,0,1.3,0.6,1.3,1.3l0,0c0,0.7-0.6,1.3-1.3,1.3H268c-0.7,0-1.3-0.6-1.3-1.3
C266.7,267.3,267.3,266.6,268,266.6"/>
<path class="st3" d="M82.8,266.6h171.8c0.4,0,0.7,0.1,0.9,0.4c0.4,0.4,0.5,1,0.3,1.5s-0.7,0.8-1.2,0.8H82.8c-0.7,0-1.3-0.6-1.3-1.3
C81.5,267.3,82.1,266.6,82.8,266.6"/>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 400 335" style="enable-background:new 0 0 400 335;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FAFCFF;}
.st1{fill:#DBE5F1;}
.st2{fill:#DEE7F4;}
.st3{fill:#B9C7DB;}
.st4{fill:#FFFFFF;}
.st5{fill:none;stroke:#B9C7DB;stroke-width:4;stroke-miterlimit:10;}
.st6{fill:none;stroke:#B6C7D8;stroke-miterlimit:10;}
</style>
<path class="st3" d="M37.7,141.1c-2.4,0-4.4-1.9-4.4-4.4c0-2.4,1.9-4.4,4.4-4.4c2.4,0,4.4,1.9,4.4,4.4
C42,139.2,40.1,141.1,37.7,141.1z"/>
<path class="st3" d="M264.6,80.4c-2.1,0-3.8-1.7-3.8-3.8s1.7-3.8,3.8-3.8c2.1,0,3.8,1.7,3.8,3.8C268.4,78.7,266.7,80.4,264.6,80.4z
M264.6,74.4c-1.2,0-2.1,0.9-2.1,2.1s0.9,2.1,2.1,2.1s2.1-0.9,2.1-2.1C266.7,75.4,265.8,74.4,264.6,74.4z"/>
<path class="st3" d="M98.8,136.7c-2.6,0-4.7-2.1-4.7-4.7s2.1-4.7,4.7-4.7s4.7,2.1,4.7,4.7S101.4,136.7,98.8,136.7z M98.8,129.4
c-1.5,0-2.6,1.2-2.6,2.6s1.2,2.6,2.6,2.6c1.5,0,2.6-1.2,2.6-2.6S100.2,129.4,98.8,129.4z"/>
<path class="st3" d="M144.3,113.8h8.2c0.4,0,0.7,0.1,1,0.4c0.5,0.5,0.5,1.3,0,1.9l0,0c-0.3,0.3-0.6,0.4-1,0.4h-8.2
c-0.4,0-0.7-0.1-1-0.4c-0.5-0.5-0.5-1.3,0-1.9l0,0C143.6,113.9,143.9,113.8,144.3,113.8"/>
<path class="st3" d="M148.4,89.1v5.7c0,0.3-0.1,0.5-0.3,0.7c-0.4,0.4-0.9,0.4-1.3,0l0,0c-0.2-0.2-0.3-0.4-0.3-0.7v-5.7
c0-0.2,0.1-0.5,0.3-0.7c0.4-0.4,0.9-0.4,1.3,0l0,0C148.3,88.6,148.4,88.8,148.4,89.1"/>
<g>
<path class="st3" d="M193.5,123.6l5.1-5.1c0.2-0.2,0.5-0.4,0.8-0.4s0.6,0.1,0.8,0.3c0.5,0.5,0.4,1.2,0,1.7l-5.1,5.1
c-0.3,0.3-0.7,0.4-1.1,0.3c-0.4-0.1-0.7-0.4-0.8-0.8C193.1,124.3,193.2,123.9,193.5,123.6"/>
<path class="st3" d="M195.3,118.6l5,5c0.2,0.2,0.3,0.5,0.3,0.8c0,0.7-0.6,1.2-1.2,1.2c-0.3,0-0.6-0.1-0.8-0.3l-5-5
c-0.2-0.2-0.3-0.5-0.3-0.8c0-0.7,0.5-1.2,1.2-1.2C194.7,118.2,195,118.4,195.3,118.6"/>
</g>
<g>
<path class="st3" d="M355,85.8l5.1-5.1c0.2-0.2,0.5-0.4,0.8-0.4s0.6,0.1,0.8,0.3c0.5,0.5,0.4,1.2,0,1.7l-5.1,5.1
c-0.3,0.3-0.7,0.4-1.1,0.3s-0.7-0.4-0.8-0.8S354.7,86.1,355,85.8"/>
<path class="st3" d="M356.8,80.8l5,5c0.2,0.2,0.3,0.5,0.3,0.8c0,0.7-0.6,1.2-1.2,1.2c-0.3,0-0.6-0.1-0.8-0.3l-5-5
c-0.2-0.2-0.3-0.5-0.3-0.8c0-0.7,0.5-1.2,1.2-1.2C356.2,80.4,356.5,80.5,356.8,80.8"/>
</g>
<path class="st1" d="M87.8,267.9h99.5c1.2,0,2.2,0.6,2.2,1.3l0,0c0,0.7-1,1.3-2.2,1.4H87.8c-1.2,0-2.2-0.6-2.2-1.3
C85.6,268.5,86.6,267.9,87.8,267.9"/>
<path class="st1" d="M240.5,267.9H298c1.2,0,2.2,0.6,2.2,1.3c0,0.7-1,1.3-2.2,1.3h-57.5c-1.2,0-2.2-0.6-2.2-1.3c0-0.4,0.2-0.7,0.7-1
C239.3,268,239.9,267.9,240.5,267.9"/>
<path class="st1" d="M140.9,277.3h216.8c1.2,0,2.2,0.6,2.2,1.3c0,0.4-0.2,0.7-0.7,1c-0.4,0.3-1,0.4-1.6,0.4H140.9
c-1.2,0-2.2-0.6-2.2-1.3l0,0C138.7,277.9,139.7,277.3,140.9,277.3"/>
<path class="st1" d="M34.7,277.3h57.5c1.2,0,2.2,0.6,2.2,1.3l0,0c0,0.7-1,1.3-2.2,1.4l0,0H34.7c-1.2,0-2.2-0.6-2.2-1.3
c0-0.4,0.2-0.7,0.7-1C33.6,277.5,34.1,277.3,34.7,277.3"/>
<path class="st1" d="M205.1,267.9h13.3c1.2,0,2.2,0.6,2.2,1.3c0,0.7-1,1.3-2.2,1.3h-13.3c-1.2,0.1-2.3-0.5-2.4-1.3s0.8-1.4,2.1-1.4
C204.8,267.9,205,267.9,205.1,267.9"/>
<path class="st1" d="M348.8,259.8h13.3c1.2,0,2.2,0.6,2.2,1.3l0,0c0,0.7-1,1.3-2.2,1.3h-13.3c-1.2,0-2.2-0.6-2.2-1.3
C346.6,260.4,347.6,259.8,348.8,259.8"/>
<path class="st1" d="M43.6,259.8h283.1c0.6,0,1.1,0.1,1.6,0.4c0.6,0.4,0.8,1,0.5,1.5s-1.1,0.8-2,0.8H43.6c-1.2,0-2.2-0.6-2.2-1.3
S42.4,259.8,43.6,259.8"/>
<path class="st3" d="M180.3,240h-41.9c-0.6,0-1-0.4-1-1v-11.9c0-0.6,0.4-1,1-1s1,0.4,1,1v11h40v-41c0-0.6,0.4-1,1-1h10.5
c0.6,0,1,0.4,1,1s-0.4,1-1,1h-9.5v41C181.2,239.6,180.9,240,180.3,240L180.3,240z M237.5,240h-22c-0.6,0-1-0.4-1-1v-41H205
c-0.6,0-1-0.4-1-1s0.4-1,1-1h10.5c0.6,0,1,0.4,1,1v41h21c0.6,0,1,0.4,1,1S238,240,237.5,240z M105.9,231l2.7,18.2H95.7l2.7-18.2
H105.9 M107.5,229.1H96.7l-3.2,22h17.2L107.5,229.1z"/>
<path class="st6" d="M157.7,231.2H46.1c-5.1,0-9.2-4.1-9.2-9.2v-10.5h129.9v10.8C166.8,227.2,162.7,231.2,157.7,231.2L157.7,231.2z"
/>
<path class="st2" d="M167.4,210.9h-125v-47c0-3.6,3-6.7,6.7-6.7H163c2.5,0,4.6,2,4.6,4.6L167.4,210.9L167.4,210.9z"/>
<path class="st3" d="M158.8,154.2c3.9,0,7,3.1,7,7v61.9c0,3.9-3.1,7-7,7H45.4c-3.9,0-7-3.1-7-7v-61.9c0-3.9,3.1-7,7-7L158.8,154.2
M158.8,152.3H45.4c-5,0-9,4-9,9v61.9c0,5,4,9,9,9h113.4c5,0,9-4,9-9v-61.9C167.7,156.3,163.7,152.3,158.8,152.3z M116.2,251.8H88.1
c-0.6,0-1-0.4-1-1s0.4-1,1-1h28.1c0.6,0,1,0.4,1,1C117.1,251.4,116.7,251.8,116.2,251.8L116.2,251.8z"/>
<path class="st3" d="M37.6,210.6h129.1v1.9H37.6V210.6z"/>
<path class="st3" d="M101.7,222.9c1.4,0.9,3.3,0.6,4.2-0.8c0.9-1.4,0.6-3.3-0.8-4.2l0,0c-1.4-0.9-3.3-0.6-4.2,0.8
C99.9,220.1,100.3,222,101.7,222.9L101.7,222.9z"/>
<path class="st3" d="M102.1,223.7c-1.8,0-3.3-1.5-3.3-3.3s1.5-3.3,3.3-3.3s3.3,1.5,3.3,3.3S103.9,223.7,102.1,223.7z M102.1,218.1
c-1.3,0-2.4,1-2.4,2.4s1,2.4,2.4,2.4c1.3,0,2.4-1,2.4-2.4S103.4,218.1,102.1,218.1z M348.1,252.4H244.9c-3.5,0-6.5-2.9-6.5-6.5V114
c0-3.5,2.9-6.5,6.5-6.5h103.3c3.5,0,6.5,2.9,6.5,6.5v131.9C354.6,249.5,351.7,252.4,348.1,252.4L348.1,252.4z M244.9,109.5
c-2.5,0-4.6,2-4.6,4.6V246c0,2.5,2,4.6,4.6,4.6h103.3c2.5,0,4.6-2,4.6-4.6V114c0-2.5-2-4.6-4.6-4.6L244.9,109.5z"/>
<path class="st3" d="M238.9,131.9h114.3v1.9H238.9V131.9z M238.9,155.7h114.3v1.9H238.9V155.7z M238.9,179.5h114.3v1.9H238.9V179.5z
M239.8,202.4h114.3v1.9H239.8V202.4z M238.9,227.1h114.3v1.9H238.9V227.1z"/>
<g>
<path class="st3" d="M255,120.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,119.4,255,120.5
L255,120.5z"/>
<path class="st3" d="M264.6,120.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,118.6,264.6,119.4,264.6,120.5L264.6,120.5z"/>
<path class="st3" d="M274.1,120.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,118.6,274.1,119.4,274.1,120.5L274.1,120.5z"/>
<path class="st3" d="M255,145.2c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,144.2,255,145.2
L255,145.2z"/>
<path class="st3" d="M264.6,145.2c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,143.3,264.6,144.2,264.6,145.2L264.6,145.2z"/>
<path class="st3" d="M274.1,145.2c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,143.3,274.1,144.2,274.1,145.2L274.1,145.2z"/>
<path class="st3" d="M255,169c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,168,255,169L255,169z"/>
<path class="st3" d="M264.6,169c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,167.1,264.6,168,264.6,169L264.6,169z"/>
<path class="st3" d="M274.1,169c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,167.1,274.1,168,274.1,169L274.1,169z"/>
<path class="st3" d="M255,191.9c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,190.8,255,191.9
L255,191.9z"/>
<path class="st3" d="M264.6,191.9c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S264.6,190.8,264.6,191.9
L264.6,191.9z"/>
<path class="st3" d="M274.1,191.9c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S274.1,190.8,274.1,191.9
L274.1,191.9z"/>
<path class="st3" d="M255,215.7c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,214.6,255,215.7
L255,215.7z"/>
<path class="st3" d="M264.6,215.7c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C265.4,213.8,264.6,214.6,264.6,215.7L264.6,215.7z"/>
<path class="st3" d="M274.1,215.7c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9
C274.9,213.8,274.1,214.6,274.1,215.7L274.1,215.7z"/>
<path class="st3" d="M255,239.5c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S255,238.5,255,239.5
L255,239.5z"/>
<path class="st3" d="M264.6,239.5c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S264.6,238.5,264.6,239.5
L264.6,239.5z"/>
<path class="st3" d="M274.1,239.5c0,1.1,0.9,1.9,1.9,1.9s1.9-0.9,1.9-1.9l0,0c0-1.1-0.9-1.9-1.9-1.9S274.1,238.5,274.1,239.5
L274.1,239.5z"/>
</g>
<path class="st3" d="M310.3,126.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C311.2,125.8,310.9,126.2,310.3,126.2z
M319.8,126.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C320.8,125.8,320.4,126.2,319.8,126.2z M329.3,126.2
c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C330.3,125.8,329.9,126.2,329.3,126.2z M338.9,126.2c-0.6,0-1-0.4-1-1v-9.5
c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5C339.8,125.8,339.4,126.2,338.9,126.2z M310.3,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1
v9.5C311.2,149.6,310.9,150,310.3,150z M319.8,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,149.6,320.4,150,319.8,150z M329.3,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,149.6,329.9,150,329.3,150z M338.9,150c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,149.6,339.4,150,338.9,150z M310.3,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,174.4,310.9,174.7,310.3,174.7L310.3,174.7z M319.8,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,174.4,320.4,174.7,319.8,174.7L319.8,174.7z M329.3,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,174.4,329.9,174.7,329.3,174.7L329.3,174.7z M338.9,174.7c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,174.4,339.4,174.7,338.9,174.7L338.9,174.7z M310.3,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,197.2,310.9,197.6,310.3,197.6z M319.8,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,197.2,320.4,197.6,319.8,197.6z M329.3,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,197.2,329.9,197.6,329.3,197.6z M338.9,197.6c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,197.2,339.4,197.6,338.9,197.6z M310.3,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,221,310.9,221.4,310.3,221.4z M319.8,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,221,320.4,221.4,319.8,221.4z M329.3,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,221,329.9,221.4,329.3,221.4z M338.9,221.4c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,221,339.4,221.4,338.9,221.4z M310.3,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C311.2,244.8,310.9,245.2,310.3,245.2z M319.8,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C320.8,244.8,320.4,245.2,319.8,245.2z M329.3,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C330.3,244.8,329.9,245.2,329.3,245.2z M338.9,245.2c-0.6,0-1-0.4-1-1v-9.5c0-0.6,0.4-1,1-1s1,0.4,1,1v9.5
C339.8,244.8,339.4,245.2,338.9,245.2z M353.6,149.9V148c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-1.9
c7.6,0,13.7,6.2,13.7,13.7S361.2,149.9,353.6,149.9z"/>
<path class="st3" d="M353.6,165.1v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-1.9c7.6,0,13.7,6.2,13.7,13.7
C367.3,158.9,361.2,165.1,353.6,165.1z M353.6,204.2v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-1.9
c7.6,0,13.7,6.2,13.7,13.7C367.3,198,361.2,204.2,353.6,204.2z"/>
<path class="st3" d="M353.6,219.4v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8V192c7.6,0,13.7,6.2,13.7,13.7
C367.3,213.2,361.2,219.4,353.6,219.4z"/>
<path class="st3" d="M353.6,238.5v-1.9c6.6,0,11.8-5.3,11.8-11.8s-5.3-11.8-11.8-11.8v-2c7.6,0,13.7,6.2,13.7,13.7
C367.3,232.3,361.2,238.5,353.6,238.5z M235,231.9h3.8v14.3H235V231.9z"/>
<path class="st3" d="M190.3,193.8h2.9v6.7h-2.9V193.8z M202.7,193.8h2.9v6.7h-2.9V193.8z"/>
<path class="st3" d="M192.2,189.5c-0.2,0-0.3-0.1-0.4-0.2l-2.9-4.8c-0.1-0.2-0.1-0.5,0.2-0.7c0.2-0.1,0.5-0.1,0.7,0.2l2.9,4.8
c0.1,0.2,0.1,0.5-0.2,0.7H192.2z M197.4,188c-0.3,0-0.5-0.2-0.5-0.5V182c0-0.3,0.2-0.5,0.5-0.5s0.5,0.2,0.5,0.5v5.5
C197.9,187.8,197.7,188,197.4,188z M202.6,189.4c-0.1,0-0.2,0-0.3-0.1c-0.2-0.2-0.3-0.5-0.1-0.7l3-4.7c0.2-0.2,0.5-0.3,0.7-0.1
s0.3,0.5,0.1,0.7l-3,4.7C202.9,189.3,202.7,189.4,202.6,189.4z"/>
<path class="st3" d="M69.7,190.5l5.7-0.9c0.6,1.9,1.9,2.9,4.2,3c2.4-0.2,3.7-1.2,4-3.3c-0.1-2.2-1.5-3.3-4.2-3.4
c-1.7,0.1-3,0.5-4,1.1h-4.7l1-11.2h16.1v3.6H76.5l-0.6,4.6c1.5-0.8,3.2-1.1,5-1.1c5.3,0.1,8.2,2.2,8.4,6.3c-0.2,4.3-3.4,6.5-9.7,6.7
C74.4,195.6,71.1,193.9,69.7,190.5L69.7,190.5z M111.2,185.5c0.2,6.9-3.1,10.3-9.9,10.1c-6.6-0.1-9.8-3.4-9.9-10
c0.2-6.7,3.5-10.2,9.9-10.4C107.8,175.2,111.1,178.7,111.2,185.5z M105.1,185.6c0.1-4.9-1.1-7.2-3.7-7c-2.7-0.1-4,2.3-4,7
c0,4.6,1.3,7,4,7C104,192.5,105.2,190.2,105.1,185.6z M133.1,185.5c0.2,6.9-3.1,10.3-9.9,10.1c-6.6-0.1-9.8-3.4-9.9-10
c0.2-6.7,3.5-10.2,9.9-10.4C129.7,175.2,133,178.7,133.1,185.5z M127,185.6c0.1-4.9-1.1-7.2-3.7-7c-2.7-0.1-4,2.3-4,7
c0,4.6,1.3,7,4,7C125.9,192.5,127.1,190.2,127,185.6z"/>
</svg>
@import './reset.scss';
@import '../components/index.scss';
#app .footlogo {
position: relative;
// padding:0;
}
#app .dm-wrap{
margin:24px;
background:#FFF;
padding:24px;
// min-height: 500px;
}
#app .dm-form__wrap{
margin:24px;
background:#FFF;
padding:20px 32px;
// min-height: 500px;
}
.sms-table_info{
&>img {
width: 60px;
height: 60px;
}
}
.bottom-border{
border-bottom: 1px solid #DCDFE6;
}
.dm-title__label {
border-bottom: 1px solid #DCDFE6;
width: calc(100% + 32px);
padding: 0 0 20px 32px;
font-size: 16px;
font-weight: 700;
margin: 0 0 20px -32px;
}
.dm-title__label--outer {
border-bottom: 1px solid #DCDFE6;
width: calc(100% + 24px);
padding: 0 0 20px 24px;
font-size: 16px;
font-weight: 700;
margin: 0 0 20px -24px;
}
.gic-people--button{
background: #f2f3f4;
padding: 0px 0px 20px 124px;
.el-button+.el-button {
margin-left: 5px;
}
}
.filter--box {
background: #ebeef5;
height: 50px;
line-height: 50px;
.el-checkbox{
background: #fff;
}
.el-checkbox.is-bordered+.el-checkbox.is-bordered {
margin-left: 0;
}
}
.no-link{
.el-breadcrumb__inner {
font-weight: 400!important;
cursor: text!important;
color: #606266!important;
}
}
::-webkit-scrollbar-track-piece {
background-color: #f0f2f5;
-webkit-border-radius: 6px;
}
::-webkit-scrollbar-button{
background-color:#e4e7ed;
}
.select-shop__tag {
margin-bottom: 5px;
}
.select-shop__tag + .select-shop__tag {
margin-left: 10px;
}
.chart--nodata {
width: auto;
text-align: center;
&::before {
content: ' ';
display: block;
width: 200px;
height: 200px;
background: url(/integral-mall/static/img/chart-no-data.png) no-repeat center;
background-size: cover;
margin: 20px auto 10px auto;
}
&::after {
content: '暂无数据';
color: #808995;
margin: 0 auto;
text-align:center;
font-size:13px;
display: block;
margin-bottom: 60px;
}
}
.no-data {
width: auto;
text-align: center;
}
.leftBar-wrap .el-menu{
background-color: #020b21;
}
.table__avatar{
width: 60px;
height: 60px;
border-radius: 4px;
margin-right:8px;
}
.fw500 {
font-weight: 500;
}
.dm-button--add {
width: 100%;
height: 40px;
line-height: 40px;
border: 1px dashed #e4e7ed;
border-radius: 2px;
text-align: center;
margin:10px 0;
cursor: pointer;
&:hover{
border: 1px dashed #1890ff;
color:#1890ff;
}
}
.sync-imgtext__dialog{
.el-dialog__body{
padding:0 20px 30px;
}
}
.dialog__body__nopadding {
.el-dialog__body{
padding:0 20px 30px;
}
}
.table-name--ellipsis{
width: 90px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
white-space: normal;
}
.left-aside-contain {
/deep/ .el-submenu__title:hover {
background-color: #020b21;
}
}
.el-menu.el-menu--popup {
background: #020b21;
border-radius: 4px;
}
/* 左侧菜单 */
.leftBar-wrap .el-menu{
background-color: #020b21;
}
.leftBar-wrap .cardmenu-item .el-submenu__title,.leftBar-wrap .cardmenu-item .el-menu-item,.leftBar-wrap .cardmenu-item .el-submenu .el-menu-item{
height: 40px;
line-height: 40px;
}
.leftBar-wrap .el-submenu__title:hover {
background-color: #020b21;
}
.leftBar-wrap .cardmenu-item li.el-menu-item:hover i{
/*background-color: #409EFF;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item li.el-menu-item:hover span{
/*background-color: #409EFF;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item li.el-submenu:hover i{
/*background-color: #409EFF;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item li.el-submenu:hover span{
/*background-color: #409EFF;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item li.el-submenu .el-menu-item:hover label{
/*background-color: #409EFF;*/
color: #fff;
cursor: pointer;
}
.leftBar-wrap .cardmenu-item .el-submenu.is-active div.el-submenu__title i{
color: #fff;
}
.leftBar-wrap .cardmenu-item .el-submenu.is-active div.el-submenu__title span{
color: #fff;
}
.el-menu.el-menu--popup .el-menu-item.is-active label {
color: #fff;
}
@import './var.scss';
@import '../mixin/index.scss';
input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
-webkit-box-shadow: 0 0 0 1000px white inset;
}
input[type=text]:focus, input[type=password]:focus, textarea:focus {
-webkit-box-shadow: 0 0 0 1000px white inset;
}
html,body{
color: $primary-font-color;
margin: 0;
padding: 0;
font-size: 14px;
font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,\\5FAE\8F6F\96C5\9ED1,Arial,sans-serif;
}
i {
font-size:14px;
}
p {
color: $primary-font-color;
}
a {
color: #1890ff;
}
a:hover {
color: #40A9FF;
}
.block-center{
margin: 0 auto;
}
.text-center{
text-align: center;
}
.text-right{
text-align: right;
}
.text-left{
text-align: left;
}
.container{
position: relative;
margin: 0 auto;
}
.pt5{
padding-top: 5px!important;
}
.pt10{
padding-top: 10px!important;
}
.pt20{
padding-top: 20px!important;
}
.pt100{
padding-top: 100px!important;
}
.pt200{
padding-top: 200px!important;
}
.pb10{
padding-bottom: 10px!important;
}
.pb15{
padding-bottom: 15px!important;
}
.pb20{
padding-bottom: 20px!important;
}
.pb22{
padding-bottom: 22px!important;
}
.pl5{
padding-left: 5px!important;
}
.pl10{
padding-left: 10px!important;
}
.pl20{
padding-left: 20px!important;
}
.pr4{
padding-right: 4px!important;
}
.pr5{
padding-right: 5px!important;
}
.pr7{
padding-right: 7px!important;
}
.pr10{
padding-right: 10px!important;
}
.pr20{
padding-right: 20px!important;
}
.ml30{
margin-left: 30px!important;
}
.ml80{
margin-left: 80px!important;
}
.ml100{
margin-left: 100px!important;
}
.mt20{
margin-top: 20px!important;
}
.mt10{
margin-top: 10px!important;
}
.ml5{
margin-left: 5px!important;
}
.ml10{
margin-left: 10px!important;
}
.ml20{
margin-left: 20px!important;
}
.mb10{
margin-bottom: 10px!important;
}
.mr10{
margin-right: 10px!important;
}
.mr20{
margin-right: 20px!important;
}
.mb20{
margin-bottom: 20px!important;
}
.width50{
width: 50%!important;
}
.width30{
width: 30%!important;
}
.width-auto{
width: auto!important;
}
.w80{
width: 80px!important;
}
.w100{
width: 100px!important;
}
.w150{
width: 150px!important;
}
.w200{
width: 200px!important;
}
.w250{
width: 250px!important;
}
.w300{
width: 300px!important;
}
.w400{
width: 400px!important;
}
.w450{
width: 450px!important;
}
.ml120{
margin-left: 120px;
}
.fl{float: left;}
.fr{float: right}
.clearfix:after{
display: block;
clear: both;
content: '';
visibility: hidden;
height: 0;
}
.clearfix{
zoom: 1;
}
.cursor{
cursor: pointer;
}
.cursor-nodrop{
cursor: no-drop;
}
.blue{
color:$primary-color;
cursor: pointer;
}
.gray {
color: #909399;
}
.yellow {
color: #fede29;
}
.green{
color: green;
}
.gray-bg {
background-color: #f0f2f5;
}
.fz10{
font-size: 10px;
}
.fz11{
font-size: 11px;
}
.fz12{
font-size: 12px;
}
.fz13{
font-size: 13px;
}
.fz14{
font-size: 14px;
}
.fz16{
font-size: 16px;
}
.fz18{
font-size: 18px;
}
.fz20{
font-size: 20px;
}
.fz22{
font-size: 22px;
}
.fz24{
font-size: 24px;
}
.fz26{
font-size: 26px;
}
.fz28{
font-size: 28px;
}
.fz30{
font-size: 30px;
}
.fz40{
font-size: 40px;
}
.line-height2{
line-height:2;
}
.line-height1{
line-height:1;
}
.ellipsis-100{
@include ellipsis(100%);
}
.ellipsis-50{
@include ellipsis(50%);
}
.ellipsis-80{
@include ellipsis(80%);
}
.ellipsis{
max-height:20px;
line-height:20px;
overflow:hidden;
text-overflow:ellipsis;
display:-webkit-box;
-webkit-line-clamp:1;
-webkit-box-orient:vertical
}
.ellipsis-l2{
max-height:40px;
line-height:20px;
overflow:hidden;
text-overflow:ellipsis;
display:-webkit-box;
-webkit-line-clamp:2;
-webkit-box-orient:vertical
}
.ellipsis-l3{
max-height:60px;
line-height:20px;
overflow:hidden;
text-overflow:ellipsis;
display:-webkit-box;
-webkit-line-clamp:3;
-webkit-box-orient:vertical
}
.border-radius2{
border: 1px solid #DCDFE6;
border-radius:2px;
}
.border1{
border: 1px solid #DCDFE6;
}
.border2{
border: 1px solid #E4E7ED;
}
.border3{
border: 1px solid #EBEEF5;
}
.border4{
border: 1px solid #F2F6FC;
}
.primary-color{
color: $primary-color;
}
.success-color{
color: $success-color;
}
.warning-color{
color: $warning-color;
}
.danger-color{
color: $danger-color;
}
.info-color{
color: $info-color;
}
.success-color-bg{
background-color: $success-color;
}
.warning-color-bg{
background-color: $warning-color;
}
.danger-color-bg{
background-color: $danger-color;
}
.info-color-bg{
background-color: $info-color;
}
.primary-font-color{
color: $primary-font-color;
}
.regular-font-color{
color: $regular-font-color;
}
.minor-font-color{
color: $minor-font-color;
}
.place-font-color{
color: $place-font-color;
}
.overflow-hidden{
overflow: hidden;
}
.inline-block{
display: inline-block;
}
.block{
display: block;
}
.inline{
display: inline;
}
.vertical-middle{
vertical-align: middle;
}
.vertical-top{
vertical-align: top;
}
.vertical-bottom{
vertical-align: bottom;
}
img {
position: relative;
}
img::after {
content: "";
height: 100%;
width: 100%;
position: absolute;
left: 0;
top: 0;
background-size: cover;
background-image: url(/integral-mall/static/img/failed-load_img.png);
// background-image: url(/static/img/failed-load_img.png);
}
.bold{
font-weight: bold;
}
.flex{
display: flex;
}
.border-radius__default{
border-radius: 4px;
}
/*隐藏滚轮*/
// ::-webkit-scrollbar {
// display: none;
// }
$primary-font-color: #303133;
$regular-font-color: #606266;
$minor-font-color: #909399;
$place-font-color: #C0C4CC;
$primary-color: #1890ff;
$search-width: 180px;
$border-color:#DCDFE6;
$border-color2:#E4E7ED;
$border-color3:#EBEEF5;
$border-color4:#F2F6FC;
$gray-color:#f4f5f9;
$success-color:#52c41a;
$warning-color:#faad14;
$danger-color:#f5222d;
$info-color:#909399;
@import '../base/var.scss';
.dm-select {
width: 130px!important;
}
.dm-pagination {
text-align: right;
margin: 24px 0 10px 0;
}
.label-hidden .el-checkbox__label,.label-hidden .el-radio__label{
opacity: 0;
position: absolute;
}
.dm-upload,.dm-upload_right{
position: relative;
}
.dm-upload .el-upload-list {
position: absolute;
top: 26px;
left: -26px;
}
.dm-upload_right .el-upload-list {
position: absolute;
top: -6px;
left: 100px;
}
.el-select{
width: 100%;
vertical-align: middle;
}
.dm-input_label{
font-size: 14px;
color: #333;
display: inline-block;
}
.dm-label-input_80{
width: calc(100% - 80px);
}
.dm-label-input_100{
width: calc(100% - 10-px);
}
.el-table .cell {
font-size: 14px;
}
#app .el-tabs__nav{
z-index: 1;
}
#app .el-breadcrumb__inner {
color: #303133;
}
#app .user-header-pop {
min-width: 95px;
}
#app .el-popover.user-header-pop {
min-width: 95px;
}
.el-select-dropdown__wrap {
max-height: 310px!important;
}
.dm-tabs {
.el-tabs__header {
padding: 0 30px;
margin: 0;
background: #fff;
border-bottom: 1px solid #e4e7ed;
}
.el-tabs__item{
&.is-active{
border-bottom: 2px solid $primary-color;
}
}
}
.dm-tabs-wrap{
position: relative;
top: -1px;
.el-tabs__header {
background: #fff;
}
.el-tabs__nav{
text-align: center;
}
.el-tabs__item{
text-align: center;
padding: 0 20px!important;
margin: 0 auto;
&.active{
border-bottom: 2px solid $primary-color;
}
}
}
.el-table__empty-text{
width: auto;
margin-bottom:80px;
&::before{
content: ' ';
display: block;
width: 60px;
height: 60px;
background: url(/integral-mall/static/img/no-data_icon.png) no-repeat center;
margin: 80px auto 22px auto;
}
}
.btn-wrap_fixed{
position: fixed;
bottom: 0px;
// left: 0;
right: 0;
width: 100%;
text-align: center;
background: #fff;
height: 57px;
line-height: 57px;
border-top: 1px solid #E4E7ED;
z-index: 999;
&.on{
width: calc(100% - 200px);
left: 200px;
}
.el-button+.el-button {
margin-left: 5px;
}
}
.dm-tabs-wrap{
.el-tabs__header {
margin: 0;
}
}
.el-select,.el-input,.el-checkbox.is-bordered,.el-date-editor{
margin-right: 5px;
}
.el-form-item__margin-top14 {
.el-form-item__label{
margin-top:14px;
}
}
.el-table--border::after, .el-table--group::after, .el-table::before {
content: '';
position: relative;
background-color: #ebeef5;
z-index: 1;
}
.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right::before, .el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right::before {
content: '';
position: relative;
left: 0;
bottom: 0;
width: 100%;
height: 1px;
background-color: #ebeef5;
z-index: 4;
}
@mixin ellipsis($width){
text-overflow: ellipsis;
overflow: hidden;
max-width: $width;
white-space: nowrap;
word-wrap: normal;
width: auto;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<template>
<div class="left-aside-contain" :style="{height: asideHeight}">
<div class="leftBar-wrap" >
<div class="cardmenu" :class="{collapse: leftCollapse}">
<div class="cardtitle" v-show="!leftCollapse">
<span>{{leftModuleName}}</span>
</div>
<div class="cardmenu-item">
<el-menu :default-active="selectMenu" :data-path="'/' + $route.path" style="border-right: 0;" class="el-menu-vertical-demo cardmenupanel" :router="true" text-color="#c0c4cc" active-text-color="#ffffff" :collapse="leftCollapse" unique-opened @open="handleOpen" @select="handleSelect">
<!--:default-openeds="defaultSub"-->
<template v-for="(menuItem,index) in menuLeftRouter" >
<el-submenu :index="index+''" v-if="menuItem.level4List.length>0" :key="index">
<template slot="title" >
<i :class="['iconfont','menu-icon',menuItem.iconUrl]"></i>
<span slot="title">{{menuItem.menuName}}</span>
</template>
<!-- <el-menu-item-group > -->
<el-menu-item v-for="(childMenu,index) in menuItem.level4List" :index="childMenu.menuUrl" :key="index" style="padding-left: 53px;"><label slot="title" :data-index="$route.path==childMenu.menuUrl? $route.path:false" :data-path="childMenu.menuUrl">{{childMenu.menuName}}</label></el-menu-item>
<!-- </el-menu-item-group> -->
</el-submenu>
<el-menu-item :index="menuItem.menuUrl" v-if="!menuItem.level4List.length" :key="index">
<i :class="['iconfont','menu-icon',menuItem.iconUrl]"></i>
<span slot="title">{{menuItem.menuName}}</span>
</el-menu-item>
</template>
</el-menu>
</div>
</div>
</div>
</div>
</template>
<script>
// import { getRequest } from './api';
import qs from 'qs';
export default {
name: 'vue-gic-aside-menu',
props: ['collapseFlag','projectName'],//'leftMenuRouter','leftModulesName',
data () {
return {
repProjectName: 'gic-web', // 项目名
// 高度
asideHeight: '0px',
pathName: '', // 路由名
leftCollapse: false,// 是否收起左侧
leftModuleName: '',
// defaultSub: ['1','2','3','4','5','6','7','8','9'], // 默认打开子菜单
menuLeftRouter: [
],
// 获取 location origin
baseUrl: '',
//已选菜单
selectMenu: '',
}
},
beforeMount() {
var that = this
var host = window.location.origin;
// console.log("当前host:",host)
if (host.indexOf('localhost') != '-1') {
that.baseUrl = 'http://gicdev.demogic.com';
}else {
that.baseUrl = host
}
},
methods: {
handleOpen(key, keyPath) {
// console.log(key, keyPath);
},
handleSelect(key, keyPath){
var that = this
// console.log(key, keyPath);
that.selectMenu = key
},
// 设置新数据
setNewData(newData) {
var that = this;
// 处理成需要的路由
// var list = [],lists = [];
newData.forEach(function(ele,index){
if (ele.level4List==null || ele.level4List.length==0) {
// 设置 url
ele.menuUrl = '/'+ ele.menuUrl;
}else {
ele.level4List.forEach(function(el,key){
// 设置 url
el.menuUrl = '/'+ el.menuUrl;
})
}
})
// console.log("左侧list:",list)
// list.forEach(function(ele,index){
// if(ele.parentCode == 0){
// ele.children = [];
// }
//
// lists.forEach(function(el,ind) {
// if(el.parentCode == ele.menuCode ){
// // console.log(index,ind)
// ele.children.push(el)
// }
// })
// })
// console.log("处理后的左侧菜单 list:",newData)
that.menuLeftRouter = newData;
},
// 触发父组件路由
toRouter(path) {
var that = this;
that.$emit('toLeftRouterView', '/'+path)
},
// 刷新路由
refreshRoute() {
var that = this
//获取项目名 pathname (路由的hash)
that.routePathName = window.location.hash.split('/')[1];
if (that.routePathName.indexOf('?')!= -1) {
that.routePathName = that.routePathName.split('?')[0]
}
if (that.routePathName.indexOf('/')!= -1) {
that.routePathName = that.routePathName.split('/')[0]
}
// console.log("routePathname:",that.routePathName)
that.pathName = that.routePathName
that.getLeftMenu()
},
// 获取左侧菜单
getLeftMenu() {
var that = this
var para = {
project: that.repProjectName,
path: that.pathName,
requestProject: that.repProjectName
}
that.axios.post(that.baseUrl+'/api-auth/get-current-memu-data',qs.stringify(para))
.then((res) => {
// console.log(res,res.data,res.data.errorCode)
var resData = res.data
if (resData.errorCode == 0) {
if (!resData.result) {
// console.log("resData.result: ",resData.result)
return;
}
that.leftModuleName = resData.result.level2.menuName;
that.setNewData(resData.result.leftMenu)
that.selectMenu = that.$route.path
if (!!resData.result.level4) {
// 设置选中menu
that.selectMenu = '/'+resData.result.level4.menuUrl
return;
}
if (!!resData.result.level3) {
// 设置选中menu
that.selectMenu = '/'+resData.result.level3.menuUrl
}
// sessionStorage.setItem('activeHead',resData.result.level2.menuCode)
return;
}
that.$message.error({
duration: 1000,
message: resData.message
})
})
.catch(function (error) {
// console.log(error);
// that.toLogin()
that.$message.error({
duration: 1000,
message: error.message
})
});
}
},
watch: {
'$route'(val, oldVal){
console.log(this.$route);
this.selectMenu = this.$route.meta.path;
},
collapseFlag: function(newData,oldData){
var that = this;
// console.log("左侧新数据:",newData,oldData)
that.leftCollapse = newData;
},
// defaultSub: function(newData,oldData){
// var that = this;
// console.log("左侧新数据:",newData,oldData)
// that.defaultSub = newData;
// },
projectName: function(newData,oldData){
var that = this;
// console.log("新数据:",newData,oldData)
that.repProjectName = newData || 'gic-web';
},
},
/* 接收数据 */
mounted(){
// console.log("传递的左侧菜单参数:",this.projectName,this.$route)
var that = this;
// 项目名
that.repProjectName = that.projectName || 'gic-web';
// 获取高度
that.asideHeight = (document.documentElement.clientHeight || document.body.clientHeight) - 64 +'px';
//获取项目名 pathname (路由的hash)
that.pathName = window.location.hash.split('/')[1];
if (that.pathName.indexOf('?')!= -1) {
that.pathName = that.pathName.split('?')[0]
}
// console.log("pathname:",that.pathName)
// 获取菜单
that.getLeftMenu();
// 设置默认打开子菜单
// that.defaultSub = [];
// that.defaultSub.push(this.$route.path);
// console.log("that.defaultSub:",that.defaultSub)
// 模块名字
// that.leftModuleName = that.leftModulesName;
//折叠参数
that.leftCollapse = that.collapseFlag;
// that.setNewData(that.leftMenuRouter)
},
}
</script>
<style lang="scss" scoped>
.attention-wrap{
.item-label{
font-size: 14px;
color: #606266;
margin-bottom: 30px;
span{
display: inline-block;
width: 80px;
}
}
}
.left-aside-contain {
/*width: 200px;*/
display: inline-block;
/*overflow: auto;
overflow-x: hidden;*/
&::-webkit-scrollbar{
width: 0;
height: 0;
}
/deep/ .el-submenu .el-submenu__title:hover {
background-color: #020b21;
}
}
.leftBar-wrap /deep/ {
height: 100%;
display: inline-block;
overflow: auto;
// &::-webkit-scrollbar{
// width: 0;
// height: 0;
// }
.cardmenu{
flex: 0 0 200px;
width: 200px;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
background-color: #020b21;
cursor: pointer;
transition: all .2s ease;
&::-webkit-scrollbar{
width: 0;
height: 0;
}
}
.collapse{
transition: all .3s ease;
flex: 0 0 64px;
width: 64px;
/*transform: translateX(-8px);*/
overflow: hidden;
}
.cardtitle{
font-size: 20px;
color: #fff;
padding-left: 20px;
height: 56px;
line-height: 56px;
}
/deep/ .el-submenu__title:hover {
background-color: #020b21;
}
}
.leftBar-wrap .el-menu .el-menu-item,.el-menu .el-submenu{
background: #020b21;
}
.leftBar-wrap {
/deep/ .el-submenu__title:hover {
background-color: #020b21;
}
}
.leftBar-wrap .cardmenu-item /deep/ .el-menu-item-group .el-menu-item-group__title{
background-color: #020b21;
display: none;
}
.leftBar-wrap .cardmenu-item /deep/ .el-submenu__title i {
color: #c0c4cc;
}
.leftBar-wrap .cardmenu-item /deep/ .el-menu-item span {
color: #c0c4cc;
}
.leftBar-wrap .cardmenu-item /deep/ .el-submenu .el-menu-item label {
color: #c0c4cc;
}
.leftBar-wrap .cardmenu-item .el-menu-item.is-active {
color: #fff;
background-color: #1890ff;
}
.leftBar-wrap .cardmenu-item /deep/ .el-menu-item.is-active span {
color: #fff;
}
.leftBar-wrap .cardmenu-item /deep/ .el-submenu .el-menu-item.is-active label {
color: #fff;
}
.el-menu.el-menu--popup {
background: #020b21;
border-radius: 4px;
}
.el-menu--popup .el-menu-item {
height: 40px;
line-height: 40px;
}
.el-menu--popup .el-menu-item label{
display: block;
margin-left: -34px;
color: #c0c4cc;
cursor: pointer;
}
.el-menu--popup .el-menu-item:hover {
background-color: #020b21;
}
.el-menu--popup .el-menu-item:hover label {
color: #fff;
}
.leftBar-wrap .cardmenu-item /deep/ .el-submenu__title,.leftBar-wrap .cardmenu-item /deep/ .el-menu-item,.leftBar-wrap .cardmenu-item /deep/ .el-submenu .el-menu-item{
height: 40px;
line-height: 40px;
}
.leftBar-wrap .cardmenu-item /deep/ li.el-menu-item:hover i{
/*background-color: #1890ff;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item /deep/ li.el-menu-item:hover span{
/*background-color: #1890ff;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item /deep/ li.el-submenu:hover i{
/*background-color: #1890ff;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item /deep/ li.el-submenu:hover span{
/*background-color: #1890ff;*/
color: #fff;
}
.leftBar-wrap .cardmenu-item /deep/ li.el-submenu .el-menu-item:hover label{
/*background-color: #1890ff;*/
color: #fff;
cursor: pointer;
}
.leftBar-wrap .el-submenu .el-menu-item-group .el-menu-item {
position: relative;
}
.leftBar-wrap .el-submenu .el-menu-item::before{
position: absolute;
content: '●';
left: 35px;
top: 0px;
font-size: 10px;
/* color: #fff;*/
}
.leftBar-wrap .el-submenu .el-menu-item:hover::before{
color: #fff;
}
.leftBar-wrap .slide-fade-enter-active {
transition: all .3s ease;
}
.leftBar-wrap .slide-fade-leave-active {
transition: all .3s ease;
}
.leftBar-wrap .cardmenu-item .menu-icon{
/*margin-right: 5px;*/
width: 24px;
text-align: center;
font-size: 14px;
vertical-align: middle;
display: inline-block;
color: #c0c4cc;
}
.leftBar-wrap .cardmenu-item .el-menu-item.is-active .menu-icon {
color: #fff;
}
.el-menu-item-group {
.el-menu-item{
height: 40px;
line-height: 40px;
}
}
</style>
import vueGicAsideMenu from './component.vue' // 导入组件
const vueGicAside = {
install(Vue, options) {
Vue.component(vueGicAsideMenu.name, vueGicAsideMenu) // vueGicAsideMenu.name 组件的name属性
// 类似通过 this.$xxx 方式调用插件的 其实只是挂载到原型上而已
// Vue.prototype.$xxx // 最终可以在任何地方通过 this.$xxx 调用
// 虽然没有明确规定用$开头 但是大家都默认遵守这个规定
}
}
if (typeof window !== 'undefined' && window.Vue) {
window.Vue.use(vueGicAside);
}
export default vueGicAside
// export {
// vueGicAsideMenu
// }
<template>
<el-popover
placement="top"
width="160"
v-model="visible">
<p style="line-height:1.5;padding:10px 10px 20px;color:#606266;">{{tips}}</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="cancel">取消</el-button>
<el-button type="primary" size="mini" @click="confirm">确定</el-button>
</div>
<span slot="reference" style="margin:0 10px;"><slot></slot></span>
</el-popover>
</template>
<script>
export default {
name:'dm-confirm',
props:{
tips:{
type:String,
default:'是否删除?'
},
},
data() {
return {
visible: false,
};
},
methods:{
cancel() {
this.visible = false
},
confirm() {
this.visible = false
this.$emit('confirm')
}
}
}
</script>
<template>
<div class="bd-select">
<el-popover
:disabled="currentValue.length===0"
v-cloak
ref="popover"
placement="left"
:width="popoverWidth"
trigger="hover"
content=""
popper-class="bd-select__popover">
<div class="bd-select__popover__title">
<div class="bd-select__popover__title__lt">
<span class="left">{{popoverTitle}}</span>
<span class="right">(共{{this.currentValue.length}}项)</span>
</div>
<div class="bd-select__popover__title__rt" @click="clearAllTags" v-if="!disabled">
<i class="el-icon-delete"></i>
</div>
</div>
<el-tag
v-for="tag in tags.length===0?initTags:tags"
:key="tag.value"
type="primary"
:closable="!disabled"
@close="popoverTagRemove(tag)">
{{tag.label}}
</el-tag>
</el-popover>
<el-select
ref="select"
v-model="currentValue"
:reserve-keyword="reserveKeyword"
:multiple="multiple"
:disabled="disabled"
:value-key="valueKey"
:size="size"
:clearable="clearable"
:multiple-limit="multipleLimit"
:name="name"
:placeholder="placeholder"
:filterable="filterable"
:allow-create="allowCreate"
:filter-method="filterMethod"
:remote="remote"
:remote-method="remoteMethod"
:loading="loading"
:loading-text="loadingText"
:no-match-text="noMatchText"
:no-data-text="noDataText"
:popper-class="popperClass"
:default-first-option="defaultFirstOption"
@change="change"
@visible-change="visibleChange"
@remove-tag="removeTag"
@clear="clear"
:class="{'single':single}">
<slot></slot>
</el-select>
<div v-if="!!icon" class="bd-select__icon__wrap" @click="iconClick">
<i class="bd-select__icon" :class="icon"></i>
</div>
<div
v-popover:popover
v-show="multiple&&currentValue.length>1"
class="bd-select__total"
@click="selectClick">{{'共'+this.currentValue.length+'项'}}</div>
</div>
</template>
<script>
import emitter from 'element-ui/lib/mixins/emitter';
export default {
name: 'dm-select',
componentName: 'dmSelect',
props: {
// 以下是自定义属性
value: [Array, Number, String],
popoverTitle: String,
popoverWidth: {
type: Number,
default: 200
},
icon: String,
forceWithOption: Boolean,//强制关联选项,当选项移除时,自动移除value
// 以下是element ui select 原生属性
name: String,
id: String,
size: String,
disabled: Boolean,
clearable: Boolean,
filterable: Boolean,
allowCreate: Boolean,
loading: Boolean,
popperClass: String,
remote: Boolean,
loadingText: String,
noMatchText: String,
noDataText: String,
remoteMethod: Function,
filterMethod: Function,
multiple: Boolean,
multipleLimit: {
type: Number,
default: 0
},
placeholder: String,
defaultFirstOption: Boolean,
reserveKeyword: Boolean,
valueKey: {
type: String,
default: 'value'
},
collapseTags: Boolean
},
data() {
return {
currentValue: JSON.parse(JSON.stringify(this.value)),
initTags: [],
// options: [],
visible: false,
elSelect: null,
};
},
mixins: [emitter],
computed: {
options() {
// const options = this.elSelect.options;
// if (options.length > 0) {
// console.log(options[0]);
// }
return !!this.elSelect ? this.elSelect.options.map(item => {
return {
label: item.label,
value: item.value
};
}) : [];
},
tags() {
let tags = [];
if (this.currentValue instanceof Array && this.currentValue.length > 0) {
this.currentValue.forEach(value => {
// debugger
let option = this.options.find(p => p.value === value);
if (!!option) {
tags.push(option);
}
// if (this.$refs.select) {
// let option = this.$refs.select.options.find(p => p.value === value);
// if (!!option) {
// tags.push(option);
// }
// }
});
}
if (tags.length > 0 && this.initTags.length > 0) {
this.initTags = [];
}
return tags;
},
single() {
return !this.multiple
}
},
watch: {
value: {
handler: function (val) {
let b = false;
for (var i = 0; i < val.length; i++) {
if (val[i] !== this.currentValue[i]) {
b = true;
break;
}
}
for (var i = 0; i < this.currentValue.length; i++) {
if (val[i] !== this.currentValue[i]) {
b = true;
break;
}
}
if (b) {
this.currentValue = JSON.parse(JSON.stringify(this.value));
}
},
deep: true
},
options: {
handler: function (_options, oldValue) {
if (this.forceWithOption && (_options.length > 0 || oldValue.length > 0)) {
console.log('bd-select.options', _options, oldValue);
let _mutation = false;
for (let i = 0; i < this.currentValue.length; i++) {
const value = this.currentValue[i];
const findIdx = _options.findIndex(p => p.value === value);
if (findIdx === -1) {
this.currentValue.splice(findIdx, 1);
i--;
_mutation = true;
}
}
if (_mutation) {
this.$emit('input', JSON.parse(JSON.stringify(this.currentValue)));
}
}
},
deep: true
}
// options(val) {
// },
// 'elSelect': {
// handler(val) {
// console.log('elSelect.options:change', val);
// // this.options = JSON.parse(JSON.stringify(val));
// },
// deep: true
// }
},
created() {
//初始化tags
this.$nextTick(() => {
this.elSelect = this.$refs.select;
// this.currentValue.forEach(value => {
// this.initTags.push({
// label: this.$refs.select.getOption(value).label,
// value: this.$refs.select.getOption(value).value
// });
// });
});
},
methods: {
change(val) {
this.$emit('input', JSON.parse(JSON.stringify(this.currentValue)));
this.$emit('change', val);
this.dispatch('ElFormItem', 'el.form.change', val);
},
visibleChange(val) {
this.$emit('visible-change', val);
},
removeTag(component) {
this.$emit('remove-tag', component.value);
},
clear() {
this.$emit('clear');
},
popoverTagRemove(tag) {
this.currentValue.splice(this.currentValue.findIndex(val => val === tag.value), 1);
this.$refs.select.$emit('change', JSON.parse(JSON.stringify(this.currentValue)));
},
clearAllTags() {
this.currentValue = [];
this.$refs.select.$emit('change', []);
},
selectClick() {
if (this.disabled) return;
if (this.visible) {
this.visible = false;
this.$refs.select.handleClose();
} else {
this.visible = true;
this.$refs.select.toggleMenu();
}
},
iconClick() {
if (!this.disabled) {
this.$emit('icon-click');
}
}
},
}
</script>
<style lang="scss">
.bd-select {
position: relative;
display: inline-block;
width: 100%;
left:1px;
.single {
.el-select__tags{
width: 100%;
}
}
.el-select__tags {
// width: 100%;
white-space: nowrap;
text-align: center;
overflow: hidden; // width: 100%;
// position: relative;
left: 2px;
}
.el-select__input {
// width: 100% !important;
// position: absolute;
// top: 0;
// right: 0;
// bottom: 0;
// left: 0;
}
&__popover {
border-radius: 4px;
border: 0;
padding: 0 10px;
&__title {
height: 30px;
line-height: 30px;
margin-left: -10px;
margin-right: -10px;
margin-bottom: 6px;
color: #40484f;
font-size: 12px;
position: relative;
&::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 1px;
background: #dfe4ed;
}
&__lt {
float: left;
height: 30px;
line-height: 30px;
padding-left: 10px;
position: relative;
&::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 1px;
background: #7699ff;
z-index: 1;
}
.left {
font-weight: bold;
}
}
&__rt {
float: right;
width: 30px;
height: 30px;
line-height: 30px;
text-align: center;
i {
cursor: pointer;
}
}
}
.el-tag {
margin: 4px;
}
}
&__total {
position: absolute;
bottom: 1px;
right: 30px;
height: 28px;
line-height: 28px;
color: #619ef2;
font-size: 12px;
border-radius: 4px;
z-index: 1;
padding-left: 5px;
background: #fff;
cursor: pointer;
}
&__icon__wrap {
position: absolute;
top: 0;
right: 0;
width: 30px;
height: 30px;
cursor: pointer;
color: #b4bccc;
}
&__icon {
position: absolute;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0);
}
}
</style>
<template>
<el-option :value="value" :label="label" :disabled="disabled">
<span style="float: left">{{ item.value }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.label }}</span>
</el-option>
</template>
<script>
export default {
props: {
value: {
required: true
},
label: [String, Number],
disabled: {
type: Boolean,
default: false
}
},
computed: {
parent() {
let parent = this.$parent;
let parentName = parent.$options.componentName;
while (parentName !== 'BDSelect') {
parent = parent.$parent;
parentName = parent.$options.componentName;
}
return parent;
}
},
created() {
this.parent.options.push({ label: this.label, value: this.value });
}
}
</script>
import {elTable} from 'element-ui';
import Vue from 'vue';
const CompVue = Vue.extend(elTable)
export default = new CompVue({
})
<template>
<el-input v-model="input" placeholder="请输入内容"></el-input>
</template>
x<template>
<div class="stock-input">
<bd-select
ref="bd-select"
v-model="selectConf.value"
:disabled="disabled"
multiple
:loading="selectConf.loading"
filterable
remote
:remote-method="remoteMethod"
:placeholder="placeholder"
@change="selectChange">
<el-option
v-for="option in selectConf.options"
:key="option.value"
:value="option.value"
:label="option.label">
<div class="suggest-item">
<!-- <span class="suggest-item__rt">{{option.value}}</span> -->
<span class="suggest-item__lt">{{option.label}} </span>
</div>
</el-option>
</bd-select>
</div>
</template>
<script>
import emitter from 'element-ui/lib/mixins/emitter';
import dmSelect from '@/components/dm-select';
import {loadGoodsData} from '@/service/api/cardApi.js'
// import InduPicker from '@components/Customer/common/com_induPicker';
export default {
props: {
value: Array,
disabled: Boolean,
userId: String,
multiple: {
type: Boolean,
default: true
},
placeholder: {
type: String,
default: '输入货号或商品名称'
},
withparent: {
type: Boolean,
default: true
},
beforeSelect: Function
},
data() {
return {
selectConf: {
value: !!this.value.find(p => !!p.id) ? this.value.map(item => item.id) : [],
options: this.value.map(item => {
return { value: item.id, label: item.name };
}),
loading: false
},
// pickerConf: {
// show: false,
// selected: []
// },
timer: null,
cacheIndus: this.value.map(item => item)
};
},
mixins: [emitter],
watch: {
value: {
handler: function (val) {
this.cacheIndus = val.map(item => item);
this.selectConf.value = val.map(item => item.id);
this.selectConf.options = val.map(item => {
return { value: item.id, label: item.name };
});
},
deep: true
}
},
components: {
'bd-select': dmSelect
},
methods: {
remoteMethod(val) {
// if (!val) {
// this.$tips({type:'warning',message:'搜索字段不能为空'});
// return;
// }
if (!val && this.selectConf.options.length > 0) return;
this.selectConf.loading = true;
clearTimeout(this.timer);
this.timer = setTimeout(() => {
loadGoodsData({currentPage:1,pageSize:20,searchParam:val}).then(res => {
this.selectConf.options = [];
res = res.result.result || [];
this.$nextTick(() => {
if (!!res && res instanceof Array) {
res.forEach(item => {
this.selectConf.options.push({
label: item.proName,
value: item.proNo
});
if (this.cacheIndus.findIndex(stk => stk.id === item.label) === -1) {
this.cacheIndus.push({
id: item.proNo,
name: item.proName
});
}
});
}
this.selectConf.loading = false;
});
});
}, 300);
},
selectChange(val) {
if (!this.multiple && val.length > 0) {
this.selectConf.value.splice(0, this.selectConf.value.length - 1);
val.splice(0, val.length - 1);
this.$nextTick(_ => {
this.$refs['bd-select'].$refs.select.visible = false;
})
}
let arr = this.cacheIndus.filter(item => val.findIndex(v => v === item.id) !== -1);
let arrCopy = JSON.parse(JSON.stringify(arr));
if (!!this.beforeSelect && this.beforeSelect instanceof Function && !this.beforeSelect(arrCopy)) return;
this.$emit('input', arr);
this.$emit('change', arr);
},
iconClick() {
this.remoteMethod();
},
induSelected(items) {
this.selectConf.value = [];
if (items.length === 0) return;
items.forEach(item => {
if (this.selectConf.value.findIndex(v => v === item.id) === -1) {
this.selectConf.value.push(item.id);
}
if (this.selectConf.options.findIndex(option => option.value === item.id) === -1) {
this.selectConf.options.push({
label: item.label,
value: item.id,
code: item.code
});
}
if (this.cacheIndus.findIndex(cache => cache.id === item.id) === -1) {
this.cacheIndus.push({
id: item.id,
name: item.label,
code: item.code
});
}
});
this.selectChange(this.selectConf.value);
this.dispatch('ElFormItem', 'el.form.change', this.selectConf.value);
}
}
}
</script>
<style lang="scss" scoped>
.suggest-item {
font-size: 12px;
height: 24px;
line-height: 24px;
&__lt {
float: left;
width: calc(100% - 34px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
&__rt {
float: right;
color: #bbb;
width: 30px;
// padding-right: 10px;
text-align: right;
}
}
</style>
import lgPreview from './preview.vue'
export default {
install: function (Vue, options) {
// 添加的内容写在这个函数里面
const LOGIC_EVENT_BUS = new Vue({
data(){
return {
LOGIC_PREVIEW : {
isTitleEnable: true,
isHorizontalNavEnable: true,
show: false,
loading : true,
current: {
title: '',
src: ''
},
list: []
}
}
}
})
window.LOGIC_EVENT_BUS = LOGIC_EVENT_BUS
Vue.component('lg-preview', lgPreview)
const updateIndex = function (list) {
list.forEach(function (item, index) {
item.index = index + 1
})
}
function getImage (src, previewItem) {
return new Promise(function (resolve, reject) {
const img = new window.Image()
img.src = src
img.onload = function () {
previewItem['naturalHeight'] = img.naturalHeight
previewItem['naturalWidth'] = img.naturalWidth
setTimeout(function () {
LOGIC_EVENT_BUS.LOGIC_PREVIEW.loading = false
},500)
resolve(img)
}
img.error = function (e) {
reject(e)
}
})
}
Vue.directive('preview', {
bind: function (el) {
var previewItem = {
title: '',
el: el,
index: 0,
src: ''
}
LOGIC_EVENT_BUS.LOGIC_PREVIEW.list.push(previewItem)
updateIndex(LOGIC_EVENT_BUS.LOGIC_PREVIEW.list)
el.addEventListener('click', function (e) {
e.stopPropagation()
LOGIC_EVENT_BUS.LOGIC_PREVIEW.isTitleEnable = el.getAttribute('preview-title-enable')== "false" ? false : true;
LOGIC_EVENT_BUS.LOGIC_PREVIEW.isHorizontalNavEnable = el.getAttribute('preview-nav-enable')== "false" ? false : true;
LOGIC_EVENT_BUS.LOGIC_PREVIEW.show = true
LOGIC_EVENT_BUS.LOGIC_PREVIEW.loading = true
LOGIC_EVENT_BUS.LOGIC_PREVIEW.current = previewItem
getImage(previewItem.src, previewItem)
})
},
update: function (el, oldValue) {
var previewItem = LOGIC_EVENT_BUS.LOGIC_PREVIEW.list.find(function (item) {
return item.el === el
})
if (!previewItem) return
previewItem.src = oldValue.value
previewItem.title = el.alt
},
unbind: function (el) {
if (el) {
LOGIC_EVENT_BUS.LOGIC_PREVIEW.list.forEach(function (item, index) {
if (el === item.el) {
LOGIC_EVENT_BUS.LOGIC_PREVIEW.list.splice(index, 1)
}
})
}
updateIndex(LOGIC_EVENT_BUS.LOGIC_PREVIEW.list)
}
})
}
};
<template>
<transition name="fade">
<div class="lg-preview-wrapper" v-show="preview.show" @click="leave" @touchmove.prevent>
<div class="lg-preview-loading" v-show="preview.loading"><div></div></div>
<img
class="lg-preview-img"
v-if="preview.current.src"
:src="preview.current.src"
:alt="preview.current.title"
v-show="!preview.loading"
>
<div class="lg-preview-title" v-if="preview.isTitleEnable&&preview.current.title" v-show="!preview.loading">
{{preview.current.title}}
</div>
<div class="lg-preview-nav-left" v-if="preview.isHorizontalNavEnable" v-show="!preview.loading">
<span class="lg-preview-nav-arrow" @click="preAction" ></span>
</div>
<div class="lg-preview-nav-right" v-if="preview.isHorizontalNavEnable" v-show="!preview.loading">
<span class="lg-preview-nav-arrow" @click="nextAction"></span>
</div>
</div>
</transition>
</template>
<script>
export default {
name: 'Preview',
computed: {
preview () {
console.log(window.LOGIC_EVENT_BUS.LOGIC_PREVIEW)
return window.LOGIC_EVENT_BUS.LOGIC_PREVIEW
}
},
methods: {
leave (e) {
if ((this.preview.show)&&(e.target.className.indexOf('lg-preview-nav-arrow') != 0)){
this.close()
}
},
close () {
this.preview.show = false
},
preAction () {
this.preview.loading = true
var index = this.preview.list.indexOf(this.preview.current)
if (index === 0) {
this.preview.loading = false
return
}
index--
this.preview.current = this.preview.list[index]
const img = new window.Image()
img.src = this.preview.current.src
img.onload = function () {
setTimeout(function () {
LOGIC_EVENT_BUS.LOGIC_PREVIEW.loading = false
},500)
}
},
nextAction () {
this.preview.loading = true
var index = this.preview.list.indexOf(this.preview.current)
if (index === this.preview.list.length - 1) {
this.preview.loading = false
return
}
index++
this.preview.current = this.preview.list[index]
const img = new window.Image()
img.src = this.preview.current.src
img.onload = function () {
setTimeout(function () {
LOGIC_EVENT_BUS.LOGIC_PREVIEW.loading = false
},500)
}
},
}
}
</script>
<style scoped>
.fade-enter-active, .fade-leave-active {
transition: opacity .5s
}
.fade-enter, .fade-leave-active {
opacity: 0
}
.lg-preview-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
text-align: center;
box-sizing: border-box;
background: rgba(0, 0, 0, 0.9);
z-index: 10000;
}
.lg-preview-loading {
position: absolute;
width: 30px;
height: 35px;
top: 50%;
left: 50%;
margin-top: -17.5px;
margin-left: -15px;
}
.lg-preview-loading > div {
display: inline-block;
height: 25px;
width: 25px;
background: transparent;
border-radius: 100%;
border: 2px solid #fff;
border-bottom-color: transparent;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
-webkit-animation: rotate 0.75s 0s linear infinite;
animation: rotate 0.75s 0s linear infinite;
}
@keyframes rotate {
0% {
-webkit-transform: rotate(0deg) scale(1);
transform: rotate(0deg) scale(1);
}
50% {
-webkit-transform: rotate(180deg) scale(0.6);
transform: rotate(180deg) scale(0.6);
}
100% {
-webkit-transform: rotate(360deg) scale(1);
transform: rotate(360deg) scale(1);
}
}
.lg-preview-img {
max-width: 100%;
max-height: 100%;
display: block;
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
margin: auto;
}
.lg-preview-nav-arrow {
position: absolute;
top: 50%;
margin-top: -15px;
background: rgba(0, 0, 0, 0);
line-height: 40px;
width: 20px;
height: 20px;
border-top: 2px solid #fff;
border-left: 2px solid #fff;
}
.lg-preview-nav-left,
.lg-preview-nav-right {
position: absolute;
height: 100%;
margin: 0 5px;
width: 200px;
top: 0;
color: #fff;
transition: opacity .2s;
}
.lg-preview-nav-left {
left: 0;
}
.lg-preview-nav-left .lg-preview-nav-arrow {
left: 0;
margin-left: 40px;
transform: rotate(-45deg);
}
.lg-preview-nav-right {
right: 0;
}
.lg-preview-nav-right .lg-preview-nav-arrow {
right: 0;
margin-right: 40px;
transform: rotate(135deg);
}
.lg-preview-title {
position: absolute;
left: 0;
bottom: 0;
text-align: center;
width: 100%;
color: #fff;
background: rgba(0, 0, 0, .5);
box-sizing: border-box;
font-size: 16px;
height: 40px;
line-height: 40px;
}
@media all and (max-width: 768px) {
.lg-preview-nav-left,
.lg-preview-nav-right {
width: 100px;
}
.lg-preview-nav-left .lg-preview-nav-arrow {
margin-left: 20px;
}
.lg-preview-nav-right .lg-preview-nav-arrow {
margin-right: 20px;
}
}
</style>
import upload from './upload';
export default {
upload
}
<template>
<div class="layout-container">
<vue-gic-header class="user-header-pop" style="z-index: 1999;" :projectName="projectName" :collapseFlag="collapseFlag" @collapseTag="collapseTagHandler" @toRouterView="toRouterView"></vue-gic-header>
<div class="layout">
<vue-gic-aside-menu class="layout-left" v-if="asideShow" :projectName="projectName" :leftModulesName="leftModulesName" :collapseFlag.sync="collapseFlag"></vue-gic-aside-menu>
<div class="layout-right" :class="[{'asideShow': asideShow},{'collapseFlag':asideShow && collapseFlag}]">
<div class="layout-title">
<el-breadcrumb class="dm-breadcrumb" separator="/">
<el-breadcrumb-item :to="{ path: '' }"><a href="/report/#/memberSummary">首页</a></el-breadcrumb-item>
<el-breadcrumb-item :class="{'no-link':!v.path}" v-for="(v,i) in breadcrumb" :key="i" :to="{ path: v.path }">{{v.name}}</el-breadcrumb-item>
</el-breadcrumb>
<h3><span>{{contentTitle}}</span></h3>
</div>
<div class="layout-content__wrap">
<div class="layout-content" :class="[{'asideShow': asideShow},{'collapseFlag':asideShow && collapseFlag}]">
<router-view></router-view>
</div>
</div>
<vue-gic-footer></vue-gic-footer>
</div>
</div>
</div>
</template>
<script>
export default {
data () {
return {
collapseFlag: false,
projectName: "integral-mall",
leftModulesName: '公众号配置',
}
},
created(){
$bus.$on('aside-menu',val => {
this.leftMenuRouter = val
})
},
destroyed() {
$bus.$off('aside-menu');
},
computed: {
asideShow() {
console.log(this.$store.state)
return this.$store.state.marketing.asideShow;
},
contentTitle() {
return this.$route.name
},
breadcrumb() {
return this.$store.state.marketing.breadcrumb;
}
},
// watch:{
// asideShow(val) {
// this.collapseFlag = this.asideShow;
// }
// },
methods: {
// 处理路由跳转
toRouterView(val) {
var that = this;
// 模拟检查数据
// //有两个参数
//{
// name:,
// path:
//}
that.$router.push({
path: val
})
},
// 处理路由跳转
toRouterView(val) {
//有两个参数
//{
// name:,
// path:
//}
this.$router.push({
path: val.path
})
},
// 折叠事件
collapseTagHandler(val){
this.collapseFlag = val
}
}
}
</script>
<style lang="scss">
.layout-container{
height:100%;
display:flex;
}
.layout {
display: flex;
flex-direction: row;
background-color: #f0f2f5;
height: calc(100% - 64px);
overflow-x: auto;
overflow-y: hidden;
margin-top: 64px;
width: 100%;
&-left {
width: 200px;
display: inline-block;
position: fixed;
left: 0;
z-index: 9;
}
&-right{
position: relative;
flex: 1;
overflow-x:auto;
transition: width 0.5s;
-moz-transition: width 0.5s;
-webkit-transition: width 0.5s;
-o-transition: width 0.5s;
height: 100%;
// overflow-y: auto;
margin-left:0px;
&.asideShow{
margin-left: 200px;
}
&.collapseFlag{
margin-left: 64px;
}
}
&-title{
// position: absolute;
// width: 100%;
// top:0;
// left:0;
height:85px;
background:#fff;
// box-shadow: 0 3px 5px rgba(147,165,184,.13);
padding:15px 0 0 30px;
border-bottom: 1px solid #e4e7ed;
h3 {
color:#303133;
font-size:20px;
padding:24px 0;
font-weight:600;
span{
color:#303133;
font-size:20px;
font-weight:600;
}
i{
font-size:20px;
color:#c0c4ce;
cursor: pointer;
&:hover{
color:#909399;
}
}
}
}
&-content__wrap {
overflow-y: auto;
position: relative;
top:-1px;
&::-webkit-scrollbar {
display: none;
}
}
&-content {
// margin-top: 100px;
min-height: calc(100% - 200px);
min-width: 1400px;
&.asideShow{
min-width: 1200px;
}
&.collapseFlag{
min-width: 1336px;
}
}
}
.dm-breadcrumb{
display: inline-block;
vertical-align: middle;
}
.user-header-pop {
min-width: 95px;
}
.el-popover.user-header-pop {
min-width: 95px;
}
</style>
<template>
<div class="dm-avatar">
<label class="dm-avatar__upload " :class="{'is-disabled':disabled}" :style="`width:${width}px;height:${height}px;`" v-loading="loading">
<input type="file" style="display:none;" :disabled="disabled" accept="image/gif, image/jpeg,image/png" ref="uploader" v-upload='this'>
<img v-show="model.imgUrl && showImg" :src="model.imgUrl || ''" :class="className" class="dm-avatar__img"/>
<i class="el-icon-plus dm-avatar__icon" v-show="!model.imgUrl" :style="'line-height:'+height+'px;'"></i>
</label>
<div class="dm-avatar__tips" :style="tipsStyle"> {{tips}}</div>
</div>
</template>
<script>
export default {
name:'dm-upload',
props:{
model:{
type:Object,
default(){
return {
code:'',
imgUrl:'',
wxImg:'',
mediaId:''
}
}
},
width:{
type:String,
default:'auto'
},
height:{
type:String,
default:'auto'
},
tips:{
type:String,
default:'图片建议尺寸:100*100'
},
className:{
type:String,
default:''
},
label:{
type:String,
default:'上传'
},
fileType:{
type:String,
default:'file'
},
showImg:{
type:Boolean,
default:true
},
tipsStyle:Object,
size: String,
url:{
type:String,
default:'/api-marketing/upload-game-image'
},
labelStyle:Object
},
data() {
return {
loading:false,
disabled:false
}
},
watch:{
model:{
handler(val) {
this.$emit('update:model',this.model);
this.$emit('backImg',this.model);
},
deep:true
}
},
}
</script>
<style lang="scss" scoped>
.dm-avatar{
&__upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
display: inline-block;
text-align: center;
outline: none;
width: 178px;
height: 178px;
&:hover{
box-shadow: 0 0 8px 0 rgba(232,237,250,.6), 0 2px 4px 0 rgba(232,237,250,.5);
border-color: #1890ff;
}
}
&__img{
width: 100%;
height: 100%;
display: block;
}
&__icon {
font-size: 28px;
color: #8c939d;
width: 100%;
height: 100%;
line-height: 178px;
text-align: center;
}
&__tips{
color:#909399;
font-size:12px;
line-height:1;
}
}
</style>
<template>
<el-upload
class="avatar-uploader"
action="123"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<div v-if="imgUrl" :src="imgUrl" class="avatar" :style="'background-image:url('+imgUrl+')'"></div>
<p v-else class="avatar-uploader-icon">
<i class="el-icon-picture"></i><span>点击添加图片</span>
</p>
</el-upload>
</template>
<script>
import config from '@/config';
export default {
props:{
url:{
type:String,
default:'/api-plug/upload-img'
},
imgUrl:{
type:String,
default:''
},
imgCode:{
type:String,
default:''
},
},
data() {
return {
code:'',
disabled:false,
loading:false
};
},
methods: {
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg';
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 格式!');
return;
}
if (!isLt2M) {
this.$message.error('上传头像图片大小不能超过 2MB!');
return;
}
let formData = new FormData();
formData.append('file',file);
formData.append('requestProject', 'gic-web');
this.axios.post(this.url, formData).then(res => {
if (res.data.errorCode === 0) {
this.$emit('update:imgUrl',res.data.result[0].qcloudImageUrl)
this.$emit('update:imgCode',res.data.result[0].imageFiledCode)
this.$tips({ type: 'success', message: '上传成功' });
} else {
this.$tips({ type: 'error', message: '上传失败' });
}
this.disabled = false;
}).catch(error => {
this.disabled = false;
this.$tips({ type: 'error', message: error.msg || '上传失败' });
});
}
}
}
</script>
<style lang="scss" scoped>
.avatar-uploader{
/deep/ .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
&:hover {
border-color: #1890ff;
}
}
.avatar-uploader-icon {
width: 397px;
height: 222px;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
i{
font-size: 40px;
color: #c0c4cc;
}
span {
display: block;
font-size: 16px;
color: #909399;
}
}
.avatar {
width: 397px;
height: 222px;
background-repeat: no-repeat;
background-position: center;
background-size: cover;
}
}
</style>
<template>
<div>
<label class="el-button el-button--primary el-button--medium" :class="{'is-disabled':disabled}">{{disabled?'上传中...':label}}
<input type="file" style="display:none;" :disabled="disabled" accept="image/gif, image/jpeg,image/png" ref="uploader" v-upload='this'>
</label>
<span class="fz12 gray" :style="tipsStyle"> {{tips}}</span>
</div>
</template>
<script>
export default {
name:'dm-upload',
props:{
model:{
type:Object,
default(){
return {
code:'',
imgUrl:'',
wxImg:''
}
}
},
width:{
type:String,
default:'auto'
},
tips:{
type:String,
default:'图片建议尺寸:100*100'
},
className:{
type:String,
default:''
},
label:{
type:String,
default:'上传'
},
fileType:{
type:String,
default:'file'
},
showImg:{
type:Boolean,
default:true
},
tipsStyle:Object
},
watch:{
model:{
handler(val) {
this.$emit('update:model',this.model);
this.$emit('backImg',this.model);
},
deep:true
}
},
data(){
return{
disabled:false,
loading:false
}
}
}
</script>
<style lang="scss" scoped>
.upload-show-img{
height: 85px;
display: block;
margin-top: 10px;
cursor: pointer;
}
</style>
<template>
<div>
<label class="el-button el-button--primary" :class="{'is-disabled':disabled}" :style="labelStyle">
<i v-if="icon" :class="icon"></i>
{{disabled?'上传中...':label}}
<input type="file" style="display:none;" :disabled="disabled" accept="image/gif, image/jpeg,image/png" ref="uploader" v-upload='this'>
</label>
<span class="fz12 gray" :style="tipsStyle"> {{tips}}</span>
<img v-if="model.imgUrl && showImg" :src="model.imgUrl || ''" :width="width" :class="className" class="upload-show-img"/>
</div>
</template>
<script>
export default {
name:'dm-upload',
props:{
model:{
type:Object,
default(){
return {
code:'',
imgUrl:'',
wxImg:'',
mediaId:''
}
}
},
width:{
type:String,
default:'auto'
},
tips:{
type:String,
default:'图片建议尺寸:100*100'
},
className:{
type:String,
default:''
},
label:{
type:String,
default:'上传'
},
fileType:{
type:String,
default:'file'
},
showImg:{
type:Boolean,
default:true
},
tipsStyle:Object,
size: String,
url:{
type:String,
default:'/api-marketing/upload-game-image'
},
labelStyle:Object,
icon:{
type:String,
default:''
}
},
watch:{
model:{
handler(val) {
this.$emit('update:model',this.model);
this.$emit('backImg',this.model);
},
deep:true
}
},
data(){
return{
disabled:false,
loading:false
}
}
}
</script>
<style lang="scss" scoped>
.upload-show-img{
height: 85px;
display: block;
margin-top: 10px;
cursor: pointer;
}
</style>
<template>
<div>
<label class="el-button el-button--primary el-button--medium" :class="{'is-disabled':disabled}">{{disabled?'上传中...':label}}
<input type="file" style="display:none;" :disabled="disabled" accept="image/gif, image/jpeg,image/png" ref="uploader" v-upload='this'>
</label>
<span class="fz12 gray"> {{tips}}</span>
<img v-if="model.imgUrl" :src="model.imgUrl || ''" :width="width" :class="className" class="upload-show-img"/>
</div>
</template>
<script>
export default {
name:'dm-upload',
props:{
model:{
type:Object,
default(){
return {
code:'',
imgUrl:'',
wxImg:''
}
}
},
width:{
type:String,
default:'auto'
},
tips:{
type:String,
default:'图片建议尺寸:100*100'
},
className:{
type:String,
default:''
},
label:{
type:String,
default:'上传'
},
fileType:{
type:String,
default:'file'
}
},
watch:{
model:{
handler(val) {
this.$emit('update:model',this.model)
},
deep:true
}
},
data(){
return{
disabled:false,
loading:false
}
}
}
</script>
<style lang="scss" scoped>
.upload-show-img{
height: 85px;
display: block;
margin-top: 10px;
cursor: pointer;
}
</style>
const config = {
development: {
api: '/dmApi/'
},
production: {
// api: 'https://hope.demogic.com/',
api: (window.location.protocol + '//' + window.location.host +'/') || ''
}
}
export default {
api: config[process.env['NODE_ENV']]['api']
}
export default axios
\ No newline at end of file
/**
* v-clipboard 剪切板
*/
export default {
bind(el,binding,vnode,oldVnode) {
let val = '';
el.addEventListener('click', function() {
val = binding.value;
const input = document.createElement('input');
el.appendChild(input)
input.value = val;
input.select();
document.execCommand("Copy");
el.__vue__.$tips({type:'success',message:'复制链接成功'})
input.parentNode.removeChild(input);
})
}
}
import axios from 'axios';
import config from '@/config'
const maxSize = 2 * 1024 * 1024; //5M
axios.defaults.withCredentials = true
export default {
inserted(el, binding) {
el.addEventListener("change", function() {
if (el.files[0].size > maxSize) {
binding.value.$tips({ type: 'warning', message: '上传图片不能大于2M' });
return;
}
binding.value.upLoadDisabled = true;
let formData = new FormData();
formData.append('file', el.files[0]);
formData.append('requestProject', 'gic-web');
formData.append('wechatImageGroupId', binding.value.listParams.wechatImageGroupId || 1);
axios.post(config.api + '/api-marketing/marketing-wechat-image-save', formData)
.then(res => {
if (res.data.errorCode === 0) {
binding.value.$tips({ type: 'success', message: '上传成功' });
binding.value.loadImgList();
} else {
binding.value.$tips({ type: 'error', message:res.data.message || '上传失败' });
}
binding.value.upLoadDisabled = false;
})
.catch(error => {
binding.value.upLoadDisabled = false;
binding.value.$tips({ type: 'error', message: error.msg || '上传失败' });
});
});
}
}
import clipboard from './clipboard'
import upload from './upload'
import imglibupload from './img-lib.js'
export default {
clipboard,
upload,
imglibupload
}
/**
* v-upload 图片上传
*/
import axios from 'axios';
import config from '@/config'
const maxSize = 2 * 1024 * 1024; //5M
axios.defaults.withCredentials = true
export default {
inserted: function(el, binding) {
el.addEventListener("change", function() {
binding.value.loading = true
if (el.files[0].size > maxSize) {
binding.value.$tips({ type: 'warning', message: '上传图片不能大于2M' });
return;
}
binding.value.disabled = true;
let formData = new FormData();
formData.append(binding.value.fileType, el.files[0]);
formData.append('requestProject', 'gic-web');
axios.post(config.api + binding.value.url, formData)
.then(res => {
console.log(res)
binding.value.loading = false;
el.value = "";
if (res.data.errorCode === 0) {
if (binding.value.url === '/api-plug/upload-img') {
binding.value.model.code = res.data.result[0].imageFiledCode,
binding.value.model.imgUrl = res.data.result[0].qcloudImageUrl
} else {
binding.value.model.code = res.data.result.imageFiledCode,
binding.value.model.imgUrl = res.data.result.qcloudImageUrl
binding.value.model.mediaId = res.data.result.imageMediaId
binding.value.model.wxImg = res.data.result.wxImg || res.data.result.imageUrl || ''
}
binding.value.$tips({ type: 'success', message: '上传成功' });
} else {
binding.value.$tips({ type: 'error', message:res.data.message || '上传失败' });
}
binding.value.disabled = false;
}).catch(error => {
binding.value.loading = false;
binding.value.disabled = false;
binding.value.$tips({ type: 'error', message: error.msg || '上传失败' });
});
});
}
}
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
import {axios} from './service/api/index'
import directives from './directives'
import ElementUI from 'element-ui'
// import 'element-ui/lib/theme-chalk/index.css'
import vueGicHeader from '@gic-test/vue-gic-header'
import vueGicFooter from '@gic-test/vue-gic-footer'
import vueGicAsideMenu from '@/components/aside-menu'
import vueGicStoreLinkage from '@gic-test/vue-gic-store-linkage/src/lib'
import install from 'packele'
import preview from 'vue-photo-preview/src/lib/index.js'
import 'vue-photo-preview/dist/skin.css'
import dmConfirm from './components/dm-confirm'
//删除组件 这个组件常用,放到这不用在组件里引入
Vue.component(dmConfirm.name,dmConfirm)
Vue.config.productionTip = false
Vue.use(preview)
Vue.use(install)
Vue.use(ElementUI)
Vue.use(vueGicHeader)
Vue.use(vueGicFooter)
Vue.use(vueGicAsideMenu)
Vue.use(vueGicStoreLinkage)
Vue.prototype.axios = axios;
Vue.prototype.axios.withCredentials = true
Object.keys(directives).map(item => Vue.directive(item, directives[item]));
window.$bus = new Vue();
let flag = false
Vue.prototype.$tips = function ({message = '提示',type = 'success'}) {
if (flag) { return }
else {this.$message({message,type})}
flag = true;
setTimeout(_ => {flag = false},1000)
}
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
import Vue from 'vue'
export default {
methods: {
nonnegative(val){
if (val<0) {
val = 0;
this.$tips({type:'warning',message:'不能为负值'})
}
}
}
}
import NwdLoadingComponent from './loading'
let $vm;
export default {
install(Vue,options) {
if(!$vm) {
const NwdLoadingPlugin = Vue.extend(NwdLoadingComponent);
$vm = new NwdLoadingPlugin({
el: document.createElement('div')
});
}
$vm.show = false;
let loading = {
show(text) {
$vm.show = true;
$vm.text = text;
document.body.appendChild($vm.$el);
},
hide() {
$vm.$el.parentElement.removeChild($vm.$el)
$vm.show = false;
}
};
if (!Vue.$loading) {
Vue.$loading = loading;
}
// Vue.prototype.$loading = Vue.$loading;
Vue.mixin({
created() {
this.$loading = Vue.$loading;
}
})
}
}
<template>
<div class="nwd-loading" v-show="show">
<div>{{text}}</div>
</div>
</template>
<script>
export default {
props: {
show: Boolean,
text: "正在加载中..."
}
}
</script>
<style lang="scss" scoped>
.nwd-loading {
width: 100%;
height: 100%;
position: fixed;
background: #fff;
top: 0;
left: 0;
z-index: 999;
}
</style>
import Vue from 'vue'
import Router from 'vue-router'
import routes from './routes'
Vue.use(Router)
let router = new Router({
routes,
// scrollBehavior: () => ({ y: 0 })
//使用keep-alive标签后部分安卓机返回缓存页位置不精确问题
scrollBehavior(to, from, savedPosition) {
if (savedPosition && to.meta.keepAlive) {
return savedPosition;
}
const layoutRight = document.querySelector('.layout-right');
if (layoutRight) {
layoutRight.scrollTo(0,0);
}
}
})
router.beforeEach((to,from,next) => {
document.title = to.name;
next()
})
export default router
// mall 积分商城
import mall from '../views/mall/index';
import couponList from '../views/mall/coupon/list';
import couponExchange from '../views/mall/coupon/exchange';
import couponInfo from '../views/mall/coupon/info.vue';
import giftList from '../views/mall/gift/list';
import giftExchange from '../views/mall/gift/exchange';
import giftInfo from '../views/mall/gift/info.vue';
import goodsList from '../views/mall/goods/list';
export default {
path: 'mall',
name: '积分商城',
component: mall,
redirect: '/coupon',
meta: {},
children: [
{
path: '/coupon',
name: '优惠券',
component: couponList,
meta: {
menu:'coupon'
}
},
{
path: '/coupon/exchange/:id',
name: '优惠券兑换记录',
component: couponExchange,
meta: {
menu:'coupon'
}
},
{
path: '/coupon/info',
name: '新增优惠券',
component: couponInfo,
meta: {
type:'add',
menu:'coupon'
}
},
{
path: '/coupon/info/:id',
name: '编辑优惠券',
component: couponInfo,
meta: {
type:'edit',
menu:'coupon'
}
},
{
path: '/coupon/queryinfo/:id',
name: '优惠券详情',
component: couponInfo,
meta: {
type:'info',
menu:'coupon'
}
},
{
path: '/gift',
name: '礼品',
component: giftList,
meta: {
menu:'gift'
}
},
{
path: '/gift/exchange/:id',
name: '礼品兑换记录',
component: giftExchange,
meta: {
menu:'gift'
}
},
{
path: '/gift/wxexchange/:id',
name: '微信兑换券兑换记录',
component: giftExchange,
meta: {
menu:'gift',
type:'wx'
}
},
{
path: '/gift/info',
name: '新增礼品',
component: giftInfo,
meta: {
type:'add',
menu:'gift'
}
},
{
path: '/gift/info/:id',
name: '编辑礼品',
component: giftInfo,
meta: {
type:'edit',
menu:'gift'
}
},
{
path: '/gift/queryinfo/:id',
name: '礼品详情',
component: giftInfo,
meta: {
type:'info',
menu:'gift'
}
},
{
path: '/goods',
name: '待发货',
component: goodsList,
meta: {
menu:'goods'
}
},
]
};
import Layout from '@/components/layout'
import page401 from '@/views/error/401'
import page403 from '@/views/error/403'
import page404 from '@/views/error/404'
import page500 from '@/views/error/500'
//积分商城
import mall from './mall'
export default [
{
path: '/',
name: 'layout',
component: Layout,
redirect: '/coupon',
children: [
mall
]
},
{
path: '/401',
name: '未授权',
component: page401
},
{
path: '/403',
name: '禁止访问',
component: page403
},
{
path: '/500',
name: '系统错误',
component: page500
},
{
path: '*',
name: '未知领域',
component: page404
},
]
import {requests} from './index';
import router from '@/router';
const MARKET_PREFIX = 'api-marketing/';
const PLUG_PREFIX = 'api-plug/';
const GOODS_PREFIX = 'api-admin/';
import Vue from 'vue';
const _vm = new Vue();
//获取营销场景
export const sceneSettingList = (params) => requests(MARKET_PREFIX + 'scene-setting-list', params);
//获取营销场景
export const getCardList = (params) => requests(PLUG_PREFIX + 'get-coupon-list', params);
//所有门店分组
export const storeGroupList = (params) => requests(GOODS_PREFIX + 'store-group-list', params);
import Vue from 'vue'
import axios from 'axios'
import config from '@/config'
import { log } from '@/utils'
import qs from 'qs'
import Router from 'vue-router'
const router = new Router();
// 加载最小时间
const MINI_TIME = 300
// 超时时间
let TIME_OUT_MAX = 20000
// 环境value
let _isDev = process.env.NODE_ENV === 'development'
// 请求接口host
let _apiHost = config.api
// 请求组(判断当前请求数)
let _requests = []
//创建一个请求实例
const instance = axios.create({
baseURL: _apiHost,
timeout: TIME_OUT_MAX,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
})
/**
* 添加请求,显示loading
* @param {请求配置} config
*/
function pushRequest(config) {
log(`${config.url}--begin`)
_requests.push(config)
}
/**
* 移除请求,无请求时关闭loading
* @param {请求配置} config
*/
function popRequest(config) {
log(`${config.url}--end`)
let _index = _requests.findIndex(r => {
return r === config
})
if (_index > -1) {
_requests.splice(_index, 1)
}
}
/**
* 错误的处理
* @param {*} code
* @param {string} [message='请求错误']
*/
function handlerErr(code,message = '请求错误') {
switch (code) {
case 404:
message = '404,错误请求'
router.push('/404')
break
case 401:
if (!_isDev) {
window.location.href = config.api+'/gic-web/#/'
}
message = '登录失效'
break
case 403:
message = '禁止访问'
router.push('/403')
break
case 408:
message = '请求超时'
break
case 500:
message = '服务器内部错误'
// router.push('/500')
break
case 501:
message = '功能未实现'
break
case 503:
message = '服务不可用'
break
case 504:
message = '网关错误'
break
}
Vue.prototype.$tips({type:'warning',message:message})
}
/**
* 请求地址,请求数据,是否静默,请求方法
*/
const requests = (url, data = {},contentTypeIsJSON = false, isSilence = false, method = 'POST') => {
let _opts = { method, url }
const _query = {}
let _timer = null
if (method.toLocaleUpperCase() === 'POST') {
if (contentTypeIsJSON) {
_opts.data = data;
_opts.headers = {'Content-Type': 'application/json'};
_opts.url += '?requestProject=marketing';
} else {
_opts.data = qs.stringify(Object.assign({requestProject:'gic-web'},data))
}
} else {
_opts.params = _query
}
return new Promise((resolve, reject) => {
let _random = { stamp: Date.now(), url: `${_apiHost + url}` }
if (!isSilence) {
_timer = setTimeout(() => {
pushRequest(_random)
}, MINI_TIME)
}
instance(_opts)
.then(res => {
clearTimeout(_timer)
popRequest(_random)
if (res.data.errorCode !== 0) {
reject(res);
handlerErr(res.data.errorCode,res.data.message);
} else {
resolve(res.data)
}
})
.catch(res => {
clearTimeout(_timer)
popRequest(_random)
if (res) {
handlerErr(res.response.status,'接口异常')
}
reject(res)
})
})
}
export {
instance as axios,
requests
}
import { requests } from './index';
import config from '@/config';
const PREFIX = 'api-integral-mall/';
// 首页优惠券
export const getPageCardsList = (params) => requests(PREFIX + 'page-cards', params);
//更新库存
export const updateStockService = (params) => requests(PREFIX + 'update-stock', params);
//更新兑换所需积分
export const updateIntegralCostService = (params) => requests(PREFIX + 'update-integral-cost', params);
//更新兑换所需现金
export const updateCashCostService = (params) => requests(PREFIX + 'update-cash-cost', params);
//删除商品
export const deleteProService = (params) => requests(PREFIX + 'delete-pro', params);
//查看兑换记录
export const getPageExchangeLogsList = (params) => requests(PREFIX + 'page-exchange-logs', params);
//查询单个商品
export const getIntegralMallProInfo = (params) => requests(PREFIX + 'get-integral-mall-pro', params);
//基础数据-会员等级
export const getGradeList = (params) => requests(PREFIX + 'load-grade', params);
//创建修改积分商品
export const createIntegralProService = (params) => requests(PREFIX + 'create-integral-pro', params, true);
// 首页礼品列表
export const getPageGiftList = (params) => requests(PREFIX + 'page-gift', params);
// 基础数据-分类列表
export const getCategoryList = (params) => requests(PREFIX + 'load-category', params);
// 导出优惠券兑换记录
export const exportExchangeListExcel = config.api + PREFIX + 'download-exchange-list-execl';
// 导出代发货商品
export const exportOnlineListExcel = config.api + PREFIX + 'download-integral-online-excel';
// 查看物流
export const getLogisticsInfo = (params) => requests(PREFIX + 'list-logistics-traces', params);
// 基础数据-物流列表
export const getLogisticsList = (params) => requests(PREFIX + 'load-logisties', params);
// 订单发货,取消,修改物流
export const orderOptService = (params) => requests(PREFIX + 'order-opt', params);
// 首页待发货
export const getPageUndeliverList = (params) => requests(PREFIX + 'page-undeliver', params);
// 首页代发货数量
export const getNotSendCount = (params) => requests(PREFIX + 'get-not-send-count', params);
// 礼品设置热门商品
export const setHotStatusService = (params) => requests(PREFIX + 'update-hot-status', params);
// 新建礼品分类
export const createCategoryService = (params) => requests(PREFIX + 'create-gift-category', params);
import Vue from 'vue'
import Vuex from 'vuex'
import marketing from './modules/marketing'
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
marketing,
},
})
// initial state
const state = {
all: 0,
cartData: [],
total: 0,
leftMenu:[],
storeObj:{},
asideShow:false,
breadcrumb:[]
}
// getters
const getters = {
allProducts: (state, getters, rootState) => {
return state.all
},
allCartData: state => state.cartData,
total: state => {
state.total = 0;
for( let item of state.cartData ) {
state.total += item.price
}
return state.total
}
}
// actions
const actions = {
setAll({commit},data) {
commit('mutations_setAll',data);
},
setCartData({commit},item) {
commit('mutations_CartData',item)
},
removecartData( {commit}, item ) {
commit( 'mutations_removeCartData',item )
}
}
// mutations
const mutations = {
mutations_setAll( state,num ) {
state.all = num
},
mutations_CartData(state, item ) {
state.cartData.push( item )
},
mutations_removeCartData( state,item ) {
for( let i in state.cartData ) {
if( state.cartData[i].id === item.id ) {
state.cartData.splice(i,1)
}
}
},
mutations_setStoreObj(state,val) {
state.storeObj = val
},
aside_handler(state,val) {
state.asideShow = val
},
mutations_breadcrumb(state,val) {
state.breadcrumb = val
}
}
export default {
state,
getters,
actions,
mutations
}
<template>
<div class="store-wrap">
<div class="el-input">
<div @click="showTree" type="text" autocomplete="off" class="el-input__inner">
<span class="gray" v-show="!checked.label">{{placeholder}}</span>
<span>{{checked.label}}</span>
</div>
</div>
<transition name="fade">
<div class="store-dropdown" v-show="treeShow">
<el-tree class="store-tree" height="200" :data="treeData" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
<div class="store-btn-wrap">
<el-button size="mini" type="primary" @click="submit">确定</el-button>
<el-button size="mini" @click="close">取消</el-button>
</div>
</div>
</transition>
</div>
</template>
<script>
import {storeGroupList} from '@/service/api/commonApi.js'
// import {Table} from 'element-ui';
// import Vue from 'vue'
// const tableComponent = new Vue.extend(Table)
export default {
props:{
placeholder:{
type:String,
default:'请选择门店'
}
},
data() {
return {
defaultProps:{
children:'chilren',
label:'label'
},
treeData:[],
treeShow:false,
checked:{label:''},
initChecked:{label:''}
}
},
created(){
this.storeGroupList();
},
methods:{
showTree(){
this.treeShow = true;
},
async storeGroupList() {
let res = await storeGroupList();
const result = res.result;
function _rec(list) {
list.map(v => {
v.label = v.storeGroupName;
v.id = v.storeGroupId;
if (v.chilren instanceof Array && v.chilren.length>0) {
_rec(v.chilren);
}
})
}
_rec(result);
console.log(result)
this.treeData = result;
},
handleNodeClick(data,node,comp){
this.checked = data;
},
submit(){
this.treeShow = false;
},
close(){
this.treeShow = false;
this.checked = {}
}
}
}
</script>
<style lang="scss" scoped>
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
transform: translateY(0px);
transition: all .3s ease;
}
.fade-enter, .fade-leave-to {
opacity: 0;
transform: translateY(-100px);
}
.store-wrap{
width: 200px;
position: relative;
.store-dropdown{
position: absolute;
margin-top:10px;
border: 1px solid #e4e7ed;
border-radius: 4px;
background-color: #fff;
box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
box-sizing: border-box;
}
.store-tree{
border-radius: 4px;
height: 300px;
overflow-y: auto;
width: 90%;
padding: 5%;
}
.store-btn-wrap{
position: relative;
width: 100%;
height: 50px;
text-align: center;
background: #fff;
border-radius: 4px;
display: flex;
justify-content: space-around;
align-items: center;
&:before{
content: "";
width: 80%;
height: 1px;
background: #f0f0f0;
position: absolute;
top: 0;
left: 10%;
}
}
}
</style>
// 环境value
let _isDev = process.env.NODE_ENV === 'development'
import Vue from 'vue';
/**
* 开发输出log
* @param {消息} msg
*/
export const log = (msg) => {
if (_isDev && console && console.log) {
console.log(msg)
}
}
/**
* 补零
* @param {String/Number} num
*/
export const fillZero = (num) => {
num = num * 1;
if (num < 10) {
return '0' + num;
} else {
return num;
}
}
/**
*
* @param {*时间} date
* @param {*转换的格式} type
*/
export const formateDateTimeByType = (date, type = 'yyyy-MM-dd-HH-mm-ss') => {
if (!date){return ''}
if (typeof date === 'number') {
date = new Date(date);
}
if (typeof date === 'string') {
return date
} else {
var year = type.indexOf('yyyy') >= 0 ? (fillZero(date.getFullYear())) : '';
var month = type.indexOf('MM') >= 0 ? ('-' + fillZero(date.getMonth() + 1)) : '';
var day = type.indexOf('dd') >= 0 ? ('-' + fillZero(date.getDate())+'') : '';
var hours = type.indexOf('HH') >= 0 ? (' ' + fillZero(date.getHours())) : '';
var min = type.indexOf('mm') >= 0 ? (':' + fillZero(date.getMinutes())) : '';
var sec = type.indexOf('ss') >= 0 ? (':' + fillZero(date.getSeconds())) : '';
// console.log(year+month+day+hours+min+sec);
return year + month + day + hours + min + sec;
}
}
export const numberToChinese = (num) => {
var chnNumChar = {
:0,
:1,
:2,
:3,
:4,
:5,
:6,
:7,
:8,
:9,
:10
};
let result = '';
for(let i in chnNumChar) {
if (num === chnNumChar[i]) {
result = i
}
}
return result;
}
export const numberToWeekChinese = (num) => {
var chnNumChar = {
:0,
:1,
:2,
:3,
:4,
:5,
:6
};
let result = '--';
for(let i in chnNumChar) {
if (num === chnNumChar[i]) {
result = i
}
}
return result;
}
/**
*
* @param 清空数据
*/
export const resetParams = (obj) => {
for (let item in obj) {
if (item && obj[item]) {
switch (obj[item].constructor) {
case Array:
obj[item] = [];
break;
case String:
obj[item] = '';
break;
case Number:
obj[item] = 0;
break;
case Boolean:
obj[item] = false;
break;
default:
obj[item] = '';
break;
}
}
}
}
// 交换数组元素
function swapItems(arr, index1, index2) {
arr[index1] = arr.splice(index2, 1, arr[index1])[0];
return arr;
};
// 上移
export const upRecord = function(arr, $index) {
if($index == 0) {
return;
}
swapItems(arr, $index, $index - 1);
};
// 下移
export const downRecord = function(arr, $index) {
if($index == arr.length -1) {
return;
}
swapItems(arr, $index, $index + 1);
};
//字符串判断是否为空
export const voidStr = function(str,msg) {
if (!str) {
Vue.prototype.$tips({type:'warning',message:msg || '内容填写不全'})
return true;
} else {
return false;
}
}
/**
* 频率控制 返回函数连续调用时,action 执行频率限定为 次 / delay
* @param delay {number} 延迟时间,单位毫秒
* @param action {function} 请求关联函数,实际应用需要调用的函数
* @return {function} 返回客户调用函数
*/
export const throttle = function(delay, action){
var last = 0;
return function(){
var curr = +new Date()
if (curr - last > delay){
action.apply(this, arguments)
last = curr
}
}
}
/**
* 验证是否为网址
*/
export const checkUrl = function (urlString) {
if(urlString!=""){
var reg=/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
if(!reg.test(urlString)){
Vue.prototype.$tips({type:"warning",message:"网址不规范,示例:http://www.domain.com"});
return true;
}
}else {
Vue.prototype.$tips({type:"warning",message:"网址不规范,示例:http://www.domain.com"});
return true;
}
return false;
}
/*
* 判断字符长度
* @param: str
*/
export default {
/*
* 一个汉字算两个字符,一个英文字母或数字算一个字符
*/
getByteLen: function(val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 2;
}
else {
len += 1;
}
}
return len;
},
/*
* 一个汉字算一个字,一个英文字母或数字算半个字
*/
getZhLen: function (val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 1;
}
else {
len += 0.5;
}
}
return Math.ceil(len);
},
/*暂无用*/
cutStr: function(str, len,type){
var char_length = 0;
for (var i = 0; i < str.length; i++){
var son_str = str.charAt(i);
if(type==1) {
encodeURI(son_str).length > 2 ? char_length += 1 : char_length += 0.5;
}
if(type==2) {
char_length += 1 ;
}
if (char_length >= len){
var sub_len = char_length == len ? i+1 : i;
return str.substr(0, sub_len);
}
}
},
/*
* 限制字数用, 一个汉字算一个字,两个英文/字母算一个字
*/
getByteVal: function(val, max) {
var returnValue = '';
var byteValLen = 0;
for (var i = 0; i < val.length; i++) {
if (val[i].match(/[^\x00-\xff]/ig) != null)
byteValLen += 1;
else
byteValLen += 0.5;
if (byteValLen > max)
break;
returnValue += val[i];
}
return returnValue;
},
/*
* 限制字符数用, 一个汉字算两个字符,一个英文/字母算一个字符
*/
getCharVal: function (val, max) {
var returnValue = '';
var byteValLen = 0;
for (var i = 0; i < val.length; i++) {
if (val[i].match(/[^\x00-\xff]/ig) != null)
byteValLen += 2;
else
byteValLen += 1;
if (byteValLen > max)
break;
returnValue += val[i];
}
return returnValue;
},
/*
* 正则校验,校验非负数字
*/
regPos: function(v) {
var regTest = /^\d+(\.\d+)?$/;
return regTest.test(v);
}
}
/*策略规则*/
const strategies = {
isNonEmpty(value, errorMsg) {
return value === '' ?
errorMsg : void 0
},
minLength(value, length, errorMsg) {
return value.length < length ?
errorMsg : void 0
},
isMoblie(value, errorMsg) {
return !/^1(3|5|7|8|9)[0-9]{9}$/.test(value) ?
errorMsg : void 0
},
isEmail(value, errorMsg) {
return !/^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value) ?
errorMsg : void 0
}
}
/*Validator类*/
export default class Validator {
constructor() {
this.cache = [] //保存校验规则
}
add(dom, rules) {
for (let rule of rules) {
let strategyAry = rule.strategy.split(':') //例如['minLength',6]
let errorMsg = rule.errorMsg //'用户名不能为空'
this.cache.push(() => {
let strategy = strategyAry.shift() //用户挑选的strategy
strategyAry.unshift(dom.value) //把input的value添加进参数列表
strategyAry.push(errorMsg) //把errorMsg添加进参数列表,[dom.value,6,errorMsg]
return strategies[strategy].apply(dom, strategyAry)
})
}
}
start() {
for (let validatorFunc of this.cache) {
let errorMsg = validatorFunc()//开始校验,并取得校验后的返回信息
if (errorMsg) {//r如果有确切返回值,说明校验没有通过
return errorMsg
}
}
}
}
<template>
<div class="errPage-container">
<el-button @click="back" icon='arrow-left' class="pan-back-btn">返回</el-button>
<el-row>
<el-col :span="12">
<h1 class="text-jumbo text-ginormous">Oops!</h1>
页面
<h2>你没有权限去该页面</h2>
<h6>如有不满请联系你领导</h6>
<ul class="list-unstyled">
<li>或者你可以去:</li>
<li class="link-type">
<router-link to="/report/#/memberSummary">回首页</router-link>
</li>
<li class="link-type"><router-link to="/report/#/memberSummary">回首页</router-link></li>
<li><a @click.prevent="dialogVisible=true" href="#">点我看图</a></li>
</ul>
</el-col>
<el-col :span="12">
<img :src="errGif" width="313" height="428" alt="Girl has dropped her ice cream.">
</el-col>
</el-row>
<el-dialog title="随便看" :visible.sync="dialogVisible">
<img class="pan-img" :src="ewizardClap">
</el-dialog>
</div>
</template>
<script>
import errGif from '@/assets/img/401.gif'
export default {
name: 'page401',
data() {
return {
errGif: errGif + '?' + +new Date(),
ewizardClap: 'https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646',
dialogVisible: false
}
},
methods: {
back() {
if (this.$route.query.noGoBack) {
this.$router.push({ path: '/' })
} else {
this.$router.go(-1)
}
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.errPage-container {
width: 800px;
margin: 100px auto;
.pan-back-btn {
background: #008489;
color: #fff;
}
.pan-gif {
margin: 0 auto;
display: block;
}
.pan-img {
display: block;
margin: 0 auto;
width: 100%;
}
.text-jumbo {
font-size: 60px;
font-weight: 700;
color: #484848;
}
.list-unstyled {
font-size: 14px;
li {
padding-bottom: 5px;
}
a {
color: #008489;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
}
}
</style>
<template>
<div style="background:#f0f2f5;margin-top: -20px;height:100%;">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" :src="img_403" alt="403">
</div>
<div class="bullshit">
<!-- <div class="bullshit__oops">403</div> -->
<div class="bullshit__headline">{{ message }}</div>
<a href="/report/#/memberSummary" class="bullshit__return-home">返回首页</a>
</div>
</div>
</div>
</template>
<script>
import img_403 from '@/assets/img/error_403.svg'
export default {
name: 'page403',
data() {
return {
img_403
}
},
computed: {
message() {
return '抱歉,你无权访问该页面'
}
}
}
</script>
<style lang="scss" scoped>
.wscn-http404 {
position: relative;
width: 1200px;
margin: 20px auto 60px;
padding: 0 100px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
padding: 150px 152px 150px 0;
text-align: right;
overflow: hidden;
&__parent {
width: 100%;
max-width: 430px;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 150px 0;
overflow: hidden;
display: flex;
align-items: flex-start;
flex-direction: column;
justify-content: center;
height: 360px;
&__oops {
color: #434e59;
font-size: 72px;
font-weight: 600;
line-height: 72px;
margin-bottom: 24px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;*/
}
&__headline {
color: rgba(0,0,0,.45);
font-size: 20px;
line-height: 28px;
margin-bottom: 16px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;*/
}
&__return-home {
display: inline-block;
height: 32px;
line-height: 32px;
font-weight: 400;
text-align: center;
-ms-touch-action: manipulation;
touch-action: manipulation;
background-image: none;
white-space: nowrap;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border: 1px solid #1890ff;
color: #fff;
background-color: #1890ff;
text-shadow: 0 -1px 0 rgba(0,0,0,.12);
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,.035);
box-shadow: 0 2px 0 rgba(0,0,0,.035);
cursor: pointer;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;*/
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
<template>
<div style="background:#f0f2f5;margin-top: -20px;height:100%;">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" :src="img_404" alt="404">
</div>
<div class="bullshit">
<!-- <div class="bullshit__oops">404</div> -->
<div class="bullshit__headline">{{ message }}</div>
<a href="/report/#/memberSummary" class="bullshit__return-home">返回首页</a>
</div>
</div>
</div>
</template>
<script>
import img_404 from '@/assets/img/error_404.svg'
export default {
name: 'page404',
data() {
return {
img_404
}
},
computed: {
message() {
return '抱歉,你访问的页面不存在'
}
},
mounted(){
console.log(this.$route.path)
}
}
</script>
<style lang="scss" scoped>
.wscn-http404 {
position: relative;
width: 1200px;
margin: 20px auto 60px;
padding: 0 100px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
padding: 150px 152px 150px 0;
text-align: right;
overflow: hidden;
&__parent {
width: 100%;
max-width: 430px;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 150px 0;
overflow: hidden;
display: flex;
align-items: flex-start;
flex-direction: column;
justify-content: center;
height: 360px;
&__oops {
color: #434e59;
font-size: 72px;
font-weight: 600;
line-height: 72px;
margin-bottom: 24px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;*/
}
&__headline {
color: rgba(0,0,0,.45);
font-size: 20px;
line-height: 28px;
margin-bottom: 16px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;*/
}
&__return-home {
display: inline-block;
height: 32px;
line-height: 32px;
font-weight: 400;
text-align: center;
-ms-touch-action: manipulation;
touch-action: manipulation;
background-image: none;
white-space: nowrap;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border: 1px solid #1890ff;
color: #fff;
background-color: #1890ff;
text-shadow: 0 -1px 0 rgba(0,0,0,.12);
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,.035);
box-shadow: 0 2px 0 rgba(0,0,0,.035);
cursor: pointer;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;*/
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
<template>
<div style="background:#f0f2f5;margin-top: -20px;height:100%;">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" :src="img_500" alt="500">
</div>
<div class="bullshit">
<!-- <div class="bullshit__oops">500</div> -->
<div class="bullshit__headline">{{ message }}</div>
<a href="/report/#/memberSummary" class="bullshit__return-home">返回首页</a>
</div>
</div>
</div>
</template>
<script>
import img_500 from '@/assets/img/error_500.svg'
export default {
name: 'page500',
data() {
return {
img_500
}
},
computed: {
message() {
return '抱歉,服务器出错了'
}
}
}
</script>
<style lang="scss" scoped>
.wscn-http404 {
position: relative;
width: 1200px;
margin: 20px auto 60px;
padding: 0 100px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
padding: 150px 152px 150px 0;
text-align: right;
overflow: hidden;
&__parent {
width: 100%;
max-width: 430px;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 150px 0;
overflow: hidden;
display: flex;
align-items: flex-start;
flex-direction: column;
justify-content: center;
height: 360px;
&__oops {
color: #434e59;
font-size: 72px;
font-weight: 600;
line-height: 72px;
margin-bottom: 24px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;*/
}
&__headline {
color: rgba(0,0,0,.45);
font-size: 20px;
line-height: 28px;
margin-bottom: 16px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;*/
}
&__return-home {
display: inline-block;
height: 32px;
line-height: 32px;
font-weight: 400;
text-align: center;
-ms-touch-action: manipulation;
touch-action: manipulation;
background-image: none;
white-space: nowrap;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border: 1px solid #1890ff;
color: #fff;
background-color: #1890ff;
text-shadow: 0 -1px 0 rgba(0,0,0,.12);
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,.035);
box-shadow: 0 2px 0 rgba(0,0,0,.035);
cursor: pointer;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;*/
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
<template>
<div style="background:#f0f2f5;margin-top: -20px;height:100%;">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" :src="imgSrc" alt="404">
</div>
<div class="bullshit">
<!-- <div class="bullshit__oops">404</div> -->
<div class="bullshit__headline">{{ message }}</div>
<a href="report/#/memberSummary" class="bullshit__return-home">返回首页</a>
</div>
</div>
</div>
</template>
<script>
import img_403 from '@/assets/403_images/error_403.svg';
import img_404 from '@/assets/404_images/error_404.svg';
import img_500 from '@/assets/500_images/error_500.svg'
export default {
name: 'errpage',
data() {
return {
imgSrc: '',
message: '',
srcList: {
403: img_403,
404: img_404,
500: img_500
},
msgList: {
403: '抱歉,你无权访问该页面',
404: '抱歉,你访问的页面不存在',
500: '抱歉,服务器出错了'
}
}
},
mounted(){
var that = this;
var path = that.$route.path.split('/')[1];
that.imgSrc = that.srcList[path];
that.message = that.msgList[path];
}
}
</script>
<style lang="scss" scoped>
.wscn-http404 {
position: relative;
width: 1200px;
margin: 20px auto 60px;
padding: 0 100px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
padding: 150px 152px 150px 0;
text-align: right;
overflow: hidden;
&__parent {
width: 100%;
max-width: 430px;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 150px 0;
overflow: hidden;
display: flex;
align-items: flex-start;
flex-direction: column;
justify-content: center;
height: 360px;
&__oops {
color: #434e59;
font-size: 72px;
font-weight: 600;
line-height: 72px;
margin-bottom: 24px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;*/
}
&__headline {
color: rgba(0,0,0,.45);
font-size: 20px;
line-height: 28px;
margin-bottom: 16px;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;*/
}
&__return-home {
display: inline-block;
height: 32px;
line-height: 32px;
font-weight: 400;
text-align: center;
-ms-touch-action: manipulation;
touch-action: manipulation;
background-image: none;
white-space: nowrap;
padding: 0 15px;
font-size: 14px;
border-radius: 4px;
border: 1px solid #1890ff;
color: #fff;
background-color: #1890ff;
text-shadow: 0 -1px 0 rgba(0,0,0,.12);
-webkit-box-shadow: 0 2px 0 rgba(0,0,0,.035);
box-shadow: 0 2px 0 rgba(0,0,0,.035);
cursor: pointer;
/*animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;*/
&:hover {
color: #fff;
background-color: #40a9ff;
border-color: #40a9ff;
}
&:active {
background: #096dd9;
border-color: #096dd9;
color: #fff;
}
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
<template>
<section class="sms-lib">
<div :class="pbSize">
<span class="pr10">选择卡券(共{{total}}条)</span>
<el-input v-model="listParams.searchParam" class="w200" clearable placeholder="请输入卡券名称" @change="getCardList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<span class="fz12 gray pl20">{{limitTips}} </span>
</div>
<el-table tooltipEffect="light" :data="tableList" :height="tableHeight" style="width: 100%" v-loading="loading" @row-click="chooseCard">
<el-table-column :show-overflow-tooltip="false" width="60" align="center" prop="coupCardId">
<template slot-scope="scope">
<div class="sms-record_left label-hidden">
<el-radio v-if="cardIdName === 'wechatCardId'" v-model="selectedId" :label="scope.row.wechatCardId" class="pr10"></el-radio>
<el-radio v-else v-model="selectedId" :label="scope.row.coupCardId" class="pr10"></el-radio>
</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="false" :width="200" align="left" prop="cardName" label="卡券名称"></el-table-column>
<el-table-column :show-overflow-tooltip="false" :width="100" align="left" prop="cardLimit" label="领取限制"></el-table-column>
<el-table-column :show-overflow-tooltip="false" :width="120" align="left" prop="storeMode" label="适用门店">
<template slot-scope="scope">
{{scope.row.storeMode === 0?'所有门店':(scope.row.storeMode === 1?'部分分组':'部分门店')}}
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="false" :width="120" align="left" prop="couponStock" label="库存"></el-table-column>
<el-table-column :show-overflow-tooltip="true" :min-width="200" align="left" prop="subName" label="描述"></el-table-column>
</el-table>
<el-pagination v-show="tableList.length && showPagination" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, prev, pager, next" :total="total"></el-pagination>
</section>
</template>
<script>
import {getCardList} from '@/service/api/commonApi.js';
export default {
props:{
activeId:{
type:String,
default:''
},
pbSize:{
type:String,
default:'pb22'
},
cardIdName:{
type:String,
default:'coupCardId'
},
tableHeight:{
type:String,
default:'auto'
},
showPagination:{
type:Boolean,
default:true
},
cardLimitType:{
type:Number,
default:1
}
},
computed:{
limitTips() {
if (this.cardLimitType === 2) {
return '领取限制领取 1~100的卡券,系统已过滤。';
} else if (this.cardLimitType === 3) {
return '领取限制领取>=100 的卡券,系统已过滤。';
} else {
return '领取限制>1的卡券不支持选择,系统已过滤。';
}
}
},
data(){
return{
listParams:{
searchParam:'',
currentPage:1,
pageSize:10,
requestProject:'gic-web',
cardLimitType:this.cardLimitType,
cardType:''
},
total:0,
tableList:[],
selectedId:this.activeId
}
},
watch: {
selectedId(val) {
let obj = {};
if (this.cardIdName === 'wechatCardId') {
this.tableList.map(v => {
if (v.coupCardId === val) {
val = v.wechatCardId
obj = v;
}
})
} else {
this.tableList.map(v => {
if (v.coupCardId === val) {
obj = v;
}
})
}
this.$emit('update:activeId',val);
this.$emit('emitActiveObj',obj);
},
activeId(val) {
this.selectedId = val;
}
},
created(){
this.selectedId = this.activeId;
this.getCardList();
},
methods:{
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getCardList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getCardList();
},
async getCardList() {
this.loading = true;
let res = await getCardList(this.listParams);
this.tableList = res.result.result || [];
this.total = res.result.totalCount;
this.loading = false;
},
reset() {
this.listParams.searchParams = '';
this.getCardList();
},
chooseCard(row) {
this.selectedId = row.coupCardId;
$bus.$emit('card-temp-choose',row);
}
}
}
</script>
<template>
<el-dialog class="express dialog__body__nopadding" title="查看物流信息" :visible.sync="show" width="60%" :before-close="close">
<div class="express--info">
<p>收件人:{{info.clerkName || '--'}}</p>
<p>联系方式:{{info.consigneePhone || '--'}}</p>
<p>收货地址:{{info.receivingAddress || '--'}}</p>
</div>
<div class="express--order">
<div class="clearfix express--order__info" v-if="!editShow">
<div class="fl pr20">快递公司:{{info.logisticsCompanyName || '--'}}</div>
<div class="fl">运单号码:{{info.courierNumber || '--'}}</div>
<el-button class="fr express--order__info--btn" type="text" @click="editExpress">修改运单信息</el-button>
</div>
<div class="express--order__info" v-else>
<span class="pr10">快递公司:
<el-select class="vertical-middle w100" v-model="params.logisticsCompanyId" placeholder="选择快递">
<el-option v-for="v in logisticsOptions" :key="v.logisticsCompanyCode" :label="v.logisticsCompanyName" :value="v.logisticsCompanyId"></el-option>
</el-select>
</span>
<span>运单号码:
<el-input class="vertical-middle w150" v-model="params.courierNumber" placeholder="请输入快递单号"></el-input>
</span>
<el-button class="vertical-middle" type="primary" size="small" @click="submitExpress">确 认</el-button>
<el-button class="vertical-middle" size="small" @click="editShow = false">取 消</el-button>
</div>
</div>
<div class="express--list">
<div v-for="(v,i) in list" :key="i" class="express--list--item">
<span class="express--list--item__dot"></span>
<p class="express--list--item__date">{{v.date}}</p>
<p class="express--list--item__day">{{v.day}}</p>
<p class="express--list--item__time">{{v.time}}</p>
<p class="express--list--item__info">{{v.acceptStation}}</p>
</div>
<div class="no-data" v-if="list.length === 0">暂无快递数据</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="close">关 闭</el-button>
</span>
</el-dialog>
</template>
<script>
import {getLogisticsInfo,getLogisticsList,orderOptService} from '@/service/api/mallApi.js';
import {formateDateTimeByType,numberToWeekChinese} from '@/utils/index.js';
export default {
props:{
show:{
type:Boolean,
default:false
},
id:{
type:String,
default:''
}
},
watch:{
show(val) {
if (val) {
this.getLogisticsInfo();
}
}
},
data() {
return {
loading:false,
info:{},
list:[],
logisticsOptions:[],
params:{
logisticsCompanyId:'',
logisticsCompanyCode:'',
courierNumber:'',
},
editShow:false
}
},
created() {
this.getLogisticsList();
},
methods: {
close() {
this.editShow = false;
this.$emit('update:show',false);
},
editExpress() {
this.editShow = true;
this.params = {
logisticsCompanyId:this.info.logisticsCompanyId,
logisticsCompanyCode:this.info.logisticsCompanyCode,
courierNumber:this.info.courierNumber
};
},
submitExpress() {
if (!this.params.logisticsCompanyId) {
this.$tips({type:'warning',message:'请选择快递'});
return;
}
if (!this.params.courierNumber) {
this.$tips({type:'warning',message:'请填写快递单号'});
return;
}
this.logisticsOptions.map(v => {
if (v.logisticsCompanyId === this.params.logisticsCompanyId) {
this.params.logisticsCompanyCode = v.logisticsCompanyCode;
}
})
let params = {
optType:3,
integralMallProExchangeId:this.id,
logisticsCompanyId:this.params.logisticsCompanyId,
logisticsCompanyCode:this.params.logisticsCompanyCode,
courierNumber:this.params.courierNumber
};
orderOptService(params).then(res => {
if (res.errorCode === 0) {
this.$tips({type:'success',message:'修改快递信息成功'});
this.editShow = false;
this.getLogisticsInfo();
}
});
},
async getLogisticsList() {
let res = await getLogisticsList();
if (res.errorCode === 0) {
this.logisticsOptions = res.result || [];
}
},
async getLogisticsInfo() {
this.loading = true;
// let res = await getLogisticsInfo({integralMallProExchangeId:'ff80808161c2416c0161c66026d40007'});
let res = await getLogisticsInfo({integralMallProExchangeId:this.id});
if (res.errorCode === 0) {
this.info = res.result.changeLog || {};
this.list = res.result.traces || [];
this.list.map(v => {
const dateTime = new Date(v.acceptTime);
v.date = formateDateTimeByType(dateTime,'yyyy-MM-dd');
v.time = formateDateTimeByType(dateTime,'HH-mm-ss');
v.day = '周'+numberToWeekChinese(dateTime.getDay());
})
console.log(this.list)
}
this.loading = false;
console.log(res)
},
}
};
</script>
<style lang="scss" scoped>
.express{
&--info {
padding-bottom:10px;
border-bottom:1px solid #DCDFE6;
// border-top:1px solid #DCDFE6;
p {
line-height: 30px;
}
}
&--order {
padding:15px 0;
border-bottom:1px solid #DCDFE6;
&__info {
&--btn {
padding:0;
}
}
}
&--list {
background:#f0f2f5;
max-height: 250px;
overflow-y: auto;
padding:10px 0;
font-size: 13px;
&--item {
position: relative;
&::before {
content: ' ';
position: absolute;
left: 18px;
top: 0px;
height: 100%;
width: 1px;
background: #bfbfbf;
}
padding-left:15px;
display: table;
line-height: 25px;
p {
display: table-cell;
}
&__dot {
display:inline-block;
width: 7px;
height: 7px;
background: #bfbfbf;
border-radius: 50%;
margin-right: 10px;
}
&__date {
width: 80px;
}
&__day {
width: 40px;
}
&__time {
width: 80px;
}
&__info {
min-width: 100px;
}
}
}
}
</style>
<template slot-scope="scope">
<div>
<div v-if="!model[theType+'Flag']" @click="edit">
<span>{{model[theType]}}{{typeName}}</span> <i class="el-icon-edit cursor-hover"></i>
</div>
<div v-else >
<el-input-number class="w150" controls-position="right" :precision="0" v-model="model.inputValue" :min="0"></el-input-number>
<div class="pt10">
<el-button size="mini" type="primary" @click="submit">确 定</el-button>
<el-button size="mini" @click="model[theType+'Flag'] = false">取 消</el-button>
</div>
</div>
</div>
</template>
<script>
import { updateStockService, updateIntegralCostService,updateCashCostService } from '@/service/api/mallApi.js';
export default {
props: {
model: {
type: Object,
default() {
return {}
}
},
theType: String,
typeName: String
},
watch: {
},
methods:{
async submit() {
// try {
console.log(this.theType)
let res = null;
if (this.theType === 'virtualStock') { // 库存
res = await updateStockService({proId:this.model.integralMallProId,stock:this.model.inputValue});
} else if (this.theType === 'cashCost') { // 现金费用
res = await updateCashCostService({proId:this.model.integralMallProId,cost:this.model.inputValue});
} else if (this.theType === 'integralCost') { // 积分费用
res = await updateIntegralCostService({proId:this.model.integralMallProId,cost:this.model.inputValue});
}
if (res.errorCode === 0) {
this.$tips({type:'success',message: '更新成功'});
this.$emit('refresh');
} else {
this.$tips({type:'error',message: '更新失败'});
}
// } catch (err) {
// this.$tips({type:'error',message: '更新失败'});
// }
},
edit() {
this.model[this.theType + 'Flag'] = true;
this.model.inputValue = this.model[this.theType];
}
},
}
</script>
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pb22 clearfix">
<el-date-picker class="w250" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="getPageExchangeLogsList"></el-date-picker>
<el-select class="vertical-middle w150" v-model="listParams.status" placeholder="选择领取状态" @change="getPageExchangeLogsList">
<el-option v-for="v in statusOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-select class="vertical-middle w150" v-model="listParams.useStatus" placeholder="选择使用状态" @change="getPageExchangeLogsList">
<el-option v-for="v in useStatusOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-input v-model="listParams.memberInfo" class="w300" placeholder="输入姓名/昵称/手机号" clearable @change="getPageExchangeLogsList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button type="primary" class="fr" icon="iconfont icon-icon_yunxiazai fz14" @click="exportExcel"> 导出列表</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%">
<el-table-column v-for="(v,i) in tableHeader" :align="v.align" :key="i" :prop="v.prop" :label="v.label">
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
<span v-else>{{scope.row[v.prop]}}</span>
</template>
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
</section>
</template>
<script>
import {getPageExchangeLogsList,exportExchangeListExcel} from '@/service/api/mallApi.js';
import {formateDateTimeByType} from '@/utils/index.js';
export default {
data() {
let _vm = this;
return {
loading:false,
tableHeader:[
{label:'兑换时间',prop:'createTime',minWidth:'170',align:'left',formatter(row){
return formateDateTimeByType(row.createTime,'yyyy-MM-dd-HH-mm-ss');
}},
{label:'流水号',prop:'definedCode',minWidth:'100',align:'left'},
{label:'会员信息',prop:'issuingQuantity',minWidth:'170',align:'left',formatter(row){
return `<a href="/member/#/wechatmemberDetail?memberId=${row.memberId}" target="_blank">
<img class="vertical-middle table__avatar" src="${row.photoUrl}" width="60" height="60" alt="" srcset="">
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">${row.memberName || '--'}</p>
<p class="table-name--ellipsis fz13">${row.cardNum || '--'}</p>
</div>
</a>`;
}},
{label:'消耗积分',prop:'payCost',width:'80',align:'left'},
{label:'领取状态',prop:'status',width:'100',align:'left',formatter(row){
let statusLabel ='--';
_vm.statusOptions.map(v => {
if (row.status === v.value) {
statusLabel = v.label
}
});
return statusLabel;
}},
{label:'使用状态',prop:'useStatus',width:'100',align:'left',formatter(row){
return row.useStatus === 5?'已使用':'未使用';
}},
],
total:0,
statusOptions:[{label:'所有领取状态',value:-1},{label:'兑换取消(礼品)',value:0},{label:'兑换',value:1},{label:'领取(卡券)',value:2},{label:'已发货(礼品)',value:3}],
useStatusOptions:[{label:'所有使用状态',value:-1},{label:'已使用',value:5},{label:'未使用',value:0}],
listParams:{
pageSize: 20,
currentPage: 1,
status: -1,
useStatus: -1,
memberInfo: "",
integralMallProId: this.$route.params.id,
beginTime: "",
endTime: ""
},
dateTime:['',''],
tableList:[]
};
},
created() {
this.$store.commit('mutations_breadcrumb',[{name:'积分商城'},{name:'优惠券',path:'/coupon'},{name:'优惠券兑换记录',path:''}]);
this.getPageExchangeLogsList();
},
methods: {
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getPageExchangeLogsList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getPageExchangeLogsList();
},
async getPageExchangeLogsList() {
this.loading = true;
if (this.dateTime) {
this.listParams.beginTime = formateDateTimeByType(this.dateTime[0],'yyyy-MM-dd');
this.listParams.endTime = formateDateTimeByType(this.dateTime[1],'yyyy-MM-dd');
} else {
this.listParams.beginTime = this.listParams.senendTimedEndTime = '';
}
let res = await getPageExchangeLogsList(this.listParams);
this.tableList = res.result.rows || [];
this.total = res.result.total || 0;
this.loading = false;
},
// 导出列表
exportExcel(){
if (this.dateTime) {
this.listParams.beginTime = formateDateTimeByType(this.dateTime[0],'yyyy-MM-dd');
this.listParams.endTime = formateDateTimeByType(this.dateTime[1],'yyyy-MM-dd');
} else {
this.listParams.beginTime = this.listParams.senendTimedEndTime = '';
}
if (!this.listParams.beginTime || !this.listParams.endTime) {
this.$tips({type: 'warning',message: '时间不能为空'});
return;
}
window.location = `${exportExchangeListExcel}?integralMallProId=${this.listParams.integralMallProId}&status=${this.listParams.status}&useStatus=${this.listParams.useStatus}&memberInfo=${this.listParams.memberInfo}&beginTime=${this.listParams.beginTime}&endTime=${this.listParams.endTime}&requestProject=marketing`;
},
}
};
</script>
import {getGradeList,getCategoryList,createIntegralProService,getIntegralMallProInfo,createCategoryService} from '@/service/api/mallApi.js';
import cardTemp from '../common/card-temp.vue';
import dmUploadAvatar from '@/components/upload/avatar';
import {formateDateTimeByType} from '@/utils/index.js';
export default {
components:{
'card-temp':cardTemp,
dmUploadAvatar
},
data() {
return {
form:{
integralMallProId:'',
proReferId:'',
proName:'', // String 商品名字,优惠券就是所选券的名字。 (必填)
integralCost:100, // Number 100 积分费用 (必填)
cashCost:1, // Number 现金费用,两位小数
memberGradeArr:[], // array 适用会员 这里是数组 传给后台要拼接为字符串数组逗号隔开
limitTimes:0,
exchangeDateType:1,
exchangeTimeType:1, // 兑换时间类型 1:全部 2:部分时段
proShowStatus:1,
releaseType:1,
exchangeFixDate:['',''], // exchangeFixDateBegin // exchangeFixDateEnd,
exchangeDateDayArr:[],
exchangeDateWeekArr:[],
limitTimeBegin:'',
virtualStock:0,
weChatVirtualStock:0
},
rules:{
integralCost:{required:true,type:'number',min:0,message:'请输入积分费用',trigger:'blur'},
cashCost:{required:true,type:'number',min:0,message:'请输入现金费用',trigger:'blur'},
memberGradeArr:{required:true,type:'array',min:0,message:'请选择适用会员',trigger:'blur'},
},
memberGradeOptions:[],
exchangeDateWeekOptions:['1','2','3','4','5','6','7'],
monthOptions:Array.from(Array(31), (v,k) =>(k+1).toString()),
sendChildData:{
storeType:0,
storeGroupIds:'',
storeIds:[],
},
timeRangeList:[{}],
isLimitTimes:false,
isAdd: this.$route.meta.type === 'add',
isEdit: this.$route.meta.type === 'edit',
isInfo: this.$route.meta.type === 'info',
}
},
created () {
this.getGradeList();
// 解决响应式问题
if (!this.timeRangeList) {
this.$set(this.timeRangeList,0,{timeRange:['','']})
}
if (this.isEdit || this.isInfo) {
this.getIntegralMallProInfo();
}
},
computed:{
asideShow() {
return this.$store.state.marketing.asideShow
}
},
watch:{
'form.limitTimes'(val) {
this.isLimitTimes = (val > 0);
},
},
methods:{
async getIntegralMallProInfo() {
let res = await getIntegralMallProInfo({integralMallProId:this.$route.params.id});
if (res.errorCode === 0) {
const result = res.result;
this.form.integralMallProId = result.integralMallProId || '';
this.form.proReferId = result.proReferId || '';
this.form.proName = result.proName || '';
this.form.virtualStock = result.virtualStock || 0;
this.form.integralCost = result.integralCost || 0;
this.form.cashCost = result.cashCost || 0;
this.form.memberGradeArr = result.memberGrade?result.memberGrade.split(','):[];
this.form.limitTimes = result.limitTimes || 0;
this.form.exchangeDateType = result.exchangeDateType || 1;
this.form.exchangeTimeType = result.exchangeTimeType || 1;
this.form.proShowStatus = result.proShowStatus || 1;
this.form.releaseType = result.releaseType || 1;
this.form.exchangeFixDate = [result.exchangeFixDateBegin || '',result.exchangeFixDateEnd || ''];
this.form.exchangeDateDayArr = result.exchangeDateDay ? result.exchangeDateDay.split(',') : [];
this.form.exchangeDateWeekArr = result.exchangeDateWeek ? result.exchangeDateWeek.split(',').filter(v => v) : [];
this.form.limitTimeBegin = result.limitTimeBegin || '';
// result.showStore = 2;
this.sendChildData.storeType = result.showStore || 0;
if (result.showStore === 1) {
this.sendChildData.storeGroupIds = result.storeGroupIds || '';
} else if (result.showStore === 2) {
let list = [];
if (result.storeInfo.length) {
result.storeInfo.map(v => {
list.push(v);
})
}
this.sendChildData.storeIds = list;
}
console.log(this.sendChildData)
if (this.form.exchangeTimeType === 2 && result.timeZones) {
let list = result.timeZones.split('#').filter(v => v);
list.map((v,i)=> {
let arr = v.split('-');
this.$set(this.timeRangeList,i,{timeRange:[arr[0],arr[1]]})
});
}
}
},
//门店分组回执方法
getSelectGroupData(val) {
console.log(val);
this.sendChildData.storeType = val.storeType || 0
this.sendChildData.storeGroupIds = val.storeGroupIds || ''
this.sendChildData.storeIds = val.storeIds || []
},
async getGradeList() {
let res = await getGradeList();
if (res.errorCode === 0) {
this.memberGradeOptions = res.result || [];
}
console.log(res);
},
// 获取卡券组件回调的对象
getCardActiveObjFun(val) {
console.log(val)
if (val.coupCardId) {
this.form.virtualStock = val.couponStock || 0;
this.form.proReferId = val.coupCardId || '';
this.form.proName = val.cardName || '';
}
},
addTimeRange() {
let length = this.timeRangeList.length;
this.$set(this.timeRangeList,length,{timeRange:['','']})
},
delTimeRange(index) {
this.timeRangeList.splice(index,1);
},
submit() {
if (!this.form.proReferId ) {
this.$tips({type:'warning',message:'请选择优惠券'});
return;
}
console.log(this.timeRangeList)
let params = {
integralMallProId:this.form.integralMallProId || '',
proType:1, // 商品类型 1 优惠券,2礼品,3实物
proName:this.form.proName || '', // 商品名字,优惠券就是所选券的名字。
proReferId:this.form.proReferId || '', // 关联的卡券或者礼品
proShowStatus:this.form.proShowStatus || 1, // 商品显示状态 1:上架状态就显示 2:兑换状态下显示
integralCost:this.form.integralCost || 0,// 积分费用
cashCost:this.form.cashCost || 0, // 现金费用,两位小数
costValue:this.form.costValue || 0,
limitTimes:this.form.limitTimes,// 次数限制
memberGrade:this.form.memberGradeArr.length?this.form.memberGradeArr.join(','):'', // 适用会员,多个,逗号拼接。
exchangeDateType:this.form.exchangeDateType || 1, // 兑换日期1:全部 2:固定日期 3:每月 4:每周
exchangeTimeType:this.form.exchangeTimeType || 1, // 兑换时间类型 1:全部 2:部分时段
releaseType:this.form.releaseType || 1, // 布发状态 1立即 2定时
showStore:this.sendChildData.storeType || 0, // 显示门店 0所有 1部分分组 2部分门店
virtualStock: this.form.virtualStock || 0, //库存
}
// 判断 兑换日期
if (params.exchangeDateType === 2) {
if (this.form.exchangeFixDate) {
params.exchangeFixDateBegin = formateDateTimeByType(this.form.exchangeFixDate[0],'yyyy-MM-dd-HH-mm-ss');
params.exchangeFixDateEnd = formateDateTimeByType(this.form.exchangeFixDate[1],'yyyy-MM-dd-HH-mm-ss');
} else {
this.$tips({type:'warning',message:'兑换固定日期不能为空'});
return;
}
} else if (params.exchangeDateType === 3) {
params.exchangeDateDay = this.form.exchangeDateDayArr.length > 0 ? this.form.exchangeDateDayArr.join(','):'';
} else if (params.exchangeDateType === 4) {
params.exchangeDateWeek = this.form.exchangeDateWeekArr.length > 0 ? this.form.exchangeDateWeekArr.join(','):'';
}
// 判断 兑换时段
if (params.exchangeTimeType === 2) {
let list = [];
let flag = false;
this.timeRangeList.forEach(v => {
if (!v.timeRange || !v.timeRange[0]) {
flag = true;
} else {
list.push(v.timeRange[0]+'-'+v.timeRange[1]);
}
})
if (flag) {
this.$tips({message:'部分时段未填写完整'});
return;
}
// 如果数组为1的话也要传 #分割
if (list.length === 1) {
params.timeZones = list[0] +'#';
} else {
params.timeZones = list.length?list.join('#'):'';
}
}
// 判断发送时间
if (params.releaseType === 2) {
params.limitTimeBegin = formateDateTimeByType(this.form.limitTimeBegin,'yyyy-MM-dd-HH-mm-ss');
}
// 门店分组
if (this.sendChildData.storeType === 1) {
if (this.sendChildData.storeGroupIds) {
params.storeGroupIds = this.sendChildData.storeGroupIds || '';
}
} else if (this.sendChildData.storeType === 2){
if (this.sendChildData.storeIds) {
params.storeIds = this.sendChildData.storeIds.map(v => v.storeId).join(',');
} else {
params.storeIds ='';
}
}
console.log(params)
createIntegralProService(params).then(res => {
if(res.errorCode === 0) {
this.$router.push('/coupon');
this.$tips({type:'success',message:'操作成功'});
} else {
this.$tips({type:'error',message:'操作失败'});
}
console.log(res);
}).catch(err => {
this.$tips({type:'error',message:'操作失败'});
})
}
}
};
<template>
<el-form class="dm-wrap" :model="form" ref="form" :rules="rules" label-width="120px">
<div class="border-radius2" style="padding:15px;margin-bottom:20px;">
<card-temp pbSize="pb15" :activeId.sync="form.proReferId" @emitActiveObj="getCardActiveObjFun" :showPagination="false" :cardLimitType="3"></card-temp>
</div>
<el-form-item prop="integralCost" label="积分费用">
<el-input-number controls-position="right" :disabled="isInfo" v-model="form.integralCost" class="w300" :precison="0" :min="0"></el-input-number>
</el-form-item>
<el-form-item prop="cashCost" label="现金费用">
<el-input-number controls-position="right" :disabled="isInfo" v-model="form.cashCost" class="w300" :precison="2" :min="0"></el-input-number>
</el-form-item>
<el-form-item prop="limitTimes" label="次数显示">
<el-checkbox :disabled="isInfo" v-model="isLimitTimes"> 每个会员限制兑换
</el-checkbox>
<el-input-number controls-position="right" :disabled="isInfo || !isLimitTimes" v-model="form.limitTimes" class="w100" :precison="0" :min="0"></el-input-number>
</el-form-item>
<el-form-item prop="memberGradeArr" label="适用会员">
<el-select v-model="form.memberGradeArr" multiple placeholder="请选择" class="w300">
<el-option v-for="item in memberGradeOptions" :key="item.gradeId" :label="item.gradeName" :value="item.gradeId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="展现门店" class="is-required">
<vue-gic-store-linkage :disabled="isInfo" :msg="sendChildData" ref="selectTree" @sendSelectGroupData="getSelectGroupData"></vue-gic-store-linkage>
</el-form-item>
<el-form-item prop="exchangeDateType" label="兑换日期" class="is-required">
<el-radio-group v-model="form.exchangeDateType" style="line-height:inherit;">
<div class="mb10"><el-radio :label="1">全部日期</el-radio></div>
<div class="mb10"><el-radio :label="2">固定日期
<el-date-picker v-model="form.exchangeFixDate" :disabled="form.exchangeDateType !== 2" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-radio></div>
<div class="mb10"><el-radio :label="3">每月
<el-select v-model="form.exchangeDateDayArr" :disabled="form.exchangeDateType !== 3" multiple filterable default-first-option placeholder="请选择">
<el-option v-for="item in monthOptions" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-radio></div>
<div class="mb10"><el-radio :label="4">每周
<el-select v-model="form.exchangeDateWeekArr" :disabled="form.exchangeDateType !== 4" multiple placeholder="请选择">
<el-option v-for="item in exchangeDateWeekOptions" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-radio></div>
</el-radio-group>
</el-form-item>
<el-form-item prop="exchangeTimeType" label="兑换时段" class="is-required">
<el-radio-group v-model="form.exchangeTimeType">
<div class="mb10"><el-radio :label="1">全部时段</el-radio></div>
<div class="mb10">
<el-radio :label="2" class="vertical-middle">部分时段</el-radio>
<span class="gray fz13 vertical-top ml20">请使用24小时制输入时间,格式如11:00至14:30</span>
</div>
<p v-for="(v,i) in timeRangeList" :key="i" class="pb10">
<el-time-picker :disabled="form.exchangeTimeType === 1" class="vertical-middle w250" is-range v-model="v.timeRange" value-format="HH:mm" format="HH:mm" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围"></el-time-picker>
<el-button class="vertical-middle" type="text" @click="delTimeRange(i)">删除</el-button>
</p>
<p><el-button type="text" @click="addTimeRange">添加时间段</el-button></p>
</el-radio-group>
</el-form-item>
<el-form-item prop="proShowStatus" label="显示状态">
<el-radio-group v-model="form.proShowStatus">
<el-radio :label="1">上架状态就显示</el-radio>
<el-radio :label="2">兑换状态下显示</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="releaseType" label="发布时间">
<el-radio-group v-model="form.releaseType">
<el-radio :label="1">立即发布</el-radio>
<el-radio :label="2">定时发布
<el-date-picker v-model="form.limitTimeBegin" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-radio>
</el-radio-group>
</el-form-item>
<div class="btn-wrap_fixed" :class="{'on':asideShow}">
<el-button type="primary" @click="submit('form')" v-if="!isInfo">{{isAdd?'确认新增':'确认编辑'}}</el-button>
<el-button @click="$router.go(-1)">返 回</el-button>
</div>
</el-form>
</template>
<script>
import infojs from './info.js';
export default infojs;
</script>
<template>
<section class="dm-wrap">
<div class="pb22 clearfix">
<el-button class="fr" type="primary" @click="$router.push('/coupon/info')">新增优惠券</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading">
<el-table-column label="商品" align="left" prop="timesStatus" min-width="140">
<template slot-scope="scope">
<div class="ellipsis-100" >
<img class="vertical-middle table__avatar" :src="filterAvatar(scope.row.cardType)" width="60" height="60" />
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{scope.row.proTitle || '--'}}</p>
<p class="fz13 gray">{{scope.row.proSubTitle || '--'}}</p>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="积分费用" align="left" prop="integralCost" width="180">
<template slot-scope="scope">
<updateCount :model="scope.row" theType="integralCost" typeName="积分" @refresh="getPageCardsList"></updateCount>
</template>
</el-table-column>
<el-table-column label="现金费用" align="left" prop="cashCost" width="180">
<template slot-scope="scope">
<updateCount :model="scope.row" theType="cashCost" typeName="元" @refresh="getPageCardsList"></updateCount>
</template>
</el-table-column>
<el-table-column label="库存" align="left" prop="virtualStock" width="180">
<template slot-scope="scope">
<updateCount :model="scope.row" theType="virtualStock" @refresh="getPageCardsList"></updateCount>
</template>
</el-table-column>
<el-table-column label="兑换次数" align="left" prop="allExchangeNumber" width="80">
<template slot-scope="scope">
<span @click="$router.push('/coupon/exchange/'+scope.row.integralMallProId)" class="blue">{{scope.row.allExchangeNumber}}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="left" prop="status" width="80px">
<template slot-scope="scope" >
<span v-if="scope.row.status == 0" class="dm-status--error">删除</span>
<span v-if="scope.row.status == 1" class="dm-status--primary">正常</span>
<span v-if="scope.row.status == 2" class="dm-status--warning">上架</span>
</template>
</el-table-column>
<el-table-column label="显示状态" align="left" prop="proShowStatus" width="120">
<template slot-scope="scope" >
<span v-if="scope.row.proShowStatus == 1">上架状态就显示</span>
<span v-if="scope.row.proShowStatus == 2">兑换状态下显示</span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="140px">
<template slot-scope="scope">
<el-button type="text" @click="$router.push('/coupon/info/'+scope.row.integralMallProId)">编辑</el-button>
<dm-confirm @confirm="delData(scope.row)" tips="是否删除该优惠券?">
<el-button type="text">删除</el-button>
</dm-confirm>
</template>
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
</section>
</template>
<script>
import { getPageCardsList, deleteProService } from '@/service/api/mallApi.js';
import updateCount from '../common/update-count';
import {formateDateTimeByType} from '@/utils/index.js';
export default {
name: 'coupon-list',
components: {
updateCount
},
data () {
return {
defaultAvatar:require('../../../assets/img/head_default.png'),
daijinAvatar:require('../../../assets/img/credit_daijin_icon.png'),
zhekouAvatar:require('../../../assets/img/credit_zhekou_icon.png'),
duihuanAvatar:require('../../../assets/img/head_default.png'),
loading:false,
tableList:[],
listParams:{
currentPage:1,
pageSize:20
},
total:0
}
},
created() {
this.$store.commit('mutations_breadcrumb',[{name:'积分商城'},{name:'优惠券',path:''}]);
this.getPageCardsList();
},
methods: {
filterAvatar(val){
return (val === 0 ? this.daijinAvatar : (val === 1 ? this.zhekouAvatar: this.duihuanAvatar));
},
search() {
this.listParams.currentPage = 1;
this.getPageCardsList();
},
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getPageCardsList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getPageCardsList();
},
async getPageCardsList() {
this.loading = true;
let res = await getPageCardsList(this.listParams);
this.tableList = [];
let result = res.result.rows || [];
result.map(v => {
v.integralCostFlag = false;
v.cashCostFlag = false;
v.virtualStockFlag = false;
v.allExchangeNumberFlag = false;
this.tableList.push(v);
})
this.total = res.result.total;
this.loading = false;
},
// 删除
delData(row) {
deleteProService({proId:row.integralMallProId}).then(res => {
this.$tips({type: 'success',message: '删除成功!'});
this.getPageCardsList();
}).catch(err => {
this.$tips({type: 'error',message: '删除失败!'});
})
}
}
}
</script>
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pb22 clearfix">
<el-date-picker class="w250" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="getPageExchangeLogsList"></el-date-picker>
<el-select class="vertical-middle w150" v-model="listParams.status" placeholder="选择状态" @change="getPageExchangeLogsList">
<el-option v-for="v in statusOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-input v-model="listParams.memberInfo" class="w300" placeholder="输入流水号/姓名/会员卡号" clearable @change="getPageExchangeLogsList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button type="primary" class="fr" icon="iconfont icon-icon_yunxiazai fz14" @click="exportExcel"> 导出列表</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%">
<el-table-column v-for="(v,i) in tableHeader" :align="v.align" :key="i" :prop="v.prop" :label="v.label">
<template slot-scope="scope">
<span v-if="v.formatter" v-html="v.formatter(scope.row)"></span>
<span v-else>{{scope.row[v.prop]}}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="100px">
<template slot-scope="scope">
<p v-if="isWxExchange">
<span type="text">{{scope.row.useStatus === 5?'已使用':'未使用'}}</span>
</p>
<p>
<el-button type="text" v-if="scope.row.status !== 1 && !isWxExchange" @click="queryExpress(scope.row)">查看物流</el-button>
<el-button type="text" v-if="isWxExchange">
<a :href="'/member/#/wechatmemberDetail?memberId='+scope.row.memberId">查看详情</a>
</el-button>
<span type="text" v-else>--</span>
</p>
</template>
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<express :show.sync="expressShow" :id="expressId"></express>
</section>
</template>
<script>
import {getPageExchangeLogsList,exportExchangeListExcel} from '@/service/api/mallApi.js';
import {formateDateTimeByType} from '@/utils/index.js';
import express from '../common/express';
export default {
components: {
express
},
data() {
let _vm = this;
return {
loading:false,
defaultAvatar:require('../../../assets/img/head_default.png'),
tableHeader:[
{label:'兑换时间',prop:'createTime',minWidth:'170',align:'left',formatter(row){
return formateDateTimeByType(row.createTime,'yyyy-MM-dd-HH-mm-ss');
}},
{label:'流水号',prop:'definedCode',minWidth:'100',align:'left'},
{label:'会员信息',prop:'issuingQuantity',minWidth:'170',align:'left',formatter(row){
const photoUrl = row.photoUrl.match(/^http(s)?/) ? row.photoUrl : _vm.defaultAvatar;
return `<a href="/member/#/wechatmemberDetail?memberId=${row.memberId}" target="_blank">
<img class="vertical-middle table__avatar" src="${photoUrl}" width="60" height="60" alt="" srcset="">
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">${row.memberName || '--'}</p>
<p class="table-name--ellipsis fz13">${row.cardNum || '--'}</p>
</div>
</a>`;
}},
{label:'消耗积分',prop:'payCost',width:'80',align:'left'},
{label:'状态',prop:'status',width:'100',align:'left',formatter(row){
if (_vm.isWxExchange) {
return row.status === 1?'待领取':'已领取';
} else {
return row.status === 1?'待发货':'已发货';
}
}},
],
total:0,
statusOptions:[{label:'所有状态',value:-1},{label:'待发货',value:1},{label:'已发货',value:3}],
listParams:{
pageSize: 20,
currentPage: 1,
status: -1,
useStatus: -1,
memberInfo: "",
integralMallProId: this.$route.params.id,
beginTime: "",
endTime: ""
},
dateTime:['',''],
tableList:[],
expressId:'',
expressShow:false,
isWxExchange:this.$route.meta.type === 'wx'
};
},
created() {
if (this.isWxExchange) {
this.$store.commit('mutations_breadcrumb',[{name:'积分商城'},{name:'礼品',path:'/gift'},{name:'微信兑换券兑换记录',path:''}]);
} else {
this.$store.commit('mutations_breadcrumb',[{name:'积分商城'},{name:'礼品',path:'/gift'},{name:'礼品兑换记录',path:''}]);
}
this.getPageExchangeLogsList();
},
methods: {
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getPageExchangeLogsList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getPageExchangeLogsList();
},
async getPageExchangeLogsList() {
this.loading = true;
if (this.dateTime) {
this.listParams.beginTime = formateDateTimeByType(this.dateTime[0],'yyyy-MM-dd');
this.listParams.endTime = formateDateTimeByType(this.dateTime[1],'yyyy-MM-dd');
} else {
this.listParams.beginTime = this.listParams.senendTimedEndTime = '';
}
let res = await getPageExchangeLogsList(this.listParams);
this.tableList = res.result.rows || [];
this.total = res.result.total || 0;
this.loading = false;
},
// 导出列表
exportExcel(){
if (this.dateTime) {
this.listParams.beginTime = formateDateTimeByType(this.dateTime[0],'yyyy-MM-dd');
this.listParams.endTime = formateDateTimeByType(this.dateTime[1],'yyyy-MM-dd');
} else {
this.listParams.beginTime = this.listParams.senendTimedEndTime = '';
}
if (!this.listParams.beginTime || !this.listParams.endTime) {
this.$tips({type: 'warning',message: '时间不能为空'});
return;
}
window.location = `${exportExchangeListExcel}?integralMallProId=${this.listParams.integralMallProId}&status=${this.listParams.status}&useStatus=${this.listParams.useStatus}&memberInfo=${this.listParams.memberInfo}&beginTime=${this.listParams.beginTime}&endTime=${this.listParams.endTime}&requestProject=marketing`;
},
queryExpress(row) {
this.expressShow = true;
this.expressId = row.integralMallProExchangeId;
}
}
};
</script>
import {getGradeList,getCategoryList,createIntegralProService,getIntegralMallProInfo,createCategoryService} from '@/service/api/mallApi.js';
import cardTemp from '../common/card-temp.vue';
import dmUploadAvatar from '@/components/upload/avatar';
import {formateDateTimeByType} from '@/utils/index.js';
export default {
components:{
'card-temp':cardTemp,
dmUploadAvatar
},
data() {
return {
form:{
integralMallProId:'',
proReferId:'',
proName:'', // String 商品名字,优惠券就是所选券的名字。 (必填)
giftImg:{ // (必填)
imgUrl:'', // giftImageUrls
code:'' // giftImageFiledCodes
},
proCategoryId:'', // String 礼品的分类 (必填)
integralCost:100, // Number 100 积分费用 (必填)
cashCost:1, // Number 现金费用,两位小数
costValue:1, // Number 礼品成本,两位小数
memberGradeArr:[], // array 适用会员 这里是数组 传给后台要拼接为字符串数组逗号隔开
limitTimes:0,
exchangeDateType:1,
exchangeTimeType:1, // 兑换时间类型 1:全部 2:部分时段
proShowStatus:1,
changeType:2, // Number 兑换方式1:微信兑换 2:快递发货 3:在线发货
releaseType:1,
exchangeFixDate:['',''], // exchangeFixDateBegin // exchangeFixDateEnd,
exchangeDateDayArr:[],
exchangeDateWeekArr:[],
limitTimeBegin:'',
virtualStock:0,
weChatVirtualStock:0
},
rules:{
proName:{required:true,message:'请输入礼品名称',trigger:'blur'},
proCategoryId:{required:true,message:'请选择礼品分组',trigger:'blur'},
integralCost:{required:true,type:'number',min:0,message:'请输入积分费用',trigger:'blur'},
cashCost:{required:true,type:'number',min:0,message:'请输入现金费用',trigger:'blur'},
costValue:{required:true,type:'number',min:0,message:'请输入礼品成本',trigger:'blur'},
memberGradeArr:{required:true,type:'array',min:0,message:'请选择适用会员',trigger:'blur'},
},
memberGradeOptions:[],
categoryOptions:[],
exchangeDateWeekOptions:['1','2','3','4','5','6','7'],
monthOptions:Array.from(Array(31), (v,k) =>(k+1).toString()),
sendChildData:{
storeType:0,
storeGroupIds:'',
storeIds:[],
},
timeRangeList:[{}],
isLimitTimes:false,
isAdd: this.$route.meta.type === 'add',
isEdit: this.$route.meta.type === 'edit',
isInfo: this.$route.meta.type === 'info',
}
},
created () {
this.getGradeList();
this.getCategoryList();
// 解决响应式问题
if (!this.timeRangeList) {
this.$set(this.timeRangeList,0,{timeRange:['','']})
}
if (this.isEdit || this.isInfo) {
this.getIntegralMallProInfo();
}
},
computed:{
asideShow() {
return this.$store.state.marketing.asideShow
}
},
watch:{
'form.limitTimes'(val) {
this.isLimitTimes = (val > 0);
},
},
methods:{
async getIntegralMallProInfo() {
let res = await getIntegralMallProInfo({integralMallProId:this.$route.params.id});
if (res.errorCode === 0) {
const result = res.result;
this.form.integralMallProId = result.integralMallProId || '';
this.form.proReferId = result.proReferId || '';
this.form.proName = result.proName || '';
this.form.giftImg = {
imgUrl: result.giftImageUrls || '',
code: result.giftImageFiledCodes || '',
};
this.form.proCategoryId = result.proCategoryId || '';
this.form.integralCost = result.integralCost || 0;
this.form.cashCost = result.cashCost || 0;
this.form.costValue = result.costValue || 0;
this.form.memberGradeArr = result.memberGrade?result.memberGrade.split(','):[];
this.form.limitTimes = result.limitTimes || 0;
this.form.exchangeDateType = result.exchangeDateType || 1;
this.form.exchangeTimeType = result.exchangeTimeType || 1;
this.form.proShowStatus = result.proShowStatus || 1;
this.form.changeType = result.changeType || 2;
this.form.releaseType = result.releaseType || 1;
this.form.exchangeFixDate = [result.exchangeFixDateBegin || '',result.exchangeFixDateEnd || ''];
this.form.exchangeDateDayArr = result.exchangeDateDay ? result.exchangeDateDay.split(',') : [];
this.form.exchangeDateWeekArr = result.exchangeDateWeek ? result.exchangeDateWeek.split(',').filter(v => v) : [];
this.form.limitTimeBegin = result.limitTimeBegin || '';
this.form.weChatVirtualStock = this.form.virtualStock = result.virtualStock || 0;
// result.showStore = 2;
this.sendChildData.storeType = result.showStore || 0;
if (result.showStore === 1) {
this.sendChildData.storeGroupIds = result.storeGroupIds || '';
} else if (result.showStore === 2) {
let list = [];
if (result.storeInfo.length) {
result.storeInfo.map(v => {
list.push(v);
})
}
this.sendChildData.storeIds = list;
}
console.log(this.sendChildData)
if (this.form.exchangeTimeType === 2 && result.timeZones) {
let list = result.timeZones.split('#').filter(v => v);
list.map((v,i)=> {
let arr = v.split('-');
this.$set(this.timeRangeList,i,{timeRange:[arr[0],arr[1]]})
});
}
}
},
//门店分组回执方法
getSelectGroupData(val) {
console.log(val);
this.sendChildData.storeType = val.storeType || 0
this.sendChildData.storeGroupIds = val.storeGroupIds || ''
this.sendChildData.storeIds = val.storeIds || []
},
// 获取分类列表
async getCategoryList() {
let res = await getCategoryList();
if (res.errorCode === 0) {
this.categoryOptions = res.result || [];
}
},
// 新建分类
createNewGroup() {
this.$prompt('请输入分组名称', '新建分组', {
confirmButtonText: '确定',
cancelButtonText: '取消',
inputPlaceholder:'请输入分组名称',
inputErrorMessage:'分组名称不能为空',
inputValidator:function(value) {
return !!value;
}
}).then(({ value }) => {
createCategoryService({categoryName:value}).then(res => {
if (res.errorCode === 0) {
this.$tips({type:'success',message:'新建分组成功'});
this.getCategoryList();
} else {
this.$tips({type:'error',message:'新建分组失败'});
}
})
}).catch(err => {
console.log(err);
});
},
async getGradeList() {
let res = await getGradeList();
if (res.errorCode === 0) {
this.memberGradeOptions = res.result || [];
}
console.log(res);
},
// 获取卡券组件回调的对象
getCardActiveObjFun(val) {
this.form.weChatVirtualStock = val.couponStock || 0;
this.form.proReferId = val.coupCardId || '';
console.log(val)
},
addTimeRange() {
let length = this.timeRangeList.length;
this.$set(this.timeRangeList,length,{timeRange:['','']})
},
delTimeRange(index) {
this.timeRangeList.splice(index,1);
},
submit() {
if (this.cashCost - this.costValue < 0) {
this.$tips({type:'warning',message:'礼品成本要大于等于现金费用'});
return;
}
console.log(this.timeRangeList)
let params = {
integralMallProId:this.form.integralMallProId || '',
proType:2, // 商品类型 1 优惠券,2礼品,3实物
proName:this.form.proName, // 商品名字,优惠券就是所选券的名字。
proReferId:this.isAdd?'':this.form.proReferId, // 关联的卡券或者礼品
proCategoryId:this.form.proCategoryId, //礼品的分类
proShowStatus:this.form.proShowStatus, // 商品显示状态 1:上架状态就显示 2:兑换状态下显示
integralCost:this.form.integralCost,// 积分费用
cashCost:this.form.cashCost, // 现金费用,两位小数
costValue:this.form.costValue,
limitTimes:this.form.limitTimes,// 次数限制
memberGrade:this.form.memberGradeArr.length?this.form.memberGradeArr.join(','):'', // 适用会员,多个,逗号拼接。
exchangeDateType:this.form.exchangeDateType, // 兑换日期1:全部 2:固定日期 3:每月 4:每周
exchangeTimeType:this.form.exchangeTimeType, // 兑换时间类型 1:全部 2:部分时段
releaseType:this.form.releaseType, // 布发状态 1立即 2定时
changeType:this.form.changeType, // 兑换方式 1:微信兑换 2:快递发货 3:在线发货
showStore:this.sendChildData.storeType, // 显示门店 0所有 1部分分组 2部分门店
storeIds:'', // 选中的门店信息,多个逗号拼接
giftImageUrls:this.form.giftImg.imgUrl, // 礼品图片
giftImageFiledCodes:this.form.giftImg.code, // 礼品图片编码
virtualStock:this.form.changeType === 1 ? this.form.weChatVirtualStock : this.form.virtualStock, //库存
}
// 判断 兑换日期
if (params.exchangeDateType === 2) {
if (this.form.exchangeFixDate) {
params.exchangeFixDateBegin = formateDateTimeByType(this.form.exchangeFixDate[0],'yyyy-MM-dd-HH-mm-ss');
params.exchangeFixDateEnd = formateDateTimeByType(this.form.exchangeFixDate[1],'yyyy-MM-dd-HH-mm-ss');
} else {
this.$tips({type:'warning',message:'兑换固定日期不能为空'});
return;
}
} else if (params.exchangeDateType === 3) {
params.exchangeDateDay = this.form.exchangeDateDayArr.length > 0 ? this.form.exchangeDateDayArr.join(','):'';
} else if (params.exchangeDateType === 4) {
params.exchangeDateWeek = this.form.exchangeDateWeekArr.length > 0 ? this.form.exchangeDateWeekArr.join(','):'';
}
// 判断 兑换时段
if (params.exchangeTimeType === 2) {
let list = [];
let flag = false;
this.timeRangeList.forEach(v => {
if (!v.timeRange || !v.timeRange[0]) {
flag = true;
} else {
list.push(v.timeRange[0]+'-'+v.timeRange[1]);
}
})
if (flag) {
this.$tips({message:'部分时段未填写完整'});
return;
}
// 如果数组为1的话也要传 #分割
if (list.length === 1) {
params.timeZones = list[0] +'#';
} else {
params.timeZones = list.length?list.join('#'):'';
}
}
// 判断发送时间
if (params.releaseType === 2) {
params.limitTimeBegin = formateDateTimeByType(this.form.limitTimeBegin,'yyyy-MM-dd-HH-mm-ss');
}
// 门店分组
if (this.sendChildData.storeType === 1) {
if (this.sendChildData.storeGroupIds) {
params.storeGroupIds = this.sendChildData.storeGroupIds || '';
}
} else if (this.sendChildData.storeType === 2){
if (this.sendChildData.storeIds) {
params.storeIds = this.sendChildData.storeIds.map(v => v.storeId).join(',');
} else {
params.storeIds ='';
}
}
console.log(params)
createIntegralProService(params).then(res => {
if(res.errorCode === 0) {
this.$router.push('/gift');
this.$tips({type:'success',message:'操作成功'});
} else {
this.$tips({type:'error',message:'操作失败'});
}
console.log(res);
}).catch(err => {
this.$tips({type:'error',message:'操作失败'});
})
}
}
};
<template>
<el-form class="dm-wrap" :model="form" ref="form" :rules="rules" label-width="120px">
<el-form-item prop="proName" label="礼品标题">
<el-input controls-position="right" placeholder="请输入礼品标题" :disabled="isInfo" v-model="form.proName" class="w300"></el-input>
</el-form-item>
<el-form-item label="礼品主图" class="is-required">
<dm-upload-avatar :model.sync="form.giftImg" label="上传图片" tips="规格750*750,大小≤1M"></dm-upload-avatar>
</el-form-item>
<el-form-item prop="proCategoryId" label="礼品分组">
<el-select v-model="form.proCategoryId" placeholder="请选择" class="w300">
<el-option v-for="(v,i) in categoryOptions" :key="i" :label="v.categoryName" :value="v.integralMallCategoryId"></el-option>
</el-select>
<el-button type="text" @click="createNewGroup">新建分组</el-button>
</el-form-item>
<el-form-item prop="integralCost" label="积分费用">
<el-input-number controls-position="right" :disabled="isInfo" v-model="form.integralCost" class="w300" :precison="0" :min="0"></el-input-number>
</el-form-item>
<el-form-item prop="cashCost" label="现金费用">
<el-input-number controls-position="right" :disabled="isInfo" v-model="form.cashCost" class="w300" :precison="2" :min="0"></el-input-number>
</el-form-item>
<el-form-item prop="costValue" label="礼品成本">
<el-input-number controls-position="right" :disabled="isInfo" v-model="form.costValue" class="w300" :precison="2" :min="form.cashCost"></el-input-number>
</el-form-item>
<el-form-item prop="limitTimes" label="次数显示">
<el-checkbox :disabled="isInfo" v-model="isLimitTimes"> 每个会员限制兑换
</el-checkbox>
<el-input-number controls-position="right" :disabled="isInfo || !isLimitTimes" v-model="form.limitTimes" class="w100" :precison="0" :min="0"></el-input-number>
</el-form-item>
<el-form-item prop="memberGradeArr" label="适用会员">
<el-select v-model="form.memberGradeArr" multiple placeholder="请选择" class="w300">
<el-option v-for="item in memberGradeOptions" :key="item.gradeId" :label="item.gradeName" :value="item.gradeId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="展现门店" class="is-required">
<vue-gic-store-linkage :disabled="isInfo" :msg="sendChildData" ref="selectTree" @sendSelectGroupData="getSelectGroupData"></vue-gic-store-linkage>
</el-form-item>
<el-form-item prop="exchangeDateType" label="兑换日期" class="is-required">
<el-radio-group v-model="form.exchangeDateType" style="line-height:inherit;">
<div class="mb10"><el-radio :label="1">全部日期</el-radio></div>
<div class="mb10"><el-radio :label="2">固定日期
<el-date-picker v-model="form.exchangeFixDate" :disabled="form.exchangeDateType !== 2" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-radio></div>
<div class="mb10"><el-radio :label="3">每月
<el-select v-model="form.exchangeDateDayArr" :disabled="form.exchangeDateType !== 3" multiple filterable default-first-option placeholder="请选择">
<el-option v-for="item in monthOptions" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-radio></div>
<div class="mb10"><el-radio :label="4">每周
<el-select v-model="form.exchangeDateWeekArr" :disabled="form.exchangeDateType !== 4" multiple placeholder="请选择">
<el-option v-for="item in exchangeDateWeekOptions" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-radio></div>
</el-radio-group>
</el-form-item>
<el-form-item prop="exchangeTimeType" label="兑换时段" class="is-required">
<el-radio-group v-model="form.exchangeTimeType">
<div class="mb10"><el-radio :label="1">全部时段</el-radio></div>
<div class="mb10">
<el-radio :label="2" class="vertical-middle">部分时段</el-radio>
<span class="gray fz13 vertical-top ml20">请使用24小时制输入时间,格式如11:00至14:30</span>
</div>
<p v-for="(v,i) in timeRangeList" :key="i" class="pb10">
<el-time-picker :disabled="form.exchangeTimeType === 1" class="vertical-middle w250" is-range v-model="v.timeRange" value-format="HH:mm" format="HH:mm" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" placeholder="选择时间范围"></el-time-picker>
<el-button class="vertical-middle" type="text" @click="delTimeRange(i)">删除</el-button>
</p>
<p><el-button type="text" @click="addTimeRange">添加时间段</el-button></p>
</el-radio-group>
</el-form-item>
<el-form-item prop="proShowStatus" label="显示状态">
<el-radio-group v-model="form.proShowStatus">
<el-radio :label="1">上架状态就显示</el-radio>
<el-radio :label="2">兑换状态下显示</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="releaseType" label="发布时间">
<el-radio-group v-model="form.releaseType">
<el-radio :label="1">立即发布</el-radio>
<el-radio :label="2">定时发布
<el-date-picker v-model="form.limitTimeBegin" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="changeType" label="兑换方式">
<el-radio-group v-model="form.changeType">
<div class="mb10">
<el-radio :label="2">快递发货,库存
<el-input-number controls-position="right" v-show="form.changeType === 2" v-model="form.virtualStock" class="w150 vertical-middle" :precison="0" :min="0"></el-input-number>
</el-radio>
</div>
<div class="mb10">
<el-radio :label="3">在线发货,库存
<el-input-number controls-position="right" v-show="form.changeType === 3" v-model="form.virtualStock" class="w150 vertical-middle" :precison="0" :min="0"></el-input-number>
</el-radio>
</div>
<div class="mb10">
<el-radio :label="1" class="vertical-middle">微信兑换券</el-radio>
<span class="gray ml20 fz13 vertical-top">礼品成本金额以选择兑换券的成本金额为准</span>
</div>
</el-radio-group>
</el-form-item>
<div v-show="form.changeType === 1" class="border-radius2" style="padding:15px;margin-bottom:20px;">
<card-temp pbSize="pb15" :activeId.sync="form.proReferId" @emitActiveObj="getCardActiveObjFun" :showPagination="false" :cardLimitType="3"></card-temp>
</div>
<div class="btn-wrap_fixed" :class="{'on':asideShow}">
<el-button type="primary" @click="submit('form')" v-if="!isInfo">{{isAdd?'确认新增':'确认编辑'}}</el-button>
<el-button @click="$router.go(-1)">返 回</el-button>
</div>
</el-form>
</template>
<script>
import infojs from './info.js';
export default infojs;
</script>
<template>
<section class="dm-wrap">
<div class="pb22 clearfix">
<el-input v-model="listParams.giftName" class="w300" placeholder="请输入礼品名称" clearable @change="getPageGiftList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="primary" @click="$router.push('/gift/info')">新增礼品</el-button>
</div>
<div class="filter--box">
<el-select class="vertical-middle w150 pl10" v-model="listParams.category" placeholder="选择分类" @change="getPageGiftList">
<el-option v-for="v in categoryOptions" :key="v.integralMallCategoryId" :label="v.categoryName" :value="v.integralMallCategoryId"></el-option>
</el-select>
<el-select class="vertical-middle w150" v-model="listParams.changeType" placeholder="选择兑换方式" @change="getPageGiftList">
<el-option v-for="v in changeTypeOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-select class="vertical-middle w150" v-model="listParams.releaseType" placeholder="选择兑换状态" @change="getPageGiftList">
<el-option v-for="v in releaseTypeOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-select class="vertical-middle w150" v-model="listParams.showStatus" placeholder="选择显示状态" @change="getPageGiftList">
<el-option v-for="v in showStatusOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-checkbox class="vertical-middle" size="small" border :true-label="1" :false-label="0" v-model="listParams.proHot" @change="getPageGiftList">只看热门推荐</el-checkbox>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading" @sort-change="sortList">
<el-table-column :show-overflow-tooltip="false" width="90" align="left" prop="proHot" fixed="left" label="热门推荐">
<template slot-scope="scope">
<el-switch
v-model="scope.row.proHot"
:active-value="1"
:inactive-value="0" @change="changeHotFun(scope.row)">
</el-switch>
</template>
</el-table-column>
<el-table-column label="礼品信息" align="left" prop="proName" min-width="140">
<template slot-scope="scope">
<div class="ellipsis-100" >
<img class="vertical-middle table__avatar" :src="scope.row.mainImageUrl || defaultAvatar" width="60" height="60" />
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{scope.row.proName || '--'}}</p>
<p class="fz13 gray">{{scope.row.giftCategoryName || '--'}}</p>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="积分费用" align="left" prop="integralCost" width="180">
<template slot-scope="scope">
<updateCount :model="scope.row" theType="integralCost" typeName="积分" @refresh="getPageGiftList"></updateCount>
</template>
</el-table-column>
<el-table-column label="现金费用" align="left" prop="cashCost" width="180">
<template slot-scope="scope">
<updateCount :model="scope.row" theType="cashCost" typeName="元" @refresh="getPageGiftList"></updateCount>
</template>
</el-table-column>
<el-table-column label="库存" align="left" prop="sortCost" width="180" sortable="custom">
<template slot-scope="scope">
<updateCount :model="scope.row" theType="virtualStock" @refresh="getPageGiftList"></updateCount>
</template>
</el-table-column>
<el-table-column label="兑换次数" align="left" prop="sortTimes" width="100" sortable="custom">
<template slot-scope="scope">
<span v-if="scope.row.changeType == 1" @click="$router.push('/gift/wxexchange/'+scope.row.integralMallProId)" class="blue">{{scope.row.allExchangeNumber}}</span>
<span v-else @click="$router.push('/gift/exchange/'+scope.row.integralMallProId)" class="blue">{{scope.row.allExchangeNumber}}</span>
</template>
</el-table-column>
<el-table-column label="兑换方式" align="left" prop="changeType" width="80">
<template slot-scope="scope" >
<span v-if="scope.row.changeType == 1">微信兑换</span>
<span v-if="scope.row.changeType == 2">快递发货</span>
<span v-if="scope.row.changeType == 3">在线发货</span>
</template>
</el-table-column>
<el-table-column label="兑换状态" align="left" prop="status" width="100px">
<template slot-scope="scope" >
<span>{{statusFilter(scope.row.status)}}</span>
</template>
</el-table-column>
<el-table-column label="显示状态" align="left" prop="proShowStatus" width="120">
<template slot-scope="scope" >
<span v-if="scope.row.proShowStatus == 1">上架状态就显示</span>
<span v-if="scope.row.proShowStatus == 2">兑换状态下显示</span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="140px" fixed="right">
<template slot-scope="scope">
<el-button type="text" @click="$router.push('/gift/info/'+scope.row.integralMallProId)">编辑</el-button>
<dm-confirm @confirm="delData(scope.row)" tips="是否删除该优惠券?">
<el-button type="text">删除</el-button>
</dm-confirm>
</template>
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
</section>
</template>
<script>
import { getPageGiftList, getCategoryList, deleteProService ,setHotStatusService} from '@/service/api/mallApi.js';
import updateCount from '../common/update-count';
import {formateDateTimeByType} from '@/utils/index.js';
export default {
name: 'coupon-list',
components: {
updateCount
},
computed:{
},
data () {
return {
defaultAvatar:require('../../../assets/img/head_default.png'),
loading:false,
tableList:[],
listParams:{
currentPage:1,
pageSize:20,
category:'',
changeType:-1,
releaseType:-1,
showStatus:-1,
proHot:'-1',
giftName:'',
sortType:'',
sortColumn:'',
},
total:0,
categoryOptions:[],
releaseTypeOptions:[{label:'所有兑换状态',value:-1},{label:'不可兑换',value:0},{label:'兑换',value:1},{label:'已发货',value:3},{label:'待付款',value:11}],
changeTypeOptions:[{label:'所有兑换方式',value:-1},{label:'微信兑换',value:1},{label:'快递发货',value:2},{label:'在线发货',value:3}],
showStatusOptions:[{label:'所有显示状态',value:-1},{label:'显示',value:1},{label:'不显示',value:2}],
}
},
created() {
this.$store.commit('mutations_breadcrumb',[{name:'积分商城'},{name:'礼品',path:''}]);
this.getPageGiftList();
this.getCategoryList();
},
methods: {
// 获取分类列表
async getCategoryList() {
let res = await getCategoryList();
if (res.errorCode === 0) {
this.categoryOptions = res.result || [];
this.categoryOptions.unshift({categoryName:'所有分类',integralMallCategoryId:''})
}
},
// 列表的方法
search() {
this.listParams.currentPage = 1;
this.getPageGiftList();
},
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getPageGiftList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getPageGiftList();
},
async getPageGiftList() {
this.loading = true;
let res = await getPageGiftList(this.listParams);
this.tableList = [];
let result = res.result.rows || [];
result.map(v => {
v.integralCostFlag = false;
v.cashCostFlag = false;
v.virtualStockFlag = false;
v.allExchangeNumberFlag = false;
this.tableList.push(v);
})
this.total = res.result.total;
this.loading = false;
},
// 删除
delData(row) {
deleteProService({proId:row.integralMallProId}).then(res => {
if (res.errorCode === 0) {
this.$tips({type: 'success',message: '删除成功!'});
this.getPageGiftList();
} else {
this.$tips({type: 'error',message: '删除失败!'});
}
}).catch(err => {
this.$tips({type: 'error',message: '删除失败!'});
})
},
// 热门推荐
changeHotFun(row) {
setHotStatusService({status:Number(row.proHot),integralMallProId:row.integralMallProId}).then(res => {
if (res.errorCode === 0) {
this.$tips({type: 'success',message: '设置成功!'});
this.getPageGiftList();
} else {
this.$tips({type: 'error',message: '设置失败!'});
}
}).catch(err => {
this.$tips({type: 'error',message: '删除失败!'});
})
},
statusFilter(val) {
let result = '--';
this.releaseTypeOptions.map(v => {
if (v.value === val) {
result = v.label;
}
});
return result;
},
//列表 排序
sortList(obj) {
this.listParams.sortColumn = obj.prop;
this.listParams.sortType = obj.order ? (obj.order === 'descending' ? 'desc' : 'asc') : '';
this.getPageGiftList();
}
}
}
</script>
<template>
<section class="dm-wrap">
<!-- <el-input type="textarea" rows="4"></el-input> -->
<div class="pb22 clearfix">
<el-date-picker class="w250" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="getPageUndeliverList"></el-date-picker>
<el-select class="vertical-middle w150" v-model="listParams.changeType" placeholder="选择发货类型" @change="getPageUndeliverList">
<el-option v-for="v in changeTypeOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-select class="vertical-middle w150" v-model="listParams.orderStatus" placeholder="选择订单状态" @change="getPageUndeliverList">
<el-option v-for="v in orderStatusOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
</el-select>
<el-input v-model="listParams.searchParams" class="w300" placeholder="请输入流水号/会员姓名/会员卡号" clearable @change="getPageUndeliverList"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="primary" @click="exportExcel">导出列表</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading">
<el-table-column label="礼品信息" align="left" prop="giftName" min-width="140">
<template slot-scope="scope">
<div class="ellipsis-100" >
<img class="vertical-middle table__avatar" :src="scope.row.giftMainPic || defaultAvatar" width="60" height="60" />
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{scope.row.giftName || '--'}}</p>
<p class="fz13 gray">{{scope.row.giftCategoryName || '--'}}</p>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="兑换时间" align="left" prop="createTime" width="170px">
<template slot-scope="scope" >
<span>{{formateDateTimeByType(scope.row.createTime,'yyyy-MM-dd-HH-mm-ss')}}</span>
</template>
</el-table-column>
<el-table-column label="流水号" align="left" prop="definedCode" width="150px"></el-table-column>
<el-table-column label="发货类型" align="left" prop="changeType" width="80">
<template slot-scope="scope" >
<span v-if="scope.row.changeType == 2">快递发货</span>
<span v-else-if="scope.row.changeType == 3">在线发货</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column label="会员信息" align="left" prop="changeType" min-width="180">
<template slot-scope="scope" >
<a :href="'/member/#/wechatmemberDetail?memberId='+scope.row.memberId" target="_blank">
<img class="vertical-middle table__avatar" :src="scope.row.memberImgUrl || defaultAvatar" width="60" height="60" alt="" srcset="">
<div class="inline-block vertical-middle">
<p class="table-name--ellipsis">{{scope.row.memberName || '--'}}</p>
<p class="table-name--ellipsis fz13">{{scope.row.cardNum || '--'}}</p>
</div>
</a>
</template>
</el-table-column>
<el-table-column label="消耗积分" align="left" prop="status" width="100px">
<template slot-scope="scope" >
<p>{{scope.row.unitCostIntegral}}</p>
<p>{{scope.row.payCost}}</p>
</template>
</el-table-column>
<el-table-column label="微信支付流水号" align="left" prop="proShowStatus" width="150">
<template slot-scope="scope" >
<span>{{scope.row.definedCode || '--'}}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="140px" fixed="right">
<template slot-scope="scope">
<p>
<el-button type="text" v-if="scope.row.status === 1" @click="sendOrder(scope.row)">发货</el-button>
<span v-else-if="scope.row.status === 3">已发货</span>
<span v-else-if="scope.row.status === 0">已取消</span>
<span v-else-if="scope.row.status === 11">待付款</span>
<span v-else>--</span>
</p>
<p>
<el-button type="text" v-if="scope.row.status === 1" @click="cancelOrder(scope.row)">取消订单</el-button>
<el-button type="text" v-if="scope.row.status === 3" @click="queryExpress(scope.row)">查看物流</el-button>
<el-button type="text" v-if="scope.row.status === 0">查看详情</el-button>
</p>
</template>
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<express :show.sync="expressShow" :id="expressId"></express>
<sendGoods :show.sync="sendGoodsShow" :id="expressId" @refresh="refresh"></sendGoods>
</section>
</template>
<script>
import { getPageUndeliverList,orderOptService,exportOnlineListExcel } from '@/service/api/mallApi.js';
import {formateDateTimeByType} from '@/utils/index.js';
import express from '../common/express';
import sendGoods from './send-goods';
export default {
name: 'goods-list',
components: {
express,
sendGoods
},
data () {
return {
formateDateTimeByType,
defaultAvatar:require('../../../assets/img/head_default.png'),
loading:false,
tableList:[],
listParams:{
currentPage:1,
pageSize:20,
changeType:-1,
orderStatus:-1,
searchParams:'',
beginTime:'',
endTime:'',
},
total:0,
changeTypeOptions:[{label:'所有发货类型',value:-1},{label:'快递发货',value:2},{label:'在线发货',value:3}],
orderStatusOptions:[{label:'所有订单状态',value:-1},{label:'待发货',value:1},{label:'已发货',value:3},{label:'已取消',value:0},{label:'待付款',value:11}],
textareaValue:'',
expressShow:false,
sendGoodsShow:false,
expressId:'',
dateTime:['','']
}
},
created() {
this.$store.commit('mutations_breadcrumb',[{name:'积分商城'},{name:'待发货',path:''}]);
this.getPageUndeliverList();
},
methods: {
// 列表的方法
refresh() {
$bus.$emit('refresh-not-send-count');
this.getPageUndeliverList();
},
search() {
this.listParams.currentPage = 1;
this.getPageUndeliverList();
},
handleSizeChange(val) {
this.listParams.pageSize = val;
this.getPageUndeliverList();
},
handleCurrentChange(val) {
this.listParams.currentPage = val;
this.getPageUndeliverList();
},
async getPageUndeliverList() {
if (this.dateTime) {
this.listParams.beginTime = formateDateTimeByType(this.dateTime[0],'yyyy-MM-dd');
this.listParams.endTime = formateDateTimeByType(this.dateTime[1],'yyyy-MM-dd');
} else {
this.listParams.beginTime = this.listParams.senendTimedEndTime = '';
}
this.loading = true;
let res = await getPageUndeliverList(this.listParams);
this.tableList = res.result.rows || [];
this.total = res.result.total || 0;
this.loading = false;
},
// 删除
delData(row) {
deleteProService({proId:row.integralMallProId}).then(res => {
this.$tips({type: 'success',message: '删除成功!'});
this.getPageUndeliverList();
}).catch(err => {
this.$tips({type: 'error',message: '删除失败!'});
})
},
// 取消订单
cancelOrder(row) {
this.$prompt(`
<p>确认取消订单吗?</p><p>积分将会实时返回给会员。相应礼品的库存会归还</p>
`, '取消订单', {
dangerouslyUseHTMLString: true,
showCancelButton: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
inputType:'textarea',
inputPlaceholder:'请输入取消原因',
inputErrorMessage:'原因不能为空',
inputValidator:function(value) {
return !!value;
}
}).then(({ value }) => {
orderOptService({optType:2,integralMallProExchangeId:row.integralMallProExchangeId,cancelReason:value}).then(res => {
if (res.errorCode === 0) {
this.$tips({type:'success',message:'取消订单成功'});
} else {
this.$tips({type:'error',message:'取消订单失败'});
}
})
}).catch(err => {
console.log(err);
});
},
// 发货
sendOrder(row) {
this.sendGoodsShow = true;
this.expressId = row.integralMallProExchangeId;
},
// 查看快递
queryExpress(row) {
this.expressShow = true;
this.expressId = row.integralMallProExchangeId;
},
// 导出列表
exportExcel(){
if (this.dateTime) {
this.listParams.beginTime = formateDateTimeByType(this.dateTime[0],'yyyy-MM-dd');
this.listParams.endTime = formateDateTimeByType(this.dateTime[1],'yyyy-MM-dd');
} else {
this.listParams.beginTime = this.listParams.senendTimedEndTime = '';
}
if (!this.listParams.beginTime || !this.listParams.endTime) {
this.$tips({type: 'warning',message: '时间不能为空'});
return;
}
window.location = `${exportOnlineListExcel}?orderStatus=${this.listParams.orderStatus}&changeType=${this.listParams.changeType}&searchParams=${this.listParams.searchParams}&beginTime=${this.listParams.beginTime}&endTime=${this.listParams.endTime}&requestProject=marketing`;
},
statusFilter(val) {
let result = '--';
this.releaseTypeOptions.map(v => {
if (v.value === val) {
result = v.label;
}
});
return result;
},
},
}
</script>
<template>
<el-dialog class="express dialog__body__nopadding" title="查看物流信息" :visible.sync="show" width="40%" :before-close="close">
<div class="express--info">
<p>收件人:{{info.clerkName || '--'}}</p>
<p>联系方式:{{info.consigneePhone || '--'}}</p>
<p>收货地址:{{info.receivingAddress || '--'}}</p>
<p class="pb10">快递公司:<el-select class="vertical-middle w300" v-model="params.logisticsCompanyId" placeholder="选择快递">
<el-option v-for="v in logisticsOptions" :key="v.logisticsCompanyCode" :label="v.logisticsCompanyName" :value="v.logisticsCompanyId"></el-option>
</el-select>
</p>
<p>运单号码:<el-input class="vertical-middle w300" v-model="params.courierNumber" placeholder="请输入快递单号"></el-input></p>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="submit">确 定</el-button>
<el-button @click="close">关 闭</el-button>
</span>
</el-dialog>
</template>
<script>
import {getLogisticsInfo,getLogisticsList,orderOptService} from '@/service/api/mallApi.js';
export default {
props:{
show:{
type:Boolean,
default:false
},
id:{
type:String,
default:''
}
},
watch:{
show(val) {
if (val) {
this.getLogisticsInfo();
}
}
},
data() {
return {
loading:false,
info:{},
logisticsOptions:[],
params:{
logisticsCompanyId:'',
logisticsCompanyCode:'',
courierNumber:'',
},
}
},
created() {
this.getLogisticsList();
},
methods: {
close() {
this.$emit('update:show',false);
},
submit() {
if (!this.params.logisticsCompanyId) {
this.$tips({type:'warning',message:'请选择快递'});
return;
}
if (!this.params.courierNumber) {
this.$tips({type:'warning',message:'请填写快递单号'});
return;
}
this.logisticsOptions.map(v => {
if (v.logisticsCompanyId === this.params.logisticsCompanyId) {
this.params.logisticsCompanyCode = v.logisticsCompanyCode;
}
})
let params = {
optType:1,
integralMallProExchangeId:this.id,
logisticsCompanyId:this.params.logisticsCompanyId,
logisticsCompanyCode:this.params.logisticsCompanyCode,
courierNumber:this.params.courierNumber
};
orderOptService(params).then(res => {
if (res.errorCode === 0) {
this.$tips({type:'success',message:'发货成功'});
this.close();
this.$emit('refresh');
} else {
this.$tips({type:'error',message:'发货失败'});
}
});
},
async getLogisticsList() {
let res = await getLogisticsList();
if (res.errorCode === 0) {
this.logisticsOptions = res.result || [];
}
},
async getLogisticsInfo() {
this.loading = true;
let res = await getLogisticsInfo({integralMallProExchangeId:this.id});
if (res.errorCode === 0) {
this.info = res.result.changeLog || {};
}
this.loading = false;
}
}
};
</script>
<style lang="scss" scoped>
.express{
&--info {
padding-bottom:10px;
p {
line-height: 30px;
}
}
}
</style>
<template>
<div class="dm-tabs el-tabs">
<div class="el-tabs__header">
<div class="overflow-hidden">
<div id="tab-first" @click="$router.push('/'+v.value)" class="el-tabs__item" v-for="(v,i) in tabs" :key="i" :class="{'is-active':v.value === $route.meta.menu}">
{{v.name === '待发货'?(v.name+'('+total+')'):v.name}}
</div>
</div>
</div>
<div class="el-tabs__content">
<router-view></router-view>
</div>
</div>
</template>
<script>
import { getNotSendCount } from '@/service/api/mallApi.js';
export default {
name: "mall",
data() {
const vm = this;
return {
activeMenu:'',
tabs:[{name:'优惠券',value:'coupon'},{name:'礼品',value:'gift'},{name:'待发货',value:'goods'}],
total:0,
};
},
created() {
this.$store.commit("mutations_breadcrumb", [{ name: "积分商城" }]);
this.$store.commit("aside_handler", false);
this.getNotSendCount();
$bus.$on('refresh-not-send-count',() => {
this.getNotSendCount();
});
},
methods:{
async getNotSendCount(){
let res = await getNotSendCount();
if (res.errorCode === 0) {
this.total = res.result;
}
}
}
};
</script>
/**
* Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/)
* http://cssreset.com
*/
html,
body,
div,
span,
applet,
object,
iframe,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video,
input,
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
padding: 0;
border: 0;
font-weight: normal;
vertical-align: baseline;
font-family:100%;
}
h1,
h2,
h3,
h4,
h5,
h6{
font-size:14px;
}
/* HTML5 display-role reset for older browsers */
article,
aside,
details,
figcaption,
figure,
footer,
header,
menu,
nav,
section {
display: block;
}
body {
line-height: 1;
}
blockquote,
q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
/* custom */
a {
color: #7e8c8d;
text-decoration: none;
-webkit-backface-visibility: hidden;
}
li {
list-style: none;
}
::-webkit-scrollbar {
width: 5px;
height: 5px;
}
::-webkit-scrollbar-track-piece {
background-color: rgba(0, 0, 0, 0.2);
-webkit-border-radius: 6px;
}
::-webkit-scrollbar-thumb:vertical {
height: 5px;
background-color: rgba(125, 125, 125, 0.7);
-webkit-border-radius: 6px;
}
::-webkit-scrollbar-thumb:horizontal {
width: 5px;
background-color: rgba(125, 125, 125, 0.7);
-webkit-border-radius: 6px;
}
html,
body {
width: 100%;
min-height: 100%;
height: 100%;
/*background-color: #ffffff;*/
background-color: #fff;
box-sizing: border-box;
font-family:"PingFangSC";
}
body {
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
input:focus {
box-shadow: none;
outline: none;
}
a {
color: #5092e1;
}
a:hover{
color: #1e6cd5;
}
.fl{
float: left;
}
.fr{
float: right;
}
.el-table th{
background: #f1f3f7!important;
}
/*tab切换的线条大小*/
.el-tabs__nav-wrap::after{
height:1px!important;
}
/*搜索的删除按钮*/
.el-input .el-input__clear:hover {
color: #f25058!important;
}
/*自定义表格*/
/*表格start*/
.brand-table{
width:100%;
font-size:14px;
color:#606266;
}
.brand-table thead tr{
height:48px;
line-height:48px;
background: #f1f3f7;
text-align: left;
}
.brand-table thead th{
padding:0 15px;
}
.brand-table thead .sort{
position: relative;
display:inline-block;
width:40px;
}
.brand-table .sort .el-icon-caret-top{
position:absolute;
top:15px;
cursor: pointer;
color:#c0c4ce;
}
.brand-table .sort .el-icon-caret-bottom{
position: absolute;
top:22px;
cursor: pointer;
color:#c0c4ce;
}
.brand-table .sort .grayColor{
color:#606266;
}
.brand-table thead .el-icon-question{
color:#c0c4ce;
cursor: pointer;
font-size:14px;
}
.brand-table thead .el-icon-question:hover{
color:#909399;
}
.brand-table tbody tr{
border-bottom:1px solid #ebeef5;
}
.brand-table tbody td{
padding:20px 15px;
vertical-align: middle;
}
.brand-table .operate a{
margin-right:15px;
}
.brand-table .icon-move i{
font-size:22px;
cursor: pointer;
}
.brand-table tbody tr:first-child .el-icon-upload2{
color:#e6e6e6;
cursor:not-allowed;
}
.brand-table tbody tr:first-child .icon-up{
color:#e6e6e6;
cursor:not-allowed;
}
.brand-table tbody tr:last-child .icon-down{
color:#e6e6e6;
cursor:not-allowed;
}
.brand-table tbody tr:last-child .el-icon-download{
color:#e6e6e6;
cursor:not-allowed;
}
.icon-arrowdown:before{
font-size:19px;
vertical-align: top;
}
.icon-up:before{
display:inline-block;
transform: rotate(180deg);
font-size:19px;
vertical-align: top;
}
/*表格end*/
/*数据为空*/
.table-list-null{
text-align: center;
/*min-height:200px;*/
margin:70px 0;
}
.table-list-null i{
color:#a3adb6;
font-size:30px;
}
.table-list-null p{
font-size: 14px;
color: #a3adb6;
margin:14px 0;
}
@font-face {font-family: "iconfont";
src: url('../fonts/iconfont.eot?t=1527754741672'); /* IE9*/
src: url('../fonts/iconfont.eot?t=1527754741672#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/data:application/x-font-woff;charset=utf-8;base64,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') format('woff'),
url('../fonts/iconfont.ttf?t=1527754741672') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
url('../fonts/iconfont.svg?t=1527754741672#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family:"iconfont" !important;
font-size:16px;
font-style:normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-arrowdown:before { content: "\e613"; }
.icon-guige:before { content: "\e9fa"; }
.icon-leimupinleifenleileibie--1:before { content: "\e600"; }
.icon-zhankai:before { content: "\e742"; }
.icon-shouqi:before { content: "\e743"; }
.icon-dingdan-:before { content: "\e67e"; }
.icon-shuxingguanli:before { content: "\e65d"; }
.icon-zhuzuoquan:before { content: "\e60f"; }
.icon-pinpai-:before { content: "\e6de"; }
.icon-icon_yunxiazai fz14:before { content: "\e6e8"; }
(function(window){var svgSprite='<svg><symbol id="icon-arrowdown" viewBox="0 0 1024 1024"><path d="M512 85.333333q17.664 0 30.165333 12.501333t12.501333 30.165333l0 665.002667 225.664-226.005333q12.330667-12.330667 30.336-12.330667 18.346667 0 30.506667 12.16t12.16 30.506667q0 18.005333-12.330667 30.336l-298.666667 298.666667q-12.330667 12.330667-30.336 12.330667t-30.336-12.330667l-298.666667-298.666667q-12.330667-12.330667-12.330667-30.336 0-18.346667 12.16-30.506667t30.506667-12.16q18.005333 0 30.336 12.330667l225.664 226.005333 0-665.002667q0-17.664 12.501333-30.165333t30.165333-12.501333z" ></path></symbol><symbol id="icon-guige" viewBox="0 0 1024 1024"><path d="M76.8128 960l268.7808-108.8128-160-166.3744L76.8128 960z m576-742.4064l-435.2192 435.2192 160 160 435.2192-435.2192-160-160z m-179.2192 96l-64-64-108.7808 115.2192L256 326.4064l115.1872-115.2192L230.4064 64 64 224l249.5936 249.5936 160-160zM166.4064 243.1872c-19.2192-19.1872-19.2192-51.1872 0-76.7808 19.1872-19.2192 57.5936-19.2192 76.7808 0 19.2192 19.1872 19.2192 57.5936 0 76.7808-19.1872 25.6256-51.1872 25.6256-76.7808 0zM960 230.4064l-160-160-115.1872 115.1872 160 160L960 230.4064zM793.5936 864l-44.7808-44.8128L864 710.4064l-51.1872-57.5936L697.5936 768l-44.7808-44.8128L768 608l-51.1872-51.1872-160 166.3744L793.5936 960l160-166.4064-44.7808-44.7808L793.5936 864z" ></path></symbol><symbol id="icon-leimupinleifenleileibie--1" viewBox="0 0 1024 1024"><path d="M352.903955 0h-231.41243C52.067797 0 0 52.067797 0 115.706215v231.412429c0 63.638418 52.067797 115.706215 115.706215 115.706215h231.412429c63.638418 0 115.706215-52.067797 115.706215-115.706215V115.706215c5.785311-63.638418-46.282486-115.706215-109.920904-115.706215z m46.282486 341.333333c0 34.711864-28.926554 57.853107-57.853108 57.853108H133.062147c-34.711864 0-57.853107-28.926554-57.853107-57.853108V127.276836c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271186c34.711864 0 57.853107 28.926554 57.853108 57.853107v214.056497zM902.508475 0h-231.41243c-63.638418 0-115.706215 52.067797-115.706214 115.706215v231.412429c0 63.638418 52.067797 115.706215 115.706214 115.706215h231.41243c63.638418 0 115.706215-52.067797 115.706214-115.706215V115.706215c5.785311-63.638418-52.067797-115.706215-115.706214-115.706215z m52.067796 341.333333c0 34.711864-28.926554 57.853107-57.853107 57.853108h-208.271187c-34.711864 0-57.853107-28.926554-57.853107-57.853108V127.276836c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271187c34.711864 0 57.853107 28.926554 57.853107 57.853107v214.056497zM352.903955 555.389831h-231.41243c-63.638418 0-115.706215 52.067797-115.706214 115.706214v231.41243c0 63.638418 52.067797 115.706215 115.706214 115.706214h231.41243c63.638418 0 115.706215-52.067797 115.706214-115.706214v-231.41243c0-63.638418-52.067797-115.706215-115.706214-115.706214z m46.282486 341.333333c0 34.711864-28.926554 57.853107-57.853108 57.853107H133.062147c-34.711864 0-57.853107-28.926554-57.853107-57.853107v-208.271187c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271186c34.711864 0 57.853107 28.926554 57.853108 57.853107v208.271187zM902.508475 555.389831h-231.41243c-63.638418 0-115.706215 52.067797-115.706214 115.706214v231.41243c0 63.638418 52.067797 115.706215 115.706214 115.706214h231.41243c63.638418 0 115.706215-52.067797 115.706214-115.706214v-231.41243c5.785311-63.638418-52.067797-115.706215-115.706214-115.706214z m52.067796 341.333333c0 34.711864-28.926554 57.853107-57.853107 57.853107h-208.271187c-34.711864 0-57.853107-28.926554-57.853107-57.853107v-208.271187c0-34.711864 28.926554-57.853107 57.853107-57.853107h208.271187c34.711864 0 57.853107 28.926554 57.853107 57.853107v208.271187z" fill="#707070" ></path></symbol><symbol id="icon-zhankai" viewBox="0 0 1089 1024"><path d="M535.744 455.936h-535.68v114.112h535.68V455.936z m489.28 389.952H1.28V960h1023.744v-114.112z m-260.096-145.472V320l260.096 190.208-260.096 190.208zM1025.024 64H2.624v116.096h1022.4V64z" fill="#979797" ></path></symbol><symbol id="icon-shouqi" viewBox="0 0 1088 1024"><path d="M489.536 455.936h535.68v114.112H489.6V455.936zM0.256 845.888H1024V960H0.256v-114.112z m260.096-145.472V320L0.256 510.208l260.096 190.208zM0.256 64h1022.4v116.096H0.256V64z" fill="#979797" ></path></symbol><symbol id="icon-dingdan-" viewBox="0 0 1024 1024"><path d="M739.328 956.928H330.752c-57.344 0-104.448-48.128-104.448-106.496V265.728c0-58.88 46.592-106.496 104.448-106.496h466.944c57.344 0 104.448 48.128 104.448 106.496v524.8l-162.816 166.4z" fill="#EBEDEF" ></path><path d="M793.088 37.376H230.912c-76.288 0-137.216 61.44-137.216 136.192v677.888c0 74.752 61.44 136.192 137.216 136.192H721.92c3.584 0 6.144-1.024 8.704-3.584l194.56-193.536c2.56-2.56 3.584-5.12 3.584-8.704V173.568c0.512-74.752-60.928-136.192-135.68-136.192zM135.68 837.12v-650.24c0-58.88 48.128-106.496 108.032-106.496h538.624c59.904 0 108.032 48.128 108.032 106.496v557.568h-148.48c-30.208 0-53.76 24.064-53.76 52.736v146.432H242.176c-58.88 0-106.496-47.616-106.496-106.496z m583.68 121.856V808.96c0-16.384 13.824-30.208 31.232-30.208h152.576l-183.808 180.224z" fill="#A3ADB6" ></path><path d="M335.872 336.384h353.28c7.68 0 12.288-8.192 12.288-20.48s-5.12-20.48-12.288-20.48h-353.28c-7.68 0-12.288 8.192-12.288 20.48s4.608 20.48 12.288 20.48z m0 202.24h353.28c7.68 0 12.288-8.192 12.288-20.48s-5.12-20.48-12.288-20.48h-353.28c-7.68 0-12.288 8.192-12.288 20.48s4.608 20.48 12.288 20.48z m163.84 148.992h-163.84c-7.68 0-12.288 8.192-12.288 20.48s5.12 20.48 12.288 20.48h163.84c7.68 0 12.288-8.192 12.288-20.48s-5.12-20.48-12.288-20.48z" fill="#A3ADB6" ></path></symbol><symbol id="icon-shuxingguanli" viewBox="0 0 1024 1024"><path d="M263.649 531.8v-9.311c-0.41-5.628-1.433-11.154-3.48-16.68-8.39-21.591-28.14-35.098-49.73-36.94h-8.903c-5.73 0.409-11.359 1.33-16.987 3.581-21.898 8.493-35.61 28.857-37.043 50.857v5.628l0.205 271.784v11.154c0.512 5.219 1.433 10.438 3.48 15.452 8.288 21.284 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.768 0 5.116-0.512 10.13-1.433 15.144-3.377 22.103-8.596 35.917-29.164 37.145-51.471v-3.786L263.65 531.8zM147.711 122.795v11.154c0.512 5.219 1.433 10.437 3.48 15.451 8.288 21.182 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.768 0 5.116-0.511 10.13-1.432 15.144-3.377 22.103-8.595 35.917-29.265 37.145-51.47V127.5l-0.307-64.467v-9.312c-0.409-5.628-1.432-11.153-3.479-16.68-8.493-21.59-28.345-35.2-49.936-36.94h-8.903c-5.73 0.41-11.358 1.33-16.986 3.582-21.898 8.493-35.61 28.856-37.043 50.857v5.628l0.307 62.625z m-65.08 205.475c0 16.066 3.171 32.234 9.413 47.071 6.14 14.838 15.247 28.55 26.708 39.909 11.359 11.358 25.07 20.465 39.908 26.707 14.838 6.14 31.006 9.414 47.071 9.414s32.234-3.172 47.071-9.414c14.838-6.14 28.55-15.247 39.908-26.707 11.359-11.359 20.466-25.07 26.708-39.909 6.14-14.837 9.414-31.005 9.414-47.07s-3.172-32.234-9.414-47.072c-6.14-14.837-15.247-28.55-26.708-39.908-11.358-11.358-25.07-20.465-39.908-26.707-14.837-6.14-31.005-9.312-47.07-9.312s-32.234 3.172-47.072 9.312-28.55 15.247-39.908 26.707c-11.358 11.359-20.466 25.07-26.708 39.908-6.242 14.838-9.414 30.904-9.414 47.071z m487.39 6.652v-9.312c-0.41-5.628-1.433-11.154-3.48-16.68-8.39-21.59-28.14-35.098-49.732-36.94h-8.902c-5.73 0.41-11.359 1.33-16.987 3.581-21.898 8.494-35.61 28.857-37.043 50.858v5.628l0.205 468.663v11.154c0.512 5.219 1.433 10.438 3.48 15.452 8.288 21.284 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.768 0 5.116-0.512 10.13-1.433 15.144-3.377 22.103-8.596 35.918-29.266 37.145-51.471v-3.786l-0.409-470.506zM389 123.1c0 16.066 3.172 32.233 9.415 47.071 6.14 14.838 15.246 28.55 26.707 39.908 11.359 11.359 25.07 20.466 39.908 26.708 14.838 6.14 31.006 9.414 47.071 9.414s32.234-3.172 47.071-9.414c14.838-6.14 28.55-15.247 39.908-26.708 11.359-11.358 20.466-25.07 26.708-39.908 6.14-14.838 9.414-31.005 9.414-47.071s-3.172-32.233-9.414-47.071c-6.14-14.838-15.247-28.55-26.708-39.908-11.358-11.359-25.07-20.466-39.908-26.708C544.336 3.274 528.168 0 512.103 0s-32.234 3.172-47.072 9.414c-14.837 6.14-28.55 15.247-39.908 26.708-11.358 11.358-20.465 25.07-26.707 39.908-6.243 14.94-9.415 31.005-9.415 47.071z m371.35 199.643v11.153c0.512 5.22 1.433 10.438 3.48 15.554 8.288 21.182 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.665 0 5.117-0.511 10.13-1.432 15.145-3.377 22.103-8.595 35.917-29.265 37.145-51.47v-3.787l-0.307-264.416v-9.415c-0.41-5.628-1.433-11.153-3.48-16.68-8.39-21.59-28.242-35.2-49.833-36.94h-8.903c-5.73 0.41-11.358 1.33-16.986 3.582-21.898 8.493-35.61 28.856-37.043 50.857v5.628l0.307 262.575z m115.938 415.248v-9.414c-0.41-5.628-1.433-11.154-3.48-16.68-8.39-21.59-28.14-35.098-49.73-36.838h-8.903c-5.73 0.41-11.359 1.33-16.987 3.582-21.898 8.493-35.61 28.856-37.043 50.857v5.628l0.205 65.695v11.154c0.512 5.218 1.433 10.437 3.48 15.451 8.288 21.285 27.628 34.69 48.81 36.736 3.888 0.41 7.777 0.41 11.665 0 5.117-0.512 10.13-1.433 15.145-3.377 22.103-8.595 35.917-29.266 37.145-51.47v-3.787l-0.307-67.537zM695.27 529.754c0 16.066 3.172 32.233 9.414 47.071 6.14 14.838 15.247 28.55 26.708 39.908 11.358 11.359 25.07 20.466 39.908 26.708 14.838 6.14 31.006 9.414 47.071 9.414s32.234-3.172 47.071-9.414c14.838-6.14 28.55-15.247 39.908-26.708 11.359-11.358 20.466-25.07 26.708-39.908 6.14-14.838 9.414-31.005 9.414-47.071s-3.172-32.233-9.414-47.071c-6.14-14.838-15.247-28.55-26.708-39.908-11.358-11.359-25.07-20.466-39.908-26.708-14.837-6.14-31.005-9.414-47.07-9.414s-32.234 3.172-47.072 9.414c-14.838 6.14-28.55 15.247-39.908 26.708-11.358 11.358-20.466 25.07-26.708 39.908-6.242 14.838-9.414 30.903-9.414 47.071z m0 0" ></path></symbol><symbol id="icon-zhuzuoquan" viewBox="0 0 1024 1024"><path d="M828.3 195.7C742.1 110.3 632.7 65.1 512 65.1c-119.6 0-232 46.4-316.3 130.6C110.3 282 65.1 391.3 65.1 512c0 121.5 45.1 230.8 130.6 316.3 83.5 84.3 195.9 130.6 316.3 130.6 121.5 0 230.8-45.2 316.3-130.6 85.5-85.5 130.6-194.8 130.6-316.3 0-120.7-45.1-230-130.6-316.3z m-37.5 595.4c-36.2 36.2-78.4 64.6-125.4 84.4-48.6 20.5-100.3 30.9-153.4 30.9-53.2 0-104.8-10.4-153.4-30.9-47-19.9-89.2-48.3-125.4-84.4-74.6-74.5-115.6-173.6-115.6-279.1 0-217.5 176.9-394.5 394.5-394.5 217.5 0 394.5 176.9 394.5 394.5-0.1 105.4-41.2 204.6-115.8 279.1z m0 0" ></path><path d="M646.7 599.7c-28.2 39.2-73.6 65.8-125.3 65.8-84.6 0-155.1-68.9-155.1-155.1 0-86.2 68.9-155.1 155.1-155.1 51.7 0 97.1 25.1 125.3 65.8h92.4c-36-86.2-119.1-145.7-217.7-145.7-130 0-236.5 106.5-236.5 236.5s106.5 236.5 236.5 236.5c98.7 0 183.3-61.1 217.7-145.7h-92.4v-3z m0 0" ></path></symbol><symbol id="icon-pinpai-" viewBox="0 0 1024 1024"><path d="M512 20.48C241.152 20.48 20.48 241.152 20.48 512s220.672 491.52 491.52 491.52 491.52-220.672 491.52-491.52-220.672-491.52-491.52-491.52z m0 912.896c-232.448 0-421.376-188.928-421.376-421.376S279.552 90.624 512 90.624s421.376 188.928 421.376 421.376-188.928 421.376-421.376 421.376z m245.76-526.848c0-96.768-78.848-175.616-175.616-175.616H301.568c-19.456 0-35.328 15.872-35.328 35.328 0 19.456 15.872 35.328 35.328 35.328h281.088c57.856 0 105.472 47.104 105.472 105.472s-47.104 105.472-105.472 105.472H406.528V406.528c0-19.456-15.872-35.328-35.328-35.328-19.456 0-35.328 15.872-35.328 35.328v315.904h-35.328c-19.456 0-35.328 15.872-35.328 35.328s15.872 35.328 35.328 35.328h140.288c19.456 0 35.328-15.872 35.328-35.328s-15.872-35.328-35.328-35.328h-35.328v-140.288h86.528l130.048 195.072c1.024 1.536 2.048 2.56 3.584 4.096l1.536 1.536c3.072 2.56 6.144 5.12 9.728 6.656 0.512 0.512 1.536 0.512 2.56 1.024 4.096 1.536 8.192 2.56 12.288 2.56H721.92c19.456 0 35.328-15.872 35.328-35.328s-15.872-35.328-35.328-35.328h-51.2l-93.696-140.288h4.608c97.28 0 176.128-78.848 176.128-175.616z" fill="#272636" ></path></symbol><symbol id="icon-icon_yunxiazai fz14" viewBox="0 0 1024 1024"><path d="M790.528 409.6c-18.432-141.824-136.704-252.416-278.528-252.416S251.904 267.264 233.472 409.6C117.76 417.28 25.6 517.12 25.6 637.952c0 125.952 99.84 228.864 220.672 228.864h533.504c120.832-2.56 218.112-102.4 218.112-228.864C998.4 517.12 906.24 417.28 790.528 409.6z m-286.208 389.12l-194.56-223.232h131.584V367.616h125.952v207.872h131.584l-194.56 223.232z" fill="" ></path></symbol></svg>';var script=function(){var scripts=document.getElementsByTagName("script");return scripts[scripts.length-1]}();var shouldInjectCss=script.getAttribute("data-injectcss");var ready=function(fn){if(document.addEventListener){if(~["complete","loaded","interactive"].indexOf(document.readyState)){setTimeout(fn,0)}else{var loadFn=function(){document.removeEventListener("DOMContentLoaded",loadFn,false);fn()};document.addEventListener("DOMContentLoaded",loadFn,false)}}else if(document.attachEvent){IEContentLoaded(window,fn)}function IEContentLoaded(w,fn){var d=w.document,done=false,init=function(){if(!done){done=true;fn()}};var polling=function(){try{d.documentElement.doScroll("left")}catch(e){setTimeout(polling,50);return}init()};polling();d.onreadystatechange=function(){if(d.readyState=="complete"){d.onreadystatechange=null;init()}}}};var before=function(el,target){target.parentNode.insertBefore(el,target)};var prepend=function(el,target){if(target.firstChild){before(el,target.firstChild)}else{target.appendChild(el)}};function appendSvg(){var div,svg;div=document.createElement("div");div.innerHTML=svgSprite;svgSprite=null;svg=div.getElementsByTagName("svg")[0];if(svg){svg.setAttribute("aria-hidden","true");svg.style.position="absolute";svg.style.width=0;svg.style.height=0;svg.style.overflow="hidden";prepend(svg,document.body)}}if(shouldInjectCss&&!window.__iconfont__svg__cssinject__){window.__iconfont__svg__cssinject__=true;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(e){console&&console.log(e)}}ready(appendSvg)})(window)
\ No newline at end of file
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="arrowdown" unicode="&#58899;" d="M512 810.666667q17.664 0 30.165333-12.501333t12.501333-30.165333l0-665.002667 225.664 226.005333q12.330667 12.330667 30.336 12.330667 18.346667 0 30.506667-12.16t12.16-30.506667q0-18.005333-12.330667-30.336l-298.666667-298.666667q-12.330667-12.330667-30.336-12.330667t-30.336 12.330667l-298.666667 298.666667q-12.330667 12.330667-12.330667 30.336 0 18.346667 12.16 30.506667t30.506667 12.16q18.005333 0 30.336-12.330667l225.664-226.005333 0 665.002667q0 17.664 12.501333 30.165333t30.165333 12.501333z" horiz-adv-x="1024" />
<glyph glyph-name="guige" unicode="&#59898;" d="M76.8128-64l268.7808 108.8128-160 166.3744L76.8128-64z m576 742.4064l-435.2192-435.2192 160-160 435.2192 435.2192-160 160z m-179.2192-96l-64 64-108.7808-115.2192L256 569.5936l115.1872 115.2192L230.4064 832 64 672l249.5936-249.5936 160 160zM166.4064 652.8128c-19.2192 19.1872-19.2192 51.1872 0 76.7808 19.1872 19.2192 57.5936 19.2192 76.7808 0 19.2192-19.1872 19.2192-57.5936 0-76.7808-19.1872-25.6256-51.1872-25.6256-76.7808 0zM960 665.5936l-160 160-115.1872-115.1872 160-160L960 665.5936zM793.5936 32l-44.7808 44.8128L864 185.5936l-51.1872 57.5936L697.5936 128l-44.7808 44.8128L768 288l-51.1872 51.1872-160-166.3744L793.5936-64l160 166.4064-44.7808 44.7808L793.5936 32z" horiz-adv-x="1024" />
<glyph glyph-name="leimupinleifenleileibie--1" unicode="&#58880;" d="M352.903955 896h-231.41243C52.067797 896 0 843.932203 0 780.293785v-231.412429c0-63.638418 52.067797-115.706215 115.706215-115.706215h231.412429c63.638418 0 115.706215 52.067797 115.706215 115.706215V780.293785c5.785311 63.638418-46.282486 115.706215-109.920904 115.706215z m46.282486-341.333333c0-34.711864-28.926554-57.853107-57.853108-57.853108H133.062147c-34.711864 0-57.853107 28.926554-57.853107 57.853108V768.723164c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271186c34.711864 0 57.853107-28.926554 57.853108-57.853107v-214.056497zM902.508475 896h-231.41243c-63.638418 0-115.706215-52.067797-115.706214-115.706215v-231.412429c0-63.638418 52.067797-115.706215 115.706214-115.706215h231.41243c63.638418 0 115.706215 52.067797 115.706214 115.706215V780.293785c5.785311 63.638418-52.067797 115.706215-115.706214 115.706215z m52.067796-341.333333c0-34.711864-28.926554-57.853107-57.853107-57.853108h-208.271187c-34.711864 0-57.853107 28.926554-57.853107 57.853108V768.723164c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271187c34.711864 0 57.853107-28.926554 57.853107-57.853107v-214.056497zM352.903955 340.61016900000004h-231.41243c-63.638418 0-115.706215-52.067797-115.706214-115.706214v-231.41243c0-63.638418 52.067797-115.706215 115.706214-115.706214h231.41243c63.638418 0 115.706215 52.067797 115.706214 115.706214v231.41243c0 63.638418-52.067797 115.706215-115.706214 115.706214z m46.282486-341.333333c0-34.711864-28.926554-57.853107-57.853108-57.853107H133.062147c-34.711864 0-57.853107 28.926554-57.853107 57.853107v208.271187c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271186c34.711864 0 57.853107-28.926554 57.853108-57.853107v-208.271187zM902.508475 340.61016900000004h-231.41243c-63.638418 0-115.706215-52.067797-115.706214-115.706214v-231.41243c0-63.638418 52.067797-115.706215 115.706214-115.706214h231.41243c63.638418 0 115.706215 52.067797 115.706214 115.706214v231.41243c5.785311 63.638418-52.067797 115.706215-115.706214 115.706214z m52.067796-341.333333c0-34.711864-28.926554-57.853107-57.853107-57.853107h-208.271187c-34.711864 0-57.853107 28.926554-57.853107 57.853107v208.271187c0 34.711864 28.926554 57.853107 57.853107 57.853107h208.271187c34.711864 0 57.853107-28.926554 57.853107-57.853107v-208.271187z" horiz-adv-x="1024" />
<glyph glyph-name="zhankai" unicode="&#59202;" d="M535.744 440.064h-535.68v-114.112h535.68V440.064z m489.28-389.952H1.28V-64h1023.744v114.112z m-260.096 145.472V576l260.096-190.208-260.096-190.208zM1025.024 832H2.624v-116.096h1022.4V832z" horiz-adv-x="1089" />
<glyph glyph-name="shouqi" unicode="&#59203;" d="M489.536 440.064h535.68v-114.112H489.6V440.064zM0.256 50.112H1024V-64H0.256v114.112z m260.096 145.472V576L0.256 385.792l260.096-190.208zM0.256 832h1022.4v-116.096H0.256V832z" horiz-adv-x="1088" />
<glyph glyph-name="dingdan-" unicode="&#59006;" d="M739.328-60.928H330.752c-57.344 0-104.448 48.128-104.448 106.496V630.272c0 58.88 46.592 106.496 104.448 106.496h466.944c57.344 0 104.448-48.128 104.448-106.496v-524.8l-162.816-166.4zM793.088 858.624H230.912c-76.288 0-137.216-61.44-137.216-136.192v-677.888c0-74.752 61.44-136.192 137.216-136.192H721.92c3.584 0 6.144 1.024 8.704 3.584l194.56 193.536c2.56 2.56 3.584 5.12 3.584 8.704V722.432c0.512 74.752-60.928 136.192-135.68 136.192zM135.68 58.88v650.24c0 58.88 48.128 106.496 108.032 106.496h538.624c59.904 0 108.032-48.128 108.032-106.496v-557.568h-148.48c-30.208 0-53.76-24.064-53.76-52.736v-146.432H242.176c-58.88 0-106.496 47.616-106.496 106.496z m583.68-121.856V87.04c0 16.384 13.824 30.208 31.232 30.208h152.576l-183.808-180.224zM335.872 559.616h353.28c7.68 0 12.288 8.192 12.288 20.48s-5.12 20.48-12.288 20.48h-353.28c-7.68 0-12.288-8.192-12.288-20.48s4.608-20.48 12.288-20.48z m0-202.24h353.28c7.68 0 12.288 8.192 12.288 20.48s-5.12 20.48-12.288 20.48h-353.28c-7.68 0-12.288-8.192-12.288-20.48s4.608-20.48 12.288-20.48z m163.84-148.992h-163.84c-7.68 0-12.288-8.192-12.288-20.48s5.12-20.48 12.288-20.48h163.84c7.68 0 12.288 8.192 12.288 20.48s-5.12 20.48-12.288 20.48z" horiz-adv-x="1024" />
<glyph glyph-name="shuxingguanli" unicode="&#58973;" d="M263.649 364.2v9.311c-0.41 5.628-1.433 11.154-3.48 16.68-8.39 21.591-28.14 35.098-49.73 36.94h-8.903c-5.73-0.409-11.359-1.33-16.987-3.581-21.898-8.493-35.61-28.857-37.043-50.857v-5.628l0.205-271.784v-11.154c0.512-5.219 1.433-10.438 3.48-15.452 8.288-21.284 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.768 0 5.116 0.512 10.13 1.433 15.144 3.377 22.103 8.596 35.917 29.164 37.145 51.471v3.786L263.65 364.2zM147.711 773.205v-11.154c0.512-5.219 1.433-10.437 3.48-15.451 8.288-21.182 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.768 0 5.116 0.511 10.13 1.432 15.144 3.377 22.103 8.595 35.917 29.265 37.145 51.47V768.5l-0.307 64.467v9.312c-0.409 5.628-1.432 11.153-3.479 16.68-8.493 21.59-28.345 35.2-49.936 36.94h-8.903c-5.73-0.41-11.358-1.33-16.986-3.582-21.898-8.493-35.61-28.856-37.043-50.857v-5.628l0.307-62.625z m-65.08-205.475c0-16.066 3.171-32.234 9.413-47.071 6.14-14.838 15.247-28.55 26.708-39.909 11.359-11.358 25.07-20.465 39.908-26.707 14.838-6.14 31.006-9.414 47.071-9.414s32.234 3.172 47.071 9.414c14.838 6.14 28.55 15.247 39.908 26.707 11.359 11.359 20.466 25.07 26.708 39.909 6.14 14.837 9.414 31.005 9.414 47.07s-3.172 32.234-9.414 47.072c-6.14 14.837-15.247 28.55-26.708 39.908-11.358 11.358-25.07 20.465-39.908 26.707-14.837 6.14-31.005 9.312-47.07 9.312s-32.234-3.172-47.072-9.312-28.55-15.247-39.908-26.707c-11.358-11.359-20.466-25.07-26.708-39.908-6.242-14.838-9.414-30.904-9.414-47.071z m487.39-6.652v9.312c-0.41 5.628-1.433 11.154-3.48 16.68-8.39 21.59-28.14 35.098-49.732 36.94h-8.902c-5.73-0.41-11.359-1.33-16.987-3.581-21.898-8.494-35.61-28.857-37.043-50.858v-5.628l0.205-468.663v-11.154c0.512-5.219 1.433-10.438 3.48-15.452 8.288-21.284 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.768 0 5.116 0.512 10.13 1.433 15.144 3.377 22.103 8.596 35.918 29.266 37.145 51.471v3.786l-0.409 470.506zM389 772.9c0-16.066 3.172-32.233 9.415-47.071 6.14-14.838 15.246-28.55 26.707-39.908 11.359-11.359 25.07-20.466 39.908-26.708 14.838-6.14 31.006-9.414 47.071-9.414s32.234 3.172 47.071 9.414c14.838 6.14 28.55 15.247 39.908 26.708 11.359 11.358 20.466 25.07 26.708 39.908 6.14 14.838 9.414 31.005 9.414 47.071s-3.172 32.233-9.414 47.071c-6.14 14.838-15.247 28.55-26.708 39.908-11.358 11.359-25.07 20.466-39.908 26.708C544.336 892.726 528.168 896 512.103 896s-32.234-3.172-47.072-9.414c-14.837-6.14-28.55-15.247-39.908-26.708-11.358-11.358-20.465-25.07-26.707-39.908-6.243-14.94-9.415-31.005-9.415-47.071z m371.35-199.643v-11.153c0.512-5.22 1.433-10.438 3.48-15.554 8.288-21.182 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.665 0 5.117 0.511 10.13 1.432 15.145 3.377 22.103 8.595 35.917 29.265 37.145 51.47v3.787l-0.307 264.416v9.415c-0.41 5.628-1.433 11.153-3.48 16.68-8.39 21.59-28.242 35.2-49.833 36.94h-8.903c-5.73-0.41-11.358-1.33-16.986-3.582-21.898-8.493-35.61-28.856-37.043-50.857v-5.628l0.307-262.575z m115.938-415.248v9.414c-0.41 5.628-1.433 11.154-3.48 16.68-8.39 21.59-28.14 35.098-49.73 36.838h-8.903c-5.73-0.41-11.359-1.33-16.987-3.582-21.898-8.493-35.61-28.856-37.043-50.857v-5.628l0.205-65.695v-11.154c0.512-5.218 1.433-10.437 3.48-15.451 8.288-21.285 27.628-34.69 48.81-36.736 3.888-0.41 7.777-0.41 11.665 0 5.117 0.512 10.13 1.433 15.145 3.377 22.103 8.595 35.917 29.266 37.145 51.47v3.787l-0.307 67.537zM695.27 366.246c0-16.066 3.172-32.233 9.414-47.071 6.14-14.838 15.247-28.55 26.708-39.908 11.358-11.359 25.07-20.466 39.908-26.708 14.838-6.14 31.006-9.414 47.071-9.414s32.234 3.172 47.071 9.414c14.838 6.14 28.55 15.247 39.908 26.708 11.359 11.358 20.466 25.07 26.708 39.908 6.14 14.838 9.414 31.005 9.414 47.071s-3.172 32.233-9.414 47.071c-6.14 14.838-15.247 28.55-26.708 39.908-11.358 11.359-25.07 20.466-39.908 26.708-14.837 6.14-31.005 9.414-47.07 9.414s-32.234-3.172-47.072-9.414c-14.838-6.14-28.55-15.247-39.908-26.708-11.358-11.358-20.466-25.07-26.708-39.908-6.242-14.838-9.414-30.903-9.414-47.071z m0 0" horiz-adv-x="1024" />
<glyph glyph-name="zhuzuoquan" unicode="&#58895;" d="M828.3 700.3C742.1 785.7 632.7 830.9 512 830.9c-119.6 0-232-46.4-316.3-130.6C110.3 614 65.1 504.7 65.1 384c0-121.5 45.1-230.8 130.6-316.3 83.5-84.3 195.9-130.6 316.3-130.6 121.5 0 230.8 45.2 316.3 130.6 85.5 85.5 130.6 194.8 130.6 316.3 0 120.7-45.1 230-130.6 316.3z m-37.5-595.4c-36.2-36.2-78.4-64.6-125.4-84.4-48.6-20.5-100.3-30.9-153.4-30.9-53.2 0-104.8 10.4-153.4 30.9-47 19.9-89.2 48.3-125.4 84.4-74.6 74.5-115.6 173.6-115.6 279.1 0 217.5 176.9 394.5 394.5 394.5 217.5 0 394.5-176.9 394.5-394.5-0.1-105.4-41.2-204.6-115.8-279.1z m0 0M646.7 296.3c-28.2-39.2-73.6-65.8-125.3-65.8-84.6 0-155.1 68.9-155.1 155.1 0 86.2 68.9 155.1 155.1 155.1 51.7 0 97.1-25.1 125.3-65.8h92.4c-36 86.2-119.1 145.7-217.7 145.7-130 0-236.5-106.5-236.5-236.5s106.5-236.5 236.5-236.5c98.7 0 183.3 61.1 217.7 145.7h-92.4v3z m0 0" horiz-adv-x="1024" />
<glyph glyph-name="pinpai-" unicode="&#59102;" d="M512 875.52C241.152 875.52 20.48 654.848 20.48 384s220.672-491.52 491.52-491.52 491.52 220.672 491.52 491.52-220.672 491.52-491.52 491.52z m0-912.896c-232.448 0-421.376 188.928-421.376 421.376S279.552 805.376 512 805.376s421.376-188.928 421.376-421.376-188.928-421.376-421.376-421.376z m245.76 526.848c0 96.768-78.848 175.616-175.616 175.616H301.568c-19.456 0-35.328-15.872-35.328-35.328 0-19.456 15.872-35.328 35.328-35.328h281.088c57.856 0 105.472-47.104 105.472-105.472s-47.104-105.472-105.472-105.472H406.528V489.472c0 19.456-15.872 35.328-35.328 35.328-19.456 0-35.328-15.872-35.328-35.328v-315.904h-35.328c-19.456 0-35.328-15.872-35.328-35.328s15.872-35.328 35.328-35.328h140.288c19.456 0 35.328 15.872 35.328 35.328s-15.872 35.328-35.328 35.328h-35.328v140.288h86.528l130.048-195.072c1.024-1.536 2.048-2.56 3.584-4.096l1.536-1.536c3.072-2.56 6.144-5.12 9.728-6.656 0.512-0.512 1.536-0.512 2.56-1.024 4.096-1.536 8.192-2.56 12.288-2.56H721.92c19.456 0 35.328 15.872 35.328 35.328s-15.872 35.328-35.328 35.328h-51.2l-93.696 140.288h4.608c97.28 0 176.128 78.848 176.128 175.616z" horiz-adv-x="1024" />
<glyph glyph-name="icon_yunxiazai" unicode="&#59112;" d="M790.528 486.4c-18.432 141.824-136.704 252.416-278.528 252.416S251.904 628.736 233.472 486.4C117.76 478.72 25.6 378.88 25.6 258.048c0-125.952 99.84-228.864 220.672-228.864h533.504c120.832 2.56 218.112 102.4 218.112 228.864C998.4 378.88 906.24 478.72 790.528 486.4z m-286.208-389.12l-194.56 223.232h131.584V528.384h125.952v-207.872h131.584l-194.56-223.232z" horiz-adv-x="1024" />
</font>
</defs></svg>
export default{
//输入框的输入限制
getInputVal: function(val, max) {
var returnValue = '';
var byteValLen = 0;
for (var i = 0; i < val.length; i++) {
if (val[i].match(/[^\x00-\xff]/ig) != null)
byteValLen += 1;
else
byteValLen += 0.5;
if (byteValLen > max)
break;
returnValue += val[i];
}
return returnValue;
},
/*
* 一个汉字算一个字,一个英文字母或数字算半个字
*/
getZhLen: function (val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 1;
}
else {
len += 0.5;
}
}
return Math.ceil(len);
},
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment