Commit f9ecf430 authored by Your Name's avatar Your Name

账户管理

parent 1bb1a26a
'use strict' 'use strict'
// Template version: 1.3.1 // Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation. // see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path') const path = require('path')
module.exports = { module.exports = {
dev: { dev: {
// Paths // Paths
assetsSubDirectory: 'static', assetsSubDirectory: 'static',
assetsPublicPath: '/', assetsPublicPath: '/',
proxyTable: { proxyTable: {
'/mall': { '/mall': {
target: "http://111.203.232.175:8088/mall", target: "http://111.203.232.175:8088/mall",
// target: "http://192.168.110.67/mall", // target: "http://192.168.110.67/mall",
// target: "http://192.168.204.66:8088/mall", // target: "http://192.168.204.66:8088/mall",
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/mall': '/' // 重写接口 '^/mall': '/' // 重写接口
} }
}, },
'/aa': { '/aa': {
target: "http://111.203.232.175:8085", target: "http://111.203.232.175:8085",
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/aa': '/' // 重写接口 '^/aa': '/' // 重写接口
} }
} }
}, },
// Various Dev Server settings // Various Dev Server settings
// host: 'localhost', // can be overwritten by process.env.HOST // host: 'localhost', // can be overwritten by process.env.HOST
host: '0.0.0.0', // can be overwritten by process.env.HOST host: '0.0.0.0', // can be overwritten by process.env.HOST
port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false, autoOpenBrowser: false,
errorOverlay: true, errorOverlay: true,
notifyOnErrors: true, notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
/** /**
* Source Maps * Source Maps
*/ */
// https://webpack.js.org/configuration/devtool/#development // https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-module-eval-source-map', devtool: 'cheap-module-eval-source-map',
// If you have problems debugging vue-files in devtools, // If you have problems debugging vue-files in devtools,
// set this to false - it *may* help // set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting // https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true, cacheBusting: true,
cssSourceMap: true cssSourceMap: true
}, },
build: { build: {
// Template for index.html // Template for index.html
index: path.resolve(__dirname, '../plat/index.html'), index: path.resolve(__dirname, '../plat/index.html'),
// Paths // Paths
assetsRoot: path.resolve(__dirname, '../plat'), assetsRoot: path.resolve(__dirname, '../plat'),
assetsSubDirectory: 'static', assetsSubDirectory: 'static',
assetsPublicPath: './', assetsPublicPath: './',
/** /**
* Source Maps * Source Maps
*/ */
productionSourceMap: false, productionSourceMap: false,
// https://webpack.js.org/configuration/devtool/#production // https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map', devtool: '#source-map',
// Gzip off by default as many popular static hosts such as // Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you. // Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to: // Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin // npm install --save-dev compression-webpack-plugin
productionGzip: false, productionGzip: false,
productionGzipExtensions: ['js', 'css'], productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to // Run the build command with an extra argument to
// View the bundle analyzer report after build finishes: // View the bundle analyzer report after build finishes:
// `npm run build --report` // `npm run build --report`
// Set to `true` or `false` to always turn it on or off // Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report bundleAnalyzerReport: process.env.npm_config_report
} }
} }
{ {
"name": "hall", "name": "hall",
"version": "1.0.0", "version": "1.0.0",
"description": "manage", "description": "manage",
"author": "yuyan <yuyan@wisenergy.com.cn>", "author": "yuyan <yuyan@wisenergy.com.cn>",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev", "start": "npm run dev",
"build": "node build/build.js" "build": "node build/build.js"
}, },
"dependencies": { "dependencies": {
"animate.css": "^4.1.1", "animate.css": "^4.1.1",
"axios": "^0.18.0", "axios": "^0.18.0",
"crypto-js": "^4.0.0", "crypto-js": "^4.0.0",
"echarts": "^4.2.0-rc.2", "echarts": "^4.2.0-rc.2",
"element-ui": "^2.7.2", "element-ui": "^2.7.2",
"file-saver": "^2.0.0-rc.3", "file-saver": "^2.0.0-rc.3",
"html2canvas": "^1.0.0-rc.7", "html2canvas": "^1.0.0-rc.7",
"js-base64": "^3.6.0", "js-base64": "^3.6.0",
"jspdf": "^2.3.1", "jspdf": "^2.3.1",
"moment": "^2.22.2", "moment": "^2.22.2",
"qrcode.vue": "^1.6.1", "qrcode.vue": "^1.6.1",
"qs": "^6.5.2", "qs": "^6.5.2",
"qs-stringify": "^1.1.0", "qs-stringify": "^1.1.0",
"swiper": "^5.4.5", "swiper": "^5.4.5",
"video.js": "^7.11.4", "video.js": "^7.11.4",
"vue": "^2.5.2", "vue": "^2.5.2",
"vue-awesome-swiper": "^4.1.1", "vue-awesome-swiper": "^4.1.1",
"vue-qr": "^1.5.2", "vue-qr": "^1.5.2",
"vue-router": "^3.0.1", "vue-router": "^3.0.1",
"vuex": "^3.0.1", "vuex": "^3.0.1",
"xlsx": "^0.14.0" "xlsx": "^0.14.0"
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "^7.1.2", "autoprefixer": "^7.1.2",
"babel-core": "^6.22.1", "babel-core": "^6.22.1",
"babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.1", "babel-loader": "^7.1.1",
"babel-plugin-syntax-jsx": "^6.18.0", "babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-runtime": "^6.22.0", "babel-plugin-transform-runtime": "^6.22.0",
"babel-plugin-transform-vue-jsx": "^3.5.0", "babel-plugin-transform-vue-jsx": "^3.5.0",
"babel-preset-env": "^1.3.2", "babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0", "babel-preset-stage-2": "^6.22.0",
"chalk": "^2.0.1", "chalk": "^2.0.1",
"copy-webpack-plugin": "^4.0.1", "copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.28.11", "css-loader": "^0.28.11",
"extract-text-webpack-plugin": "^3.0.0", "extract-text-webpack-plugin": "^3.0.0",
"file-loader": "^1.1.11", "file-loader": "^1.1.11",
"friendly-errors-webpack-plugin": "^1.6.1", "friendly-errors-webpack-plugin": "^1.6.1",
"html-webpack-plugin": "^2.30.1", "html-webpack-plugin": "^2.30.1",
"jquery": "^3.3.1", "jquery": "^3.3.1",
"less": "^3.8.1", "less": "^3.8.1",
"less-loader": "^4.1.0", "less-loader": "^4.1.0",
"node-notifier": "^5.1.2", "node-notifier": "^5.1.2",
"optimize-css-assets-webpack-plugin": "^3.2.0", "optimize-css-assets-webpack-plugin": "^3.2.0",
"ora": "^1.2.0", "ora": "^1.2.0",
"portfinder": "^1.0.13", "portfinder": "^1.0.13",
"postcss-import": "^11.0.0", "postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8", "postcss-loader": "^2.0.8",
"postcss-url": "^7.2.1", "postcss-url": "^7.2.1",
"rimraf": "^2.6.0", "rimraf": "^2.6.0",
"sass-resources-loader": "^2.1.1", "sass-resources-loader": "^2.1.1",
"semver": "^5.3.0", "semver": "^5.3.0",
"shelljs": "^0.7.6", "shelljs": "^0.7.6",
"style-loader": "^0.23.0", "style-loader": "^0.23.0",
"uglifyjs-webpack-plugin": "^1.1.1", "uglifyjs-webpack-plugin": "^1.1.1",
"url-loader": "^1.1.2", "url-loader": "^1.1.2",
"vue-loader": "^13.3.0", "vue-loader": "^13.3.0",
"vue-style-loader": "^3.0.1", "vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.5.2", "vue-template-compiler": "^2.5.2",
"webpack": "^3.6.0", "webpack": "^3.6.0",
"webpack-bundle-analyzer": "^2.9.0", "webpack-bundle-analyzer": "^2.9.0",
"webpack-dev-server": "^2.9.1", "webpack-dev-server": "^2.9.1",
"webpack-merge": "^4.1.0" "webpack-merge": "^4.1.0"
}, },
"engines": { "engines": {
"node": ">= 6.0.0", "node": ">= 6.0.0",
"npm": ">= 3.0.0" "npm": ">= 3.0.0"
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",
"last 2 versions", "last 2 versions",
"not ie <= 8" "not ie <= 8"
] ]
} }
<template> <template>
<el-dialog <el-dialog
class="custom-dialog" class="custom-dialog"
custom-class="party-dialog" custom-class="party-dialog"
title="上传新版安装包" title="上传新版安装包"
width="468px" width="468px"
:visible.sync="formVisible" :visible.sync="formVisible"
:before-close="close" :before-close="close"
> >
<div class="dialog-content"> <div class="dialog-content">
<el-form <el-form
:model="formItem" :model="formItem"
class="party-form version-add" class="party-form version-add"
ref="formItem" ref="formItem"
label-position="top" label-position="top"
:rules="rules" :rules="rules"
> >
<el-form-item label="版本号:" prop="appVersion"> <el-form-item label="版本号:" prop="appVersion">
<el-input <el-input
maxlength="20" maxlength="20"
v-model="formItem.appVersion" v-model="formItem.appVersion"
clearable clearable
placeholder="请输入版本号" placeholder="请输入版本号"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="版本信息:" prop="versionInfo"> <el-form-item label="版本信息:" prop="versionInfo">
<el-input <el-input
maxlength="100" maxlength="100"
type="textarea" type="textarea"
v-model="formItem.versionInfo" v-model="formItem.versionInfo"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="更新内容:" prop="updateLog"> <el-form-item label="更新内容:" prop="updateLog">
<el-input <el-input
maxlength="100" maxlength="100"
type="textarea" type="textarea"
v-model="formItem.updateLog" v-model="formItem.updateLog"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-upload <el-upload
class="text-center" class="text-center"
drag drag
:action="uploadUrl" :action="uploadUrl"
:headers ="headers" :headers ="headers"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
:file-list="fileList" :file-list="fileList"
> >
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text"> <div class="el-upload__text">
将安装包拖到此处,或<em>点击上传安装包</em> 将安装包拖到此处,或<em>点击上传安装包</em>
</div> </div>
<div class="el-upload__tip" slot="tip">只能上传apk文件</div> <div class="el-upload__tip" slot="tip">只能上传apk文件</div>
</el-upload> </el-upload>
</el-form> </el-form>
</div> </div>
<div slot="footer" class="dialog-footer btn-group"> <div slot="footer" class="dialog-footer btn-group">
<el-button size="mini" @click="close">取 消</el-button> <el-button size="mini" @click="close">取 消</el-button>
<el-button size="mini" type="primary" @click="submitForm('formItem')">确定</el-button> <el-button size="mini" type="primary" @click="submitForm('formItem')">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
uploadUrl:'http://111.203.232.175:8088/mall/file/upload/allType', uploadUrl:'http://111.203.232.175:8088/mall/file/upload/allType',
formVisible: false, formVisible: false,
headers:{Authorization: localStorage.getItem('backToken')}, headers:{Authorization: localStorage.getItem('backToken')},
formItem: {}, formItem: {},
fileList: [], fileList: [],
rules: { rules: {
appVersion: [ appVersion: [
{ required: true, message: "请输入版本号", trigger: "blur" }, { required: true, message: "请输入版本号", trigger: "blur" },
], ],
versionInfo: [ versionInfo: [
{ required: true, message: "请输入版本信息", trigger: "blur" }, { required: true, message: "请输入版本信息", trigger: "blur" },
], ],
updateLog: [ updateLog: [
{ required: true, message: "请输入更新内容", trigger: "blur" }, { required: true, message: "请输入更新内容", trigger: "blur" },
], ],
}, },
}; };
}, },
methods: { methods: {
backFn() { backFn() {
this.formVisible = true this.formVisible = true
this.formItem = {} this.formItem = {}
this.fileList = [] this.fileList = []
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.formItem.clearValidate() this.$refs.formItem.clearValidate()
}); });
}, },
// 关闭 // 关闭
close() { close() {
this.formVisible = false; this.formVisible = false;
for (let key in this.formItem) { for (let key in this.formItem) {
this.formItem[key] = null this.formItem[key] = null
} }
this.$refs["formItem"].resetFields() this.$refs["formItem"].resetFields()
}, },
// 格式控制 // 格式控制
handleBeforeUpload(file) { handleBeforeUpload(file) {
if (file.type !== "application/vnd.android.package-archive") { if (file.type !== "application/vnd.android.package-archive") {
this.$message.error("只能上传apk文件") this.$message.error("只能上传apk文件")
return false return false
} }
return true return true
}, },
// 上传数据操作 // 上传数据操作
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
if(res.resultCode==='200'){ if(res.resultCode==='200'){
this.formItem.apkUrl = res.data.url this.formItem.apkUrl = res.data.url
}else{ }else{
this.$message.error(res.message) this.$message.error(res.message)
} }
}, },
// 保存编辑信息 // 保存编辑信息
submitForm() { submitForm() {
let _this = this let _this = this
_this.$refs.formItem.validate((valid) => { _this.$refs.formItem.validate((valid) => {
if (valid) { if (valid) {
if (!this.formItem.apkUrl) { if (!this.formItem.apkUrl) {
this.$message.info("请先选取文件!") this.$message.info("请先选取文件!")
return false return false
} }
let param = { let param = {
appVersion: this.formItem.appVersion, appVersion: this.formItem.appVersion,
versionInfo: this.formItem.versionInfo, versionInfo: this.formItem.versionInfo,
updateLog: this.formItem.updateLog, updateLog: this.formItem.updateLog,
apkUrl: this.formItem.apkUrl, apkUrl: this.formItem.apkUrl,
} }
_this _this
.$https( .$https(
{ {
url: "tAppVersion/save", url: "tAppVersion/save",
method: "post", method: "post",
authType: this.backToken, authType: this.backToken,
}, },
_this.$qs.stringify(param) _this.$qs.stringify(param)
) )
.then( .then(
(res) => { (res) => {
if (res.data.resultCode === "200") { if (res.data.resultCode === "200") {
_this.$message.success(res.data.message) _this.$message.success(res.data.message)
_this.formVisible = false _this.formVisible = false
_this.$emit("refreshFn") _this.$emit("refreshFn")
} else { } else {
_this.$message.error(res.data.message) _this.$message.error(res.data.message)
} }
}, },
(error) => { (error) => {
console.log(error) console.log(error)
} }
) )
} }
}) })
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.version-add { .version-add {
.el-upload-dragger { .el-upload-dragger {
height: 120px; height: 120px;
.el-icon-upload { .el-icon-upload {
margin-top: 10px; margin-top: 10px;
} }
} }
.text-center { .text-center {
text-align: center; text-align: center;
} }
} }
</style> </style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template> <template>
<div> <div>
<el-upload <el-upload
accept=".jpg,.jpeg,.png.JPG,.JPEG,.PNG" accept=".jpg,.jpeg,.png.JPG,.JPEG,.PNG"
:class="{disabled:uploadDisabled}" :class="{disabled:uploadDisabled}"
action="http://111.203.232.175:8088/mall/file/image/upload" action="http://111.203.232.175:8088/mall/file/image/upload"
list-type="picture-card" list-type="picture-card"
:on-preview="handlePictureCardPreview" :on-preview="handlePictureCardPreview"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:headers="headers" :headers="headers"
:file-list="fileList" :file-list="fileList"
:limit="1" :limit="1"
:multiple ="false" :multiple ="false"
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
<div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div> <div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div>
</el-upload> </el-upload>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt /> <img width="100%" :src="dialogImageUrl" alt />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props:{ props:{
fileList:{ fileList:{
type:Array, type:Array,
default:[] default:[]
}, },
}, },
data() { data() {
return { return {
dialogImageUrl: "", dialogImageUrl: "",
dialogVisible: false, dialogVisible: false,
imageUrl:"" imageUrl:""
}; };
}, },
computed: { computed: {
headers() { headers() {
return { return {
Authorization: localStorage.getItem("backToken") || "", Authorization: localStorage.getItem("backToken") || "",
}; };
}, },
uploadDisabled:function() { uploadDisabled:function() {
return (this.fileList.length>0)||this.imageUrl return (this.fileList.length>0)||this.imageUrl
}, },
}, },
methods: { methods: {
// 图片上传成功的返回值 // 图片上传成功的返回值
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
if (res.resultCode == 200) { if (res.resultCode == 200) {
this.$emit("imgUrl", res.data.url); this.$emit("imgUrl", res.data.url);
this.imageUrl = res.data.url; this.imageUrl = res.data.url;
} else { } else {
this.$message.error(res.message); this.$message.error(res.message);
} }
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
this.$emit("imgUrl", ""); this.$emit("imgUrl", "");
this.imageUrl="" this.imageUrl=""
this.fileList=[] this.fileList=[]
}, },
handlePictureCardPreview(file) { handlePictureCardPreview(file) {
this.dialogImageUrl = file.url; this.dialogImageUrl = file.url;
this.dialogVisible = true; this.dialogVisible = true;
}, },
showImg(cover) { showImg(cover) {
let file = { let file = {
name: "", name: "",
url: cover, url: cover,
}; };
this.fileList = [file] this.fileList = [file]
}, },
}, },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.avatar { .avatar {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.color_red{ .color_red{
color:red; color:red;
} }
.disabled .el-upload--picture-card { .disabled .el-upload--picture-card {
display: none; display: none;
} }
</style> </style>
<template> <template>
<div> <div>
<el-upload <el-upload
accept=".jpg,.jpeg,.png,.JPG,.JPEG,.PBG" accept=".jpg,.jpeg,.png,.JPG,.JPEG,.PBG"
:class="{disabled:uploadDisabled}" :class="{disabled:uploadDisabled}"
action="http://111.203.232.175:8088/mall/file/image/upload" action="http://111.203.232.175:8088/mall/file/image/upload"
list-type="picture-card" list-type="picture-card"
:on-preview="handlePictureCardPreview" :on-preview="handlePictureCardPreview"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:headers="headers" :headers="headers"
:file-list="fileList" :file-list="fileList"
:limit="1" :limit="1"
:multiple ="false" :multiple ="false"
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
<div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div> <div slot="tip" class="el-upload__tip color_red">只能上传.jpg/.jpeg/.png文件</div>
</el-upload> </el-upload>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt /> <img width="100%" :src="dialogImageUrl" alt />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props:{ props:{
fileList:{ fileList:{
type:Array, type:Array,
default:[ default:[
{ {
name: "", name: "",
url: "", url: "",
}, },
] ]
}, },
}, },
data() { data() {
return { return {
dialogImageUrl: "", dialogImageUrl: "",
dialogVisible: false, dialogVisible: false,
imageUrl:"" imageUrl:""
}; };
}, },
computed: { computed: {
headers() { headers() {
// return { 'token': this.backToken } // return { 'token': this.backToken }
return {'Authorization':localStorage.getItem('backToken')} return {'Authorization':localStorage.getItem('backToken')}
}, },
uploadDisabled:function() { uploadDisabled:function() {
return (this.fileList.length>0)||this.imageUrl return (this.fileList.length>0)||this.imageUrl
}, },
}, },
methods: { methods: {
// 图片上传成功的返回值 // 图片上传成功的返回值
handleAvatarSuccess(res, file) { handleAvatarSuccess(res, file) {
// this.$emit('qrcodeUrl', res.data.url) // this.$emit('qrcodeUrl', res.data.url)
if (res.resultCode == 200) { if (res.resultCode == 200) {
this.$emit('qrcodeUrl', res.data.url) this.$emit('qrcodeUrl', res.data.url)
this.imageUrl = res.data.url; this.imageUrl = res.data.url;
} else { } else {
this.$message.error(res.message); this.$message.error(res.message);
} }
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
console.log(file, fileList); console.log(file, fileList);
this.$emit("qrcodeUrl", ""); this.$emit("qrcodeUrl", "");
this.imageUrl="" this.imageUrl=""
this.fileList=[] this.fileList=[]
}, },
handlePictureCardPreview(file) { handlePictureCardPreview(file) {
this.dialogImageUrl = file.url; this.dialogImageUrl = file.url;
this.dialogVisible = true; this.dialogVisible = true;
} }
} }
}; };
</script> </script>
<style> <style>
.color_red{ .color_red{
color:red; color:red;
} }
.disabled .el-upload--picture-card { .disabled .el-upload--picture-card {
display: none; display: none;
} }
</style> </style>
This diff is collapsed.
{ {
"baseUrl_backUp": "/mall/", "baseUrl_backUp": "/mall/",
"baseUrl": "/mall/", "baseUrl": "/mall/",
"directory": "/plat" "directory": "/plat"
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment