master
胡思洁 6 years ago
parent 1927fe497d
commit 3a160e71e7

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/mall-admin-web-master.iml" filepath="$PROJECT_DIR$/mall-admin-web-master.iml" />
</modules>
</component>
</project>

@ -0,0 +1,350 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="54f99bd8-efa0-4172-bac9-88df632b862b" name="Default Changelist" comment="" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/Sidebar/SidebarItem.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-650" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/AppMain.vue">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/index.js">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/Navbar.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1200" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/mixin/ResizeHandler.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-290" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/Layout.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-414" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/login/index.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1506">
<caret line="14" column="31" lean-forward="true" selection-start-line="14" selection-start-column="31" selection-end-line="14" selection-end-column="31" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/oms/apply/applyDetail.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-6382" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/oms/apply/index.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-4740" />
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/oms/apply/reason.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1368" />
</provider>
</entry>
</file>
</leaf>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/mall-admin-web-master/src/views/home/index.vue" />
<option value="$PROJECT_DIR$/mall-admin-web-master/src/views/login/index.vue" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="7">
<option name="x" value="85" />
<option name="y" value="25" />
<option name="width" value="1750" />
<option name="height" value="980" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="PackagesPane" />
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="home" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="layout" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="layout" type="462c0819:PsiDirectoryNode" />
<item name="components" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="layout" type="462c0819:PsiDirectoryNode" />
<item name="components" type="462c0819:PsiDirectoryNode" />
<item name="Sidebar" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="layout" type="462c0819:PsiDirectoryNode" />
<item name="mixin" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="login" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="oms" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="mall-admin-web-master" type="b2602c69:ProjectViewProjectNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="mall-admin-web-master" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="oms" type="462c0819:PsiDirectoryNode" />
<item name="apply" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="editor.config.ad.shown" value="true" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="54f99bd8-efa0-4172-bac9-88df632b862b" name="Default Changelist" comment="" />
<created>1547116175299</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1547116175299</updated>
<workItem from="1547116178930" duration="430000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="430000" />
</component>
<component name="ToolWindowManager">
<frame x="68" y="20" width="1400" height="784" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Designer" />
<window_info id="UI Designer" />
<window_info id="Favorites" side_tool="true" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24962743" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
<window_info anchor="bottom" id="Database Changes" />
<window_info anchor="bottom" id="Version Control" />
<window_info anchor="bottom" id="Terminal" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Palette" />
<window_info anchor="right" id="Maven" />
<window_info anchor="right" id="Palette&#9;" />
<window_info anchor="right" id="Database" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/router/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="362">
<caret line="301" column="5" selection-start-line="301" selection-start-column="5" selection-end-line="301" selection-end-column="5" />
<folding>
<element signature="e#0#21#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/api/brand.js">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/api/companyAddress.js">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/home/index.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="185">
<caret line="217" column="50" lean-forward="true" selection-start-line="217" selection-start-column="50" selection-end-line="217" selection-end-column="50" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/Sidebar/index.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-199" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/Sidebar/SidebarItem.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-650" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/AppMain.vue">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/index.js">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/components/Navbar.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1200" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/mixin/ResizeHandler.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-290" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/layout/Layout.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-414" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/login/index.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1506">
<caret line="14" column="31" lean-forward="true" selection-start-line="14" selection-start-column="31" selection-end-line="14" selection-end-column="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/oms/apply/applyDetail.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-6382" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/oms/apply/index.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-4740" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/mall-admin-web-master/src/views/oms/apply/reason.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1368" />
</provider>
</entry>
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,12 @@
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-vue-jsx", "transform-runtime"]
}

@ -0,0 +1,9 @@
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

@ -0,0 +1,14 @@
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

@ -0,0 +1,10 @@
// 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": {}
}
}

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018-2019 macrozheng
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -0,0 +1,41 @@
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, (err, stats) => {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
chunks: false,
chunkModules: false
}) + '\n\n')
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' Build complete.\n'))
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
})
})

@ -0,0 +1,54 @@
'use strict'
const chalk = require('chalk')
const semver = require('semver')
const packageConfig = require('../package.json')
const shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
const versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function () {
const warnings = []
for (let i = 0; i < versionRequirements.length; i++) {
const mod = versionRequirements[i]
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
warnings.push(mod.name + ': ' +
chalk.red(mod.currentVersion) + ' should be ' +
chalk.green(mod.versionRequirement)
)
}
}
if (warnings.length) {
console.log('')
console.log(chalk.yellow('To use this template, you must update following to modules:'))
console.log()
for (let i = 0; i < warnings.length; i++) {
const warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@ -0,0 +1,101 @@
'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')
})
}
}

@ -0,0 +1,22 @@
'use strict'
const utils = require('./utils')
const config = require('../config')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap
module.exports = {
loaders: utils.cssLoaders({
sourceMap: sourceMapEnabled,
extract: isProduction
}),
cssSourceMap: sourceMapEnabled,
cacheBusting: config.dev.cacheBusting,
transformToRequire: {
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: 'xlink:href'
}
}

@ -0,0 +1,91 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
include: [resolve('src/icons')],
options: {
symbolId: 'icon-[name]'
}
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
exclude: resolve('src/icons'),
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}

@ -0,0 +1,95 @@
'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
},
// cheap-module-eval-source-map is faster for development
devtool: config.dev.devtool,
// these devServer options should be customized in /config/index.js
devServer: {
clientLogLevel: 'warning',
historyApiFallback: {
rewrites: [
{ from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
],
},
hot: true,
contentBase: false, // since we use CopyWebpackPlugin.
compress: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
overlay: config.dev.errorOverlay
? { warnings: false, errors: true }
: false,
publicPath: config.dev.assetsPublicPath,
proxy: config.dev.proxyTable,
quiet: true, // necessary for FriendlyErrorsPlugin
watchOptions: {
poll: config.dev.poll,
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
}))
resolve(devWebpackConfig)
}
})
})

@ -0,0 +1,145 @@
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const env = require('../config/prod.env')
const webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true,
usePostCSS: true
})
},
devtool: config.build.productionSourceMap ? config.build.devtool : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false
}
},
sourceMap: config.build.productionSourceMap,
parallel: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css'),
// Setting the following option to `false` will not extract CSS from codesplit chunks.
// Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
// It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
// increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
allChunks: true,
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: config.build.productionSourceMap
? { safe: true, map: { inline: false } }
: { safe: true }
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.HashedModuleIdsPlugin(),
// enable scope hoisting
new webpack.optimize.ModuleConcatenationPlugin(),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks (module) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity
}),
// This instance extracts shared chunks from code splitted chunks and bundles them
// in a separate chunk, similar to the vendor chunk
// see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'vendor-async',
children: true,
minChunks: 3
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig

@ -0,0 +1,8 @@
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
BASE_API: '"http://localhost:8080"'
})

@ -0,0 +1,69 @@
'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: {},
// Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST
port: 8090, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
/**
* Source Maps
*/
// https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-module-eval-source-map',
// If you have problems debugging vue-files in devtools,
// set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true,
cssSourceMap: true
},
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
/**
* Source Maps
*/
productionSourceMap: true,
// https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map',
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}
}

@ -0,0 +1,5 @@
'use strict'
module.exports = {
NODE_ENV: '"production"',
BASE_API: '"http://39.98.190.128:8080"'
}

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>mall-admin-web</title>
</head>
<body>
<script src="./static/tinymce4.7.5/tinymce.min.js"></script>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,74 @@
{
"name": "mall-admin-web",
"version": "1.0.0",
"description": "mall后台管理前端",
"author": "macro",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js"
},
"dependencies": {
"axios": "^0.18.0",
"echarts": "^4.2.0-rc.2",
"element-ui": "^2.3.7",
"js-cookie": "^2.2.0",
"normalize.css": "^8.0.0",
"nprogress": "^0.2.0",
"v-charts": "^1.19.0",
"v-distpicker": "^1.0.20",
"vue": "^2.5.2",
"vue-router": "^3.0.1",
"vuex": "^3.0.1"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
"babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.1",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.0",
"extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.4",
"friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1",
"node-notifier": "^5.1.2",
"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.1",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"svg-sprite-loader": "^3.7.3",
"uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^0.5.8",
"vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0"
},
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}

@ -0,0 +1,14 @@
<template>
<div id="app">
<router-view/>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
</style>

@ -0,0 +1,53 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/brand/list',
method:'get',
params:params
})
}
export function createBrand(data) {
return request({
url:'/brand/create',
method:'post',
data:data
})
}
export function updateShowStatus(data) {
return request({
url:'/brand/update/showStatus',
method:'post',
data:data
})
}
export function updateFactoryStatus(data) {
return request({
url:'/brand/update/factoryStatus',
method:'post',
data:data
})
}
export function deleteBrand(id) {
return request({
url:'/brand/delete/'+id,
method:'get',
})
}
export function getBrand(id) {
return request({
url:'/brand/'+id,
method:'get',
})
}
export function updateBrand(id,data) {
return request({
url:'/brand/update/'+id,
method:'post',
data:data
})
}

@ -0,0 +1,7 @@
import request from '@/utils/request'
export function fetchList() {
return request({
url:'/companyAddress/list',
method:'get'
})
}

@ -0,0 +1,38 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/coupon/list',
method:'get',
params:params
})
}
export function createCoupon(data) {
return request({
url:'/coupon/create',
method:'post',
data:data
})
}
export function getCoupon(id) {
return request({
url:'/coupon/'+id,
method:'get',
})
}
export function updateCoupon(id,data) {
return request({
url:'/coupon/update/'+id,
method:'post',
data:data
})
}
export function deleteCoupon(id) {
return request({
url:'/coupon/delete/'+id,
method:'post',
})
}

@ -0,0 +1,8 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/couponHistory/list',
method:'get',
params:params
})
}

@ -0,0 +1,35 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/flash/list',
method:'get',
params:params
})
}
export function updateStatus(id,params) {
return request({
url:'/flash/update/status/'+id,
method:'post',
params:params
})
}
export function deleteFlash(id) {
return request({
url:'/flash/delete/'+id,
method:'post'
})
}
export function createFlash(data) {
return request({
url:'/flash/create',
method:'post',
data:data
})
}
export function updateFlash(id,data) {
return request({
url:'/flash/update/'+id,
method:'post',
data:data
})
}

@ -0,0 +1,28 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/flashProductRelation/list',
method:'get',
params:params
})
}
export function createFlashProductRelation(data) {
return request({
url:'/flashProductRelation/create',
method:'post',
data:data
})
}
export function deleteFlashProductRelation(id) {
return request({
url:'/flashProductRelation/delete/'+id,
method:'post'
})
}
export function updateFlashProductRelation(id,data) {
return request({
url:'/flashProductRelation/update/'+id,
method:'post',
data:data
})
}

@ -0,0 +1,48 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url: '/flashSession/list',
method: 'get',
params: params
})
}
export function fetchSelectList(params) {
return request({
url: '/flashSession/selectList',
method: 'get',
params: params
})
}
export function updateStatus(id, params) {
return request({
url: '/flashSession/update/status/' + id,
method: 'post',
params: params
})
}
export function deleteSession(id) {
return request({
url: '/flashSession/delete/' + id,
method: 'post'
})
}
export function createSession(data) {
return request({
url: '/flashSession/create',
method: 'post',
data: data
})
}
export function updateSession(id, data) {
return request({
url: '/flashSession/update/' + id,
method: 'post',
data: data
})
}

@ -0,0 +1,43 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/home/advertise/list',
method:'get',
params:params
})
}
export function updateStatus(id,params) {
return request({
url:'/home/advertise/update/status/'+id,
method:'post',
params:params
})
}
export function deleteHomeAdvertise(data) {
return request({
url:'/home/advertise/delete',
method:'post',
data:data
})
}
export function createHomeAdvertise(data) {
return request({
url:'/home/advertise/create',
method:'post',
data:data
})
}
export function getHomeAdvertise(id) {
return request({
url:'/home/advertise/'+id,
method:'get',
})
}
export function updateHomeAdvertise(id,data) {
return request({
url:'/home/advertise/update/'+id,
method:'post',
data:data
})
}

@ -0,0 +1,40 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/home/brand/list',
method:'get',
params:params
})
}
export function updateRecommendStatus(data) {
return request({
url:'/home/brand/update/recommendStatus',
method:'post',
data:data
})
}
export function deleteHomeBrand(data) {
return request({
url:'/home/brand/delete',
method:'post',
data:data
})
}
export function createHomeBrand(data) {
return request({
url:'/home/brand/create',
method:'post',
data:data
})
}
export function updateHomeBrandSort(params) {
return request({
url:'/home/brand/update/sort/'+params.id,
method:'post',
params:params
})
}

@ -0,0 +1,40 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/home/recommendSubject/list',
method:'get',
params:params
})
}
export function updateRecommendStatus(data) {
return request({
url:'/home/recommendSubject/update/recommendStatus',
method:'post',
data:data
})
}
export function deleteHomeSubject(data) {
return request({
url:'/home/recommendSubject/delete',
method:'post',
data:data
})
}
export function createHomeSubject(data) {
return request({
url:'/home/recommendSubject/create',
method:'post',
data:data
})
}
export function updateHomeSubjectSort(params) {
return request({
url:'/home/recommendSubject/update/sort/'+params.id,
method:'post',
params:params
})
}

@ -0,0 +1,40 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/home/recommendProduct/list',
method:'get',
params:params
})
}
export function updateRecommendStatus(data) {
return request({
url:'/home/recommendProduct/update/recommendStatus',
method:'post',
data:data
})
}
export function deleteHotProduct(data) {
return request({
url:'/home/recommendProduct/delete',
method:'post',
data:data
})
}
export function createHotProduct(data) {
return request({
url:'/home/recommendProduct/create',
method:'post',
data:data
})
}
export function updateHotProductSort(params) {
return request({
url:'/home/recommendProduct/update/sort/'+params.id,
method:'post',
params:params
})
}

@ -0,0 +1,26 @@
import request from '@/utils/request'
export function login(username, password) {
return request({
url: '/admin/login',
method: 'post',
data: {
username,
password
}
})
}
export function getInfo() {
return request({
url: '/admin/info',
method: 'get',
})
}
export function logout() {
return request({
url: '/admin/logout',
method: 'post'
})
}

@ -0,0 +1,8 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/memberLevel/list',
method:'get',
params:params
})
}

@ -0,0 +1,40 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/home/newProduct/list',
method:'get',
params:params
})
}
export function updateRecommendStatus(data) {
return request({
url:'/home/newProduct/update/recommendStatus',
method:'post',
data:data
})
}
export function deleteNewProduct(data) {
return request({
url:'/home/newProduct/delete',
method:'post',
data:data
})
}
export function createNewProduct(data) {
return request({
url:'/home/newProduct/create',
method:'post',
data:data
})
}
export function updateNewProductSort(params) {
return request({
url:'/home/newProduct/update/sort/'+params.id,
method:'post',
params:params
})
}

@ -0,0 +1,63 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/order/list',
method:'get',
params:params
})
}
export function closeOrder(params) {
return request({
url:'/order/update/close',
method:'post',
params:params
})
}
export function deleteOrder(params) {
return request({
url:'/order/delete',
method:'post',
params:params
})
}
export function deliveryOrder(data) {
return request({
url:'/order/update/delivery',
method:'post',
data:data
});
}
export function getOrderDetail(id) {
return request({
url:'/order/'+id,
method:'get'
});
}
export function updateReceiverInfo(data) {
return request({
url:'/order/update/receiverInfo',
method:'post',
data:data
});
}
export function updateMoneyInfo(data) {
return request({
url:'/order/update/moneyInfo',
method:'post',
data:data
});
}
export function updateOrderNote(params) {
return request({
url:'/order/update/note',
method:'post',
params:params
})
}

