提交 bcba6afd authored 作者: 王鹏飞's avatar 王鹏飞

update

上级 b796c904
module.exports = { module.exports = {
demain: 'dev.ezijing.com', domain: 'dev.ezijing.com',
url: 'https://transport.ezijing.com/api', url: 'https://transport.ezijing.com/api',
// apiBaseURL: 'https://zy2.ezijing.com/', // apiBaseURL: 'https://zy2.ezijing.com/',
webpack: { webpack: {
......
var semver = require('semver')
var requiredVersion = require('../package.json').engines.node
function checkNodeVersion (wanted, id) {
if (!semver.satisfies(process.version, wanted)) {
console.log('\x1b[91m%s\x1B[0m',
'You are using Node ' + process.version + ', but this version of ' + id +
' requires Node ' + wanted + '.\nPlease upgrade your Node version.'
)
process.exit(1)
}
}
checkNodeVersion(requiredVersion, '`node uploadAliyunCDN.js`')
const isDev = process.env.NODE_ENV const isDev = process.env.NODE_ENV
const RegStrs = require('./regExpStr.js')
let config = { let config = {
isDev: isDev, isDev: isDev,
...@@ -12,6 +13,8 @@ let config = { ...@@ -12,6 +13,8 @@ let config = {
isHttps: true, isHttps: true,
isEnableToIphoneDebugger: false,
CDN_BASE: 'https://zws-imgs-pub.ezijing.com/', CDN_BASE: 'https://zws-imgs-pub.ezijing.com/',
CDN_DIR: 'static/build/learn-mba/', CDN_DIR: 'static/build/learn-mba/',
isUploadStatic: false, isUploadStatic: false,
...@@ -19,10 +22,12 @@ let config = { ...@@ -19,10 +22,12 @@ let config = {
webpack: {} webpack: {}
} }
config.RegStrs = RegStrs
let vueClientConfig = {} let vueClientConfig = {}
config.domain = 'dev.ezijing.com' config.domain = ''
if (config.isDev === 'development') { if (config.isDev === 'development') {
config.url = 'http://dev.ezijing.com:12002' config.url = 'http://' + config.domain + ':12002'
try { try {
vueClientConfig = require('../.config.dev.js') vueClientConfig = require('../.config.dev.js')
} catch (error) { } catch (error) {
......
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA9MjUExxOj6tfMUaU+t/k0+VokVkh1GVZACLPdxR2VcjjOkaI
qloY4TK4/uybncLhoqu9ggyiJFNmXVLxe2TxReGXhR8tAc0RTCuaFv0oHJ7HXI48
CZ/zc8sgjyd7XsuyRurKwpHWXfy9FMHE7r/9R+IUHAkIPmZ17qlwqphlePK8I1fn
DU/LOvglXPIlR55TUe6NKVoCPZXQEHHPZClH0qdnXFiUq5I1f6GMUoGCbV5DLECb
OAndCP/snqakw8oeLmoBGSig/FGrc/41l2DJxyIxm/CfaEhfnSN4hvOTAFXcro9c
gyy88H1BfT/bEhM7OO+RRaKUrV5CieeIOEmvGQIDAQABAoIBAGmkcsJ8qPsgPskJ
aSqMjjlU/Lgd+5eq1apVW6xMzHVhaY+w+TJsB+jI90Yt30tK3A5UiEkkIqYCyF7m
eQmEGwzJu5bcSZRJaHmzJ6FcSH9xlyC+0fJlcbA7riWaKIhU6O/qTO+D+Tw+42ud
5NwVR75KN9uRmlkz5xnFTraRZtm3MJmA7dwXK3hrN+dFJR2vLO3KBAtpgtpPdkK1
ObpJQ1Q7jsnEmODVRZ7n1CKZEDmXd8GBPA/jCVqgiEbVVCdkhHkyxyIMQenBReyy
tJIPf7CdL3O3PPsThhMa1P2CP/xehS4bcQSLw9wtNTJcvVPHTvffHKOKUfhUxkHu
0cpl+zECgYEA/jzySW/br7W+xS2e4VBHzY+UZJwxd/3mY3d/kasMV1zuipr6WOhQ
FVsd5uJXPRr+rHBypwyOIlP205V2K5oQEK0yT+tF+IBvKGdJv89wskCgrXcD3Kfb
dCFbt014pHw89A8jb8LBbGOPH6jhZhGkxP33CJdVPtncUc4m0hj4HHcCgYEA9nsc
KcCZOIYRlZmJ93DoukhjxaouGFDTOZoujaqasrfXUaWRnpZYekDZWa1NneOzLBEz
h1RwPcmeYLCVRmXtpRzLOKXfJY0gGSJr979I0AVkzj8A9NZcU/HxUP0GqpwBbzAp
EEShQVhjYppQ62KAwZ1tbsVWX2V1SBsa3McExO8CgYEA6kVy5aTDhOgugDeHnguB
/rN9hDBBjVZTQ/jLfolld+NUlDg21FJN6T/rD+Qli1MitfdwTupM1ukUGugw2gC/
KP7Py8D62wBObaav2KXoLPlMlkuDLYMnv501jHVA5CDvcd25Q7Ts01nyerP97zX2
5Oc5CZuZm67ZTDBwqU0E5AUCgYBIC2wL+DPRBb8WDy74mJQt/wLKwBeBG/7hk2OQ
HRHis0HIp7CMvj1WXqYpRDKvt+KjOtPo9pFoPgqBEJxRW3G/FU+BW1qCS2HadulA
HTVXOHxinJ/W8OFD2DBFD/Bm5fq1WUpnaugHhaJnK9wDMWOZND7MZfn9IFbLoMCV
T8bhGQKBgG7qsZhI9ldAqooZQ1xSua/2SBc8GI8d03g7y8kZkkx/XclbEz6X6wUu
U3PVL+neY8Qw3JxC1cHS++KIdHR2ZSoTpF00A4QvDJL0+eo1KgI88vRV8QaWLxPB
ahvXwmkKW2+jgvCAqFtepZx/KsKpQW+x3GOJyhl2tIT8sZwRmE6u
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFhzCCBG+gAwIBAgIQCzEi4VmynSzbyBV1UEXGojANBgkqhkiG9w0BAQsFADBu
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMS0wKwYDVQQDEyRFbmNyeXB0aW9uIEV2ZXJ5d2hlcmUg
RFYgVExTIENBIC0gRzEwHhcNMjAxMTA5MDAwMDAwWhcNMjExMTA5MjM1OTU5WjAa
MRgwFgYDVQQDEw9kZXYuZXppamluZy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQD0yNQTHE6Pq18xRpT63+TT5WiRWSHUZVkAIs93FHZVyOM6Roiq
WhjhMrj+7JudwuGiq72CDKIkU2ZdUvF7ZPFF4ZeFHy0BzRFMK5oW/SgcnsdcjjwJ
n/NzyyCPJ3tey7JG6srCkdZd/L0UwcTuv/1H4hQcCQg+ZnXuqXCqmGV48rwjV+cN
T8s6+CVc8iVHnlNR7o0pWgI9ldAQcc9kKUfSp2dcWJSrkjV/oYxSgYJtXkMsQJs4
Cd0I/+yepqTDyh4uagEZKKD8Uatz/jWXYMnHIjGb8J9oSF+dI3iG85MAVdyuj1yD
LLzwfUF9P9sSEzs475FFopStXkKJ54g4Sa8ZAgMBAAGjggJzMIICbzAfBgNVHSME
GDAWgBRVdE+yck/1YLpQ0dfmUVyaAYca1zAdBgNVHQ4EFgQUkRHkmubxZAvEWtCY
IBT9sw/3Yb8wGgYDVR0RBBMwEYIPZGV2LmV6aWppbmcuY29tMA4GA1UdDwEB/wQE
AwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwTAYDVR0gBEUwQzA3
BglghkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQu
Y29tL0NQUzAIBgZngQwBAgEwgYAGCCsGAQUFBwEBBHQwcjAkBggrBgEFBQcwAYYY
aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEoGCCsGAQUFBzAChj5odHRwOi8vY2Fj
ZXJ0cy5kaWdpY2VydC5jb20vRW5jcnlwdGlvbkV2ZXJ5d2hlcmVEVlRMU0NBLUcx
LmNydDAJBgNVHRMEAjAAMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYA9lyUL9F3
MCIUVBgIMJRWjuNNExkzv98MLyALzE7xZOMAAAF1qpa6jQAABAMARzBFAiAwHOcp
Ua1H0WK4OZUHiQ1rndqnYxPHhP9XWunwpRMoagIhAOB2MPSW9M4qj6Yih7eQkydl
lgawpoBZzRzhisU+TN67AHYAXNxDkv7mq0VEsV6a1FbmEDf71fpH3KFzlLJe5vbH
DsoAAAF1qpa63gAABAMARzBFAiEA92ZeW0PgyWW3j+3wypLS0O/wI63C+x0WTvMZ
Vngp6AMCIBoThjaKif+XY11YbaV89ndqs1nDlzbEfBrFftoB9fchMA0GCSqGSIb3
DQEBCwUAA4IBAQA2geo9wQAd+vx+lwAafVRxCBQyBiS0qT413ewYpZYDnSkLX0l1
5kRdxDGWQhPzOio0ckj/jOtOlbbSsiovBBVTyYPB8WfkNjMd0psMNx2e6Wy/WKkQ
X3DqEOB4XGg0RwpebiAmz6lWxyFwIAbCrwCntkkaIF4LnIvczn6pvPFBtK2nXJJC
HL0Igbxo+xJLt3Hql7TcwkFDXz/LIB8AwhhkkhhwW45r3Eyjw8eOyzvflDPwSNH+
ByadQ+AH4H4vYYVo0ILNIPCdaokLQ+u4FttB9VQ+iGmpJ56Yg2muxWh8Qckca+vH
40RbC5aK1RSy2RIRpC5fwvq2JuV/CksP5G5Q
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
-----END CERTIFICATE-----
const fs = require('fs')
const path = require('path')
const request = require('request')
const _conf = require('./config')
fs.writeFileSync(path.join(__dirname, _conf.domain + '.key'), '', { encoding: 'utf8', mode: 0o755 })
fs.writeFileSync(path.join(__dirname, _conf.domain + '.pem'), '', { encoding: 'utf8', mode: 0o755 })
request('https://ssl.godzyx.com/' + _conf.domain + '/' + _conf.domain + '.key?get=allow').pipe(fs.createWriteStream(path.join(__dirname, _conf.domain + '.key')))
request('https://ssl.godzyx.com/' + _conf.domain + '/' + _conf.domain + '.pem?get=allow').pipe(fs.createWriteStream(path.join(__dirname, _conf.domain + '.pem')))
/* 由于正则表达式,不能进行跟 gulpfile 中 去注释 在一起 */
module.exports = {
regExp_static: /('|"|`)[\.|\/]*?static\/(.*?\.(png|jpe?g|gif|svg|ico)(\?.*)?)\1/g
}
const _conf = require('./config')
module.exports = function (source) {
if (_conf.isDev !== 'development') {
return source
.replace(_conf.RegStrs.regExp_static, '$1' + _conf.CDN_BASE + _conf.CDN_DIR + 'static/$2$1')
} else {
return source
}
}
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
...@@ -13,7 +14,7 @@ const client = new OSS({ ...@@ -13,7 +14,7 @@ const client = new OSS({
}) })
const headers = { const headers = {
'x-oss-traffic-limit': 8 * 1024 * 100 * 100 // 设置限速,最小100KB/s。设置为 10000KB/s 'x-oss-traffic-limit': 8 * 1024 * 100 * 100
} }
const DIR_PATH = path.join(__dirname, '../' + conf.DesDir) const DIR_PATH = path.join(__dirname, '../' + conf.DesDir)
...@@ -21,13 +22,12 @@ const PREFIX_PATH = conf.CDN_DIR ...@@ -21,13 +22,12 @@ const PREFIX_PATH = conf.CDN_DIR
const isUploadStatic = conf.isUploadStatic const isUploadStatic = conf.isUploadStatic
let fileCount = 1 let fileCount = 1
async function uploadFile(prefixPath, dirFileName) { async function uploadFile (prefixPath, dirFileName) {
const upFilePath = prefixPath.replace(new RegExp(DIR_PATH, 'gi'), '') + path.basename(dirFileName)
try { try {
// const result = await client.put(prefixPath + path.basename(dirFileName), dirFileName) const upFilePath = prefixPath.replace(new RegExp(DIR_PATH, 'gi'), '') + path.basename(dirFileName)
let result = await client.put(prefixPath + path.basename(dirFileName), dirFileName, { const result = await client.put(prefixPath + path.basename(dirFileName), dirFileName, {
headers, headers,
timeout: 600000 // 默认超时时长为60000ms。超时直接报错,限速上传时注意修改超时时长。设置为600s timeout: 600000
}) })
if (result.res.status === 200) { if (result.res.status === 200) {
console.log('第' + fileCount++ + '个文件,已上传:' + conf.CDN_BASE + upFilePath) console.log('第' + fileCount++ + '个文件,已上传:' + conf.CDN_BASE + upFilePath)
...@@ -39,17 +39,15 @@ async function uploadFile(prefixPath, dirFileName) { ...@@ -39,17 +39,15 @@ async function uploadFile(prefixPath, dirFileName) {
} }
} }
function uploadfiles(dirPath, callback) { function uploadfiles (dirPath, callback) {
const files = fs.readdirSync(dirPath) const files = fs.readdirSync(dirPath)
files.forEach(function(filename, i) { files.forEach(function (filename, i) {
const filedir = path.join(dirPath, filename) const filedir = path.join(dirPath, filename)
const info = fs.statSync(filedir) const info = fs.statSync(filedir)
if (info.isDirectory()) { if (info.isDirectory()) {
if (!(isUploadStatic ? true : filename !== 'static')) { if (!(isUploadStatic ? true : filename !== 'static')) { return }
return
}
const morePath = filedir.replace(new RegExp(DIR_PATH, 'gi'), '') + '/' const morePath = filedir.replace(new RegExp(DIR_PATH, 'gi'), '') + '/'
uploadfiles(filedir, function(filedir) { uploadfiles(filedir, function (filedir) {
uploadFile(path.join(PREFIX_PATH, morePath), filedir) uploadFile(path.join(PREFIX_PATH, morePath), filedir)
}) })
} else { } else {
......
...@@ -7,6 +7,7 @@ const _conf = require('./config') ...@@ -7,6 +7,7 @@ const _conf = require('./config')
const $GLOBAL = { const $GLOBAL = {
isDev: _conf.isDev, isDev: _conf.isDev,
ResDir: _conf.ResDir, ResDir: _conf.ResDir,
'isEnableToIphoneDebugger': _conf.isEnableToIphoneDebugger,
templatePath: path.resolve(__dirname, '../' + _conf.HtmlPath), templatePath: path.resolve(__dirname, '../' + _conf.HtmlPath),
icoPath: _conf.IcoPath, icoPath: _conf.IcoPath,
...@@ -21,9 +22,12 @@ const $GLOBAL = { ...@@ -21,9 +22,12 @@ const $GLOBAL = {
EntryStaticPath: path.resolve(__dirname, '../' + 'static'), EntryStaticPath: path.resolve(__dirname, '../' + 'static'),
OutputStaticPath: path.resolve(__dirname, '../' + _conf.DesDir + '/static'), OutputStaticPath: path.resolve(__dirname, '../' + _conf.DesDir + '/static'),
RegStrs: _conf.RegStrs,
webConf: { webConf: {
'isDev': _conf.isDev, 'isDev': _conf.isDev,
'serverPort': process.env.SERVER_PORT || 8000, 'serverPort': process.env.SERVER_PORT || 8000,
'isEnableToIphoneDebugger': _conf.isEnableToIphoneDebugger,
'domain': _conf.domain, 'domain': _conf.domain,
'url': _conf.url, 'url': _conf.url,
'isHttps': _conf.isHttps, 'isHttps': _conf.isHttps,
...@@ -50,7 +54,8 @@ $GLOBAL.BaseConfig = { ...@@ -50,7 +54,8 @@ $GLOBAL.BaseConfig = {
'@api': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/api'), '@api': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/api'),
'@action': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/action'), '@action': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/action'),
'@tool': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/tool') '@tool': path.resolve(__dirname, '../' + $GLOBAL.ResDir + '/tool')
} },
extensions: ['.js', '.json', '.jsx', '.vue']
}, },
module: { module: {
rules: [ rules: [
...@@ -60,6 +65,12 @@ $GLOBAL.BaseConfig = { ...@@ -60,6 +65,12 @@ $GLOBAL.BaseConfig = {
exclude: /node_modules/, exclude: /node_modules/,
enforce: 'pre' enforce: 'pre'
}, },
{
test: /\.(vue|js|jsx)|((sa|sc|c)ss)$/,
loader: './build/stringReplaceLoader.js',
exclude: /node_modules/,
enforce: 'pre'
},
{ {
test: /\.vue$/, test: /\.vue$/,
loader: 'vue-loader' loader: 'vue-loader'
...@@ -69,10 +80,32 @@ $GLOBAL.BaseConfig = { ...@@ -69,10 +80,32 @@ $GLOBAL.BaseConfig = {
exclude: /(node_modules)|(dist)/, exclude: /(node_modules)|(dist)/,
loader: 'babel-loader', loader: 'babel-loader',
options: { options: {
presets: ['env', 'stage-2'], presets: [[
'@babel/preset-env',
{
"targets": {
"browsers": [
"last 2 versions",
"ie >= 11"
],
},
corejs: '3.6.5',
useBuiltIns: 'usage'
}
]],
plugins: [ plugins: [
'transform-vue-jsx', '@babel/plugin-syntax-jsx',
'syntax-dynamic-import' '@babel/plugin-proposal-class-properties',
'@babel/plugin-syntax-dynamic-import',
[
'@babel/plugin-transform-runtime',
{
corejs: 3,
helpers: true,
regenerator: true,
useESModules: false
}
]
] ]
} }
}, },
......
...@@ -9,7 +9,9 @@ const VueLoaderPlugin = require('vue-loader/lib/plugin') ...@@ -9,7 +9,9 @@ const VueLoaderPlugin = require('vue-loader/lib/plugin')
const AutoPrefixer = require('autoprefixer') const AutoPrefixer = require('autoprefixer')
const MiniCssExtractPlugin = require('mini-css-extract-plugin') const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin') const HtmlWebpackPlugin = require('html-webpack-plugin')
const HtmlReplaceWebpackPlugin = require('html-replace-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin') const CopyWebpackPlugin = require('copy-webpack-plugin')
const VconsoleWebpackPlugin = require('vconsole-webpack-plugin')
const $GLOBAL = require('./webpack.base.conf') const $GLOBAL = require('./webpack.base.conf')
...@@ -28,8 +30,8 @@ if ($GLOBAL.isDev === 'development') { ...@@ -28,8 +30,8 @@ if ($GLOBAL.isDev === 'development') {
host: $GLOBAL.webConf.domain || 'localhost', host: $GLOBAL.webConf.domain || 'localhost',
http2: false, http2: false,
https: $GLOBAL.webConf.isHttps && { https: $GLOBAL.webConf.isHttps && {
key: fs.readFileSync(path.join(__dirname, '../static/cert/dev.ezijing.com.key')), key: fs.readFileSync(path.join(__dirname, $GLOBAL.webConf.domain + '.key')),
cert: fs.readFileSync(path.join(__dirname, '../static/cert/dev.ezijing.com.pem')) cert: fs.readFileSync(path.join(__dirname, $GLOBAL.webConf.domain + '.pem'))
}, },
overlay: { overlay: {
errors: true errors: true
...@@ -46,8 +48,7 @@ if ($GLOBAL.isDev === 'development') { ...@@ -46,8 +48,7 @@ if ($GLOBAL.isDev === 'development') {
followRedirects: true, followRedirects: true,
logLevel: 'info', logLevel: 'info',
headers: { headers: {
'Referer': $GLOBAL.webConf.url, 'Referer': $GLOBAL.webConf.url
'Connection': 'keep-alive'
}, },
pathRewrite: { pathRewrite: {
'^/api': '/' '^/api': '/'
...@@ -94,6 +95,10 @@ if ($GLOBAL.isDev === 'development') { ...@@ -94,6 +95,10 @@ if ($GLOBAL.isDev === 'development') {
template: $GLOBAL.templatePath, template: $GLOBAL.templatePath,
inject: true, inject: true,
favicon: $GLOBAL.icoPath favicon: $GLOBAL.icoPath
}),
new VconsoleWebpackPlugin({
filter: [],
enable: $GLOBAL.isEnableToIphoneDebugger
}) })
] ]
}) })
...@@ -154,6 +159,12 @@ if ($GLOBAL.isDev === 'development') { ...@@ -154,6 +159,12 @@ if ($GLOBAL.isDev === 'development') {
collapseWhitespace: true collapseWhitespace: true
} }
}), }),
new HtmlReplaceWebpackPlugin([
{
pattern: $GLOBAL.RegStrs.regExp_static,
replacement: '$1' + $GLOBAL.webConf.CDN_PATH + 'static/$2$1'
}
]),
new CopyWebpackPlugin([ new CopyWebpackPlugin([
{ {
from: $GLOBAL.EntryStaticPath, from: $GLOBAL.EntryStaticPath,
...@@ -163,7 +174,11 @@ if ($GLOBAL.isDev === 'development') { ...@@ -163,7 +174,11 @@ if ($GLOBAL.isDev === 'development') {
return content return content
} }
} }
]) ]),
new VconsoleWebpackPlugin({
filter: [],
enable: $GLOBAL.isEnableToIphoneDebugger
})
], ],
optimization: { optimization: {
runtimeChunk: { runtimeChunk: {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
{ {
"name": "@god/vue-client", "name": "@god/vue-client",
"version": "3.0.9", "version": "3.0.15",
"description": "适应于公司全系统的纯客户端开发模型", "description": "适应于公司全系统的纯客户端开发模型",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
"lint": "eslint --ext .js --ext .jsx --ext .vue src/", "lint": "eslint --ext .js --ext .jsx --ext .vue src/",
"lint:fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/", "lint:fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/",
"dev": "cross-env NODE_ENV=development SERVER_PORT=3002 webpack-dev-server --inline --progress --config build/webpack.client.conf.js", "dev": "npm run check:node && cross-env NODE_ENV=development node build/getSSL.js && cross-env NODE_ENV=development SERVER_PORT=3001 webpack-dev-server --inline --progress --config build/webpack.client.conf.js",
"build:test": "cross-env NODE_ENV=test webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=test n use 8.11.3 ./build/uploadAliyunCDN.js", "build:test": "npm run check:node && cross-env NODE_ENV=test webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=test node ./build/uploadAliyunCDN.js",
"build:pro": "cross-env NODE_ENV=production webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=production n use 8.11.3 ./build/uploadAliyunCDN.js" "build:pro": "npm run check:node && cross-env NODE_ENV=production webpack --progress --config build/webpack.client.conf.js && cross-env NODE_ENV=production node ./build/uploadAliyunCDN.js",
"check:node": "node build/checkNodeVersion.js"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
...@@ -25,50 +26,54 @@ ...@@ -25,50 +26,54 @@
"assets/font-icons/" "assets/font-icons/"
], ],
"devDependencies": { "devDependencies": {
"@babel/core": "^7.11.6",
"@babel/plugin-proposal-class-properties": "^7.10.4",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-jsx": "^7.10.4",
"@babel/plugin-transform-runtime": "^7.11.5",
"@babel/preset-env": "^7.11.5",
"@babel/runtime-corejs3": "^7.11.2",
"acorn": "^7.1.1", "acorn": "^7.1.1",
"ali-oss": "^6.10.0", "ali-oss": "^6.11.2",
"autoprefixer": "^9.7.5", "autoprefixer": "^9.8.6",
"babel-core": "^6.26.3",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-helper-vue-jsx-merge-props": "^2.0.3",
"babel-loader": "^7.1.5", "babel-loader": "^8.1.0",
"babel-plugin-syntax-dynamic-import": "^6.18.0", "clean-webpack-plugin": "^1.0.1",
"babel-plugin-syntax-jsx": "^6.18.0", "copy-webpack-plugin": "^5.1.2",
"babel-plugin-transform-vue-jsx": "^3.7.0", "css-loader": "^4.3.0",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-2": "^6.24.1",
"clean-webpack-plugin": "^1.0.0",
"copy-webpack-plugin": "^5.1.1",
"css-loader": "^3.4.2",
"dart-sass": "^1.25.0", "dart-sass": "^1.25.0",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-config-standard": "^14.1.1", "eslint-config-standard": "^14.1.1",
"eslint-loader": "^3.0.4", "eslint-loader": "^3.0.4",
"eslint-plugin-html": "^6.0.0", "eslint-plugin-html": "^6.1.0",
"eslint-plugin-import": "^2.20.2", "eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1", "eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1", "eslint-plugin-standard": "^4.0.1",
"eslint-plugin-vue": "^6.2.2", "eslint-plugin-vue": "^6.2.2",
"file-loader": "^6.0.0", "file-loader": "^6.1.1",
"html-webpack-plugin": "^4.0.4", "html-replace-webpack-plugin": "^2.5.6",
"html-webpack-plugin": "^4.5.0",
"mini-css-extract-plugin": "^0.9.0", "mini-css-extract-plugin": "^0.9.0",
"postcss-loader": "^3.0.0", "postcss-loader": "^3.0.0",
"sass-loader": "^7.3.1", "request": "^2.88.2",
"style-loader": "^1.1.3", "sass-loader": "^10.0.3",
"url-loader": "^4.0.0", "semver": "^1.1.4",
"webpack": "^4.42.1", "style-loader": "^2.0.0",
"webpack-cli": "^3.3.11", "url-loader": "^4.1.1",
"webpack-dev-server": "^3.10.3", "vconsole-webpack-plugin": "^1.5.2",
"webpack": "^4.44.2",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.0",
"webpack-merge": "^4.2.2" "webpack-merge": "^4.2.2"
}, },
"dependencies": { "dependencies": {
"axios": "^0.20.0", "axios": "^0.20.0",
"core-js": "^3.6.5",
"cross-env": "^7.0.2", "cross-env": "^7.0.2",
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"promise.prototype.finally": "^3.1.2",
"regenerator": "^0.14.4",
"swiper": "^5.4.5", "swiper": "^5.4.5",
"vant": "^2.10.3", "vant": "^2.10.3",
"vue": "^2.6.12", "vue": "^2.6.12",
...@@ -79,5 +84,8 @@ ...@@ -79,5 +84,8 @@
"vue-router": "^3.4.3", "vue-router": "^3.4.3",
"vue-template-compiler": "^2.6.12", "vue-template-compiler": "^2.6.12",
"vuex": "^3.5.1" "vuex": "^3.5.1"
},
"engines": {
"node": ">=8.9"
} }
} }
...@@ -17,11 +17,6 @@ import 'vant/lib/index.css' ...@@ -17,11 +17,6 @@ import 'vant/lib/index.css'
Vue.use(Vant) Vue.use(Vant)
/* 兼容处理 start */
/* 处理低版本浏览器支持axios finally问题 */
require('promise.prototype.finally').shim()
/* 兼容处理 end */
Vue.use(VueI18n) Vue.use(VueI18n)
const i18n = createI18n() const i18n = createI18n()
......
...@@ -5,20 +5,20 @@ ...@@ -5,20 +5,20 @@
<div class="order-info"> <div class="order-info">
<div class="no-c"></div> <div class="no-c"></div>
<img :src="item.product_image" /> <img :src="item.product_image" />
<div class="txt">{{item.product_name}}</div> <div class="txt">{{ item.product_name }}</div>
</div> </div>
<div class="deti"> <div class="deti">
<div class="tit">课程状态:</div> <div class="tit">课程状态:</div>
<div class="val">{{item.status | courseStatusText }}</div> <div class="val">{{ item.status | courseStatusText }}</div>
</div> </div>
<div class="deti"> <div class="deti">
<div class="tit">共计:</div> <div class="tit">共计:</div>
<div class="val">{{parseInt(item.total_fee)/100}}</div> <div class="val">{{ parseInt(item.total_fee) / 100 }}</div>
</div> </div>
<div class="deti"> <div class="deti">
<div class="invo" v-if="item.status == 1" @click="goInvoice">查看发票</div> <div class="invo" v-if="item.status == 1" @click="goInvoice">查看发票</div>
<div class="val col" v-if="item.status === '-1'" @click="goBuy(item)">继续支付</div> <div class="val col" v-if="item.status === '-1'" @click="goBuy(item)">继续支付</div>
<div class="val col mar" v-else>{{item.status | orderStatusText}}</div> <div class="val col mar" v-else>{{ item.status | orderStatusText }}</div>
</div> </div>
</li> </li>
</ul> </ul>
...@@ -61,10 +61,17 @@ export default { ...@@ -61,10 +61,17 @@ export default {
}, },
// ios小程序里过滤未支付的订单 // ios小程序里过滤未支付的订单
dataList() { dataList() {
const list = this.list.filter(item => {
// 支付宝订单只显示成功的
if (item.order_no.includes('ALI')) {
return parseInt(item.status) === 1
}
return true
})
if (this.isIos && this.isWeapp) { if (this.isIos && this.isWeapp) {
return this.list.filter(item => item.status !== '-1') return list.filter(item => item.status !== '-1')
} }
return this.list return list
} }
}, },
mounted() { mounted() {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论