Commit 1e69d795 by sibiao_huang

update code init

parents
Showing with 2097 additions and 0 deletions
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": [
["import", {
"libraryName": "vant",
"libraryDirectory": "es",
"style": true
}],
["transform-runtime"]
],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["istanbul"]
}
}
}
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
build/*.js
config/*.js
src/assets/iconfont/*
// http://eslint.org/docs/user-guide/configuring
module.exports = {
root: true,
parser: 'babel-eslint',
parserOptions: {
sourceType: 'module'
},
env: {
browser: true,
},
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
extends: 'standard',
// required to lint *.vue files
plugins: [
'html'
],
// add your custom rules here
'rules': {
// 关闭全等
'eqeqeq': [0],
'no-unused-vars': [2, {
// 允许声明未使用变量
'vars': 'local',
// 参数不检查
'args': 'none'
}],
// 关闭语句强制分号结尾
'semi': [0],
// 空行最多不能超过100行
'no-multiple-empty-lines': [0, {'max': 100}],
// 关闭禁止混用tab和空格
'no-mixed-spaces-and-tabs': [0],
// 关闭检测是否是驼峰写法
'camelcase': 0,
// 关闭禁用不必要的转义
'no-useless-escape': 0,
// 关闭禁用抛出异常字面量
'no-throw-literal': 0,
// 关闭禁止重新声明变量
'no-redeclare': 0,
// allow paren-less arrow functions
'arrow-parens': 0,
// allow async-await
'generator-star-spacing': 0,
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
}
}
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.zip
\ No newline at end of file
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
"plugins": {
// to edit target browsers: use "browserlist" field in package.json
"autoprefixer": {}
}
}
{
"name": "建发供方系统流程审批",
"identifier": "com.jffc.supplier",
"build": 102,
"version": "1.10.2",
"releaseNote": "页面节点名称调整---部分节点会签改为会审"
}
{
"name": "建发供方系统流程审批",
"identifier": "com.jffc.supplier",
"build": 41,
"version": "1.4.1",
"releaseNote": "页面节点名称调整---部分节点会签改为会审"
}
# 建发供方系统流程审批
> 供方考察
更新日志:
1. 附件接口参数中的特殊字符“+”编码处理
测试环境版本:
build: 98
version: 1.9.8
正式环境版本:
build:
version:
## Build Setup
打包注意事项:
1. 修改src/api/index.js中的baseUrl值
测试环境使用:
https://mxytest.cndrealty.com:4433
正式环境使用:
http://jffcvp.cndrealty.com:4433
``` bash
# install dependencies
npm install
注意: package-lock.json存在时,请使用 npm ci 命令安装依赖,保证项目依赖库版本相同
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
# build for production and view the bundle
npm run jffc-build
# check for cordova requirements
npm run jffc-check
# build for ios production with cordova
npm run jffc-ios
# build for android production with cordova
npm run jffc-android
# build for web production with cordova & serve with hot reload at localhost:3040
npm run jffc-browser
# build V+ H5 production
npm run jffc-vbuild
# add cordova platforms ios
npm run jffc-add-ios
# add cordova platforms android
npm run jffc-add-android
# add cordova platforms browser
npm run jffc-add-browser
# save for cordova plugins
npm run jffc-save
# add cordova plugin camera
npm run jffc-add-camera
# add cordova plugin console
npm run jffc-add-console
# add cordova plugin device
npm run jffc-add-device
# add cordova plugin sqlite-storage
npm run jffc-add-sqlite
# add cordova plugin file
npm run jffc-add-file
# add cordova plugin dialogs
npm run jffc-add-dialogs
# add cordova plugin splashscreen
npm run jffc-add-splashscreen
# add cordova plugin statusbar
npm run jffc-add-statusbar
```
For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
require('./check-versions')()
process.env.NODE_ENV = 'production'
var ora = require('ora')
var rm = require('rimraf')
var path = require('path')
var chalk = require('chalk')
var webpack = require('webpack')
var config = require('../config')
var webpackConfig = require('./webpack.prod.conf')
// 设置package.json的name与version跟随config.xml里配置 @add by evanxu 2017-06-29
// 改变package版本号
var fs = require('fs')
var xml2js = require('xml2js')
var parser = new xml2js.Parser({explicitArray: false})
var versiony = require('versiony')
var xml = fs.readFileSync(process.cwd() + '/config.xml', {encoding: 'utf-8'}).toString()
parser.parseString(xml, (err, result) => {
if (err) throw err
versiony.version(result.widget.$.version).major().to('package.json')
})
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'
))
var spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, function (err, stats) {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
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'))
})
})
var chalk = require('chalk')
var semver = require('semver')
var packageConfig = require('../package.json')
var shell = require('shelljs')
function exec (cmd) {
return require('child_process').execSync(cmd).toString().trim()
}
var versionRequirements = [
{
name: 'node',
currentVersion: semver.clean(process.version),
versionRequirement: packageConfig.engines.node
},
]
if (shell.which('npm')) {
versionRequirements.push({
name: 'npm',
currentVersion: exec('npm --version'),
versionRequirement: packageConfig.engines.npm
})
}
module.exports = function () {
var warnings = []
for (var i = 0; i < versionRequirements.length; i++) {
var 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 (var i = 0; i < warnings.length; i++) {
var warning = warnings[i]
console.log(' ' + warning)
}
console.log()
process.exit(1)
}
}
/* eslint-disable */
require('eventsource-polyfill')
var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
hotClient.subscribe(function (event) {
if (event.action === 'reload') {
window.location.reload()
}
})
require('./check-versions')()
var config = require('../config')
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
}
var opn = require('opn')
var path = require('path')
var express = require('express')
var webpack = require('webpack')
var proxyMiddleware = require('http-proxy-middleware')
var webpackConfig = require('./webpack.dev.conf')
// default port where dev server listens for incoming traffic
var port = process.env.PORT || config.dev.port
// automatically open browser, if not set will be false
var autoOpenBrowser = !!config.dev.autoOpenBrowser
// Define HTTP proxies to your custom API backend
// https://github.com/chimurai/http-proxy-middleware
var proxyTable = config.dev.proxyTable
var app = express()
var compiler = webpack(webpackConfig)
var devMiddleware = require('webpack-dev-middleware')(compiler, {
publicPath: webpackConfig.output.publicPath,
quiet: true
})
var hotMiddleware = require('webpack-hot-middleware')(compiler, {
log: () => {}
})
// force page reload when html-webpack-plugin template changes
compiler.plugin('compilation', function (compilation) {
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
hotMiddleware.publish({ action: 'reload' })
cb()
})
})
// proxy api requests
Object.keys(proxyTable).forEach(function (context) {
var options = proxyTable[context]
if (typeof options === 'string') {
options = { target: options }
}
app.use(proxyMiddleware(options.filter || context, options))
})
// handle fallback for HTML5 history API
app.use(require('connect-history-api-fallback')())
// serve webpack bundle output
app.use(devMiddleware)
// enable hot-reload and state-preserving
// compilation error display
app.use(hotMiddleware)
// serve pure static assets
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
app.use(staticPath, express.static('./static'))
var uri = 'http://localhost:' + port
var _resolve
var readyPromise = new Promise(resolve => {
_resolve = resolve
})
console.log('> Starting dev server...')
devMiddleware.waitUntilValid(() => {
console.log('> Listening at ' + uri + '\n')
// when env is testing, don't need open it
if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
opn(uri)
}
_resolve()
})
var server = app.listen(port)
module.exports = {
ready: readyPromise,
close: () => {
server.close()
}
}
var path = require('path')
var config = require('../config')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
exports.assetsPath = function (_path) {
var assetsSubDirectory = process.env.NODE_ENV === 'production'
? config.build.assetsSubDirectory
: config.dev.assetsSubDirectory
return path.posix.join(assetsSubDirectory, _path)
}
exports.cssLoaders = function (options) {
options = options || {}
var cssLoader = {
loader: 'css-loader',
options: {
minimize: process.env.NODE_ENV === 'production',
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
var loaders = [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', { indentedSyntax: true }),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}
// Generate loaders for standalone style files (outside of .vue)
exports.styleLoaders = function (options) {
var output = []
var loaders = exports.cssLoaders(options)
for (var extension in loaders) {
var loader = loaders[extension]
output.push({
test: new RegExp('\\.' + extension + '$'),
use: loader
})
}
return output
}
require('./check-versions')()
process.env.NODE_ENV = 'production'
var ora = require('ora')
var rm = require('rimraf')
var path = require('path')
var chalk = require('chalk')
var webpack = require('webpack')
var config = require('../config')
var webpackConfig = require('./webpack.prov.conf')
// 设置package.json的name与version跟随config.xml里配置 @add by evanxu 2017-06-29
// 改变package版本号
var fs = require('fs')
var xml2js = require('xml2js')
var parser = new xml2js.Parser({explicitArray: false})
var versiony = require('versiony')
var xml = fs.readFileSync(process.cwd() + '/config.xml', {encoding: 'utf-8'}).toString()
parser.parseString(xml, (err, result) => {
if (err) throw err
versiony.version(result.widget.$.version).major().to('package.json')
})
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'
))
var spinner = ora('building for V+Production...')
spinner.start()
rm(path.join(config.prov.assetsRoot, config.prov.assetsSubDirectory), err => {
if (err) throw err
webpack(webpackConfig, function (err, stats) {
spinner.stop()
if (err) throw err
process.stdout.write(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n')
if (stats.hasErrors()) {
console.log(chalk.red(' V+Build failed with errors.\n'))
process.exit(1)
}
console.log(chalk.cyan(' V+Build complete.\n'))
})
})
var utils = require('./utils')
var config = require('../config')
var isProduction = process.env.NODE_ENV === 'production'
module.exports = {
loaders: utils.cssLoaders({
sourceMap: isProduction
? config.build.productionSourceMap
: config.dev.cssSourceMap,
extract: isProduction
})
}
var path = require('path')
var utils = require('./utils')
var config = require('../config')
var vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry: {
app: ['babel-polyfill', './src/main.js']
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src')
}
},
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
},
{
test: /\.less$/,
loader: "style-loader!css-loader!less-loader"
}
]
}
}
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
// 设置package.json的name与version跟随config.xml里配置 @add by evanxu 2017-06-29
// 设置版本号、时间
var exdate = require('exdate')
var fs = require('fs')
var xml2js = require('xml2js')
var parser = new xml2js.Parser({explicitArray: false})
var xml = fs.readFileSync(process.cwd() + '/config.xml', {encoding: 'utf-8'}).toString()
var versions;
parser.parseString(xml, (err, result) => {
if (err) {
throw err
}
versions = result.widget.$.version
})
var ds = new Date()
var dates = exdate.format(ds, 'yyyy-MM-dd HH:mm')
// add hot-reload related code to entry chunks
Object.keys(baseWebpackConfig.entry).forEach(function (name) {
baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
})
module.exports = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
},
// cheap-module-eval-source-map is faster for development
devtool: '#cheap-module-eval-source-map',
plugins: [
new webpack.DefinePlugin({
'process.env': config.dev.env,
'process.vers': JSON.stringify(versions),
'process.dates': JSON.stringify(dates)
}),
// https://github.com/glenjamin/webpack-hot-middleware#installation--usage
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
// https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
new FriendlyErrorsPlugin()
]
})
var path = require('path')
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var CopyWebpackPlugin = require('copy-webpack-plugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
// 设置package.json的name与version跟随config.xml里配置 @add by evanxu 2017-06-29
// 设置版本号、时间
var exdate = require('exdate')
var fs = require('fs')
var xml2js = require('xml2js')
var parser = new xml2js.Parser({explicitArray: false})
var xml = fs.readFileSync(process.cwd() + '/config.xml', {encoding: 'utf-8'}).toString()
var versions;
parser.parseString(xml, (err, result) => {
if (err) {
throw err
}
versions = result.widget.$.version
})
var ds = new Date()
var dates = exdate.format(ds, 'yyyy-MM-dd HH:mm')
var env = config.build.env
var webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.build.productionSourceMap,
extract: true
})
},
devtool: config.build.productionSourceMap ? '#source-map' : false,
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env,
'process.vers': JSON.stringify(versions),
'process.dates': JSON.stringify(dates)
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: {
safe: true
}
}),
// generate dist index.html with correct asset hash for caching.
// you can customize output by editing /index.html
// see https://github.com/ampedandwired/html-webpack-plugin
new HtmlWebpackPlugin({
filename: config.build.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
chunks: ['vendor']
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
]
})
if (config.build.productionGzip) {
var 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) {
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
var path = require('path')
var utils = require('./utils')
var webpack = require('webpack')
var config = require('../config')
var merge = require('webpack-merge')
var baseWebpackConfig = require('./webpack.base.conf')
var CopyWebpackPlugin = require('copy-webpack-plugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var ZipPlugin = require('zip-webpack-plugin')
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
// 设置版本号、时间
var exdate = require('exdate')
var fs = require('fs')
var xml2js = require('xml2js')
var parser = new xml2js.Parser({explicitArray: false})
var xml = fs.readFileSync(process.cwd() + '/config.xml', {encoding: 'utf-8'}).toString()
var versions;
parser.parseString(xml, (err, result) => {
if (err) {
throw err
}
versions = result.widget.$.version
})
var ds = new Date()
var dates = exdate.format(ds, 'yyyy-MM-dd HH:mm')
var env = config.prov.env
var webpackConfig = merge(baseWebpackConfig, {
module: {
rules: utils.styleLoaders({
sourceMap: config.prov.productionSourceMap,
extract: true
})
},
devtool: config.prov.productionSourceMap ? '#source-map' : false,
output: {
path: config.prov.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
},
plugins: [
// http://vuejs.github.io/vue-loader/en/workflow/production.html
new webpack.DefinePlugin({
'process.env': env,
'process.vers': JSON.stringify(versions),
'process.dates': JSON.stringify(dates)
}),
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: true
}),
// extract css into its own file
new ExtractTextPlugin({
filename: utils.assetsPath('css/[name].[contenthash].css')
}),
// Compress extracted CSS. We are using this plugin so that possible
// duplicated CSS from different components can be deduped.
new OptimizeCSSPlugin({
cssProcessorOptions: {
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.prov.index,
template: 'index.html',
inject: true,
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
// more options:
// https://github.com/kangax/html-minifier#options-quick-reference
},
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
chunksSortMode: 'dependency'
}),
// split vendor js into its own file
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(
path.join(__dirname, '../node_modules')
) === 0
)
}
}),
// extract webpack runtime and module manifest to its own file in order to
// prevent vendor hash from being updated whenever app bundle is updated
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
chunks: ['vendor']
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.prov.assetsSubDirectory,
ignore: ['.*']
},
// 设置文件复制粘贴
{
from: path.resolve(path.join(__dirname, '../', config.prov.appConfFile)),
to: path.resolve(path.join(config.prov.assetsRoot, config.prov.appConfFile)),
toType: 'file',
force: true,
flatten: true
}
])
]
})
if (config.prov.productionGzip) {
var CompressionWebpackPlugin = require('compression-webpack-plugin')
webpackConfig.plugins.push(
new CompressionWebpackPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
config.prov.productionGzipExtensions.join('|') +
')$'
),
threshold: 10240,
minRatio: 0.8
})
)
}
// 设置压缩打包
if (config.prov.packToZip) {
webpackConfig.plugins.push(
new ZipPlugin({
path: config.prov.assetsRoot,
filename: 'vpackage.zip'
})
)
}
if (config.prov.bundleAnalyzerReport) {
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}
module.exports = webpackConfig
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.jffc.supplier" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name></name>
<description>
建发供方系统流程审批
</description>
<author email="chenwc@ppress.cn">
Ppress Team
</author>
<author email="caihg@ppress.cn">
Ppress Team
</author>
<author email="yuanxl@ppress.cn">
Ppress Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<preference name="DisallowOverscroll" value="true" />
<preference name="BackupWebStorage" value="local" />
</platform>
<preference name="StatusBarBackgroundColor" value="#2c3e50" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="FadeSplashScreen" value="false" />
<preference name="SplashScreenDelay" value="1000" />
<preference name="ShowSplashScreenSpinner" value="false" />
<engine name="android" />
<engine name="browser" />
<engine name="ios" />
<plugin name="cordova-plugin-camera">
<variable name="CAMERA_USAGE_DESCRIPTION" value=" " />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value=" " />
</plugin>
<plugin name="cordova-plugin-console" />
<plugin name="cordova-plugin-device" />
<plugin name="cordova-plugin-dialogs" />
<plugin name="cordova-plugin-file" />
<plugin name="cordova-plugin-splashscreen" />
<plugin name="cordova-plugin-statusbar" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<plugin name="cordova-sqlite-storage" />
</widget>
var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"'
})
// see http://vuejs-templates.github.io/webpack for documentation.
var path = require('path')
module.exports = {
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../www/index.html'),
assetsRoot: path.resolve(__dirname, '../www'),
assetsSubDirectory: 'static',
assetsPublicPath: '',
productionSourceMap: true,
// 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
},
dev: {
env: require('./dev.env'),
port: 8080,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false
},
// 2017-11-21 新增集成V+ @evanxu
prov: {
env: require('./prov.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '',
productionSourceMap: false,
appConfFile: 'CubeModule.json',
eslint: true,
autoRoutes: true,
autoImportStyle: true,
friendlyErrorsPlugin: false,
packToZip: true,
// 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
/* 本地调试 */
// port: 3041,
// autoOpenBrowser: true,
// assetsSubDirectory: 'static',
// assetsPublicPath: '/',
// proxyTable: {},
// cssSourceMap: false
}
}
module.exports = {
NODE_ENV: '"production"'
}
var merge = require('webpack-merge')
var prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"provt"'
})
供方工作流活动节点配置信息:
供方工作流活动节点配置信息:
{
"isLocalApp":"true",
"localAppName":"com.jffc.supplier", //本地应用唯一标示
"parameter":{"page":"review_grade"}//page:页面标识
}
1、供方增加适用区域
a1、会签节点页面标识:addRegion_sign
a2、审批节点页面标识:addRegion_audit
2、调整供方信息
a1、供方更名会签节点页面标识:adjSupplier_changeName_sign
a2、供方更名审批节点页面标识:adjSupplier_changeName_audit
a3、调整品牌范围会签节点页面标识:adjSupplier_brandRange_sign
a4、调整品牌范围审批节点页面标识:adjSupplier_brandRange_audit
a5、修改联系方式会签节点页面标识:adjSupplier_modifyContact_sign
a6、修改联系方式审批节点页面标识:adjSupplier_modifyContact_audit
3、供方升降级
a1、会签节点页面标识:gradeApply_sign
a2、审批节点页面标识:gradeApply_audit
4、供方暂停
a1、会签节点页面标识:pauseApply_sign
a2、审批节点页面标识:pauseApply_audit
5、供方项目范围调整
a1、会签节点页面标识:projectApply_sign
a2、审批节点页面标识:projectApply_audit
6、履约评价打分表页面标识:evaluate_distribute
\ No newline at end of file
No preview for this file type
供方考察组工作流节点活动摘要配置信息:
供方考察组工作流节点活动摘要配置信息:
{
"isLocalApp":"true",
"localAppName":"supplyH5", //本地应用唯一标示
"parameter":{"page":"review_grade"}//page:页面标识
}
review_grade: 供方考察组评分节点
review_leader: 供方考察组组长审核节点
review_sign: 供方考察组会签节点
review_audit: 供方考察组审批节点
CT_SUP_ReviewGrp.FID:x9oAAArL//PirKan
CT_SUP_ReviewGrp.FID:x9oAAArL//PirKan
V+账号:yhwang@cndrealty.com
功能:考察组会签节点保存/提交功能:
地址:http://172.22.203.27:6892/easweb/vp/supply/reviewGrp/actionAuditReviewSummarys.do?tocken=JiqJUPya4uZpAGYIICm%2FKw%2FmiTbmPZrmorT62voT3Tqq7jZtyr20DnS4Hol9R0drSuwNbeh1KJs%3D&isSave=true
{
"id":"x9oAAArL//PirKan",
"infos":[
{
"id":"zm1fG/h3TDOkhDR9nyeGzVkNDGg=",
"leaderSupplyRank":"0",
"leaderOpinion":"综合结论,进入合格供方资源库",
"useCondition":"测试条件1测试条件2",
"productGrade":"ZmsAAAAX2Xrs+7mu",
"PrjTypeEntry":[
{
"projectType":"ZmsAAAAX2X7piCeP"
},
{
"projectType":"ZmsAAAAX2X/piCeP"
},
{
"projectType":"ZmsAAAAX2YDpiCeP"
}
],
"SignEntry":[
{
"signOpinion":"asdfdddddddddd"
}
],
"ProjectEntry":[
{
"curProject":"x9oAAAQ1BUr55ekr"
},
{
"curProject":"x9oAAAQ1Baj55ekr"
}
]
}
],
"type":"sign"
}
\ No newline at end of file
CT_SUP_ReviewGrp.FID:x9oAAArMEJnirKan
CT_SUP_ReviewGrp.FID:x9oAAArMEJnirKan
V+账号:zhangky@cndrealty.com
功能:考察组审批节点保存/提交功能:
地址:http://172.22.203.27:6892/easweb/vp/supply/reviewGrp/actionAuditReviewSummarys.do?tocken=JiqJUPya4uZpAGYIICm%2FKw%2FmiTbmPZrmorT62voT3Tqq7jZtyr20DnS4Hol9R0drSuwNbeh1KJs%3D&isSave=true
{
"id":"x9oAAArMEJnirKan",
"infos":[
{
"id":"sil7n6HXSfOwZMs9ELpPZVkNDGg=",
"leaderSupplyRank":"0",
"leaderOpinion":"测试测试",
"auditSupplyRank":"0",
"auditOpinion":"同意\n",
"PrjTypeEntry":[
{
"projectType":"ZmsAAAAX2X3piCeP"
}
],
"productGrade":"ZmsAAAAX2Xrs+7mu",
"AppRegionEntry":[
{
"appRegion":"vgFsC/q4RUK0YsGoMuTdEwX5+fk="
},
{
"appRegion":"x9oAAANxlGYF+fn5"
}
],
"useCondition":"使用条件1222222222",
"ProjectEntry":[
{
"curProject":"x9oAAAQ1Baj55ekr"
},
{
"curProject":"x9oAAAlCQ5v55ekr"
}
]
}
],
"type":"audit"
}
\ No newline at end of file
CT_SUP_ReviewGrp.FID:x9oAAArL/0virKan
CT_SUP_ReviewGrp.FID:x9oAAArL/0virKan
V+账号:cyy@cndrealty.com
功能:考察组组长审核节点保存/提交功能:
地址:http://172.22.203.27:6892/easweb/vp/supply/reviewGrp/actionAuditReviewSummarys.do?tocken=JiqJUPya4uZpAGYIICm%2FKw%2FmiTbmPZrmorT62voT3Tqq7jZtyr20DnS4Hol9R0drSuwNbeh1KJs%3D&isSave=true
{
"id":"x9oAAArL/0virKan",
"infos":[
{
"id":"vRBvIMgXS3GlsOKOEwkjfVkNDGg=",
"leaderSupplyRank":"0",
"leaderOpinion":"asdfdddddd",
"PrjTypeEntry":[
{
"projectType":"ZmsAAAAX2X3piCeP"
},
{
"projectType":"ZmsAAAAX2X7piCeP"
}
],
"productGrade":"ZmsAAAAX2Xrs+7mu",
"AppRegionEntry":[
{
"appRegion":"x9oAAAFKfXgF+fn5"
},
{
"appRegion":"x9oAAAMf2tgF+fn5"
}
],
"useCondition":"nihao122",
"ProjectEntry":[
{
"curProject":"x9oAAAQ1Baj55ekr"
},
{
"curProject":"x9oAAAlCQ5v55ekr"
}
]
}
],
"type":"leader"
}
\ No newline at end of file
No preview for this file type
No preview for this file type
1、如何判断工程类、设计类、商业类和营销类(判断组长审核/会签/审批是否显示【适用项目类型】等字段)
1、如何判断工程类、设计类、商业类和营销类(判断组长审核/会签/审批是否显示【适用项目类型】等字段)
调用接口地址:http://172.22.203.27:6892/easweb/vp/supply/reviewGrp/actionGetInfo.do
详情请看文档中的A4接口信息,取supplierTypeNumber得数值
从头开始遍列,
a1、包含了"GC",则是工程类;
a2、包含了"SJ",设计类;
a3、包含了"SY",商业类;
a4、包含了"YX",营销类;
2、字符串处理:
由于金蝶的单据ID可能包含特殊字符,故需要对id编码,用户get方式传id的时候需要encode一下
例子:
var codedBillId=Coder.replaceCode.encode(billId);
/*
* Coder 对字符串编码
* @ author zsk 2014-07-28
*/
;(function(window) {
window.Coder = {
encode: function(str) {
return encodeURIComponent(str);
},
decode: function(str) {
return decodeURIComponent(str);
},
replaceCode: {
encode: function(str, oldStr, newStr) {
var oldStr = oldStr || "/";
var newStr = newStr || "_"
var reg = new RegExp(oldStr, "g");
return encodeURIComponent(str.replace(reg, newStr));
},
decode: function(str, oldStr, newStr) {
var oldStr = oldStr || "_";
var newStr = newStr || "/";
var reg = new RegExp(oldStr, "g");
return decodeURIComponent(str).replace(reg, newStr);
}
},
replace: function(str, oldStr, newStr) {
var oldStr = oldStr || "/";
var newStr = newStr || "_"
var reg = new RegExp(oldStr, "g");
return str.replace(reg, newStr);
},
replaceIdChar: function(str, encode){
return str.replace('/','_').replace('+','-').replace('=','------');
},
unReplaceIdChar: function(str){
return str.replace('------','=').replace('-','+').replace('_','/');
}
}
}(window));
No preview for this file type
No preview for this file type
The file could not be displayed because it is too large.
评分表
评分表
cyy@cndrealty.com / itad
xiewei / itad
caimm / 123456
会签:
kangjm@cndrealty.com / itad
**********************************************
供方信息调整-更名:
会签:dingzhy@cndrealty.com
审批:liub@cndrealty.com
供方信息调整-调整联系方式:
会签:dingzhy@cndrealty.com
审批:liub@cndrealty.com
供方信息调整-调整品牌范围:
会签:xiewei
审批:caimm
**********************************************
\ No newline at end of file
No preview for this file type
No preview for this file type
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
-->
# Cordova Hooks
Cordova Hooks represent special scripts which could be added by application and plugin developers or even by your own build system to customize cordova commands. See Hooks Guide for more details: http://cordova.apache.org/docs/en/edge/guide_appdev_hooks_index.md.html#Hooks%20Guide.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,width=device-width">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="jf">
<meta name="apple-mobile-web-app-title" content="contact">
<meta name="format-detection" content="telephone=no,email=no,adress=no" />
<meta name="mobile-web-app-capable" content="jf">
<title>建发供方系统流程审批</title>
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected 通过集成V+埋点 cordova.js 无需再自己添加 -->
</body>
</html>
{
"name": "cnd-plugin",
"version": "0.0.1",
"description": "Cordova C&D Plugin",
"cordova": {
"id": "cnd-plugin",
"platforms": [
"android",
"ios"
]
}
}
\ No newline at end of file
<?xml version='1.0' encoding='utf-8'?>
<plugin id="cnd-plugin" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>cnd-plugin</name>
<js-module name="YFPlugin" src="www/YFPlugin.js">
<clobbers target="cordova.plugins.YFPlugin" />
</js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="YFPlugin">
<param name="android-package" value="com.jffc.vcd.plugin.YFPlugin" />
</feature>
</config-file>
<config-file parent="/*" target="AndroidManifest.xml" />
<source-file src="src/android/YFPlugin.java" target-dir="src/com/jffc/vcd/plugin" />
</platform>
<platform name="ios">
<config-file parent="/*" target="config.xml">
<feature name="YFPlugin">
<param name="ios-package" value="YFPlugin" />
</feature>
</config-file>
<header-file src="src/ios/YFPlugin.h" />
<source-file src="src/ios/YFPlugin.m" />
</platform>
</plugin>
\ No newline at end of file
package com.jffc.vcd.plugin;
import android.util.Base64;
import android.util.Log;
import com.jffc.vcd.util.RouterHelper;
import com.jffc.vcd.util.SPHelper;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
/**
* 获取登录用户信息插件
*/
public class YFPlugin extends CordovaPlugin {
private static final String TAG = YFPlugin.class.getSimpleName();
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
Log.d(TAG,"YFPlugin Plugin execute: " + action);
if (action.equals("getUserInfo")){
this.getUserInfo(callbackContext);
return true;
}else if (action.equals("getHttpHeadValue")){
this.getHttpHeadValue(callbackContext);
return true;
}else if (action.equals("logoutSuccess")){
this.logoutSuccess();
return true;
}else if (action.equals("getHttpHost")){
this.getHttpHost(callbackContext);
return true;
}else if (action.equals("needLoadAllData")){
this.needLoadAllData(callbackContext);
return true;
}
return false;
}
/**
* 获取用户信息
* @param callbackContext
*/
private void getUserInfo(CallbackContext callbackContext){
callbackContext.success(SPHelper.getUserInfo());
}
/**
* 获取头部auth
* @param callbackContext
*/
private void getHttpHeadValue(CallbackContext callbackContext){
String userId = SPHelper.getUserId();
String password = SPHelper.getUserPassword();
StringBuilder sb = new StringBuilder();
sb.append("Basic ");
sb.append(new String(Base64.encode((userId + ":" + password).getBytes(),Base64.NO_WRAP)));
Log.d(TAG,"Authorization: " + sb.toString());
callbackContext.success(sb.toString());
}
/**
* 退出成功
*/
private void logoutSuccess(){
cordova.getActivity().finish();
SPHelper.setUserId("");
RouterHelper.gotoLogin();
}
/**
* 获取host:正式或测试
* @param callbackContext
*/
private void getHttpHost(CallbackContext callbackContext){
callbackContext.success(SPHelper.getHostApi());
}
/**
* 是否需要全量下载
* @param callbackContext
*/
private void needLoadAllData(CallbackContext callbackContext){
callbackContext.success(String.valueOf(SPHelper.isNewUser()));
}
}
//
// YFPlugin.h
// roomCheck
//
// Created by DevenChen on 2017/3/31.
//
//
#import <Foundation/Foundation.h>
#import <Cordova/CDVPlugin.h>
@interface YFPlugin : CDVPlugin
-(void)sayHello:(CDVInvokedUrlCommand *)command;
/**获取用户信息 */
- (void)getUserInfo:(CDVInvokedUrlCommand *)command;
/**是否需要全量下载 */
- (void)needLoadAllData:(CDVInvokedUrlCommand *)command;
/**退出成功 */
- (void)logoutSuccess:(CDVInvokedUrlCommand *)command;
/**获取host */
- (void)getHttpHost:(CDVInvokedUrlCommand *)command;
/**获取请求头 */
- (void)getHttpHeadValue:(CDVInvokedUrlCommand *)command;
@end
//
// YFPlugin.m
// roomCheck
//
// Created by DevenChen on 2017/3/31.
//
//
#import "YFPlugin.h"
#import "GVUserDefaults+YFProperty.h"
#import "AppDelegate.h"
#import "LoginVC.h"
@implementation YFPlugin
-(void)sayHello:(CDVInvokedUrlCommand *)command
{
//接收JS传过来的值
NSDictionary *options=[command argumentAtIndex:0 withDefault:nil];
//对应键名
NSString *curValue=options[@"quality"];
UIAlertView *myAlertView=[[UIAlertView alloc]initWithTitle:@"我是小实例" message:[NSString stringWithFormat:@"当前的内容从JS传过来的值为:%@",curValue] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[myAlertView show];
//数据回调
if ([curValue isEqualToString:@"200"]) {
curValue=@"201";
}
NSDictionary *userInfoDic = @{@"username":YFDefault.username,
@"userID":YFDefault.userID,
@"fid":YFDefault.fid,
@"cell":YFDefault.cell};
CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:userInfoDic];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
/**获取用户信息 */
- (void)getUserInfo:(CDVInvokedUrlCommand *)command{
//数据回调
NSDictionary *userInfoDic = @{@"username":YFDefault.username,
@"userID":YFDefault.userID,
@"fid":YFDefault.fid,
@"cell":YFDefault.cell};
NSError *parseError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:userInfoDic options:NSJSONWritingPrettyPrinted error:&parseError];
NSString *userInfoStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:userInfoStr];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
/**是否需要下载数据 */
- (void)needLoadAllData:(CDVInvokedUrlCommand *)command{
//数据回调
BOOL needLoadData = YFDefault.needLoadData;
CDVPluginResult *pluginResult=[CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsBool:needLoadData];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
if (YFDefault.needLoadData) {
YFDefault.needLoadData = NO;
}
}
/**退出成功 */
- (void)logoutSuccess:(CDVInvokedUrlCommand *)command{
//数据回调
CDVPluginResult *pluginResult=[CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsBool:YES];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
YFDefault.fid = nil;
YFDefault.userID = nil;
YFDefault.username = nil;
YFDefault.cell = nil;
YFDefault.needLoadData = YES;
// NSArray *cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage].cookies;
// for (int i = 0; i < [cookies count]; i++) {
// NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
// [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
// }
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
delegate.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:LoginVC.new];
}
/**获取host */
- (void)getHttpHost:(CDVInvokedUrlCommand *)command
{
//数据回调
CDVPluginResult *pluginResult=[CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:YFDefault.default_host];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
/**获取请求头 */
- (void)getHttpHeadValue:(CDVInvokedUrlCommand *)command
{
//数据回调
CDVPluginResult *pluginResult=[CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:YFDefault.basicAuthCode];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@end
var exec = require('cordova/exec');
var YFPlugin = {
getUserInfo:function(success, error){
exec(success, error, "YFPlugin", "getUserInfo", []);
},
getHttpHeadValue:function(success, error){
exec(success, error, "YFPlugin", "getHttpHeadValue", []);
},
logoutSuccess:function(success, error){
exec(success, error, "YFPlugin", "logoutSuccess", []);
},
getHttpHost:function(success, error){
exec(success, error, "YFPlugin", "getHttpHost", []);
},
needLoadAllData:function(success, error){
exec(success, error, "YFPlugin", "needLoadAllData", []);
}
};
module.exports = YFPlugin;
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "Default-812h@3x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "Default-812h@3x-1.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "Default-568h@2x~iphone.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "Default-568h@2x~iphone-1.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
{
"images" : [
{
"idiom" : "iphone",
"scale" : "1x"
},
{
"idiom" : "iphone",
"filename" : "Default-667h.png",
"scale" : "2x"
},
{
"idiom" : "iphone",
"filename" : "Default-667h-1.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "Default-736h.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "Default-736h-1.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
\ No newline at end of file
This diff could not be displayed because it is too large.
{
"name": "jffc-supplier",
"version": "1.0.0",
"description": "建发供方系统流程审批",
"author": "chenwc <chenwc@ppress.cn>, caihg <caihg@ppress.cn>, yuanxl <yuanxl@ppress.cn>",
"private": true,
"scripts": {
"dev": "node build/dev-server.js",
"start": "node build/dev-server.js",
"build": "node build/build.js",
"lint": "eslint --ext .js,.vue src",
"jffc-check": "cordova requirements",
"jffc-build": "node build/build.js",
"jffc-ios": "cordova build ios",
"jffc-android": "cordova build android",
"jffc-browser": "cordova prepare browser && cross-env PORT=3004 node build/dev-server.js",
"jffc-vbuild": "node build/vt-build.js",
"jffc-save": "cordova plugin save",
"jffc-add-ios": "cordova platforms add ios@4.4.0",
"jffc-add-android": "cordova platforms add android@6.2.3",
"jffc-add-browser": "cordova platforms add browser",
"jffc-add-camera": "cordova plugin add cordova-plugin-camera",
"jffc-add-console": "cordova plugin add cordova-plugin-console",
"jffc-add-device": "cordova plugin add cordova-plugin-device",
"jffc-add-sqlite": "cordova plugin add cordova-sqlite-storage",
"jffc-add-file": "cordova plugin add cordova-plugin-file",
"jffc-add-dialogs": "cordova plugin add cordova-plugin-dialogs",
"jffc-add-splashscreen": "cordova plugin add cordova-plugin-splashscreen",
"jffc-add-statusbar": "cordova plugin add cordova-plugin-statusbar"
},
"dependencies": {
"axios": "^0.19.0",
"babel-polyfill": "^6.23.0",
"cordova-plugin-whitelist": "1",
"exdate": "0.0.4",
"mockjs": "^1.0.1-beta3",
"vant": "^2.0.3",
"vue": "^2.3.3",
"vue-router": "^2.3.1",
"vuex": "^2.3.1"
},
"devDependencies": {
"autoprefixer": "^6.7.2",
"babel-core": "^6.22.1",
"babel-eslint": "^7.1.1",
"babel-loader": "^6.2.10",
"babel-plugin-import": "^1.12.0",
"babel-plugin-transform-runtime": "^6.22.0",
"babel-preset-env": "^1.3.2",
"babel-preset-stage-2": "^6.22.0",
"babel-register": "^6.22.0",
"chalk": "^1.1.3",
"connect-history-api-fallback": "^1.3.0",
"copy-webpack-plugin": "^4.0.1",
"cross-env": "^5.0.1",
"css-loader": "^0.28.0",
"eslint": "^3.19.0",
"eslint-config-standard": "^6.2.1",
"eslint-friendly-formatter": "^2.0.7",
"eslint-loader": "^1.7.1",
"eslint-plugin-html": "^2.0.0",
"eslint-plugin-promise": "^3.4.0",
"eslint-plugin-standard": "^2.0.1",
"eventsource-polyfill": "^0.9.6",
"express": "^4.14.1",
"extract-text-webpack-plugin": "^2.0.0",
"file-loader": "^0.11.1",
"friendly-errors-webpack-plugin": "^1.1.3",
"html-webpack-plugin": "^2.28.0",
"http-proxy-middleware": "^0.19.1",
"less": "^3.9.0",
"less-loader": "^5.0.0",
"mockjs": "^1.0.1-beta3",
"opn": "^4.0.2",
"optimize-css-assets-webpack-plugin": "^1.3.0",
"ora": "^1.2.0",
"rimraf": "^2.6.0",
"semver": "^5.3.0",
"shelljs": "^0.7.6",
"url-loader": "^0.5.8",
"versiony": "^2.0.1",
"vue-loader": "^12.1.0",
"vue-style-loader": "^3.0.1",
"vue-template-compiler": "^2.3.3",
"webpack": "^2.6.1",
"webpack-bundle-analyzer": "^2.2.1",
"webpack-dev-middleware": "^1.10.0",
"webpack-hot-middleware": "^2.18.0",
"webpack-merge": "^4.1.0",
"xml2js": "^0.4.19",
"zip-webpack-plugin": "^1.1.0"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
],
"cordova": {
"platforms": [
"android",
"browser",
"ios"
],
"plugins": {
"cordova-plugin-camera": {
"CAMERA_USAGE_DESCRIPTION": " ",
"PHOTOLIBRARY_USAGE_DESCRIPTION": " "
},
"cordova-plugin-console": {},
"cordova-plugin-device": {},
"cordova-plugin-dialogs": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-whitelist": {},
"cordova-plugin-file": {},
"cordova-sqlite-storage": {}
}
}
}
{
"android": "6.1.2",
"ios": "4.3.1",
"browser": "4.1.0"
}
\ No newline at end of file
{
"prepare_queue": {
"installed": [],
"uninstalled": []
},
"config_munge": {
"files": {}
},
"installed_plugins": {
"cordova-plugin-whitelist": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-camera": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-statusbar": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-splashscreen": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-dialogs": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-file": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-sqlite-storage": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-device": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-console": {
"PACKAGE_NAME": "com.jffc.vcd"
}
},
"dependent_plugins": {
"cordova-plugin-compat": {
"PACKAGE_NAME": "com.jffc.vcd"
}
}
}
\ No newline at end of file
{
"prepare_queue": {
"installed": [],
"uninstalled": []
},
"config_munge": {
"files": {}
},
"installed_plugins": {
"cordova-plugin-whitelist": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-camera": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-statusbar": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-splashscreen": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-dialogs": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-file": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-sqlite-storage": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-device": {
"PACKAGE_NAME": "com.jffc.vcd"
},
"cordova-plugin-console": {
"PACKAGE_NAME": "com.jffc.vcd"
}
},
"dependent_plugins": {
"cordova-plugin-compat": {
"PACKAGE_NAME": "com.jffc.vcd"
}
}
}
\ No newline at end of file
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
-->
# Contributing to Apache Cordova
Anyone can contribute to Cordova. And we need your contributions.
There are multiple ways to contribute: report bugs, improve the docs, and
contribute code.
For instructions on this, start with the
[contribution overview](http://cordova.apache.org/contribute/).
The details are explained there, but the important items are:
- Sign and submit an Apache ICLA (Contributor License Agreement).
- Have a Jira issue open that corresponds to your contribution.
- Run the tests so your patch doesn't break existing functionality.
We look forward to your contributions!
Apache Cordova
Copyright 2012 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
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 sign in to comment