@ -0,0 +1,15 @@
import request from '@/utils/request'
export function getOrderSetting(id) {
return request({
url:'/orderSetting/'+id,
method:'get',
})
}
export function updateOrderSetting(id,data) {
return request({
url:'/orderSetting/update/'+id,
method:'post',
data:data
})
}

@ -0,0 +1,7 @@
import request from '@/utils/request'
export function policy() {
return request({
url:'/aliyun/oss/policy',
method:'get',
})
}

@ -0,0 +1,7 @@
import request from '@/utils/request'
export function fetchList() {
return request({
url:'/prefrenceArea/listAll',
method:'get',
})
}

@ -0,0 +1,72 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/product/list',
method:'get',
params:params
})
}
export function fetchSimpleList(params) {
return request({
url:'/product/simpleList',
method:'get',
params:params
})
}
export function updateDeleteStatus(params) {
return request({
url:'/product/update/deleteStatus',
method:'post',
params:params
})
}
export function updateNewStatus(params) {
return request({
url:'/product/update/newStatus',
method:'post',
params:params
})
}
export function updateRecommendStatus(params) {
return request({
url:'/product/update/recommendStatus',
method:'post',
params:params
})
}
export function updatePublishStatus(params) {
return request({
url:'/product/update/publishStatus',
method:'post',
params:params
})
}
export function createProduct(data) {
return request({
url:'/product/create',
method:'post',
data:data
})
}
export function updateProduct(id,data) {
return request({
url:'/product/update/'+id,
method:'post',
data:data
})
}
export function getProduct(id) {
return request({
url:'/product/updateInfo/'+id,
method:'get',
})
}

@ -0,0 +1,45 @@
import request from '@/utils/request'
export function fetchList(cid,params) {
return request({
url:'/productAttribute/list/'+cid,
method:'get',
params:params
})
}
export function deleteProductAttr(data) {
return request({
url:'/productAttribute/delete',
method:'post',
data:data
})
}
export function createProductAttr(data) {
return request({
url:'/productAttribute/create',
method:'post',
data:data
})
}
export function updateProductAttr(id,data) {
return request({
url:'/productAttribute/update/'+id,
method:'post',
data:data
})
}
export function getProductAttr(id) {
return request({
url:'/productAttribute/'+id,
method:'get'
})
}
export function getProductAttrInfo(productCategoryId) {
return request({
url:'/productAttribute/attrInfo/'+productCategoryId,
method:'get'
})
}

@ -0,0 +1,37 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/productAttribute/category/list',
method:'get',
params:params
})
}
export function createProductAttrCate(data) {
return request({
url:'/productAttribute/category/create',
method:'post',
data:data
})
}
export function deleteProductAttrCate(id) {
return request({
url:'/productAttribute/category/delete/'+id,
method:'get'
})
}
export function updateProductAttrCate(id,data) {
return request({
url:'/productAttribute/category/update/'+id,
method:'post',
data:data
})
}
export function fetchListWithAttr() {
return request({
url:'/productAttribute/category/list/withAttr',
method:'get'
})
}

@ -0,0 +1,60 @@
import request from '@/utils/request'
export function fetchList(parentId,params) {
return request({
url:'/productCategory/list/'+parentId,
method:'get',
params:params
})
}
export function deleteProductCate(id) {
return request({
url:'/productCategory/delete/'+id,
method:'get'
})
}
export function createProductCate(data) {
return request({
url:'/productCategory/create',
method:'post',
data:data
})
}
export function updateProductCate(id,data) {
return request({
url:'/productCategory/update/'+id,
method:'post',
data:data
})
}
export function getProductCate(id) {
return request({
url:'/productCategory/'+id,
method:'get',
})
}
export function updateShowStatus(data) {
return request({
url:'/productCategory/update/showStatus',
method:'post',
data:data
})
}
export function updateNavStatus(data) {
return request({
url:'/productCategory/update/navStatus',
method:'post',
data:data
})
}
export function fetchListWithChildren() {
return request({
url:'/productCategory/list/withChildren',
method:'get'
})
}

@ -0,0 +1,30 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/returnApply/list',
method:'get',
params:params
})
}
export function deleteApply(params) {
return request({
url:'/returnApply/delete',
method:'post',
params:params
})
}
export function updateApplyStatus(id,data) {
return request({
url:'/returnApply/update/status/'+id,
method:'post',
data:data
})
}
export function getApplyDetail(id) {
return request({
url:'/returnApply/'+id,
method:'get'
})
}

@ -0,0 +1,47 @@
import request from '@/utils/request'
export function fetchList(params) {
return request({
url:'/returnReason/list',
method:'get',
params:params
})
}
export function deleteReason(params) {
return request({
url:'/returnReason/delete',
method:'post',
params:params
})
}
export function updateStatus(params) {
return request({
url:'/returnReason/update/status',
method:'post',
params:params
})
}
export function addReason(data) {
return request({
url:'/returnReason/create',
method:'post',
data:data
})
}
export function getReasonDetail(id) {
return request({
url:'/returnReason/'+id,
method:'get'
})
}
export function updateReason(id,data) {
return request({
url:'/returnReason/update/'+id,
method:'post',
data:data
})
}

@ -0,0 +1,16 @@
import request from '@/utils/request'
export function fetchList(pid,params) {
return request({
url:'/sku/'+pid,
method:'get',
params:params
})
}
export function update(pid,data) {
return request({
url:'/sku/update/'+pid,
method:'post',
data:data
})
}

