Commit bb974807 authored by 刘殿昕's avatar 刘殿昕

apaas/apaas-ui-new,/apaas/new/

parents
clone:
git:
image: registry.cn-qingdao.aliyuncs.com/wod-devops/git:1.4.0
pipeline:
read-cache:
image: registry.cn-qingdao.aliyuncs.com/wod-devops/cache:latest
restore: true
mount:
- ./node_modules
volumes:
- /data/cache:/cache
build:
image: registry.cn-qingdao.aliyuncs.com/wod-devops/node:8.15.0-onbuild
volumes:
- /data/cache/yarn:/usr/local/share/.cache/yarn/v1
commands:
- yarn install
- yarn run build
store-cache:
image: registry.cn-qingdao.aliyuncs.com/wod-devops/cache:latest
rebuild: true
mount:
- ./node_modules
volumes:
- /data/cache:/cache
docker-dev:
image: registry.cn-qingdao.aliyuncs.com/wod-devops/docker:1.0
volumes:
- /var/run/docker.sock:/var/run/docker.sock
base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.15.9-alpine
repo: apaas/apaas-ui-new
version: 1.0.0
channel: alpha
registry: hub.wodcloud.com
when:
branch: dev
docker-master:
image: registry.cn-qingdao.aliyuncs.com/wod-devops/docker:1.0
volumes:
- /var/run/docker.sock:/var/run/docker.sock
base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.15.9-alpine
repo: apaas/apaas-ui-new
version: 1.0.0
registry: hub.wodcloud.com
when:
branch: master
deploy:
image: registry.cn-qingdao.aliyuncs.com/wod-devops/kubernetes:1.0
namespace: apaas
deployment: apaas-ui-new
container: apaas-ui-new
registry: hub.wodcloud.com
branches: [master,dev]
node_modules/
\ No newline at end of file
.DS_Store
node_modules/
dist
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
\ No newline at end of file
// 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": {}
}
}
# awecloud
> A Vue.js project
## Build Setup
``` bash
# install dependencies
yarn install
# serve with hot reload at localhost:8080
yarn run dev
# build for production with minification
yarn run build
```
# 使用
## 修改config/index.js
```javascript
build: {
// Template for index.html
index: path.resolve(__dirname, '../dist', 'awecloud', 'ui', 'index.html'),
// Paths
assetsRoot: path.resolve(__dirname, '../dist', 'awecloud', 'ui'),
assetsSubDirectory: 'static',
assetsPublicPath: '/awecloud/ui/',
}
```
## 修改build/dockerfile
```
ADD ./dist /www
ADD ./build/conf.yaml /etc/awecloud/conf.yaml
```
## 修改.drone.yml
```
```
## googlefonts本地化
```bash
# index.html
- <link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' rel="stylesheet">
# src/assets/css
add googlefonts.css googlefonts
# src/main.js
+ import "@src/assets/css/googlefonts.css";
```
## add IE11 support
```bash
# src/main.js
+ import "babel-polyfill";
# package.json
yarn add babel-polyfill
```
## remove overflow-y
```bash
# index.html
+ <style>
+ html {
+ overflow-y: auto
+ }
+ </style>
```
module.exports = {
presets: [
["@babel/preset-env", {
"modules": false
}]
],
plugins: ["transform-vue-jsx", "@babel/plugin-transform-runtime"]
}
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, (err, stats) => {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
chunks: false,
chunkModules: false
}) + '\n\n')
if (stats.hasErrors()) {
console.log(chalk.red(' Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' Build complete.\n'))
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
})
})
'use strict'
const chalk = require('chalk')
const semver = require('semver')
const packageConfig = require('../package.json')
const shell = require('shelljs')
function exec(cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
const versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
}
]
if (shell.which('yarn')) {
versionRequirements.push({
name: 'yarn',
currentVersion: exec('yarn --version'),
versionRequirement: packageConfig.engines.yarn
})
}
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)
}
}
index: /awecloud/ui/
login: /awecloud/dex/login
logout: /awecloud/dex/logout
\ No newline at end of file
FROM {{ BASEIMAGE }}
MAINTAINER {{ AUTHOR }}
LABEL Author={{ AUTHOR }} Name={{ PROJECT }} Version={{ VERSION }}
ADD ./dist /usr/share/nginx/html
\ No newline at end of file
'use strict'
const path = require('path')
const config = require('../config')
const MiniCssExtractPlugin = require('mini-css-extract-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 = []
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
loaders.push(MiniCssExtractPlugin.loader)
}
else {
loaders.push('vue-style-loader')
}
loaders.push(cssLoader)
if (options.usePostCSS) {
loaders.push(postcssLoader)
}
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
return loaders
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
const output = []
const loaders = exports.cssLoaders(options)
for (const extension in loaders) {
const loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
exports.createNotifierCallback = () => {
const notifier = require('node-notifier')
return (severity, errors) => {
if (severity !== 'error') return
const error = errors[0]
const filename = error.file && error.file.split('!').pop()
notifier.notify({
title: packageConfig.name,
message: severity + ': ' + error.name,
subtitle: filename || '',
icon: path.join(__dirname, 'logo.png')
})
}
}
'use strict'
const config = require('../config')
module.exports = {
cacheBusting: config.dev.cacheBusting,
transformAssetUrls: {
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: 'xlink:href'
}
}
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
const { VueLoaderPlugin } = require('vue-loader')
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
},
plugins: [
new VueLoaderPlugin(),
],
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
exclude: [resolve('src/icons')],
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
include: [resolve('src/icons')],
options: {
symbolId: 'icon-[name]'
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
node: {
// prevent webpack from injecting useless setImmediate polyfill because Vue
// source contains it (although only uses it if it's native).
setImmediate: false,
// prevent webpack from injecting mocks to Node native modules
// that does not make sense for the client
dgram: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
}
}
'use strict'
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const path = require('path')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const portfinder = require('portfinder')
const HOST = process.env.HOST
const PORT = process.env.PORT && Number(process.env.PORT)
const devWebpackConfig = merge(baseWebpackConfig, {
mode: 'development',
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,
},
disableHostCheck: true//不检查来访的host
},
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,
favicon: './static/favicon.ico'
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
],
optimization: {
noEmitOnErrors: true,
},
})
module.exports = new Promise((resolve, reject) => {
portfinder.basePort = process.env.PORT || config.dev.port
portfinder.getPort((err, port) => {
if (err) {
reject(err)
} else {
// publish the new Port, necessary for e2e tests
process.env.PORT = port
// add port to devServer config
devWebpackConfig.devServer.port = port
// Add FriendlyErrorsPlugin
devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
compilationSuccessInfo: {
messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
},
onErrors: config.dev.notifyOnErrors
? utils.createNotifierCallback()
: undefined
}))
resolve(devWebpackConfig)
}
})
})
'use strict'
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
const config = require('../config')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const TerserPlugin = require('terser-webpack-plugin');
const env = require('../config/prod.env')
const webpackConfig = merge(baseWebpackConfig, {
mode: 'production',
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'),
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env
}),
// extract css into its own file
new MiniCssExtractPlugin({
filename: utils.assetsPath('css/[name].[chunkhash].css'),
}),
// 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
chunksSortMode: 'dependency'
}),
// keep module.id stable when vendor modules does not change
new webpack.NamedChunksPlugin(),
new webpack.HashedModuleIdsPlugin(),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
],
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
name: 'vendor',
test: /[\\/]node_modules[\\/]/,
enforce: true,
},
},
},
runtimeChunk: 'single',
minimizer: [
new TerserPlugin({
terserOptions: {
ecma: 6,
compress: true,
output: {
comments: false,
beautify: false
}
}
}),
],
},
})
if (config.build.productionGzip) {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.build.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
"use strict";
// Template version: 1.3.1
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require("path");
module.exports = {
dev: {
// Paths
assetsSubDirectory: "static",
assetsPublicPath: "/",
// Various Dev Server settings
host: "localhost", // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
// Use Eslint Loader?
// If true, your code will be linted during bundling and
// linting errors and warnings will be shown in the console.
useEslint: true,
// If true, eslint errors and warnings will also be shown in the error overlay
// in the browser.
showEslintErrorsInOverlay: false,
/**
* Source Maps
*/
// https://webpack.js.org/configuration/devtool/#development
devtool: "cheap-module-eval-source-map",
// If you have problems debugging vue-files in devtools,
// set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true,
cssSourceMap: true
},
build: {
// Template for index.html
index: path.resolve(__dirname, "../dist", "apaas", "new", "index.html"),
// Paths
assetsRoot: path.resolve(__dirname, "../dist", "apaas", "new"),
assetsSubDirectory: "static",
assetsPublicPath: "/apaas/new/",
/**
* 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
}
};
'use strict'
module.exports = {
NODE_ENV: '"production"'
}
<?xml version="1.0" encoding="utf-8"?>
<AutoResponder LastSave="2018-04-21T17:18:19.4349974+08:00" FiddlerVersion="5.0.20173.50948">
<State Enabled="true" Fallthrough="true" UseLatency="false">
<ResponseRule Match="EXACT:http://localhost:8080/rest/harbor/api/projects" Action="C:\Git\cloud\awecloud-ui\docs\harbor_api_projects.json" Enabled="true" />
<ResponseRule Match="EXACT:http://localhost:8080/rest/harbor/api/projects/3" Action="C:\Git\cloud\awecloud-ui\docs\harbor_api_projects_3.json" Enabled="true" />
<ResponseRule Match="regex:http://localhost:8080/rest/harbor/api/repositories/(.*?)/tags" Action="C:\Git\cloud\awecloud-ui\docs\harbor_api_repositories_cig_rest_tags.json" Enabled="true" />
<ResponseRule Match="regex:http://localhost:8080/rest/harbor/api/repositories(.*?)" Action="C:\Git\cloud\awecloud-ui\docs\harbor_api_repositories.json" Enabled="true" />
<ResponseRule Match="regex:http://localhost:8080/rest/kubernetes/api/v1/node(.*?)" Action="C:\Git\cloud\awecloud-ui\docs\k8s_api_v1_node.json" Enabled="true" />
<ResponseRule Match="EXACT:http://localhost:8080/rest/kubernetes/api/v1/node" Action="C:\Git\cloud\awecloud-ui\docs\k8s_api_v1_node.json" Enabled="true" />
<ResponseRule Match="EXACT:http://localhost:8080/rest/kubernetes/api/v1/node/172.16.11.241" Action="C:\Git\cloud\awecloud-ui\docs\k8s_api_v1_node_192.168.74.101.json" Enabled="true" />
<ResponseRule Match="EXACT:http://localhost:8080/api/v4/user" Action="C:\Git\cloud\awecloud-ui\docs\gitlab_api_v4_user.json" Enabled="true" />
</State>
</AutoResponder>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<AutoResponder LastSave="2018-04-20T23:41:40.6792103+08:00" FiddlerVersion="5.0.20173.49666">
<State Enabled="true" Fallthrough="true" UseLatency="false">
<ResponseRule Match="regex:https://gitlab.ispacesys.cn/awecloud/ui(.*?)" Action="http://localhost:8080$1" Enabled="true" />
<ResponseRule Match="regex:https://gitlab.ispacesys.cn/static(.*?)" Action="http://localhost:8080/static$1" Enabled="true" />
<ResponseRule Match="EXACT:https://gitlab.ispacesys.cn/app.js" Action="http://localhost:8080/app.js" Enabled="true" />
</State>
</AutoResponder>
\ No newline at end of file
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx",
"namespace": "test-zhzl",
"labels": {
"controller-uid": "0f53c523-5362-11e8-88ba-000c29516a6e",
"job-name": "zhzltest-1525854120"
},
"creationTimestamp": "2018-05-09T08:22:06Z"
},
"typeMeta": {
"kind": "pod"
},
"podPhase": "Succeeded",
"podIP": "10.2.1.239",
"nodeName": "192.168.74.102",
"restartCount": 0,
"qosClass": "BestEffort",
"controller": {
"objectMeta": {
"name": "zhzltest-1525854120",
"namespace": "test-zhzl",
"labels": {
"controller-uid": "0f53c523-5362-11e8-88ba-000c29516a6e",
"job-name": "zhzltest-1525854120"
},
"creationTimestamp": "2018-05-09T08:22:06Z"
},
"typeMeta": {
"kind": "job"
},
"pods": {
"current": 0,
"desired": 1,
"running": 0,
"pending": 0,
"failed": 0,
"succeeded": 1,
"warnings": []
},
"containerImages": [
"registry.ispacesys.cn/cig/zhzlconsole:0.0.2-test"
],
"initContainerImages": null
},
"containers": [
{
"name": "zhzlconsole",
"image": "registry.ispacesys.cn/cig/zhzlconsole:0.0.2-test",
"env": [
{
"name": "STORAGE_URL",
"value": "192.168.74.102",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "STORAGE_URL"
}
}
},
{
"name": "ELASTIC_PORT",
"value": "9200",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "ELASTIC_PORT"
}
}
},
{
"name": "NODE_ORACLEDB_EP_PASSWORD",
"value": "EFLOW1234",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEDB_EP_PASSWORD"
}
}
},
{
"name": "NODE_ORACLEDB_USER",
"value": "cigproxy",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEDB_USER"
}
}
},
{
"name": "SDJ_EVENTURL",
"value": "http://cxcig.ddns.net:10014/gateway/api/001003001029/GrassrootsGovernance/bR4rD5d1O04KUdV0.htm",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "SDJ_EVENTURL"
}
}
},
{
"name": "SDJ_SECRETURL_BYKEY",
"value": "http://cxcig.ddns.net:10014/gateway/app/refreshTokenByKey.htm",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "SDJ_SECRETURL_BYKEY"
}
}
},
{
"name": "SYS_SERVICE_ROOT",
"value": "http://test-zhzl.spacecig.com/",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "SYS_SERVICE_ROOT"
}
}
},
{
"name": "WX_PROTOCOL",
"value": "http://",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "WX_PROTOCOL"
}
}
},
{
"name": "APPKEYSECRET",
"value": "bF97LaEoiVPuGn8HMUy4",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "APPKEYSECRET"
}
}
},
{
"name": "NODE_REDIS_CONNECTION",
"value": "redis://deps:6379",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_REDIS_CONNECTION"
}
}
},
{
"name": "ELASTIC_HOST",
"value": "elasticsearch.efk",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "ELASTIC_HOST"
}
}
},
{
"name": "HOST_OUTER",
"value": "123.157.108.231",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "HOST_OUTER"
}
}
},
{
"name": "MAP_BAIDU_SERVICEID",
"value": "149274",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MAP_BAIDU_SERVICEID"
}
}
},
{
"name": "NODE_MSMQ_REDIS_CONNECTION",
"value": "redis://deps-msmqredis:6379",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_MSMQ_REDIS_CONNECTION"
}
}
},
{
"name": "NODE_ORACLEDB_PASSWORD",
"value": "cigproxy",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEDB_PASSWORD"
}
}
},
{
"name": "TOKEN_SERVICE",
"value": "http://iam:3011/admin",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "TOKEN_SERVICE"
}
}
},
{
"name": "WFSERVICE_PORT",
"value": "890",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "WFSERVICE_PORT"
}
}
},
{
"name": "DH_HOST",
"value": "10.21.197.45",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "DH_HOST"
}
}
},
{
"name": "JPUSH_IOS_ENV",
"value": "PRODUCTION",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "JPUSH_IOS_ENV"
}
}
},
{
"name": "MSG_NONCE",
"value": "58772015",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MSG_NONCE"
}
}
},
{
"name": "NODE_MSMQ_REDIS_REST_TICK",
"value": "[1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56]",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_MSMQ_REDIS_REST_TICK"
}
}
},
{
"name": "TXYZB_ACCOUNT_TYPE",
"value": "18538",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "TXYZB_ACCOUNT_TYPE"
}
}
},
{
"name": "APPKEY_OUTER",
"value": "28624821",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "APPKEY_OUTER"
}
}
},
{
"name": "CIG_TASK_JOB",
"value": "0",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "CIG_TASK_JOB"
}
}
},
{
"name": "MAP_BAIDU_APPKEY",
"value": "f1PKq1WeBmB893LfnGxQ7gEuDV6uSeRb",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MAP_BAIDU_APPKEY"
}
}
},
{
"name": "PORT_OUTER",
"value": "9999",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "PORT_OUTER"
}
}
},
{
"name": "TXYZB_SDK_APPID",
"value": "1400047153",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "TXYZB_SDK_APPID"
}
}
},
{
"name": "YH_API_URL",
"value": "http://192.168.74.102:29980/yhapi",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "YH_API_URL"
}
}
},
{
"name": "APP_FILE_SERVICE",
"value": "https://test-zhzl.spacecig.com",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "APP_FILE_SERVICE"
}
}
},
{
"name": "MSG_APPSECRET",
"value": "92fac7d3a7dc",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MSG_APPSECRET"
}
}
},
{
"name": "HEZHANG_DEAL_PATH",
"value": "/hzzpublic/event/outTimeEvent/doOverEvent",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "HEZHANG_DEAL_PATH"
}
}
},
{
"name": "HEZHANG_HOST",
"value": "https://hzz.spacecig.com",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "HEZHANG_HOST"
}
}
},
{
"name": "NODE_ORACLEDB_CONNECTIONSTRING",
"value": "oracle:11421/xe",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEDB_CONNECTIONSTRING"
}
}
},
{
"name": "NODE_ORACLEDB_EP_USER",
"value": "EFLOW",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEDB_EP_USER"
}
}
},
{
"name": "NODE_ORACLEGEODB_PASSWORD",
"value": "cigsde",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEGEODB_PASSWORD"
}
}
},
{
"name": "REST_APIURLBASE_WF",
"value": "http://test-zhzl.spacecig.com/",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "REST_APIURLBASE_WF"
}
}
},
{
"name": "APPSECRET_INNER",
"value": "Q9GM11oUW74AkOcc0Gq9",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "APPSECRET_INNER"
}
}
},
{
"name": "SDJ_APPSECRET",
"value": "a1be950e557946af91a0bb425bd3b2ac",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "SDJ_APPSECRET"
}
}
},
{
"name": "WX_HOST",
"value": "test-zhzl.spacecig.com",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "WX_HOST"
}
}
},
{
"name": "MSG_CODELEN",
"value": "6",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MSG_CODELEN"
}
}
},
{
"name": "REST_APIURLBASE_WF_NEW",
"value": "http://test-zhzl.spacecig.com/wf/",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "REST_APIURLBASE_WF_NEW"
}
}
},
{
"name": "SCHEDULE",
"value": "1",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "SCHEDULE"
}
}
},
{
"name": "UV_THREADPOOL_SIZE",
"value": "20",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "UV_THREADPOOL_SIZE"
}
}
},
{
"name": "YICHUANG_HOST",
"value": "http://xzfw.zjcx.gov.cn",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "YICHUANG_HOST"
}
}
},
{
"name": "NODE_ORACLEGEODB_USER",
"value": "cigsde",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEGEODB_USER"
}
}
},
{
"name": "MEMCACHED_PATH",
"value": "deps:11211",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MEMCACHED_PATH"
}
}
},
{
"name": "SDJ_SECRETURL_BYSEC",
"value": "http://cxcig.ddns.net:10014/gateway/app/refreshTokenBySec.htm",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "SDJ_SECRETURL_BYSEC"
}
}
},
{
"name": "CACHE_CONFIG_URL",
"value": "deps:11211",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "CACHE_CONFIG_URL"
}
}
},
{
"name": "DH_HOST_OUT",
"value": "client.zjcx1.cn",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "DH_HOST_OUT"
}
}
},
{
"name": "GEO_SERVER_HOST",
"value": "test-zhzl.spacecig.com",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "GEO_SERVER_HOST"
}
}
},
{
"name": "GEO_SERVER_PORT",
"value": "80",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "GEO_SERVER_PORT"
}
}
},
{
"name": "MSG_SERVERURL",
"value": "https://api.netease.im/sms/sendcode.action",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MSG_SERVERURL"
}
}
},
{
"name": "MSG_TEMPLATEID",
"value": "4022280",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MSG_TEMPLATEID"
}
}
},
{
"name": "WFSERVICE_HOST",
"value": "192.168.74.116",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "WFSERVICE_HOST"
}
}
},
{
"name": "APPKEY_INNER",
"value": "26208115",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "APPKEY_INNER"
}
}
},
{
"name": "JPUSH_SECRET",
"value": "350010b7ff0c0f8c7700ab91",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "JPUSH_SECRET"
}
}
},
{
"name": "MSG_APPKEY",
"value": "7cd4776db7cebf12a733b78fdba7bba1",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "MSG_APPKEY"
}
}
},
{
"name": "SDJ_ISSEND",
"value": "0",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "SDJ_ISSEND"
}
}
},
{
"name": "STORAGE_PORT",
"value": "50070",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "STORAGE_PORT"
}
}
},
{
"name": "ZHZLBACKEND_DOMAIN",
"value": "http://zhzlbackend:3003",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "ZHZLBACKEND_DOMAIN"
}
}
},
{
"name": "DH_HOST_PORT",
"value": "8080",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "DH_HOST_PORT"
}
}
},
{
"name": "JPUSH_KEY",
"value": "a2b9b0542275313950882390",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "JPUSH_KEY"
}
}
},
{
"name": "TXYZB_KEY_PATH",
"value": "common/config/txYunKey/test",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "TXYZB_KEY_PATH"
}
}
},
{
"name": "CIGWBJ_NODE_ORACLEDB_USER",
"value": "cigwbj",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "CIGWBJ_NODE_ORACLEDB_USER"
}
}
},
{
"name": "CIGWBJ_NODE_ORACLEDB_PASSWORD",
"value": "esri@123",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "CIGWBJ_NODE_ORACLEDB_PASSWORD"
}
}
},
{
"name": "DH_PORT_OUT",
"value": "8081",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "DH_PORT_OUT"
}
}
},
{
"name": "HEZHANG_OVERTIME_PATH",
"value": "/hzzpublic/event/outTimeEvent/addOverEvent",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "HEZHANG_OVERTIME_PATH"
}
}
},
{
"name": "HOST_INNER",
"value": "10.21.197.78",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "HOST_INNER"
}
}
},
{
"name": "KUBERNETES_HOST",
"value": "https://k8s.ispacesys.cn:6443",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "KUBERNETES_HOST"
}
}
},
{
"name": "NODE_ORACLEGEODB_CONNECTIONSTRING",
"value": "192.168.74.109:1521/orcl",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "NODE_ORACLEGEODB_CONNECTIONSTRING"
}
}
},
{
"name": "PORT_INNER",
"value": "9999",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "PORT_INNER"
}
}
},
{
"name": "CIGWBJ_NODE_ORACLEDB_CONNECTIONSTRING",
"value": "10.21.198.126:15214/xe",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "CIGWBJ_NODE_ORACLEDB_CONNECTIONSTRING"
}
}
},
{
"name": "PROXY_IIS_CIGSYSTEM",
"value": "http://192.168.74.109",
"valueFrom": {
"configMapKeyRef": {
"name": "cig",
"key": "PROXY_IIS_CIGSYSTEM"
}
}
}
],
"commands": [
"pm2"
],
"args": [
"start",
"./pm2/prod-zhzlconsole.config.js",
"--env",
"production",
"--no-daemon",
"--",
"-r",
"test/index",
"-a",
"\"{'b':1}\""
]
}
],
"initContainers": [],
"metrics": [
{
"dataPoints": [],
"metricPoints": [],
"metricName": "cpu/usage_rate",
"aggregation": "sum"
},
{
"dataPoints": [],
"metricPoints": [],
"metricName": "memory/usage",
"aggregation": "sum"
}
],
"conditions": [
{
"type": "Initialized",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2018-05-09T08:22:06Z",
"reason": "PodCompleted",
"message": ""
},
{
"type": "Ready",
"status": "False",
"lastProbeTime": null,
"lastTransitionTime": "2018-05-09T08:22:21Z",
"reason": "PodCompleted",
"message": ""
},
{
"type": "PodScheduled",
"status": "True",
"lastProbeTime": null,
"lastTransitionTime": "2018-05-09T08:22:06Z",
"reason": "",
"message": ""
}
],
"eventList": {
"listMeta": {
"totalItems": 9
},
"events": [
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3e605825a8",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:06Z"
},
"typeMeta": {
"kind": "event"
},
"message": "Successfully assigned zhzltest-1525854120-pcsfx to 192.168.74.102",
"sourceComponent": "default-scheduler",
"sourceHost": "",
"object": "",
"count": 1,
"firstSeen": "2018-05-09T08:22:06Z",
"lastSeen": "2018-05-09T08:22:06Z",
"reason": "Scheduled",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3e71be3c05",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:06Z"
},
"typeMeta": {
"kind": "event"
},
"message": "MountVolume.SetUp succeeded for volume \"uploaddir\" ",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "",
"count": 1,
"firstSeen": "2018-05-09T08:22:06Z",
"lastSeen": "2018-05-09T08:22:06Z",
"reason": "SuccessfulMountVolume",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3e71cb9080",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:06Z"
},
"typeMeta": {
"kind": "event"
},
"message": "MountVolume.SetUp succeeded for volume \"logdir\" ",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "",
"count": 1,
"firstSeen": "2018-05-09T08:22:06Z",
"lastSeen": "2018-05-09T08:22:06Z",
"reason": "SuccessfulMountVolume",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3e71cd1649",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:06Z"
},
"typeMeta": {
"kind": "event"
},
"message": "MountVolume.SetUp succeeded for volume \"localtime\" ",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "",
"count": 1,
"firstSeen": "2018-05-09T08:22:06Z",
"lastSeen": "2018-05-09T08:22:06Z",
"reason": "SuccessfulMountVolume",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3e729c7be8",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:06Z"
},
"typeMeta": {
"kind": "event"
},
"message": "MountVolume.SetUp succeeded for volume \"default-token-mr56l\" ",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "",
"count": 1,
"firstSeen": "2018-05-09T08:22:06Z",
"lastSeen": "2018-05-09T08:22:06Z",
"reason": "SuccessfulMountVolume",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3ecba4ed74",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:08Z"
},
"typeMeta": {
"kind": "event"
},
"message": "pulling image \"registry.ispacesys.cn/cig/zhzlconsole:0.0.2-test\"",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "spec.containers{zhzlconsole}",
"count": 1,
"firstSeen": "2018-05-09T08:22:08Z",
"lastSeen": "2018-05-09T08:22:08Z",
"reason": "Pulling",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3ee78808a3",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:08Z"
},
"typeMeta": {
"kind": "event"
},
"message": "Successfully pulled image \"registry.ispacesys.cn/cig/zhzlconsole:0.0.2-test\"",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "spec.containers{zhzlconsole}",
"count": 1,
"firstSeen": "2018-05-09T08:22:08Z",
"lastSeen": "2018-05-09T08:22:08Z",
"reason": "Pulled",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3efafce4dc",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:09Z"
},
"typeMeta": {
"kind": "event"
},
"message": "Created container",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "spec.containers{zhzlconsole}",
"count": 1,
"firstSeen": "2018-05-09T08:22:09Z",
"lastSeen": "2018-05-09T08:22:09Z",
"reason": "Created",
"type": "Normal"
},
{
"objectMeta": {
"name": "zhzltest-1525854120-pcsfx.152cec3f1afdc1f8",
"namespace": "test-zhzl",
"creationTimestamp": "2018-05-09T08:22:09Z"
},
"typeMeta": {
"kind": "event"
},
"message": "Started container",
"sourceComponent": "kubelet",
"sourceHost": "192.168.74.102",
"object": "spec.containers{zhzlconsole}",
"count": 1,
"firstSeen": "2018-05-09T08:22:09Z",
"lastSeen": "2018-05-09T08:22:09Z",
"reason": "Started",
"type": "Normal"
}
]
},
"persistentVolumeClaimList": {
"listMeta": {
"totalItems": 0
},
"items": null,
"errors": null
},
"errors": []
}
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>宁乡智慧商圈app</title>
<link rel="shortcut icon" type="image/x-icon" href="static/favicon.ico" />
</head>
<body>
<div id="app"></div>
</body>
</html>
{
"name": "apaas-ui-new",
"version": "1.0.0",
"description": "A Vuetify.js Project Manage Kubernetes",
"author": "shucheng <shucheng@bd-apaas.com>",
"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": {
"@antv/f2": "^3.6.0-alpha.2",
"@fortawesome/fontawesome-free": "^5.8.0",
"babel-polyfill": "^6.26.0",
"codemirror": "^5.45.0",
"echarts": "^4.2.1",
"element-ui": "^2.11.1",
"esri-loader": "^2.13.0",
"material-design-icons-iconfont": "^4.0.5",
"mint-ui": "^2.2.13",
"string-format": "^2.0.0",
"svg-sprite-loader": "^4.2.1",
"vant": "^2.5.3",
"vue": "^2.6.10",
"vue-resource": "^1.5.1",
"vue-router": "^3.0.2",
"vuex": "^3.1.0"
},
"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/plugin-syntax-jsx": "^7.2.0",
"@babel/plugin-transform-runtime": "^7.4.0",
"@babel/preset-env": "^7.4.2",
"@babel/runtime": "^7.4.2",
"autoprefixer": "^9.5.0",
"babel-loader": "^8.0.5",
"babel-plugin-syntax-jsx": "^6.18.0",
"babel-plugin-transform-vue-jsx": "^3.7.0",
"chalk": "^2.4.2",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^2.1.1",
"file-loader": "^3.0.1",
"friendly-errors-webpack-plugin": "^1.7.0",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^0.5.0",
"node-notifier": "^5.4.0",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"ora": "^3.2.0",
"portfinder": "^1.0.20",
"postcss-import": "^12.0.1",
"postcss-loader": "^3.0.0",
"postcss-url": "^8.0.0",
"rimraf": "^2.6.3",
"semver": "^5.6.0",
"shelljs": "^0.8.3",
"terser-webpack-plugin": "^1.2.3",
"url-loader": "^1.1.2",
"vue-loader": "^15.7.0",
"vue-style-loader": "^4.1.2",
"vue-template-compiler": "^2.6.10",
"vux": "^2.9.4",
"webpack": "^4.29.6",
"webpack-bundle-analyzer": "^3.1.0",
"webpack-cli": "^3.2.3",
"webpack-dev-server": "^3.2.1",
"webpack-merge": "^4.2.1"
},
"engines": {
"node": ">= 8.12.0",
"npm": ">= 6.4.1",
"yarn": ">= 1.12.3"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
}
; DO NOT EDIT (unless you know what you are doing)
;
; This subdirectory is a git "subrepo", and this file is maintained by the
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
;
[subrepo]
remote = https://github.com/vuetifyjs/templates-common.git
branch = subrepo/webpack-src
commit = 090741fa8ba4da0c6f85db64eff64550704123e1
parent = e05204fc0583a8c99f1963ce873eba1266838215
method = merge
cmdver = 0.4.0
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
data: () => ({}),
methods: {
windowResize() {
const remSize = 20; // 1rem === 20px
const rect = document.body.getBoundingClientRect();
const fontSize = (Math.min(rect.width, rect.height) / 720) * remSize;
document.documentElement.style.fontSize = fontSize + "px";
},
initRem() {
this.windowResize();
window.addEventListener("resize", this.windowResize, false);
}
},
created() {
this.initRem();
}
};
</script>
/* reset */
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
font-family: PingFangSC-Regular, sans-serif;
font-size: 1rem;
}
ul {
list-style: none;
padding: 0;
margin: 0;
}
p {
margin: 0;
}
h1,
h2,
h3,
h4,
h5 {
margin: 0;
font-weight: normal;
}
/* reset end */
/* common */
#app {
height: 100%;
overflow: hidden;
}
.text_clip {
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
white-space: nowrap;
}
.map_container {
background-color: #eee;
}
.ss_card {
padding: 1.2rem;
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.ss_card > .sc_left_container {
width: 6rem;
height: 6rem;
flex-shrink: 0;
border-radius: 0.5rem;
overflow: hidden;
font-size: 0;
}
.ss_card > .sc_right_container {
width: calc(100% - 7rem);
flex-grow: 1;
margin-left: 1.2rem;
}
.ss_card > .sc_right_container > .sc_title {
font-size: 1.6rem;
font-weight: bold;
line-height: 2.6rem;
}
.ss_card > .sc_right_container > .sc_info {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 1.2rem;
line-height: 2rem;
margin-top: 0.5rem;
}
.ss_card > .sc_right_container > .sc_info > span:not(:first-of-type) {
margin-left: 1.2rem;
}
.ss_card > .sc_right_container > .sc_info > .sc_star {
color: #ff9c00;
}
.ss_card > .sc_right_container > .sc_info > .sc_star > * {
display: inline-block;
vertical-align: middle;
}
.ss_card > .sc_right_container > .sc_description {
font-size: 1.3rem;
line-height: 2rem;
margin-top: 0.5rem;
}
.card_list > li {
padding: 1.2rem;
display: flex;
justify-content: flex-start;
align-items: flex-start;
}
.card_list > li:not(:last-child) {
border-bottom: 2px solid #f8f9fd;
}
.card_list > li > .caid_icon {
width: 4rem;
height: 4rem;
flex-shrink: 0;
border: 1px solid #e3e5ef;
box-sizing: border-box;
border-radius: 0.5rem;
background-color: #f4f7fc;
overflow: hidden;
}
.card_list > li > .card_detail {
margin-left: 1.7rem;
width: calc(100vw - 5.7rem);
}
.card_list > li > .card_detail > .card_title {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 1.2rem;
font-weight: bold;
color: #58617a;
}
.card_list > li > .card_detail > .card_score {
height: 2rem;
display: flex;
justify-content: flex-start;
align-items: center;
margin-top: 0.5rem;
}
.card_list > li > .card_detail > .card_score > span {
margin-left: 0.5rem;
font-size: 1.2rem;
}
.card_list > li > .card_detail > .card_description {
font-size: 1.3rem;
line-height: 2rem;
margin-top: 0.5rem;
}
.card_list > li > .card_detail > .card_images {
font-size: 0;
margin-top: 1.5rem;
}
.card_list > li > .card_detail > .card_images > li {
display: inline-block;
vertical-align: middle;
width: calc((100vw - 5.7rem - 2.4rem - 2.6rem) / 3);
height: calc((100vw - 5.7rem - 2.4rem - 2.6rem) / 3);
background-color: #f4f7fc;
border-radius: 0.5rem;
overflow: hidden;
}
.card_list > li > .card_detail > .card_images > li.bigger {
width: calc((100vw - 5.7rem - 2.4rem - 1.3rem) / 2);
height: calc((100vw - 5.7rem - 2.4rem - 1.3rem) / 2);
}
.card_list > li > .card_detail > .card_images > li:not(:last-child) {
margin-right: 1.3rem;
}
.search_header .van-nav-bar {
height: 5.6rem;
line-height: 5.6rem;
}
.search_header .van-nav-bar__title {
max-width: calc(100% - 6.4rem);
margin: 0 0 0 5.2rem;
}
.search_header .van-hairline--bottom::after {
border-bottom: none;
}
.search_header .van-search {
height: 3.2rem;
background-color: #f8f9fd;
padding: 0 1.5rem;
border-radius: 1.6rem;
overflow: hidden;
margin: 1.2rem 0;
}
.search_header .van-search__content {
background-color: transparent;
}
.search_header .van-search__action {
font-size: 1.4rem;
line-height: 3.4rem;
}
/* common end */
/* vant reset */
.white {
background-color: #fff !important;
}
.van-nav-bar {
height: 4.2rem;
line-height: 4.2rem;
}
.van-nav-bar__title {
font-size: 1.7rem;
font-weight: bold;
}
.van-nav-bar__left {
left: 1.6rem;
font-size: 1.8rem;
}
.van-nav-bar__right {
right: 1.6rem;
font-size: 1.8rem;
}
.van-nav-bar .van-icon {
font-size: 1.6rem;
}
.van-hairline--bottom::after {
border-bottom: 2px solid #dfe2ec;
}
.van-hairline--bottom.hide_border::after {
border-bottom: none;
}
.van-button--small {
min-width: 3rem;
height: 1.8rem;
padding: 0 0.4rem;
font-size: 1rem;
line-height: 1.4rem;
margin-right: 0.5rem;
}
.white .van-tabs__nav {
background-color: #fff;
}
.van-tab {
padding: 0 0.5rem;
font-size: 1.6rem;
line-height: 4rem;
}
.van-tabs__nav--line {
padding-bottom: 1.5rem;
}
.van-tabs--line .van-tabs__wrap {
height: 4rem;
}
.van-cell {
padding: 1rem 1.6rem;
font-size: 1.4rem;
line-height: 2.4rem;
}
.van-cell:not(:last-child)::after {
right: 1.6rem;
left: 1.6rem;
}
.van-cell__label {
font-size: 1.2rem;
line-height: 1.8rem;
margin-top: 0.3rem;
}
.search_head {
width: 100%;
height: 5rem;
}
.search_head .van-nav-bar {
position: relative;
z-index: 1;
height: 5rem;
line-height: 5rem;
text-align: center;
background-color: #fff;
-webkit-user-select: none;
user-select: none;
}
.search_head .van-nav-bar .van-search {
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
box-sizing: border-box;
padding: 1rem 1.1rem 0;
background-color: #fff;
}
.search_head .van-nav-bar__title {
max-width: 92%;
margin: 0 0 0 8%;
color: #323233;
font-weight: 500;
font-size: 1.6rem;
}
.search_head .van-nav-bar__left {
top: 0;
left: 1.5rem;
}
.van-search {
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
box-sizing: border-box;
padding: 1rem 1.1rem;
background-color: #fff;
}
.van-search .van-cell {
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
padding: 0.4rem 0.8rem 0.4rem 0;
background-color: transparent;
}
.van-dropdown-menu {
background-color: transparent;
}
.van-dropdown-menu__title {
padding: 0 0.8rem;
font-size: 1.4rem;
line-height: 1.8rem;
}
.van-sidebar {
width: 100%;
}
.van-sidebar-item {
display: block;
box-sizing: border-box;
padding: 1.6rem 1.3rem 1.6rem 0.9rem;
overflow: hidden;
color: #323233;
font-size: 1rem;
line-height: 2.2rem;
word-break: break-word;
background-color: #fafafa;
border-left: 0.3rem solid transparent;
cursor: pointer;
-webkit-user-select: none;
user-select: none;
}
.van-sidebar-item {
height: 4rem;
padding: 1rem;
box-sizing: border-box;
font-size: 1.4rem;
font-weight: bold;
line-height: 2rem;
}
.van-sidebar-item--select {
border-color: #fff;
background-color: #fff;
color: #0562f2;
}
.van-tree-select__item {
height: 4rem;
padding: 1rem 2rem;
box-sizing: border-box;
font-size: 1.4rem;
line-height: 2rem;
}
.van-tree-select__item--active {
color: #0562f2;
}
.van-tree-select__item--active .van-icon {
display: none;
}
.van-dropdown-item__content {
border-bottom-left-radius: 1.2rem;
border-bottom-right-radius: 1.2rem;
}
.van-field__control,
.van-field__control::placeholder {
max-height: 9.6rem !important;
}
.van-field__word-limit {
font-size: 1.2rem;
line-height: 1.6rem;
}
.van-field__error-message {
font-size: 1.2rem;
}
.van-uploader__upload {
border-radius: 0.5rem;
}
.van-uploader__preview {
margin: 0 1rem 1rem 0;
}
.van-uploader__upload {
background-color: #d1e2fc;
}
.van-uploader__upload-icon {
font-size: 2rem;
color: #327ef4;
}
.van-uploader__preview-delete {
font-size: 1.8rem;
top: -0.9rem;
right: -0.9rem;
}
.van-button {
height: 4.4rem;
line-height: 4.4rem;
}
.van-button--normal {
padding: 0 1.5rem;
}
.van-button--normal {
font-size: 1.4rem;
}
.van-list__error-text,
.van-list__finished-text,
.van-list__loading {
font-size: 1.4rem;
line-height: 5rem;
}
.van-image__error,
.van-image__loading {
font-size: 1.4rem;
}
.van-dropdown-item--down {
z-index: 30;
}
.van-overlay {
z-index: 999;
}
/* vant reset end */
.in_list {
height: calc(100vh - 4.5rem);
overflow: auto;
}
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 696 128.42"><defs><style>.cls-1{fill-rule:evenodd;fill:url(#未命名的渐变_7);}</style><linearGradient id="未命名的渐变_7" x1="253.25" y1="-121.68" x2="442.25" y2="205.68" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#327ef4"/><stop offset="1" stop-color="#0562f2"/></linearGradient></defs><title>ic_画板 27</title><path class="cls-1" d="M53.75,0h588a42,42,0,1,1,0,84h-588a42,42,0,1,1,0-84Z"/><image width="696" height="123" transform="translate(0 5.42)" xlink:href="data:image/png;base64,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"/></svg>
\ No newline at end of file
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 672 301"><defs><style>.cls-1{fill:#fff;}.cls-1,.cls-2{fill-rule:evenodd;}.cls-2{fill:#f4f7fc;}</style></defs><title>ic_画板 3</title><path class="cls-1" d="M658,59H252.75c-8.84,0-21.28-5.28-27.79-11.79L189.54,11.79C183,5.28,170.59,0,161.75,0H14A14,14,0,0,0,0,14V287a14,14,0,0,0,14,14H658a14,14,0,0,0,14-14V73A14,14,0,0,0,658,59Z"/><path class="cls-2" d="M658,59H252.75c-8.84,0-21.28-5.28-27.79-11.79L189.54,11.79C183,5.28,170.59,0,161.75,0H14A14,14,0,0,0,0,14V231H672V73A14,14,0,0,0,658,59Z"/></svg>
\ No newline at end of file
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 672 839"><defs><style>.cls-1{fill:none;}.cls-2{fill:#fff;fill-rule:evenodd;}</style></defs><title>ic_画板 4</title><path class="cls-1" d="M658,59H252.75c-8.84,0-21.28-5.28-27.79-11.79L189.54,11.79C183,5.28,170.59,0,161.75,0H14A14,14,0,0,0,0,14V825a14,14,0,0,0,14,14H658a14,14,0,0,0,14-14V73A14,14,0,0,0,658,59Z"/><path class="cls-2" d="M658,59H252.75c-8.84,0-21.28-5.28-27.79-11.79L189.54,11.79C183,5.28,170.59,0,161.75,0H14A14,14,0,0,0,0,14V825a14,14,0,0,0,14,14H658a14,14,0,0,0,14-14V73A14,14,0,0,0,658,59Z"/></svg>
\ No newline at end of file
import "babel-polyfill";
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
import store from "@/store";
store.install(Vuex);
import VueResource from "vue-resource";
Vue.use(VueResource);
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css'
Vue.use(ElementUI)
import App from "./App";
import router from "./router";
import "./assets/css/index.css";
new Vue({
el: "#app",
router,
store,
components: { App },
template: "<App/>"
});
<template>
<div class="index_container">
<router-view />
</div>
</template>
<script>
export default {
data: () => ({})
};
</script>
<style scoped>
.index_container {
height: 100%;
overflow-x: hidden;
overflow-y: auto;
}
</style>
import Vue from "vue";
import Router from "vue-router";
import Index from "@/pages/index";
Vue.use(Router);
export default new Router({
routes: [
{
path: "/",
redirect: "/index"
},
{
path: "/index",
name: "index",
component: Index,
}
]
});
module.exports = {
"harbor": "/awecloud/rest/harbor/api",
};
\ No newline at end of file
var store = {
install: function(Vuex) {
store.namespace = new Vuex.Store({
state: {
userInfo: null, // 用户信息
ssType: "全部",
ssPrams: {
firstId: "", // int 一级分类 0全部
secondId: "", // int 二级分类 0全部
type: 0, // int 0 附近 1评价
search: "", // string 按名称搜索
fifteen: 0
}, // 设施列表参数 for ssHeader组件
name: "",
//进行相关操作和请求接口时,调用函数同步更改,页面的初始化使用state里面的值进行绑定
selectedFacility: {
//选中的poi,点击地图上的点或者在列表中选中时更新状态
name: "", //poi的名称
id: "", //poi的id
distance: "", //poi离用户的距离
evaluation: "", //poi的评分
evaluation_num: "", //poi的评价次数
address: "", //poi的详细地址
discribe: "", //poi的描述信息
lat: "", //poi的经纬度
lng: "",
type: "" ,//poi的类型
detail_type: "" ,//poi的类型
tertiary_type:[]//停车场的具体类型,地下1,地面2,路边3
},
// selectID:"",
// selectTag: "",
currentPosition: {
lng: 112.546184,
lat: 28.281588
},
mapState: "showAll", //"showAll","showSelectTag","showSelectedFacility",
isPullUp: false//是否上拉,为true时,地图的浮窗将会隐藏
},
mutations: {
updateSstype(state, payload) {
state.ssType = payload;
},
upDateSsParams(state, payload) {
Object.assign(state.ssPrams, payload);
},
change(state, name) {
state.name = name;
sessionStorage.setItem("name", name);
},
updateFullDetail(state, detail) {
Object.assign(state.selectedFacility, detail);
},
updateMapState(state, payload) {
state.mapState = payload;
},
updatecurrentPosition(state, payload) {
state.currentPosition = payload;
},
upDateIsPullUp(state, value) {
state.isPullUp = value;
}
/* updateselectTag(state, payload) {
state.selectTag = payload;
},
updateselectID(state, payload) {
state.selectID = payload;
}, */
}
});
}
};
module.exports = store;
(function (window, document) {
var eventUrl = "/awecloud/api/events/token/subscribe";
var pingUrl = "/awecloud/api/events/token/publish?state=ping";
var evtSource = new EventSource(eventUrl);
evtSource.addEventListener("message", function (e) {
console.log("message:", e);
if (e.data == "timeout") {
location.href = "/awecloud/dex/logout?ReturnUrl=" + encodeURIComponent(location.href);
} else if (e.data == "new_login") {
location.href = "/awecloud/dex/logout?ReturnUrl=" + encodeURIComponent(location.href);
}
});
var pingFn = function () {
var req = new XMLHttpRequest();
req.open("GET", pingUrl);
req.send();
};
var nowFn = function () {
return new Date().getTime();
};
var lastActTime = nowFn();
var interval = 10000;
var pingTimerFn = function () {
if (nowFn() - lastActTime < interval) {
pingFn();
}
setTimeout(pingTimerFn, interval);
};
pingTimerFn();
var listenMouseover = function () {
document.body.addEventListener("mouseover", function (e) {
lastActTime = nowFn();
});
};
if (document.body) {
listenMouseover();
} else {
window.addEventListener("load", listenMouseover);
}
})(window, document);
This source diff could not be displayed because it is too large. You can view the blob instead.
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