@ -0,0 +1,15 @@
import request from '@/utils/request'
export function fetchListAll() {
return request({
url:'/subject/listAll',
method:'get',
})
}
export function fetchList(params) {
return request({
url:'/subject/list',
method:'get',
params:params
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

@ -0,0 +1,51 @@
<template>
<el-breadcrumb class="app-breadcrumb" separator="/">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path" v-if="item.meta.title">
<span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">{{item.meta.title}}</span>
<router-link v-else :to="item.redirect||item.path">{{item.meta.title}}</router-link>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
</template>
<script>
export default {
created() {
this.getBreadcrumb()
},
data() {
return {
levelList: null
}
},
watch: {
$route() {
this.getBreadcrumb()
}
},
methods: {
getBreadcrumb() {
let matched = this.$route.matched.filter(item => item.name)
const first = matched[0]
if (first && first.name !== 'home') {
matched = [{ path: '/home', meta: { title: '首页' }}].concat(matched)
}
this.levelList = matched
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.app-breadcrumb.el-breadcrumb {
display: inline-block;
font-size: 14px;
line-height: 50px;
margin-left: 10px;
.no-redirect {
color: #97a8be;
cursor: text;
}
}
</style>

@ -0,0 +1,44 @@
<template>
<div>
<svg t="1492500959545" @click="toggleClick" class="hamburger" :class="{'is-active':isActive}" style="" viewBox="0 0 1024 1024"
version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1691" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64">
<path d="M966.8023 568.849776 57.196677 568.849776c-31.397081 0-56.850799-25.452695-56.850799-56.850799l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 543.397081 998.200404 568.849776 966.8023 568.849776z"
p-id="1692"></path>
<path d="M966.8023 881.527125 57.196677 881.527125c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 856.07443 998.200404 881.527125 966.8023 881.527125z"
p-id="1693"></path>
<path d="M966.8023 256.17345 57.196677 256.17345c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.850799 56.850799-56.850799l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.850799l0 0C1023.653099 230.720755 998.200404 256.17345 966.8023 256.17345z"
p-id="1694"></path>
</svg>
</div>
</template>
<script>
export default {
name: 'hamburger',
props: {
isActive: {
type: Boolean,
default: false
},
toggleClick: {
type: Function,
default: null
}
}
}
</script>
<style scoped>
.hamburger {
display: inline-block;
cursor: pointer;
width: 20px;
height: 20px;
transform: rotate(90deg);
transition: .38s;
transform-origin: 50% 50%;
}
.hamburger.is-active {
transform: rotate(0deg);
}
</style>

@ -0,0 +1,57 @@
<template>
<div class="scroll-container" ref="scrollContainer" @wheel.prevent="handleScroll" >
<div class="scroll-wrapper" ref="scrollWrapper" :style="{top: top + 'px'}">
<slot></slot>
</div>
</div>
</template>
<script>
const delta = 15
export default {
name: 'scrollBar',
data() {
return {
top: 0
}
},
methods: {
handleScroll(e) {
const eventDelta = e.wheelDelta || -e.deltaY * 3
const $container = this.$refs.scrollContainer
const $containerHeight = $container.offsetHeight
const $wrapper = this.$refs.scrollWrapper
const $wrapperHeight = $wrapper.offsetHeight
if (eventDelta > 0) {
this.top = Math.min(0, this.top + eventDelta)
} else {
if ($containerHeight - delta < $wrapperHeight) {
if (this.top < -($wrapperHeight - $containerHeight + delta)) {
this.top = this.top
} else {
this.top = Math.max(this.top + eventDelta, $containerHeight - $wrapperHeight - delta)
}
} else {
this.top = 0
}
}
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import '../../styles/variables.scss';
.scroll-container {
position: relative;
width: 100%;
height: 100%;
background-color: $menuBg;
.scroll-wrapper {
position: absolute;
width: 100%!important;
}
}
</style>

@ -0,0 +1,42 @@
<template>
<svg :class="svgClass" aria-hidden="true">
<use :xlink:href="iconName"></use>
</svg>
</template>
<script>
export default {
name: 'svg-icon',
props: {
iconClass: {
type: String,
required: true
},
className: {
type: String
}
},
computed: {
iconName() {
return `#icon-${this.iconClass}`
},
svgClass() {
if (this.className) {
return 'svg-icon ' + this.className
} else {
return 'svg-icon'
}
}
}
}
</script>
<style scoped>
.svg-icon {
width: 1.2em;
height: 1.2em;
vertical-align: -0.18em;
fill: currentColor;
overflow: hidden;
}
</style>

@ -0,0 +1,116 @@
<template>
<div class="upload-container">
<el-button icon='el-icon-upload' size="mini" :style="{background:color,borderColor:color}"
@click=" dialogVisible=true" type="primary">上传图片
</el-button>
<el-dialog append-to-body :visible.sync="dialogVisible">
<el-upload class="editor-slide-upload"
action="http://macro-oss.oss-cn-shenzhen.aliyuncs.com"
:data="dataObj"
:multiple="true"
:file-list="fileList"
:show-file-list="true"
list-type="picture-card"
:on-remove="handleRemove"
:on-success="handleSuccess"
:before-upload="beforeUpload">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="handleSubmit"> </el-button>
</el-dialog>
</div>
</template>
<script>
import {policy} from '@/api/oss'
export default {
name: 'editorSlideUpload',
props: {
color: {
type: String,
default: '#1890ff'
}
},
data() {
return {
dialogVisible: false,
listObj: {},
fileList: [],
dataObj: {
policy: '',
signature: '',
key: '',
ossaccessKeyId: '',
dir: '',
host: ''
}
}
},
methods: {
checkAllSuccess() {
return Object.keys(this.listObj).every(item => this.listObj[item].hasSuccess)
},
handleSubmit() {
const arr = Object.keys(this.listObj).map(v => this.listObj[v])
if (!this.checkAllSuccess()) {
this.$message('请等待所有图片上传成功 或 出现了网络问题,请刷新页面重新上传!')
return
}
console.log(arr);
this.$emit('successCBK', arr);
this.listObj = {};
this.fileList = [];
this.dialogVisible = false;
},
handleSuccess(response, file) {
const uid = file.uid;
const objKeyArr = Object.keys(this.listObj)
for (let i = 0, len = objKeyArr.length; i < len; i++) {
if (this.listObj[objKeyArr[i]].uid === uid) {
this.listObj[objKeyArr[i]].url = this.dataObj.host + '/' + this.dataObj.dir + '/' + file.name;
this.listObj[objKeyArr[i]].hasSuccess = true;
return
}
}
},
handleRemove(file) {
const uid = file.uid;
const objKeyArr = Object.keys(this.listObj);
for (let i = 0, len = objKeyArr.length; i < len; i++) {
if (this.listObj[objKeyArr[i]].uid === uid) {
delete this.listObj[objKeyArr[i]];
return
}
}
},
beforeUpload(file) {
const _self = this
const fileName = file.uid;
this.listObj[fileName] = {};
return new Promise((resolve, reject) => {
policy().then(response => {
_self.dataObj.policy = response.data.policy;
_self.dataObj.signature = response.data.signature;
_self.dataObj.ossaccessKeyId = response.data.accessKeyId;
_self.dataObj.key = response.data.dir + '/${filename}';
_self.dataObj.dir = response.data.dir;
_self.dataObj.host = response.data.host;
_self.listObj[fileName] = {hasSuccess: false, uid: file.uid, width: this.width, height: this.height};
resolve(true)
}).catch(err => {
console.log(err)
reject(false)
})
})
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.upload-container .editor-slide-upload{
margin-bottom: 20px;
}
</style>

@ -0,0 +1,163 @@
<template>
<div class="tinymce-container editor-container">
<textarea class="tinymce-textarea" :id="tinymceId"></textarea>
<div class="editor-custom-btn-container">
<editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK"></editorImage>
</div>
</div>
</template>
<script>
import editorImage from './components/editorImage'
import '../../../static/tinymce4.7.5/langs/zh_CN'
const plugins = [
`advlist anchor autolink autosave code codesample colorpicker colorpicker
contextmenu directionality emoticons fullscreen hr image imagetools importcss insertdatetime
legacyoutput link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace
spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount`
];
const toolbar = [
`bold italic underline strikethrough alignleft aligncenter
alignright outdent indent blockquote undo redo removeformat`,
`hr bullist numlist link image charmap preview anchor pagebreak
fullscreen insertdatetime media table forecolor backcolor`
];
export default {
name: 'tinymce',
components: {editorImage},
props: {
id: {
type: String
},
value: {
type: String,
default: ''
},
toolbar: {
type: Array,
required: false,
default() {
return []
}
},
menubar: {
default: 'file edit insert view format table'
},
height: {
type: Number,
required: false,
default: 360
},
width: {
type: Number,
required: false,
default: 720
}
},
data() {
return {
hasChange: false,
hasInit: false,
tinymceId: this.id || 'vue-tinymce-' + +new Date()
}
},
watch: {
value(val) {
if (!this.hasChange && this.hasInit) {
this.$nextTick(() => window.tinymce.get(this.tinymceId).setContent(val))
}
}
},
mounted() {
this.initTinymce()
},
activated() {
this.initTinymce()
},
deactivated() {
this.destroyTinymce()
},
methods: {
initTinymce() {
const _this = this
window.tinymce.init({
selector: `#${this.tinymceId}`,
width: this.width,
height: this.height,
language: 'zh_CN',
body_class: 'panel-body ',
object_resizing: false,
toolbar: this.toolbar.length > 0 ? this.toolbar : toolbar,
menubar: false,
plugins: plugins,
end_container_on_empty_block: true,
powerpaste_word_import: 'clean',
code_dialog_height: 450,
code_dialog_width: 1000,
advlist_bullet_styles: 'square',
advlist_number_styles: 'default',
imagetools_cors_hosts: ['www.tinymce.com', 'codepen.io'],
default_link_target: '_blank',
link_title: false,
init_instance_callback: editor => {
if (_this.value) {
editor.setContent(_this.value)
}
_this.hasInit = true
editor.on('NodeChange Change KeyUp SetContent', () => {
this.hasChange = true
this.$emit('input', editor.getContent())
})
}
})
},
destroyTinymce() {
if (window.tinymce.get(this.tinymceId)) {
window.tinymce.get(this.tinymceId).destroy()
}
},
setContent(value) {
window.tinymce.get(this.tinymceId).setContent(value)
},
getContent() {
window.tinymce.get(this.tinymceId).getContent()
},
imageSuccessCBK(arr) {
const _this = this
arr.forEach(v => {
window.tinymce.get(_this.tinymceId).insertContent(`<img class="wscnph" src="${v.url}" >`)
})
}
},
destroyed() {
this.destroyTinymce()
}
}
</script>
<style scoped>
.tinymce-container {
position: relative;
}
.tinymce-container >>> .mce-fullscreen {
z-index: 10000;
}
.tinymce-textarea {
visibility: hidden;
z-index: -1;
}
.editor-custom-btn-container {
position: absolute;
right: 10px;
top: 2px;
/*z-index: 2005;*/
}
.editor-upload-btn {
display: inline-block;
}
</style>

@ -0,0 +1,230 @@
tinymce.addI18n('zh_CN',{
"Cut": "\u526a\u5207",
"Heading 5": "\u6807\u98985",
"Header 2": "\u6807\u98982",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
"Heading 4": "\u6807\u98984",
"Div": "Div\u533a\u5757",
"Heading 2": "\u6807\u98982",
"Paste": "\u7c98\u8d34",
"Close": "\u5173\u95ed",
"Font Family": "\u5b57\u4f53",
"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
"Align right": "\u53f3\u5bf9\u9f50",
"New document": "\u65b0\u6587\u6863",
"Blockquote": "\u5f15\u7528",
"Numbered list": "\u7f16\u53f7\u5217\u8868",
"Heading 1": "\u6807\u98981",
"Headings": "\u6807\u9898",
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
"Formats": "\u683c\u5f0f",
"Headers": "\u6807\u9898",
"Select all": "\u5168\u9009",
"Header 3": "\u6807\u98983",
"Blocks": "\u533a\u5757",
"Undo": "\u64a4\u6d88",
"Strikethrough": "\u5220\u9664\u7ebf",
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
"Header 1": "\u6807\u98981",
"Superscript": "\u4e0a\u6807",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Font Sizes": "\u5b57\u53f7",
"Subscript": "\u4e0b\u6807",
"Header 6": "\u6807\u98986",
"Redo": "\u91cd\u590d",
"Paragraph": "\u6bb5\u843d",
"Ok": "\u786e\u5b9a",
"Bold": "\u7c97\u4f53",
"Code": "\u4ee3\u7801",
"Italic": "\u659c\u4f53",
"Align center": "\u5c45\u4e2d",
"Header 5": "\u6807\u98985",
"Heading 6": "\u6807\u98986",
"Heading 3": "\u6807\u98983",
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
"Header 4": "\u6807\u98984",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
"Underline": "\u4e0b\u5212\u7ebf",
"Cancel": "\u53d6\u6d88",
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
"Inline": "\u6587\u672c",
"Copy": "\u590d\u5236",
"Align left": "\u5de6\u5bf9\u9f50",
"Visual aids": "\u7f51\u683c\u7ebf",
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
"Square": "\u65b9\u5757",
"Default": "\u9ed8\u8ba4",
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
"Circle": "\u7a7a\u5fc3\u5706",
"Disc": "\u5b9e\u5fc3\u5706",
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
"Name": "\u540d\u79f0",
"Anchor": "\u951a\u70b9",
"Id": "\u6807\u8bc6\u7b26",
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
"Special character": "\u7279\u6b8a\u7b26\u53f7",
"Source code": "\u6e90\u4ee3\u7801",
"Language": "\u8bed\u8a00",
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u989c\u8272",
"Right to left": "\u4ece\u53f3\u5230\u5de6",
"Left to right": "\u4ece\u5de6\u5230\u53f3",
"Emoticons": "\u8868\u60c5",
"Robots": "\u673a\u5668\u4eba",
"Document properties": "\u6587\u6863\u5c5e\u6027",
"Title": "\u6807\u9898",
"Keywords": "\u5173\u952e\u8bcd",
"Encoding": "\u7f16\u7801",
"Description": "\u63cf\u8ff0",
"Author": "\u4f5c\u8005",
"Fullscreen": "\u5168\u5c4f",
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
"General": "\u666e\u901a",
"Advanced": "\u9ad8\u7ea7",
"Source": "\u5730\u5740",
"Border": "\u8fb9\u6846",
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
"Image description": "\u56fe\u7247\u63cf\u8ff0",
"Style": "\u6837\u5f0f",
"Dimensions": "\u5927\u5c0f",
"Insert image": "\u63d2\u5165\u56fe\u7247",
"Image": "\u56fe\u7247",
"Zoom in": "\u653e\u5927",
"Contrast": "\u5bf9\u6bd4\u5ea6",
"Back": "\u540e\u9000",
"Gamma": "\u4f3d\u9a6c\u503c",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
"Resize": "\u8c03\u6574\u5927\u5c0f",
"Sharpen": "\u9510\u5316",
"Zoom out": "\u7f29\u5c0f",
"Image options": "\u56fe\u7247\u9009\u9879",
"Apply": "\u5e94\u7528",
"Brightness": "\u4eae\u5ea6",
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
"Edit image": "\u7f16\u8f91\u56fe\u7247",
"Color levels": "\u989c\u8272\u5c42\u6b21",
"Crop": "\u88c1\u526a",
"Orientation": "\u65b9\u5411",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
"Invert": "\u53cd\u8f6c",
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
"Remove link": "\u5220\u9664\u94fe\u63a5",
"Url": "\u5730\u5740",
"Text to display": "\u663e\u793a\u6587\u5b57",
"Anchors": "\u951a\u70b9",
"Insert link": "\u63d2\u5165\u94fe\u63a5",
"Link": "\u94fe\u63a5",
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
"None": "\u65e0",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
"Target": "\u6253\u5f00\u65b9\u5f0f",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
"Media": "\u5a92\u4f53",
"Alternative source": "\u955c\u50cf",
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
"Insert video": "\u63d2\u5165\u89c6\u9891",
"Poster": "\u5c01\u9762",
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
"Embed": "\u5185\u5d4c",
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
"Page break": "\u5206\u9875\u7b26",
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
"Preview": "\u9884\u89c8",
"Print": "\u6253\u5370",
"Save": "\u4fdd\u5b58",
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
"Replace": "\u66ff\u6362",
"Next": "\u4e0b\u4e00\u4e2a",
"Whole words": "\u5168\u5b57\u5339\u914d",
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Replace with": "\u66ff\u6362\u4e3a",
"Find": "\u67e5\u627e",
"Replace all": "\u5168\u90e8\u66ff\u6362",
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
"Prev": "\u4e0a\u4e00\u4e2a",
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
"Finish": "\u5b8c\u6210",
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
"Ignore": "\u5ffd\u7565",
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
"Rows": "\u884c",
"Height": "\u9ad8",
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
"Border color": "\u8fb9\u6846\u989c\u8272",
"Column group": "\u5217\u7ec4",
"Row": "\u884c",
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
"Row type": "\u884c\u7c7b\u578b",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Body": "\u8868\u4f53",
"Caption": "\u6807\u9898",
"Footer": "\u8868\u5c3e",
"Delete row": "\u5220\u9664\u884c",
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
"Scope": "\u8303\u56f4",
"Delete table": "\u5220\u9664\u8868\u683c",
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
"Top": "\u9876\u90e8\u5bf9\u9f50",
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
"Column": "\u5217",
"Row group": "\u884c\u7ec4",
"Cell": "\u5355\u5143\u683c",
"Middle": "\u5782\u76f4\u5c45\u4e2d",
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
"Copy row": "\u590d\u5236\u884c",
"Row properties": "\u884c\u5c5e\u6027",
"Table properties": "\u8868\u683c\u5c5e\u6027",
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
"V Align": "\u5782\u76f4\u5bf9\u9f50",
"Header": "\u8868\u5934",
"Right": "\u53f3\u5bf9\u9f50",
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
"Cols": "\u5217",
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
"Width": "\u5bbd",
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
"Left": "\u5de6\u5bf9\u9f50",
"Cut row": "\u526a\u5207\u884c",
"Delete column": "\u5220\u9664\u5217",
"Center": "\u5c45\u4e2d",
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
"Insert template": "\u63d2\u5165\u6a21\u677f",
"Templates": "\u6a21\u677f",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u81ea\u5b9a\u4e49...",
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
"No color": "\u65e0",
"Text color": "\u6587\u5b57\u989c\u8272",
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
"Words: {0}": "\u5b57\u6570\uff1a{0}",
"Insert": "\u63d2\u5165",
"File": "\u6587\u4ef6",
"Edit": "\u7f16\u8f91",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
"Tools": "\u5de5\u5177",
"View": "\u89c6\u56fe",
"Table": "\u8868\u683c",
"Format": "\u683c\u5f0f"
});

@ -0,0 +1,109 @@
<template> 
<div>
<el-upload
action="http://macro-oss.oss-cn-shenzhen.aliyuncs.com"
:data="dataObj"
list-type="picture-card"
:file-list="fileList"
:before-upload="beforeUpload"
:on-remove="handleRemove"
:on-success="handleUploadSuccess"
:on-preview="handlePreview"
:limit="maxCount"
:on-exceed="handleExceed"
>
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</template>
<script>
import {policy} from '@/api/oss'
export default {
name: 'multiUpload',
props: {
//
value: Array,
//
maxCount:{
type:Number,
default:5
}
},
data() {
return {
dataObj: {
policy: '',
signature: '',
key: '',
ossaccessKeyId: '',
dir: '',
host: ''
},
dialogVisible: false,
dialogImageUrl:null
};
},
computed: {
fileList() {
let fileList=[];
for(let i=0;i<this.value.length;i++){
fileList.push({url:this.value[i]});
}
return fileList;
}
},
methods: {
emitInput(fileList) {
let value=[];
for(let i=0;i<fileList.length;i++){
value.push(fileList[i].url);
}
this.$emit('input', value)
},
handleRemove(file, fileList) {
this.emitInput(fileList);
},
handlePreview(file) {
this.dialogVisible = true;
this.dialogImageUrl=file.url;
},
beforeUpload(file) {
let _self = this;
return new Promise((resolve, reject) => {
policy().then(response => {
_self.dataObj.policy = response.data.policy;
_self.dataObj.signature = response.data.signature;
_self.dataObj.ossaccessKeyId = response.data.accessKeyId;
_self.dataObj.key = response.data.dir + '/${filename}';
_self.dataObj.dir = response.data.dir;
_self.dataObj.host = response.data.host;
resolve(true)
}).catch(err => {
console.log(err)
reject(false)
})
})
},
handleUploadSuccess(res, file) {
this.fileList.push({url: file.name,url:this.dataObj.host + '/' + this.dataObj.dir + '/' + file.name});
this.emitInput(this.fileList);
},
handleExceed(files, fileList) {
this.$message({
message: '最多只能上传'+this.maxCount+'张图片',
type: 'warning',
duration:1000
});
},
}
}
</script>
<style>
</style>

@ -0,0 +1,107 @@
<template> 
<div>
<el-upload
action="http://macro-oss.oss-cn-shenzhen.aliyuncs.com"
:data="dataObj"
list-type="picture"
:multiple="false" :show-file-list="showFileList"
:file-list="fileList"
:before-upload="beforeUpload"
:on-remove="handleRemove"
:on-success="handleUploadSuccess"
:on-preview="handlePreview">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件且不超过10MB</div>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="fileList[0].url" alt="">
</el-dialog>
</div>
</template>
<script>
import {policy} from '@/api/oss'
export default {
name: 'singleUpload',
props: {
value: String
},
computed: {
imageUrl() {
return this.value;
},
imageName() {
if (this.value != null && this.value !== '') {
return this.value.substr(this.value.lastIndexOf("/") + 1);
} else {
return null;
}
},
fileList() {
return [{
name: this.imageName,
url: this.imageUrl
}]
},
showFileList: {
get: function () {
return this.value !== null && this.value !== ''&& this.value!==undefined;
},
set: function (newValue) {
}
}
},
data() {
return {
dataObj: {
policy: '',
signature: '',
key: '',
ossaccessKeyId: '',
dir: '',
host: ''
},
dialogVisible: false
};
},
methods: {
emitInput(val) {
this.$emit('input', val)
},
handleRemove(file, fileList) {
this.emitInput('');
},
handlePreview(file) {
this.dialogVisible = true;
},
beforeUpload(file) {
let _self = this;
return new Promise((resolve, reject) => {
policy().then(response => {
_self.dataObj.policy = response.data.policy;
_self.dataObj.signature = response.data.signature;
_self.dataObj.ossaccessKeyId = response.data.accessKeyId;
_self.dataObj.key = response.data.dir + '/${filename}';
_self.dataObj.dir = response.data.dir;
_self.dataObj.host = response.data.host;
resolve(true)
}).catch(err => {
console.log(err)
reject(false)
})
})
},
handleUploadSuccess(res, file) {
this.showFileList = true;
this.fileList.pop();
this.fileList.push({name: file.name, url: this.dataObj.host + '/' + this.dataObj.dir + '/' + file.name});
this.emitInput(this.fileList[0].url);
}
}
}
</script>
<style>
</style>

@ -0,0 +1,9 @@
import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg组件
// register globally
Vue.component('svg-icon', SvgIcon)
const requireAll = requireContext => requireContext.keys().map(requireContext)
const req = require.context('./svg', false, /\.svg$/)
requireAll(req)

@ -0,0 +1 @@
<?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"><svg t="1511504199105" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1815" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M770.56 460.8h250.88C998.4 220.16 803.84 25.6 563.2 2.56v250.88c104.96 20.48 186.88 102.4 207.36 207.36z m0 0M460.8 253.44V2.56C220.16 25.6 25.6 220.16 2.56 460.8h250.88c20.48-104.96 102.4-186.88 207.36-207.36z m0 0M563.2 770.56v250.88c243.2-23.04 435.2-217.6 460.8-460.8H773.12C750.08 668.16 668.16 750.08 563.2 770.56z m0 0M253.44 563.2H2.56c23.04 243.2 217.6 435.2 460.8 460.8V773.12C355.84 750.08 273.92 668.16 253.44 563.2z m0 0" fill="" p-id="1816"></path></svg>

After

Width:  |  Height:  |  Size: 852 B

@ -0,0 +1 @@
<?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"><svg t="1503993826520" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7878" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M941.677063 391.710356c9.337669-14.005992 6.224772-32.68133-6.224772-43.575447-14.005992-10.894118-32.68133-7.78122-43.575447 6.224771-1.556449 1.556449-174.300768 205.426673-379.727441 205.426673-199.200878 0-379.727441-205.426673-381.28389-206.982098-10.894118-12.450567-31.124881-14.005992-43.575448-3.112898-12.450567 10.894118-14.005992 31.124881-3.112897 43.575448 3.112897 4.668323 40.46255 46.687322 99.600439 93.375667l-79.369676 82.48155c-12.450567 12.450567-10.894118 32.68133 1.556449 43.575448 3.112897 6.224772 10.894118 9.337669 18.675338 9.337669 7.78122 0 15.562441-3.112897 21.787213-9.337669l85.594447-88.706321c40.46255 28.013007 88.706321 54.469566 141.619438 73.14388L340.959485 707.631586c-4.668323 17.118889 4.669346 34.237779 21.787213 38.906101h9.337669c14.005992 0 26.456558-9.337669 29.568432-23.343661l32.68133-110.494556c24.90011 4.668323 51.356668 7.78122 77.813227 7.78122s52.913117-3.112897 77.813227-7.78122l32.68133 108.938108c3.112897 14.005992 17.118889 23.343661 29.569456 23.343661 3.112897 0 6.224772 0 7.78122-1.556449 17.118889-4.669346 26.456558-21.787212 21.788236-38.906102l-32.68133-108.938108c52.913117-18.675338 101.156888-45.131897 141.619438-73.14388l84.037998 87.150896c6.224772 6.224772 14.005992 9.337669 21.787212 9.337669 7.78122 0 15.562441-3.112897 21.787212-9.337669 12.450567-12.450567 12.450567-31.124881 1.556449-43.575448l-79.369675-82.48155c63.808258-46.688345 101.158934-91.820242 101.158934-91.820242z" p-id="7879"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1 @@
<?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"><svg t="1511504319223" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3230" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M942.827259 80.3367c-11.42419-11.406794-26.41051-17.117866-41.377386-17.117866-14.985296 0-29.952172 5.711072-41.358967 17.117866L719.392444 221.014696l-19.441794 19.441794L681.577187 258.832 569.516971 370.909611 375.99749 564.411697l0 0.019443 0 84.372619 81.145112 0 0.010233 0 95.418186-95.435583 213.398228-213.400275 3.14155-3.14155-0.019443 0 9.979282-9.977235 0 0L942.827259 163.073052C965.697129 140.259464 965.697129 103.186104 942.827259 80.3367z" p-id="3231"></path><path d="M793.542234 367.521444 580.14196 580.939115 484.72582 676.376745 473.299583 687.800935 457.152834 687.800935 375.99749 687.800935 337.000314 687.800935 337.000314 648.803759 337.000314 564.411697 337.000314 548.264948 348.424504 536.838711 541.943986 343.338672 654.004201 231.259014 665.428392 219.834824 64.020082 219.834824 64.020082 960.781166 804.966425 960.781166 804.966425 356.116697 796.607036 364.475062Z" p-id="3232"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1 @@
<?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"><svg t="1526283460904" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3665" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"></style></defs><path d="M563.197497 0 460.802503 0 0.012259 486.388227c0 0 0.901006 102.396016 51.200051 102.396016s76.797012 0 76.797012 0 0 232.496449 0 332.816677c0 100.300818 102.397038 102.399081 102.397038 102.399081l204.79714 0c0 0 0-272.419617 0-358.416702 0-25.647017 25.600026-25.600026 25.600026-25.600026l102.394994 0c0 0 25.601047 0.851972 25.601047 25.600026 0 92.198911 0 358.416702 0 358.416702s99.647027 0 204.795097 0c105.147048 0 102.398059-102.399081 102.398059-102.399081L895.992721 563.185239c0 0 27.19875 0 76.799055 0 49.59724 0 51.195965-76.79599 51.195965-76.79599L563.197497 0z" p-id="3666"></path></svg>

After

Width:  |  Height:  |  Size: 993 B

@ -0,0 +1 @@
<?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"><svg t="1542852993843" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2043" xmlns:xlink="http://www.w3.org/1999/xlink" width="54" height="54"><defs><style type="text/css"></style></defs><path d="M825.6 554.666667c-64 0-121.6-38.4-155.733333-89.6C633.6 516.266667 576 554.666667 512 554.666667s-121.6-38.4-155.733333-89.6C320 516.266667 264.533333 554.666667 198.4 554.666667 89.6 554.666667 0 465.066667 0 356.266667v-8.533334L151.466667 0h721.066666L1024 345.6v8.533333c0 110.933333-89.6 200.533333-198.4 200.533334z m-200.533333-219.733334h85.333333c0 61.866667 51.2 134.4 113.066667 134.4 59.733333 0 108.8-46.933333 113.066666-104.533333L817.066667 85.333333H206.933333L85.333333 364.8c4.266667 57.6 53.333333 104.533333 113.066667 104.533333 64 0 113.066667-74.666667 113.066667-134.4h85.333333c0 61.866667 51.2 134.4 113.066667 134.4 66.133333 0 115.2-74.666667 115.2-134.4zM810.666667 1021.866667H213.333333c-83.2 0-149.333333-64-149.333333-142.933334V595.2h85.333333v283.733333c0 32 27.733333 57.6 64 57.6h597.333334c34.133333 0 64-25.6 64-57.6V595.2h85.333333v283.733333c0 78.933333-66.133333 142.933333-149.333333 142.933334z" p-id="2044"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1 @@
<?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"><svg t="1540454363495" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1978" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M789 112.1c8.1 0 15.9 1.6 23.2 4.8 11.7 4.6 20.9 11.8 27.8 21.7s10.3 20.8 10.3 32.8v681.5c0 12-3.4 22.9-10.3 32.8-6.9 9.9-16.1 17.1-27.8 21.7-6.7 2.8-14.5 4.2-23.2 4.2-16.9 0-31.6-5.7-43.9-16.9l-233-224.3-233.2 224.1C266.2 906.2 251.5 912 235 912c-8.1 0-15.9-1.6-23.2-4.8-11.7-4.6-20.9-11.8-27.8-21.7-6.9-9.9-10.3-20.8-10.3-32.8V171.3c0-12 3.4-22.9 10.3-32.8 6.9-9.9 16.1-17.1 27.8-21.7 7.4-3.2 15.1-4.8 23.2-4.8h554v0.1z" p-id="1979"></path></svg>

After

Width:  |  Height:  |  Size: 832 B

@ -0,0 +1 @@
<?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"><svg t="1539332319502" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8983" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M348.661 154.658c18.25 0 33.169-14.786 33.169-33.169v-11.056h198.883v11.056c0 18.25 14.786 33.169 33.169 33.169 18.25 0 33.169-14.786 33.169-33.169v-88.319c0-18.25-14.786-33.169-33.169-33.169-18.25 0-33.169 14.786-33.169 33.169v11.056h-198.883v-11.056c0-18.25-14.786-33.169-33.169-33.169-18.25 0-33.169 14.786-33.169 33.169v88.319c0 18.25 14.786 33.169 33.169 33.169v0z" p-id="8984"></path><path d="M430.319 887.849h-210.473c-44.359 0-80.459-37.033-80.459-82.457v-612.636c0-45.425 36.1-82.457 80.459-82.457 18.25 0 33.169-14.786 33.169-33.169s-14.786-33.169-33.169-33.169c-80.859 0-146.798 66.739-146.798 148.796v612.636c0 82.058 65.806 148.796 146.798 148.796h210.473c18.25 0 33.169-14.786 33.169-33.169 0-18.25-14.92-33.169-33.169-33.169v0z" p-id="8985"></path><path d="M742.565 43.96c-18.25 0-33.169 14.786-33.169 33.169 0 18.25 14.786 33.169 33.169 33.169 44.359 0 80.459 37.033 80.459 82.457v325.034c0 18.25 14.786 33.169 33.169 33.169 18.25 0 33.169-14.786 33.169-33.169v-325.034c0-82.058-65.806-148.796-146.798-148.796v0z" p-id="8986"></path><path d="M658.776 317.041h-355.14c-18.25 0-33.303-14.92-33.303-33.303v0c0-18.25 14.92-33.303 33.303-33.303h355.006c18.383 0 33.303 14.92 33.303 33.303v0c0.133 18.25-14.92 33.303-33.169 33.303z" p-id="8987"></path><path d="M658.776 466.237h-355.14c-18.25 0-33.303-14.92-33.303-33.303v0c0-18.25 14.92-33.303 33.303-33.303h355.006c18.383 0 33.303 15.053 33.303 33.303v0c0.133 18.25-14.92 33.303-33.169 33.303z" p-id="8988"></path><path d="M466.153 643.407h-171.709c-13.188 0-24.111-10.79-24.111-24.111v-18.516c0-13.188 10.79-24.111 24.111-24.111h171.709c13.188 0 24.111 10.79 24.111 24.111v18.516c0 13.321-10.79 24.111-24.111 24.111z" p-id="8989"></path><path d="M946.244 748.244c-1.465-26.242 10.79-52.485 36.5-77.928 6.261-6.261 7.327-15.985 2.531-23.312-31.837-48.755-38.365-59.945-39.43-62.076-0.799-1.865-1.865-3.463-3.197-5.062-4.929-5.462-12.522-7.593-19.582-5.328-0.533 0.133-54.483 17.184-95.912-6.261-21.847-12.389-36.5-34.368-43.826-65.673-1.998-8.659-9.858-14.653-18.783-14.387l-78.195 2.931c-9.058 0.4-16.651 7.193-17.717 16.252 0 0.4-6.927 47.157-41.828 71.268-22.912 15.852-53.551 19.316-91.383 10.257-8.126-1.865-16.518 1.865-20.648 9.192-34.235 62.343-37.965 69.003-38.365 69.669-2.131 3.597-2.931 7.859-2.398 12.122 0.799 5.328 3.73 9.991 8.259 12.921 0.4 0.266 38.098 25.31 42.494 64.607 2.931 26.775-10.124 55.149-38.898 84.589-6.128 6.261-7.060 15.985-2.265 23.312l44.492 67.271c5.062 7.726 15.053 10.524 23.445 6.527 0.4-0.133 41.562-19.049 79.26-2.531 25.443 11.056 44.492 36.1 56.748 74.465 2.531 7.993 10.124 13.188 18.383 12.921l79.127-3.064c8.925-0.4 16.252-6.927 17.717-15.719 0.133-0.533 8.126-48.222 44.359-72.333 22.646-15.053 52.219-18.25 88.185-9.458 8.259 1.998 16.785-1.865 20.781-9.325 30.638-57.147 35.168-65.406 35.834-66.472 1.998-3.33 2.931-7.193 2.664-11.056-0.4-5.195-2.931-9.858-6.927-13.055-0.533-0.266-39.164-32.237-41.429-75.264v0zM946.777 595.984c-0.266 1.199-0.666 2.531-1.199 3.863 0.533-1.199 0.932-2.531 1.199-3.863v0zM947.177 591.722c0 1.199 0 2.664-0.4 4.13 0.4-1.465 0.4-2.797 0.4-4.13v0zM929.859 884.252c-40.496-7.193-75.397-1.199-103.771 17.85-35.301 23.578-50.62 61.277-56.615 82.191l-51.286 1.998c-15.985-41.695-40.496-69.936-72.999-83.923-36.899-15.985-74.065-8.792-94.313-2.531l-28.374-42.894c29.706-34.235 42.894-69.136 38.898-103.771-4.396-38.764-29.173-66.472-45.292-80.726 4.929-8.792 12.522-22.646 24.378-44.359 42.361 7.46 78.461 1.199 107.235-18.783 34.235-23.711 48.622-60.611 54.217-81.525l49.022-1.865c10.923 34.102 30.239 59.146 57.68 74.731 40.496 22.912 87.386 17.85 110.831 13.055 5.595 9.325 14.12 22.379 26.509 41.429-26.376 30.106-38.764 62.076-36.899 95.246 2.265 42.761 27.974 75.397 43.56 91.516-4.529 8.259-11.589 21.447-22.779 42.361v0z" p-id="8990"></path></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -0,0 +1 @@
<?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"><svg t="1539332248248" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7595" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M984.1664 326.2464v-2.4576a27.8528 27.8528 0 0 0-0.8192-3.8912v-1.3312L908.3904 98.7136A70.144 70.144 0 0 0 841.9328 51.2H182.0672a70.144 70.144 0 0 0-66.4576 47.616L40.96 318.5664v1.3312a27.8528 27.8528 0 0 0-0.8192 3.8912v621.056A28.0576 28.0576 0 0 0 67.6864 972.8h888.6272a28.0576 28.0576 0 0 0 28.0576-28.0576V327.68s-0.1024-1.024-0.2048-1.4336zM168.7552 116.6336a14.0288 14.0288 0 0 1 13.312-9.5232h659.8656a14.0288 14.0288 0 0 1 13.312 9.5232l61.952 182.784H106.8032z m759.5008 800.1536H95.744v-561.152h832.512z" fill="" p-id="7596"></path><path d="M399.36 756.5312A28.0576 28.0576 0 1 0 438.8864 716.8l-52.5312-52.5312h317.44a28.0576 28.0576 0 1 0 0-56.1152H389.12l52.5312-52.6336a28.0576 28.0576 0 0 0-39.6288-39.6288l-102.4 102.4a28.0576 28.0576 0 0 0 0 39.6288z" fill="" p-id="7597"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 4.9 KiB

@ -0,0 +1 @@
<?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"><svg t="1539331790189" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2148" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M260.654545 67.490909v51.2h-6.981818c-18.618182 0-37.236364 0-55.854545 2.327273-46.545455 4.654545-83.781818 44.218182-86.109091 93.090909v628.363636c0 20.945455 2.327273 39.563636 11.636364 58.181818 23.272727 48.872727 62.836364 74.472727 116.363636 74.472728h546.909091c58.181818 0 104.727273-32.581818 121.018182-86.109091 4.654545-13.963636 6.981818-27.927273 6.981818-41.890909V225.745455c0-46.545455-25.6-83.781818-67.490909-97.745455-11.636364-4.654545-23.272727-4.654545-34.909091-4.654545h-48.872727V74.472727c51.2-6.981818 100.072727-6.981818 144.290909 27.927273 34.909091 27.927273 53.527273 62.836364 55.854545 107.054545v633.018182c0 55.854545-18.618182 102.4-60.509091 137.309091-32.581818 30.254545-72.145455 41.890909-116.363636 44.218182H239.709091c-76.8 0-130.327273-37.236364-162.909091-104.727273-11.636364-23.272727-13.963636-46.545455-13.963636-72.145454V225.745455C62.836364 167.563636 88.436364 123.345455 139.636364 93.090909c11.636364-13.963636 27.927273-18.618182 46.545454-20.945454 23.272727-2.327273 48.872727-2.327273 74.472727-4.654546z" p-id="2149"></path><path d="M372.363636 0h276.945455v46.545455h-116.363636v46.545454h93.090909v46.545455h-232.727273V93.090909h93.090909V46.545455h-116.363636c2.327273-16.290909 2.327273-30.254545 2.327272-46.545455zM274.618182 365.381818v-41.890909s2.327273-2.327273 4.654545-2.327273h474.763637v46.545455c-162.909091-2.327273-321.163636-2.327273-479.418182-2.327273zM274.618182 523.636364v-44.218182h477.090909v44.218182H274.618182zM749.381818 640v44.218182H272.290909v-44.218182h477.090909z" p-id="2150"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1 @@
<?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"><svg t="1503994678729" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9229" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M780.8 354.579692 665.6 354.579692 665.6 311.689846c0-72.310154-19.849846-193.299692-153.6-193.299692-138.870154 0-153.6 135.049846-153.6 193.299692l0 42.889846L243.2 354.579692 243.2 311.689846C243.2 122.249846 348.790154 0 512 0s268.8 122.249846 268.8 311.689846L780.8 354.579692zM588.8 669.420308C588.8 625.900308 554.220308 590.769231 512 590.769231s-76.8 35.131077-76.8 78.651077c0 29.459692 15.399385 54.468923 38.439385 67.820308l0 89.639385c0 21.740308 17.250462 39.699692 38.4 39.699692s38.4-17.959385 38.4-39.699692l0-89.639385C573.44 723.889231 588.8 698.88 588.8 669.420308zM896 512l0 393.609846c0 65.260308-51.869538 118.390154-115.2 118.390154L243.2 1024c-63.291077 0-115.2-53.129846-115.2-118.390154L128 512c0-65.220923 51.869538-118.390154 115.2-118.390154l537.6 0C844.130462 393.609846 896 446.779077 896 512z" p-id="9230"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?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"><svg t="1526283646652" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5320" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"></style></defs><path d="M885.9 352l0 532.7L139.2 884.7 139.2 139l634.7 0 0-75.2L120.4 63.8c-31.1 0-56.4 25.3-56.4 56.4l0 783.3c0 31.1 25.3 56.4 56.4 56.4l784.3 0c31.1 0 56.4-25.3 56.4-56.4L961.1 352 885.9 352 885.9 352zM885.9 352" p-id="5321"></path><path d="M773.6 541.7c8.3-8.3 12.8-19.3 12.8-30.9 0-11.7-4.6-22.7-12.8-30.9-8.3-8.3-19.3-12.8-30.9-12.8L555 467.1 555 279.3c0-11.7-4.6-22.7-12.8-30.9-8.3-8.3-19.3-12.8-30.9-12.8-11.7 0-22.7 4.6-30.9 12.8-8.3 8.3-12.8 19.3-12.8 30.9L467.6 467.1 279.7 467.1c-11.7 0-22.7 4.6-30.9 12.8-8.3 8.3-12.8 19.3-12.8 30.9 0 11.7 4.6 22.7 12.8 30.9 8.3 8.3 19.3 12.8 30.9 12.8l187.8 0 0 187.8c0 24.1 19.6 43.8 43.8 43.8 11.7 0 22.7-4.6 30.9-12.8 8.3-8.3 12.8-19.3 12.8-30.9L555 554.6l187.8 0C754.4 554.6 765.4 550 773.6 541.7L773.6 541.7zM773.6 541.7" p-id="5322"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1 @@
<?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"><svg t="1526284482639" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3467" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"></style></defs><path d="M512 0C229.230204 0 0 229.230204 0 512 0 794.769796 229.230204 1024 512 1024 794.769796 1024 1024 794.769796 1024 512 1024 229.230204 794.769796 0 512 0ZM512 953.37931C268.232934 953.37931 70.62069 755.767066 70.62069 512 70.62069 268.232934 268.232934 70.62069 512 70.62069 755.767066 70.62069 953.37931 268.232934 953.37931 512 953.37931 755.767066 755.767066 953.37931 512 953.37931ZM317.793103 512C317.793103 482.747957 294.079629 459.034483 264.827586 459.034483 235.575543 459.034483 211.862069 482.747957 211.862069 512 211.862069 541.252043 235.575543 564.965517 264.827586 564.965517 294.079629 564.965517 317.793103 541.252043 317.793103 512ZM794.482759 547.310345C813.984115 547.310345 829.793103 531.501356 829.793103 512 829.793103 492.498644 813.984115 476.689655 794.482759 476.689655L406.068966 476.689655C386.567609 476.689655 370.758621 492.498644 370.758621 512 370.758621 531.501356 386.567609 547.310345 406.068966 547.310345L794.482759 547.310345ZM317.793103 335.448276C317.793103 306.196233 294.079629 282.482759 264.827586 282.482759 235.575543 282.482759 211.862069 306.196233 211.862069 335.448276 211.862069 364.700319 235.575543 388.413793 264.827586 388.413793 294.079629 388.413793 317.793103 364.700319 317.793103 335.448276ZM794.482759 370.758621C813.984115 370.758621 829.793103 354.949632 829.793103 335.448276 829.793103 315.94692 813.984115 300.137931 794.482759 300.137931L406.068966 300.137931C386.567609 300.137931 370.758621 315.94692 370.758621 335.448276 370.758621 354.949632 386.567609 370.758621 406.068966 370.758621L794.482759 370.758621ZM317.793103 688.551724C317.793103 659.299681 294.079629 635.586207 264.827586 635.586207 235.575543 635.586207 211.862069 659.299681 211.862069 688.551724 211.862069 717.803767 235.575543 741.517241 264.827586 741.517241 294.079629 741.517241 317.793103 717.803767 317.793103 688.551724ZM794.482759 723.862069C813.984115 723.862069 829.793103 708.05308 829.793103 688.551724 829.793103 669.050368 813.984115 653.241379 794.482759 653.241379L406.068966 653.241379C386.567609 653.241379 370.758621 669.050368 370.758621 688.551724 370.758621 708.05308 386.567609 723.862069 406.068966 723.862069L794.482759 723.862069Z" p-id="3468"></path></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1 @@
<?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"><svg t="1526283705574" class="icon" style="" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6019" xmlns:xlink="http://www.w3.org/1999/xlink" width="128.125" height="128"><defs><style type="text/css"></style></defs><path d="M959.725 0 538.825 0c-17.1 0-33.4 6.8-45.5 18.8L18.825 493.3c-25.1 25.1-25.1 65.8 0 91l420.9 420.9c12.6 12.6 29 18.8 45.5 18.8 16.5 0 32.9-6.3 45.5-18.8l474.5-474.5c12.1-12.1 18.8-28.4 18.8-45.5L1024.025 64.3C1024.025 28.8 995.225 0 959.725 0zM960.025 485.2c0 0.1 0 0.2-0.1 0.2L485.425 959.9c0 0-0.1 0.1-0.1 0.1 0 0-0.1 0-0.1 0-0.1 0-0.1 0-0.1 0 0 0 0 0 0 0 0 0 0 0-0.1-0.1L64.125 539c0 0-0.1-0.1-0.1-0.1 0-0.1 0-0.2 0-0.3 0 0 0 0 0.1-0.1L538.625 64.1c0.1-0.1 0.1-0.1 0.2-0.1l420.9 0c0.1 0 0.1 0 0.1 0 0 0 0 0 0 0 0.1 0 0.2 0.2 0.2 0.2 0 0 0 0 0 0.1L960.025 485.2z" p-id="6020"></path><path d="M704.025 192c-70.7 0-128 57.3-128 128s57.3 128 128 128 128-57.3 128-128S774.725 192 704.025 192zM704.025 384c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64S739.325 384 704.025 384z" p-id="6021"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1 @@
<?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"><svg t="1526284607045" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4194" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"></style></defs><path d="M490.479359 397.322168c0 52.616358-42.657542 95.2739-95.274924 95.2739L159.661861 492.596068c-52.617381 0-95.2739-42.658565-95.2739-95.2739L64.387961 161.779593c0-52.617381 42.657542-95.274924 95.2739-95.274924L395.204435 66.50467c52.617381 0 95.274924 42.657542 95.274924 95.274924L490.479359 397.322168zM435.500187 161.779593c0-22.255887-18.040888-40.295751-40.295751-40.295751L159.661861 121.483842c-22.254863 0-40.294728 18.039865-40.294728 40.295751L119.367133 397.322168c0 22.254863 18.039865 40.294728 40.294728 40.294728L395.204435 437.616896c22.254863 0 40.295751-18.039865 40.295751-40.294728L435.500187 161.779593z" p-id="4195"></path><path d="M174.346305 286.423405c-7.597025 0-13.745049-6.148024-13.745049-13.746072l0-24.765033c0-38.066991 25.39539-71.449285 60.321854-71.449285l85.637426 0c7.583722 0 13.745049 6.148024 13.745049 13.745049 0 7.597025-6.161327 13.745049-13.745049 13.745049l-85.637426 0c-21.435195 0-32.831756 23.63735-32.831756 43.959188l0 24.765033C188.091354 280.275381 181.931051 286.423405 174.346305 286.423405z" p-id="4196"></path><path d="M169.112094 333.564052c-3.583618 0-7.154957-1.51654-9.758248-3.986801-2.482541-2.604314-3.986801-6.187933-3.986801-9.759271 0-3.570315 1.503237-7.140631 3.986801-9.758248 5.221932-5.087878 14.282285-5.087878 19.516496 0 2.469238 2.617617 3.986801 6.187933 3.986801 9.758248 0 3.570315-1.51654 7.154957-3.986801 9.624195C176.252725 332.047512 172.682409 333.564052 169.112094 333.564052z" p-id="4197"></path><path d="M957.806927 397.322168c0 52.616358-42.659589 95.2739-95.275947 95.2739L626.989429 492.596068c-52.618405 0-95.274924-42.658565-95.274924-95.2739L531.714506 161.779593c0-52.617381 42.657542-95.274924 95.274924-95.274924l235.541551 0c52.617381 0 95.275947 42.657542 95.275947 95.274924L957.806927 397.322168zM902.826731 161.779593c0-22.255887-18.039865-40.295751-40.295751-40.295751L626.989429 121.483842c-22.254863 0-40.295751 18.039865-40.295751 40.295751L586.693678 397.322168c0 22.254863 18.040888 40.294728 40.295751 40.294728l235.541551 0c22.255887 0 40.295751-18.039865 40.295751-40.294728L902.826731 161.779593z" p-id="4198"></path><path d="M490.479359 864.646666c0 52.617381-42.657542 95.274924-95.274924 95.274924L159.661861 959.921589c-52.617381 0-95.2739-42.658565-95.2739-95.274924L64.387961 629.106138c0-52.617381 42.657542-95.2739 95.2739-95.2739L395.204435 533.832238c52.617381 0 95.274924 42.657542 95.274924 95.2739L490.479359 864.646666zM435.500187 629.106138c0-22.254863-18.040888-40.295751-40.295751-40.295751L159.661861 588.810387c-22.254863 0-40.294728 18.040888-40.294728 40.295751l0 235.541551c0 22.254863 18.039865 40.296775 40.294728 40.296775L395.204435 904.944464c22.254863 0 40.295751-18.041912 40.295751-40.296775L435.500187 629.106138z" p-id="4199"></path><path d="M957.806927 864.646666c0 52.617381-42.659589 95.274924-95.275947 95.274924L626.989429 959.921589c-52.618405 0-95.274924-42.658565-95.274924-95.274924L531.714506 629.106138c0-52.617381 42.657542-95.2739 95.274924-95.2739l235.541551 0c52.617381 0 95.275947 42.657542 95.275947 95.2739L957.806927 864.646666zM902.826731 629.106138c0-22.254863-18.039865-40.295751-40.295751-40.295751L626.989429 588.810387c-22.254863 0-40.295751 18.040888-40.295751 40.295751l0 235.541551c0 22.254863 18.040888 40.296775 40.295751 40.296775l235.541551 0c22.255887 0 40.295751-18.041912 40.295751-40.296775L902.826731 629.106138z" p-id="4200"></path></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -0,0 +1 @@
<?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"><svg t="1526284445051" class="icon" style="" viewBox="0 0 1045 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2364" xmlns:xlink="http://www.w3.org/1999/xlink" width="130.625" height="128"><defs><style type="text/css"></style></defs><path d="M1031.975006 202.254269 501.464325 753.980748 308.593431 753.980748 308.593431 561.109854 841.032821 11.312084C856.115325-3.770421 880.53278-3.770421 895.615284 11.312084L1031.975006 147.671806C1047.05751 162.754309 1047.05751 187.171764 1031.975006 202.254269ZM868.304766 93.127916 385.741788 599.684033 385.741788 676.83239 462.890146 676.83239 950.159172 174.982324 868.304766 93.127916ZM540.038504 98.181134 77.148358 98.181134 77.148358 946.813068 925.780291 946.813068 925.780291 483.922922C925.780291 455.956643 933.958018 450.170516 961.924298 450.170516 989.929151 450.170516 1002.928649 455.956643 1002.928649 483.922922L1002.928649 946.813068C1002.928649 984.075724 963.042948 1023.961426 925.780291 1023.961426L77.148358 1023.961426C39.885701 1023.961426 0 984.075724 0 946.813068L0 98.181134C0 60.879903 39.885701 21.032776 77.148358 21.032776L540.038504 21.032776C568.004783 21.032776 573.79091 34.070849 573.79091 62.037129 573.79091 89.964834 568.004783 98.181134 540.038504 98.181134Z" p-id="2365"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1 @@
<?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"><svg t="1539331929446" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4013" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M896.021502 255.956996 607.897867 255.956996c-17.717453 0-31.994625-14.277171-31.994625-31.994625 0-17.717453 14.277171-31.994625 31.994625-31.994625l287.951621 0c17.717453 0 31.994625 14.277171 31.994625 31.994625C928.016126 241.679825 913.738955 255.956996 896.021502 255.956996zM896.021502 415.930119 607.897867 415.930119c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l287.951621 0c17.717453 0 31.994625 14.277171 31.994625 31.994625S913.738955 415.930119 896.021502 415.930119zM896.021502 672.05913 607.897867 672.05913c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l287.951621 0c17.717453 0 31.994625 14.277171 31.994625 31.994625S913.738955 672.05913 896.021502 672.05913zM896.021502 832.032253 607.897867 832.032253c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l287.951621 0c17.717453 0 31.994625 14.277171 31.994625 31.994625S913.738955 832.032253 896.021502 832.032253zM383.935495 479.919368 191.967747 479.919368c-52.980346 0-95.983874-43.003528-95.983874-95.983874L95.983874 191.967747c0-52.980346 43.003528-95.983874 95.983874-95.983874l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 191.967747C479.919368 436.915841 436.915841 479.919368 383.935495 479.919368zM191.967747 159.973123c-17.545439 0-31.994625 14.449185-31.994625 31.994625l0 191.967747c0 17.545439 14.449185 31.994625 31.994625 31.994625l191.967747 0c17.545439 0 31.994625-14.449185 31.994625-31.994625L415.930119 191.967747c0-17.545439-14.449185-31.994625-31.994625-31.994625L191.967747 159.973123 191.967747 159.973123zM383.935495 928.016126 191.967747 928.016126c-52.980346 0-95.983874-43.003528-95.983874-95.983874L95.983874 639.892491c0-52.980346 43.003528-95.983874 95.983874-95.983874l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 191.967747C479.919368 884.840585 436.915841 928.016126 383.935495 928.016126zM191.967747 607.897867c-17.545439 0-31.994625 14.277171-31.994625 31.994625l0 191.967747c0 17.717453 14.449185 31.994625 31.994625 31.994625l191.967747 0c17.545439 0 31.994625-14.277171 31.994625-31.994625L415.930119 639.892491c0-17.717453-14.449185-31.994625-31.994625-31.994625L191.967747 607.897867 191.967747 607.897867z" p-id="4014"></path></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1 @@
<?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"><svg t="1526284415679" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1677" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"></style></defs><path d="M896 256v576a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V256H64V192h192V128a64 64 0 0 1 64-64h384a64 64 0 0 1 64 64v64h192v64h-64z m-192-128H320v64h384V128z m128 128H192v576a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V256zM576 384h64v384H576V384zM384 384h64v384H384V384z" p-id="1678"></path></svg>

After

Width:  |  Height:  |  Size: 683 B

@ -0,0 +1 @@
<?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"><svg t="1526283372703" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2234" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><defs><style type="text/css"></style></defs><path d="M919.096192 1.803429 106.384339 1.803429c-57.74173 0-104.670881 46.928152-104.670881 104.670881l0 812.855807c0 57.74173 46.928152 104.669882 104.670881 104.669882l812.78383 0c57.74173 0 104.669882-46.928152 104.669882-104.669882L1023.838051 106.402334C1023.768073 48.659604 976.836923 1.803429 919.096192 1.803429zM826.535479 292.242533l-2.161316 1.153635-0.288909 2.450225C801.808303 449.608741 667.944658 565.597042 512.739766 565.597042c-155.202893 0-289.069537-115.988301-311.344489-269.750649l-0.359886-2.450225-2.163316-1.153635c-15.427119-9.155103-24.654199-24.654199-24.654199-41.666816 0-26.96047 21.915066-48.875535 48.947513-48.875535 26.96047 0 48.875535 21.915066 48.875535 48.875535 0 14.201507-6.41597 27.46531-18.166252 37.196231l-2.30727 1.80243 0.50484 2.884087c20.5445 128.963195 130.189807 222.533589 260.667523 222.533589 130.478716 0 240.123024-93.641371 260.667523-222.533589l0.50584-2.81211-2.235293-1.80243c-11.822259-9.803898-18.166252-22.995724-18.166252-37.197231 0-26.96047 21.915066-48.875535 48.875535-48.875535l0 0 0 0 0 0c27.032447 0 48.947513 21.914066 48.947513 48.875535C851.261655 267.589333 842.034575 283.088429 826.535479 292.242533z" p-id="2235"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1 @@
<?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"><svg t="1541582825105" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7322" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><defs><style type="text/css"></style></defs><path d="M707.296 274.272c0-44.512-7.456-79.2-27.296-98.976-19.744-22.208-51.936-37.088-94.016-37.088h-79.136v269.728h74.208c42.048 0 76.736-12.384 96.544-37.088 19.776-19.84 29.696-54.496 29.696-96.576z" p-id="7323"></path><path d="M588.512 952.288H130.688c-42.048 0-79.2-32.16-79.2-74.208V516.8h742.368c24.704 0 49.472 2.432 49.472 4.96V135.744c0-69.344-51.936-123.744-118.784-123.744H130.688C61.44 12 2.016 68.896 2.016 135.744v742.304c0 69.312 59.424 123.712 128.672 123.712h512.256c-19.84-12.32-37.152-29.632-54.432-49.472z m-121.28-848.704h123.744c51.968 0 94.048 17.28 121.184 49.504 22.336 29.664 37.152 69.216 37.152 121.216 0 51.968-14.816 94.048-42.016 123.776-29.728 32.128-69.28 49.472-123.712 49.472h-118.816V103.584h2.464z m-235.104 0h39.584l136.096 341.472H365.76l-37.152-99.008H175.232l-37.12 99.008H96.032L232.128 103.584z" p-id="7324"></path><path d="M254.432 155.52L190.048 313.888h123.776L254.432 155.52z m259.808 492.416H118.304a24.768 24.768 0 0 0 0 49.504H514.24c12.352 0 24.768-12.352 24.768-24.736 0-12.416-12.416-24.768-24.768-24.768z m0 143.52H118.304a24.8 24.8 0 0 0-24.736 24.736c0 14.88 9.888 24.736 24.736 24.736H514.24a24.832 24.832 0 0 0 24.768-24.736c0-12.32-12.416-24.736-24.768-24.736z m507.296-37.12l-12.448-61.856c-4.928-17.376-22.24-32.224-39.52-34.624l-24.736-2.528c-2.464 0-2.464 0-4.896-2.432v-9.92l2.432-24.768c2.464-19.776-7.392-39.552-24.768-47.008L860.704 544h-2.432c-4.96-2.464-9.92-2.464-14.88-2.464-12.352 0-24.736 4.928-32.16 12.352l-17.312 17.312-4.928 4.928c-2.496 0-2.496-2.4-4.96-4.928l-17.376-17.312c-7.392-7.392-19.744-12.352-32.096-12.352-9.952 0-17.376 2.464-19.808 4.928l-56.896 27.264c-14.848 9.888-27.264 27.2-24.736 44.48l2.432 27.264v4.96s-4.928 2.464-7.392 2.464l-22.272 2.432c-17.28 2.528-34.656 14.88-39.584 34.688l-12.352 61.92c-4.96 17.248 2.464 37.024 19.776 49.44l19.808 12.416 7.424 7.392c0 2.464 0 2.464-2.528 4.928l-14.784 22.272c-9.952 14.784-9.952 37.088 2.4 51.936l39.648 51.936c9.856 9.92 22.272 17.376 34.624 17.376 4.928 0 9.888 0 14.848-2.496l24.704-7.424h7.456c0 2.464 2.432 2.464 2.432 4.96l7.392 22.24c4.928 19.808 24.736 29.728 42.048 29.728h61.92c17.344 0 34.592-12.416 39.552-29.728l7.424-22.24c0-2.496 2.464-2.496 2.464-4.96h7.424l19.808 7.424c4.896 2.496 12.352 2.496 14.848 2.496 14.848 0 29.696-7.456 37.056-17.376l39.616-49.408c9.888-12.416 12.384-34.752 2.464-51.968l-12.384-19.808c0-2.464-2.432-4.96-2.432-7.424l4.96-4.96 22.176-12.416c12.448-14.816 19.904-37.088 17.44-51.936z m-42.112 7.488l-22.24 14.816c-4.928 4.96-19.808 17.312-22.24 29.664-2.496 12.416 2.432 29.728 9.888 37.152l14.816 22.272-37.024 52h-2.56l-24.704-7.52c-17.312-4.864-34.656 0-39.616 2.56-9.888 4.96-19.776 19.776-24.672 29.664l-7.424 22.272-2.464 2.464h-64.352l-9.92-19.776c-2.432-12.352-12.352-27.264-22.272-32.16-7.424-5.024-17.28-5.024-19.808-5.024-7.36 0-14.816 2.56-24.736 5.024l-22.208 7.456h-4.992l-37.088-49.6v-4.96l12.384-19.712c7.392-9.952 12.384-24.736 9.952-39.648-2.528-14.816-17.344-27.168-24.768-32.128l-22.24-12.416s-2.464-2.4 0-2.4l14.816-64.352 22.272-2.496c12.384 0 29.728-7.424 37.12-17.312 7.392-9.856 12.384-24.736 9.92-37.152l-2.496-24.672c0-2.528 2.496-4.96 2.496-4.96l54.432-24.736h4.96l17.312 17.312c9.92 7.424 22.24 14.816 34.624 14.816 12.416 0 29.696-7.36 34.656-17.28l17.344-17.312h2.432l56.928 24.736 2.432 2.464-2.432 24.672c0 4.96 0 24.736 9.888 37.184 4.96 7.424 17.344 14.816 34.656 17.312l22.24 2.464 2.496 2.464 12.352 59.36v7.488h-0.16z" p-id="7325"></path><path d="M788.928 665.248c-61.888 0-113.856 51.936-113.856 113.888 0 61.856 51.968 113.856 113.856 113.856 59.36 0 111.328-52 113.792-113.856 0-61.952-51.936-113.888-113.792-113.888z m0 183.168c-39.616 0-71.808-32.192-71.808-71.776s32.192-71.712 71.808-71.712c37.024 0 69.28 32.128 71.712 71.712-2.432 42.048-34.656 71.776-71.712 71.776z" p-id="7326"></path></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

@ -0,0 +1 @@
<?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"><svg t="1541582872263" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8264" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><defs><style type="text/css"></style></defs><path d="M695.466667 535.466667h-153.6v-78.933334h147.2v-59.733333h-130.133334l108.8-108.8-38.4-38.4-117.333333 117.333333-117.333333-117.333333-38.4 38.4 108.8 108.8h-130.133334v59.733333h147.2v78.933334h-153.6V597.333333h153.6v177.066667h59.733334V597.333333h153.6z" fill="" p-id="8265"></path><path d="M870.4 936.533333H153.6c-53.333333 0-96-38.4-96-87.466666V661.333333c0-14.933333 12.8-25.6 25.6-25.6 68.266667 0 121.6-55.466667 121.6-121.6 0-68.266667-55.466667-121.6-121.6-121.6-14.933333 0-25.6-12.8-25.6-25.6V172.8c0-49.066667 42.666667-87.466667 96-87.466667h716.8c53.333333 0 96 38.4 96 87.466667V362.666667c0 14.933333-12.8 25.6-25.6 25.6-68.266667 0-121.6 55.466667-121.6 121.6 0 68.266667 55.466667 121.6 121.6 121.6 14.933333 0 25.6 12.8 25.6 25.6v189.866666c0 53.333333-42.666667 89.6-96 89.6zM110.933333 684.8v166.4c0 19.2 19.2 34.133333 42.666667 34.133333h716.8c23.466667 0 42.666667-14.933333 42.666667-34.133333v-166.4c-83.2-12.8-149.333333-85.333333-149.333334-172.8s64-160 149.333334-172.8V172.8c0-19.2-19.2-34.133333-42.666667-34.133333H153.6c-23.466667 0-42.666667 14.933333-42.666667 34.133333v166.4c83.2 12.8 149.333333 85.333333 149.333334 172.8s-64 160-149.333334 172.8z" fill="" p-id="8266"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@ -0,0 +1 @@
<?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"><svg t="1542099977341" class="icon" style="" viewBox="0 0 1040 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1384" xmlns:xlink="http://www.w3.org/1999/xlink" width="54.84375" height="54"><defs><style type="text/css"></style></defs><path d="M984.104361 326.757019C933.414889 208.820979 838.555427 114.26851 720.236672 63.756069c31.996738-25.119097 72.263837-40.220027 116.151393-40.220027 103.862509 0 188.064236 83.923388 188.064236 187.452299C1024.453325 254.725472 1009.297137 294.866704 984.104361 326.757019zM976.434681 534.080901c0 122.913401-48.40443 234.320747-126.857223 317.182966l64.928778 64.711837c8.587586 8.563026 13.906731 20.391423 13.906731 33.464159 0 26.137287-21.258163 47.327912-47.487547 47.327912-13.106506 0-24.977881-5.300726-33.564443-13.863752l-69.749574-69.51319c-75.249845 52.398394-166.623925 83.376942-265.383206 83.376942-98.56997 0-189.785437-30.846542-264.950348-83.051531l-69.257364 69.029166c-8.696056 8.67252-20.700461 14.022365-33.957393 14.022365-26.520003 0-48.02069-21.431102-48.02069-47.868217 0-13.214976 5.376451-25.178449 14.06432-33.841759l64.402799-64.184835c-78.218456-82.829474-126.489856-194.070021-126.489856-316.792063 0-255.531837 207.833489-462.687898 464.207507-462.687898C768.608356 71.393004 976.434681 278.549064 976.434681 534.080901zM512.228197 167.119205c-203.332988 0-368.164081 164.305113-368.164081 366.961696 0 202.663746 164.832116 366.961696 368.164081 366.961696 203.323778 0 368.163057-164.298973 368.163057-366.961696C880.391255 331.423295 715.551976 167.119205 512.228197 167.119205zM704.314027 581.944002 512.228197 581.944002c-26.520003 0-48.021713-21.425985-48.021713-47.862078L464.206484 278.808984c0-26.435069 21.502733-47.863101 48.021713-47.863101 26.50977 0 48.019667 21.428032 48.019667 47.863101l0 207.40984L704.314027 486.218824c26.510794 0 48.02069 21.424962 48.02069 47.862078C752.334717 560.518017 730.824821 581.944002 704.314027 581.944002zM41.209564 333.240687c-25.736151-32.570813-41.210587-73.572646-41.210587-118.251218C0 109.25124 85.995583 23.536043 192.084807 23.536043c44.819788 0 85.962837 15.425318 118.635981 41.078581C189.876512 116.213815 92.974531 212.787314 41.209564 333.240687z" p-id="1385"></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -0,0 +1 @@
<?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"><svg t="1541582669216" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6031" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><defs><style type="text/css"></style></defs><path d="M451.854 95.981c0.024-0.064 0.048-0.145 0.081-0.145-0.081-0.064-0.097 0-0.081 0.145z" p-id="6032"></path><path d="M142.588 440.622c-0.015 0.01-0.03 0.021-0.037 0.017 0.006 0.016 0.019 0.006 0.037-0.017zM520.419 629.913c-15.925 0-28.761 5.461-38.505 16.381-9.746 10.92-14.619 27.388-14.619 49.404 0 21.667 5.003 38.092 15.011 49.272 10.005 11.182 22.71 16.772 38.113 16.772 15.401 0 28.04-5.548 37.917-16.643 9.876-11.095 14.814-27.735 14.814-49.926 0-21.927-4.81-38.286-14.423-49.075-9.617-10.789-22.385-16.185-38.308-16.185z" p-id="6033"></path><path d="M854.456 823.017c5.906-8.442 10.995-17.81 15.102-28.309C987.665 491.696 579.58 48.843 537.014 3.807c0.1 0.165 0.207 0.363 0.298 0.529-2.627-2.792-4.105-4.329-4.105-4.329 6.212 28.647 10.144 55.329 12.242 80.458-0.115-0.867-0.189-1.702-0.307-2.569 2.983 33.158 2.553 63.407-0.651 91.353-0.496 4.229-1 8.467-1.62 12.597-0.098 0.668-0.23 1.33-0.33 1.99-20.503 130.632-104.734 208.479-194.253 289.646-23.411-22.543-37.247-55.049-37.238-102.811 0.083-21.742 2.999-46.622 9.186-75.154l-0.207 0.141c0.074-0.354 0.132-0.685 0.207-1.048 0 0-63.854 41.285-116.968 119.19-0.009-0.008-0.017-0.025-0.017-0.025-0.182 0.264-0.355 0.563-0.545 0.827-3.403 5.022-6.766 10.16-10.053 15.48-0.157 0.239-0.298 0.495-0.447 0.735a430.615 430.615 0 0 0-8.847 15.075 376.645 376.645 0 0 0-1.991 3.569c-2.883 5.253-5.716 10.605-8.434 16.116-0.133 0.272-0.281 0.537-0.414 0.809a407.245 407.245 0 0 0-8.095 17.627c-0.627 1.446-1.223 2.917-1.833 4.371a380.69 380.69 0 0 0-5.89 14.935c-0.528 1.421-1.074 2.808-1.586 4.229-1.09 3.058-2.115 6.163-3.139 9.285-0.025 0.066-0.05 0.132-0.066 0.198-1.049 3.172-2.098 6.345-3.064 9.582-0.396 1.306-0.744 2.66-1.123 3.982a368.612 368.612 0 0 0-4.296 16.331 316.228 316.228 0 0 0-1.338 5.69c-1.537 6.873-2.958 13.812-4.122 20.933 0 0.05-0.017 0.1-0.017 0.148a329.55 329.55 0 0 0-1.727 11.696c-0.032 0.266-0.065 0.529-0.099 0.794a352.944 352.944 0 0 0-1.272 11.283c-0.05 0.43-0.083 0.86-0.124 1.298a391.231 391.231 0 0 0-0.884 11.044c-0.033 0.545-0.066 1.106-0.091 1.651a358.25 358.25 0 0 0-0.504 10.922l-0.05 1.949a366.226 366.226 0 0 0-0.124 10.87v2.164c0.033 3.618 0.115 7.253 0.256 10.912 0.025 0.769 0.042 1.545 0.083 2.313 0.157 3.659 0.363 7.344 0.62 11.044 0.074 0.793 0.115 1.57 0.173 2.362 0.281 3.733 0.636 7.492 1.024 11.268 0.083 0.784 0.157 1.553 0.248 2.33 0.413 3.849 0.917 7.723 1.454 11.614 0.107 0.734 0.207 1.462 0.306 2.197 0.578 3.989 1.23 8.028 1.933 12.076 0.124 0.645 0.214 1.289 0.338 1.933a392.635 392.635 0 0 0 2.495 12.771c0.099 0.479 0.19 0.958 0.281 1.438a451.803 451.803 0 0 0 3.18 13.745c0.05 0.231 0.1 0.454 0.157 0.677 4.874 19.627 11.234 39.84 19.346 60.657 4.097 10.499 9.186 19.866 15.101 28.309 69.223 121.396 265.021 200.978 265.021 200.978v-0.008c-0.676-0.277-56.816-23.185-119.421-62.98 62.605 39.796 118.746 62.702 119.421 62.973l0.033 0.016v-0.033c0.041 0.018 0.083 0.033 0.083 0.033 3.709-34.05 18.495-57.277 40.477-73.716-0.017-0.018-0.042-0.018-0.058-0.033 0.124-0.083 0.256-0.166 0.38-0.256 4.436-3.296 9.161-6.32 14.15-9.104 0.264-0.149 0.528-0.29 0.793-0.438 4.998-2.75 10.251-5.261 15.745-7.558 0.165-0.066 0.314-0.141 0.479-0.207 39.089 16.208 66.787 42.806 72.065 91.312 0 0 0.024-0.016 0.033-0.016v0.016s42.739-17.38 95.334-48.258c-0.066 0.066-0.132 0.141-0.198 0.215 60.06-35.229 133.083-88.122 170.048-152.933zM312.641 952.532z m82.736-161.03h-38.636v-83.667h-75.704v83.667h-38.636V600.154h38.636v75.313h75.704v-75.313h38.636v191.348zM587.9 768.594c-16.796 17.448-39.245 26.171-67.352 26.171-28.454 0-51.08-8.679-67.872-26.038-16.795-17.361-25.192-41.268-25.192-71.726 0-19.489 2.915-35.847 8.746-49.075 4.35-9.746 10.289-18.491 17.816-26.236 7.526-7.743 15.771-13.486 24.734-17.229 11.92-5.045 25.669-7.57 41.246-7.57 28.192 0 50.751 8.747 67.678 26.235 16.922 17.49 25.386 41.813 25.386 72.965 0.001 30.89-8.398 55.058-25.19 72.503z m41.637-136.071v-32.369h152.061v32.369H724.95v158.979h-38.635V632.523h-56.778z" p-id="6034"></path></svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -0,0 +1 @@
<?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"><svg t="1541582554734" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5148" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><defs><style type="text/css"></style></defs><path d="M987.04 533.208c-15.951-18.618-12.415-26.62 0.947-42.956 69.21-84.716 31.696-201.788-74.55-229.604-26.705-6.985-38.047-14.813-28.855-37.193C887.36 116.06 783.764 43.795 682.875 81.34c-23.697 8.815-32.08 6.967-46.299-13.836-61.223-89.51-188.549-89.59-249.31 0.046-14.453 21.302-23.543 22.162-46.413 13.935-103.4-37.228-208.124 36.36-201.084 142.258 1.774 26.523-6.729 30.735-29.426 36.824C4.276 289.07-34.412 407.945 35.925 490.36c15.47 18.123 13.656 25.996-0.449 43.293-70.264 86.13-30.09 202.613 79.444 230.943 20.223 5.23 26.623 9.243 25.28 31.722-6.748 112.214 95.964 184.444 205.302 144.714 20.503-7.474 27.514-5.58 39.599 12.37 63.32 94.021 190.484 93.64 253.87-0.987 12.649-18.874 19.977-18.476 39.684-11.11 108.264 40.473 214.39-35.934 204.702-147.362-1.786-20.577 3.608-23.863 22.703-28.612 112.563-27.945 154.277-146.564 80.98-232.123zM214.635 718.206l-58.778-168.943c-5.088-14.651 0.203-24.952 15.841-30.861 8.91-1.167 16.832 0.137 23.728 3.87l145.283 92.081 1.251-0.417-39.036-112.224c-5.094-14.652 0.198-24.953 15.842-30.879 15.358-4.114 25.992 1.052 31.941 15.43l58.743 168.945c4.003 14.153-1.552 23.656-16.633 28.532-8.383 2.727-16.022 2.202-22.93-1.595l-144.888-90.879-1.251 0.4L262.37 702.74c3.984 14.16-1.557 23.657-16.634 28.557-15.906 5.165-26.288 0.798-31.1-13.09zM436.72 645.1l-56.748-163.14c-5.638-16.216-0.63-27.26 15.033-33.188l80.433-26.002c13.675-3.588 23.494 0.56 29.48 12.35 3.127 14.432-2 23.82-15.393 28.157l-56.562 18.286 14.895 42.813 52.794-17.054c14.799-3.062 25.146 1.305 31.133 13.102 2.858 13.662-2.662 23.165-16.634 28.533l-52.794 17.077 15.694 45.113 59.09-19.083c14.518-3.824 24.338 0.319 29.479 12.34 3.127 14.426-2.002 23.814-15.393 28.152l-82.95 26.829c-15.391 4.132-25.906-0.652-31.557-14.285z m178.89-56.54l-97.827-148.59c-2.763-2.52-4.381-5.848-4.878-10.025-3.194-11.831 2.068-20.803 15.788-26.955 13.392-4.321 24.753 0.156 34.047 13.449l69.852 116.436 1.276-0.415-3.609-143.006c0.431-12.131 6.813-20.647 19.114-25.476 12.001-3.027 22.386 0.063 31.169 9.214l86.55 116.21 1.277-0.409-15.823-133.895c-3.146-14.442 2.696-24.483 17.507-30.127 13.92-2.773 23.745 1.322 29.461 12.34 1.361 3.887 2.115 7.504 2.367 10.838l16.135 175.004c-1.042 15.783-9.107 26.13-24.188 30.97-16.785 5.437-29.93 2.41-39.535-9.081l-77.538-102.363 2.133 126.764c-1.306 15.004-9.49 24.935-24.59 29.811-17.62 5.66-30.532 2.118-38.688-10.694z m0 0" fill="" p-id="5149"></path></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -0,0 +1 @@
<?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"><svg t="1541582717560" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6519" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"><defs><style type="text/css"></style></defs><path d="M868.8 98.2H157.3c-32.7 0-59.3 26.5-59.3 59.3V869c0 32.7 26.5 59.3 59.3 59.3h711.5c32.7 0 59.3-26.5 59.3-59.3V157.5c0-32.7-26.6-59.3-59.3-59.3z m-18.5 704.1c0 26.6-21.6 48.2-48.2 48.2H224c-26.6 0-48.2-21.6-48.2-48.2V224.2c0-26.6 21.6-48.2 48.2-48.2h578.1c26.6 0 48.2 21.6 48.2 48.2v578.1z" p-id="6520"></path><path d="M275.9 631.8h118.6v177.9H275.9zM453.7 631.8h118.6v177.9H453.7zM631.6 631.8h118.6v177.9H631.6zM216.6 216.8h592.9V454H216.6z" p-id="6521"></path></svg>

After

Width:  |  Height:  |  Size: 851 B

@ -0,0 +1 @@
<?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"><svg t="1541582420630" class="icon" style="" viewBox="0 0 1031 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3681" xmlns:xlink="http://www.w3.org/1999/xlink" width="24.1640625" height="24"><defs><style type="text/css"></style></defs><path d="M320 275.2C320 275.2 320 275.2 320 275.2l0 467.2c0 0 0 0 0 0l147.2-128C480 614.4 499.2 608 512 608s32 6.4 44.8 12.8l147.2 128c0 0 0 0 0 0L704 281.6c0 0 0 0 0 0L320 281.6z" p-id="3682"></path><path d="M889.6 0 134.4 0C57.6 0 0 57.6 0 134.4l0 761.6C0 966.4 57.6 1024 134.4 1024l761.6 0c70.4 0 134.4-57.6 134.4-134.4L1030.4 134.4C1024 57.6 966.4 0 889.6 0zM768 742.4c0 38.4-32 64-64 64-12.8 0-32-6.4-44.8-19.2L512 672l-147.2 121.6c-25.6 19.2-64 19.2-89.6 0C262.4 780.8 256 761.6 256 742.4L256 281.6c0-38.4 32-64 64-64L704 217.6c38.4 0 64 32 64 64L768 742.4z" p-id="3683"></path></svg>

After

Width:  |  Height:  |  Size: 973 B

@ -0,0 +1 @@
<?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"><svg t="1511504440567" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5070" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M568.6 0h454.9v454.9H568.6V0z m0 568.6h454.9v454.9H568.6V568.6zM0 568.6h454.9v454.9H0V568.6zM0 0h454.9v454.9H0V0z" fill="" p-id="5071"></path></svg>

After

Width:  |  Height:  |  Size: 532 B

@ -0,0 +1 @@
<?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"><svg t="1542700646737" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2301" xmlns:xlink="http://www.w3.org/1999/xlink" width="54" height="54"><defs><style type="text/css"></style></defs><path d="M983.696 422.704A480 480 0 1 0 40.72 602.72a469.456 469.456 0 0 0 69.44 172.688 36.4 36.4 0 1 0 60.672-40.24 408.16 408.16 0 0 1 3.664-452.224 400.832 400.832 0 0 1 260.24-171.2 407.136 407.136 0 1 1-112.576 760.288 36.8 36.8 0 0 0-34.352 65.12 477.024 477.024 0 0 0 223.68 54.88 467.984 467.984 0 0 0 89.92-8.784A481.424 481.424 0 0 0 983.712 422.72z" p-id="2302"></path><path d="M471.712 579.84h-130.768a36.944 36.944 0 0 0 0 73.888h130.768v116.8a36.944 36.944 0 1 0 73.888 0v-116.8h130.768a36.944 36.944 0 1 0 0-73.888H545.6v-71.664a22.784 22.784 0 0 0-0.736-7.392h131.504a36.944 36.944 0 1 0 0-73.888H341.68a36.944 36.944 0 1 0 0 73.888h131.504a25.152 25.152 0 0 0-0.736 7.392v71.664z" p-id="2303"></path><path d="M405.968 383.312a37.104 37.104 0 0 0 52.464-52.464l-79.792-79.792a37.104 37.104 0 1 0-52.464 52.464z" p-id="2304"></path><path d="M602.48 383.312l79.792-79.792a37.088 37.088 0 1 0-52.448-52.464l-79.792 79.792a36.576 36.576 0 0 0 0 52.464 37.936 37.936 0 0 0 52.448 0z" p-id="2305"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1 @@
<?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"><svg t="1542700697957" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3201" xmlns:xlink="http://www.w3.org/1999/xlink" width="54" height="54"><defs><style type="text/css"></style></defs><path d="M38.16448 558.0288v419.90144c0 33.01376 51.2 33.01376 51.2 0V558.0288c0-33.01376-51.2-33.01376-51.2 0z" p-id="3202"></path><path d="M327.39328 420.70016v557.23008c0 33.01376 51.2 33.01376 51.2 0V420.70016c0-33.01888-51.2-33.01888-51.2 0z" p-id="3203"></path><path d="M629.21216 558.0288v419.90144c0 33.01376 51.2 33.01376 51.2 0V558.0288c0-33.01376-51.2-33.01376-51.2 0z" p-id="3204"></path><path d="M936.92928 420.70016v557.23008c0 33.01376 51.2 33.01376 51.2 0V420.70016c0-33.01888-51.2-33.01888-51.2 0zM81.86368 414.58176l277.27872-277.27872h-36.20352c95.55968 95.5648 191.11424 191.1296 286.65856 286.69952 9.86112 9.86112 26.3424 9.86112 36.19328 0 99.6864-99.67616 199.35744-199.35232 299.02848-299.02848 23.36256-23.36768-12.83584-59.5712-36.1984-36.20352-99.68128 99.67616-199.35744 199.35232-299.02336 299.02848h36.19328L359.13728 101.09952c-9.86112-9.86112-26.3424-9.86112-36.20352 0L45.65504 378.37824c-23.36256 23.36768 12.84096 59.5712 36.20864 36.20352z" p-id="3205"></path><path d="M779.06944 87.3728h190.208l-25.6-25.6v178.70336c0 33.01888 51.2 33.01888 51.2 0V61.7728c0-13.95712-11.63776-25.6-25.6-25.6h-190.208c-33.01376 0-33.01376 51.2 0 51.2z" p-id="3206"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1 @@
<?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"><svg t="1542700674974" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2435" xmlns:xlink="http://www.w3.org/1999/xlink" width="54" height="54"><defs><style type="text/css"></style></defs><path d="M910.08512 255.34976c-0.9216 37.56032-33.67936 64.52736-62.77632 83.2256-49.06496 31.52896-107.008 48.10752-163.55328 60.01152-138.17344 29.09696-290.7648 23.57248-425.43104-19.46624-58.35776-18.65216-189.14816-75.15136-141.824-157.70624 21.99552-38.36928 69.44256-61.7984 108.63616-77.824 61.00992-24.93952 127.1552-37.65248 192.49152-44.0832 113.5104-11.17184 231.46496-2.74432 340.38784 32.07168 53.44256 17.08032 150.37952 55.00928 152.06912 123.77088 0.80896 32.95744 52.00896 33.03936 51.2 0-2.37568-96.73216-111.27296-147.01568-189.65504-173.14304-133.31456-44.43648-282.62912-47.11424-420.352-25.3952-97.09568 15.3088-223.18592 49.46432-278.9888 138.76224-50.43712 80.71168 17.99168 157.66016 86.2976 196.29056 68.02944 38.47168 147.73248 56.832 224.57344 66.6368 93.83424 11.97568 188.50304 10.11712 281.91232-4.61312 73.80992-11.63776 149.60128-33.51552 212.93056-74.21952 43.58656-28.01152 81.95584-70.0416 83.28704-124.31872 0.80384-33.03936-50.39616-32.95744-51.20512 0z" p-id="2436"></path><path d="M910.08512 423.22944c-1.4336 56.79616-74.50624 91.82208-118.88128 110.01344-89.00096 36.52096-187.52 48.3584-283.02848 48.80896-95.91296 0.45568-193.50528-13.50656-283.03872-48.80896-44.45696-17.52064-117.4528-53.66784-118.88128-110.01344-0.83456-32.95744-52.03456-33.03936-51.2 0 1.8688 73.86624 71.37792 120.97536 131.85024 148.91008 99.38432 45.91104 212.75136 60.60032 321.26976 61.11744 109.08672 0.51712 221.13792-16.65536 321.25952-61.11744 60.65664-26.93632 130.00192-75.7504 131.85024-148.91008 0.83456-33.03936-50.36544-32.95232-51.2 0z" p-id="2437"></path><path d="M910.08512 594.62656c-1.4336 56.80128-74.50624 91.8272-118.88128 110.0288-89.00096 36.52096-187.52 48.3584-283.02848 48.80896-95.91296 0.45568-193.50528-13.50656-283.03872-48.80896-44.45696-17.53088-117.4528-53.67808-118.88128-110.0288-0.83456-32.95744-52.03456-33.03424-51.2 0 1.8688 73.87136 71.37792 120.9856 131.85024 148.92544 99.38432 45.91104 212.75136 60.60032 321.26976 61.11744 109.08672 0.51712 221.13792-16.65536 321.25952-61.11744 60.65664-26.93632 130.00192-75.76576 131.85024-148.92544 0.83456-33.03424-50.36544-32.95744-51.2 0z" p-id="2438"></path><path d="M910.08512 776.06912c-1.4336 56.80128-74.50624 91.8272-118.88128 110.0288-89.00096 36.52096-187.52 48.3584-283.02848 48.80896-95.91296 0.45568-193.50528-13.50656-283.03872-48.80896-44.45696-17.53088-117.4528-53.67808-118.88128-110.0288-0.83456-32.95744-52.03456-33.03424-51.2 0 1.8688 73.87136 71.37792 120.9856 131.85024 148.92032 99.38432 45.91616 212.75136 60.60544 321.26976 61.12256 109.08672 0.51712 221.13792-16.65536 321.25952-61.12256 60.65664-26.9312 130.00192-75.76064 131.85024-148.92032 0.83456-33.03424-50.36544-32.95232-51.2 0zM386.23744 151.69024l102.20032 102.1952c9.86624 9.86112 26.3424 9.86112 36.20352 0l103.49568-103.49056c23.36768-23.36256-12.83584-59.5712-36.1984-36.20352L488.43776 217.68192h36.20352l-102.20032-102.1952c-23.36768-23.36768-59.56608 12.83584-36.20352 36.20352z" p-id="2439"></path><path d="M388.992 261.38624h235.45344c33.01376 0 33.01376-51.2 0-51.2H388.992c-33.01888 0-33.01888 51.2 0 51.2zM388.992 335.40608h235.45344c33.01376 0 33.01376-51.2 0-51.2H388.992c-33.01888 0-33.01888 51.2 0 51.2z" p-id="2440"></path><path d="M481.11616 234.49088V375.5008c0 33.01888 51.20512 33.01888 51.20512 0V234.49088c0-33.01376-51.20512-33.01376-51.20512 0z" p-id="2441"></path></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@ -0,0 +1 @@
<?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"><svg t="1511512690058" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3507" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M1013.703 693.345c6.865 6.865 10.297 14.874 10.297 24.027l0 205.944c0 9.916-3.432 18.115-10.297 24.599-6.865 6.483-15.255 9.725-25.171 9.725L782.588 957.64c-9.153 0-17.162-3.242-24.027-9.725-6.865-6.483-10.297-14.683-10.297-24.599L748.264 717.372c0-6.102 1.526-11.823 4.577-17.162s7.246-9.534 12.586-12.586 11.06-4.577 17.162-4.577l77.801 0L860.39 546.896c0-4.577-1.144-8.772-3.432-12.586s-5.339-6.865-9.153-9.153-8.009-3.432-12.585-3.432L543.464 521.725l0 161.323 77.801 0c9.153 0 17.162 3.432 24.027 10.297s10.297 14.874 10.297 24.027l0 205.944c0 6.102-1.526 11.823-4.577 17.162s-7.246 9.534-12.585 12.585-11.06 4.577-17.162 4.577L415.321 957.64c-6.102 0-11.823-1.526-17.162-4.577s-9.725-7.246-13.158-12.585-5.149-11.06-5.149-17.162L379.852 717.372c0-9.153 3.432-17.162 10.297-24.027s15.255-10.297 25.171-10.297l76.657 0L491.977 521.725 188.782 521.725c-7.628 0-13.92 2.479-18.878 7.437-4.958 4.958-7.437 10.869-7.437 17.734l0 136.152 77.801 0c9.916 0 18.115 3.432 24.599 10.297s9.725 14.874 9.725 24.027l0 205.944c0 9.916-3.242 18.115-9.725 24.599-6.483 6.483-14.683 9.725-24.599 9.725L34.324 957.64c-3.814 0-7.437-0.572-10.869-1.716-3.432-1.144-6.483-2.67-9.153-4.577-2.67-1.907-5.149-4.386-7.437-7.437-2.288-3.051-4.004-6.293-5.149-9.725C0.572 930.753 0 927.13 0 923.316L0 717.372c0-3.051 0.381-6.102 1.144-9.153s1.907-5.721 3.432-8.009 3.432-4.577 5.721-6.865 4.577-4.195 6.865-5.721 4.958-2.67 8.009-3.432 6.102-1.144 9.153-1.144l77.801 0L112.125 495.41c0-6.865 2.479-12.776 7.437-17.734s10.869-7.437 17.734-7.437l354.682 0L491.978 342.096l-76.657 0c-9.916 0-18.306-3.432-25.171-10.297s-10.297-14.874-10.297-24.027L379.853 101.828c0-9.916 3.432-18.306 10.297-25.171s15.255-10.297 25.171-10.297l205.944 0c6.102 0 11.823 1.716 17.162 5.149 5.339 3.432 9.534 7.818 12.585 13.158 3.051 5.339 4.577 11.06 4.577 17.162l0 205.944c0 9.153-3.432 17.162-10.297 24.027s-14.874 10.297-24.027 10.297l-77.801 0 0 128.143L885.56 470.24c7.628 0 13.92 2.479 18.878 7.437s7.437 10.869 7.437 17.734l0 187.638 76.657 0C998.448 683.048 1006.838 686.48 1013.703 693.345z" p-id="3508"></path></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -0,0 +1 @@
<?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"><svg t="1503993891882" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7986" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><defs><style type="text/css"></style></defs><path d="M504.951 511.98c93.49 0 169.28-74.002 169.28-165.26 0-91.276-75.79-165.248-169.28-165.248-93.486 0-169.287 73.972-169.279 165.248-0.001 91.258 75.793 165.26 169.28 165.26z m77.6 55.098H441.466c-120.767 0-218.678 95.564-218.678 213.45V794.3c0 48.183 97.911 48.229 218.678 48.229H582.55c120.754 0 218.66-1.78 218.66-48.229v-13.77c0-117.887-97.898-213.45-218.66-213.45z" p-id="7987"></path></svg>

After

Width:  |  Height:  |  Size: 777 B

@ -0,0 +1,30 @@
import Vue from 'vue'
import 'normalize.css/normalize.css'// A modern alternative to CSS resets
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n
import VCharts from 'v-charts'
import '@/styles/index.scss' // global css
import App from './App'
import router from './router'
import store from './store'
import '@/icons' // icon
import '@/permission' // permission control
Vue.use(ElementUI, { locale })
Vue.use(VCharts)
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
store,
template: '<App/>',
components: { App }
})

@ -0,0 +1,41 @@
import router from './router'
import store from './store'
import NProgress from 'nprogress' // Progress 进度条
import 'nprogress/nprogress.css'// Progress 进度条样式
import { Message } from 'element-ui'
import { getToken } from '@/utils/auth' // 验权
const whiteList = ['/login'] // 不重定向白名单
router.beforeEach((to, from, next) => {
NProgress.start()
if (getToken()) {
if (to.path === '/login') {
next({ path: '/' })
NProgress.done() // if current page is dashboard will not trigger afterEach hook, so manually handle it
} else {
if (store.getters.roles.length === 0) {
store.dispatch('GetInfo').then(res => { // 拉取用户信息
next()
}).catch((err) => {
store.dispatch('FedLogOut').then(() => {
Message.error(err || 'Verification failed, please login again')
next({ path: '/' })
})
})
} else {
next()
}
}
} else {
if (whiteList.indexOf(to.path) !== -1) {
next()
} else {
next('/login')
NProgress.done()
}
}
})
router.afterEach(() => {
NProgress.done() // 结束Progress
})

@ -0,0 +1,312 @@
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
/* Layout */
import Layout from '../views/layout/Layout'
/**
* hidden: true if `hidden:true` will not show in the sidebar(default is false)
* alwaysShow: true if set true, will always show the root menu, whatever its child routes length
* if not set alwaysShow, only more than one route under the children
* it will becomes nested mode, otherwise not show the root menu
* redirect: noredirect if `redirect:noredirect` will no redirct in the breadcrumb
* name:'router-name' the name is used by <keep-alive> (must set!!!)
* meta : {
title: 'title' the name show in submenu and breadcrumb (recommend set)
icon: 'svg-name' the icon show in the sidebar,
}
**/
export const constantRouterMap = [
{path: '/login', component: () => import('@/views/login/index'), hidden: true},
{path: '/404', component: () => import('@/views/404'), hidden: true},
{
path: '',
component: Layout,
redirect: '/home',
children: [{
path: 'home',
name: 'home',
component: () => import('@/views/home/index'),
meta: {title: '首页', icon: 'home'}
}]
},
{
path: '/pms',
component: Layout,
redirect: '/pms/product',
name: 'pms',
meta: {title: '商品', icon: 'product'},
children: [{
path: 'product',
name: 'product',
component: () => import('@/views/pms/product/index'),
meta: {title: '商品列表', icon: 'product-list'}
},
{
path: 'addProduct',
name: 'addProduct',
component: () => import('@/views/pms/product/add'),
meta: {title: '添加商品', icon: 'product-add'}
},
{
path: 'updateProduct',
name: 'updateProduct',
component: () => import('@/views/pms/product/update'),
meta: {title: '修改商品', icon: 'product-add'},
hidden: true
},
{
path: 'productRecycle',
name: 'productRecycle',
component: () => import('@/views/pms/product/index'),
meta: {title: '商品回收站', icon: 'product-recycle'},
hidden: true
},
{
path: 'productComment',
name: 'productComment',
component: () => import('@/views/pms/product/index'),
meta: {title: '商品评价', icon: 'product-comment'},
hidden: true
},
{
path: 'productCate',
name: 'productCate',
component: () => import('@/views/pms/productCate/index'),
meta: {title: '商品分类', icon: 'product-cate'}
},
{
path: 'addProductCate',
name: 'addProductCate',
component: () => import('@/views/pms/productCate/add'),
meta: {title: '添加商品分类'},
hidden: true
},
{
path: 'updateProductCate',
name: 'updateProductCate',
component: () => import('@/views/pms/productCate/update'),
meta: {title: '修改商品分类'},
hidden: true
},
{
path: 'productAttr',
name: 'productAttr',
component: () => import('@/views/pms/productAttr/index'),
meta: {title: '商品类型', icon: 'product-attr'}
},
{
path: 'productAttrList',
name: 'productAttrList',
component: () => import('@/views/pms/productAttr/productAttrList'),
meta: {title: '商品属性列表'},
hidden: true
},
{
path: 'addProductAttr',
name: 'addProductAttr',
component: () => import('@/views/pms/productAttr/addProductAttr'),
meta: {title: '添加商品属性'},
hidden: true
},
{
path: 'updateProductAttr',
name: 'updateProductAttr',
component: () => import('@/views/pms/productAttr/updateProductAttr'),
meta: {title: '修改商品属性'},
hidden: true
},
{
path: 'brand',
name: 'brand',
component: () => import('@/views/pms/brand/index'),
meta: {title: '品牌管理', icon: 'product-brand'}
},
{
path: 'addBrand',
name: 'addBrand',
component: () => import('@/views/pms/brand/add'),
meta: {title: '添加品牌'},
hidden: true
},
{
path: 'updateBrand',
name: 'updateBrand',
component: () => import('@/views/pms/brand/update'),
meta: {title: '编辑品牌'},
hidden: true
}
]
},
{
path: '/oms',
component: Layout,
redirect: '/oms/order',
name: 'oms',
meta: {title: '订单', icon: 'order'},
children: [
{
path: 'order',
name: 'order',
component: () => import('@/views/oms/order/index'),
meta: {title: '订单列表', icon: 'product-list'}
},
{
path: 'orderDetail',
name: 'orderDetail',
component: () => import('@/views/oms/order/orderDetail'),
meta: {title: '订单详情'},
hidden:true
},
{
path: 'deliverOrderList',
name: 'deliverOrderList',
component: () => import('@/views/oms/order/deliverOrderList'),
meta: {title: '发货列表'},
hidden:true
},
{
path: 'orderSetting',
name: 'orderSetting',
component: () => import('@/views/oms/order/setting'),
meta: {title: '订单设置', icon: 'order-setting'}
},
{
path: 'returnApply',
name: 'returnApply',
component: () => import('@/views/oms/apply/index'),
meta: {title: '退货申请处理', icon: 'order-return'}
},
{
path: 'returnReason',
name: 'returnReason',
component: () => import('@/views/oms/apply/reason'),
meta: {title: '退货原因设置', icon: 'order-return-reason'}
},
{
path: 'returnApplyDetail',
name: 'returnApplyDetail',
component: () => import('@/views/oms/apply/applyDetail'),
meta: {title: '退货原因详情'},
hidden:true
}
]
},
{
path:'/sms',
component: Layout,
redirect: '/sms/coupon',
name: 'sms',
meta: {title: '营销', icon: 'sms'},
children: [
{
path: 'flash',
name: 'flash',
component: () => import('@/views/sms/flash/index'),
meta: {title: '秒杀活动列表', icon: 'sms-flash'}
},
{
path: 'flashSession',
name: 'flashSession',
component: () => import('@/views/sms/flash/sessionList'),
meta: {title: '秒杀时间段列表'},
hidden:true
},
{
path: 'selectSession',
name: 'selectSession',
component: () => import('@/views/sms/flash/selectSessionList'),
meta: {title: '秒杀时间段选择'},
hidden:true
},
{
path: 'flashProductRelation',
name: 'flashProductRelation',
component: () => import('@/views/sms/flash/productRelationList'),
meta: {title: '秒杀商品列表'},
hidden:true
},
{
path: 'coupon',
name: 'coupon',
component: () => import('@/views/sms/coupon/index'),
meta: {title: '优惠券列表', icon: 'sms-coupon'}
},
{
path: 'addCoupon',
name: 'addCoupon',
component: () => import('@/views/sms/coupon/add'),
meta: {title: '添加优惠券'},
hidden:true
},
{
path: 'updateCoupon',
name: 'updateCoupon',
component: () => import('@/views/sms/coupon/update'),
meta: {title: '修改优惠券'},
hidden:true
},
{
path: 'couponHistory',
name: 'couponHistory',
component: () => import('@/views/sms/coupon/history'),
meta: {title: '优惠券领取详情'},
hidden:true
},
{
path: 'brand',
name: 'homeBrand',
component: () => import('@/views/sms/brand/index'),
meta: {title: '品牌推荐', icon: 'product-brand'}
},
{
path: 'new',
name: 'homeNew',
component: () => import('@/views/sms/new/index'),
meta: {title: '新品推荐', icon: 'sms-new'}
},
{
path: 'hot',
name: 'homeHot',
component: () => import('@/views/sms/hot/index'),
meta: {title: '人气推荐', icon: 'sms-hot'}
},
{
path: 'subject',
name: 'homeSubject',
component: () => import('@/views/sms/subject/index'),
meta: {title: '专题推荐', icon: 'sms-subject'}
},
{
path: 'advertise',
name: 'homeAdvertise',
component: () => import('@/views/sms/advertise/index'),
meta: {title: '广告列表', icon: 'sms-ad'}
},
{
path: 'addAdvertise',
name: 'addHomeAdvertise',
component: () => import('@/views/sms/advertise/add'),
meta: {title: '添加广告'},
hidden:true
},
{
path: 'updateAdvertise',
name: 'updateHomeAdvertise',
component: () => import('@/views/sms/advertise/update'),
meta: {title: '编辑广告'},
hidden:true
}
]
},
{path: '*', redirect: '/404', hidden: true}
]
export default new Router({
// mode: 'history', //后端支持可开
scrollBehavior: () => ({y: 0}),
routes: constantRouterMap
})

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save