diff --git a/jero-web/.editorconfig b/jero-web/.editorconfig index 3e26fbb6..dfdcb8a4 100644 --- a/jero-web/.editorconfig +++ b/jero-web/.editorconfig @@ -37,3 +37,9 @@ indent_size=2 indent_style=space indent_size=2 + +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/jero-web/.eslintrc.js b/jero-web/.eslintrc.js deleted file mode 100644 index 5e12834a..00000000 --- a/jero-web/.eslintrc.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = { - "env": { - "browser": true, - "node": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - ], - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly" - }, - "parser": "vue-eslint-parser", - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module", - "parser": "babel-eslint" - }, - "plugins": [ - "vue" - ], - "rules": { - 'quotes': [2, 'single', { - 'avoidEscape': true, - 'allowTemplateLiterals': true - }], - 'semi': [2, 'never'], - 'no-console': 'off', - "no-debugger": "off" - } -} diff --git a/jero-web/package.json b/jero-web/package.json index bd699f19..4203720a 100644 --- a/jero-web/package.json +++ b/jero-web/package.json @@ -3,20 +3,22 @@ "version": "2.4.6", "private": true, "scripts": { - "pre": "cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org ", "serve": "vue-cli-service serve", - "build:test": "vue-cli-service build --mode test", "build": "vue-cli-service build", - "lint": "vue-cli-service lint" + "lint": "vue-cli-service lint", + "build:test": "vue-cli-service build --mode test", + "pre": "cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org " }, "dependencies": { "@antv/data-set": "^0.11.4", + "@tinymce/tinymce-vue": "2.1.0", "@toast-ui/editor": "^2.1.2", "ant-design-vue": "^1.7.2", - "china-area-data": "^5.0.1", "axios": "^0.21.1", + "china-area-data": "^5.0.1", "clipboard": "^2.0.4", "codemirror": "^5.46.0", + "cron-parser": "^2.10.0", "dayjs": "^1.8.0", "dom-align": "1.12.0", "echarts": "^5.0.2", @@ -28,7 +30,6 @@ "lodash.pick": "^4.4.0", "md5": "^2.2.1", "nprogress": "^0.2.0", - "@tinymce/tinymce-vue": "2.1.0", "tinymce": "5.4.1", "viser-vue": "^2.4.8", "vue": "^2.6.10", @@ -45,65 +46,27 @@ "vuex": "^3.1.0", "vxe-table": "2.9.13", "vxe-table-plugin-antd": "1.8.10", - "xe-utils": "2.4.8", - "cron-parser": "^2.10.0" + "xe-utils": "2.4.8" }, "devDependencies": { "@babel/polyfill": "^7.2.5", "@vue/cli-plugin-babel": "^3.3.0", - "@vue/cli-plugin-eslint": "^3.3.0", + "@vue/cli-plugin-eslint": "~4.2.3", "@vue/cli-service": "^3.3.0", - "@vue/eslint-config-standard": "^4.0.0", - "babel-eslint": "7.2.3", + "@vue/eslint-config-standard": "^5.1.0", + "babel-eslint": "^10.0.3", "compression-webpack-plugin": "^3.1.0", - "eslint": "^5.16.0", - "eslint-plugin-vue": "^5.1.0", + "eslint": "^6.7.2", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^6.1.2", "html-webpack-plugin": "^4.2.0", "less": "^3.9.0", "less-loader": "^4.1.0", "vue-template-compiler": "^2.6.10" }, - "eslintConfig": { - "root": true, - "env": { - "node": true - }, - "extends": [ - "plugin:vue/strongly-recommended", - "@vue/standard" - ], - "parserOptions": { - "parser": "babel-eslint" - }, - "rules": { - "generator-star-spacing": "off", - "no-mixed-operators": 0, - "vue/max-attributes-per-line": [ - 2, - { - "singleline": 5, - "multiline": { - "max": 1, - "allowFirstLine": false - } - } - ], - "vue/attribute-hyphenation": 0, - "vue/html-self-closing": 0, - "vue/component-name-in-template-casing": 0, - "vue/html-closing-bracket-spacing": 0, - "vue/singleline-html-element-content-newline": 0, - "vue/no-unused-components": 0, - "vue/multiline-html-element-content-newline": 0, - "vue/no-use-v-if-with-v-for": 0, - "vue/html-closing-bracket-newline": 0, - "vue/no-parsing-error": 0, - "no-tabs": 0, - "indent": ["off", 2], - "no-console": 0, - "space-before-function-paren": 0 - } - }, "postcss": { "plugins": { "autoprefixer": {} diff --git a/jero-web/src/components/jero/JCodeEditor.vue b/jero-web/src/components/jero/JCodeEditor.vue index 9064df1a..8a69b9e7 100644 --- a/jero-web/src/components/jero/JCodeEditor.vue +++ b/jero-web/src/components/jero/JCodeEditor.vue @@ -28,8 +28,8 @@ import 'codemirror/lib/codemirror.css' // 引入主题后还需要在 options 中指定主题才会生效 darcula gruvbox-dark hopscotch monokai import 'codemirror/theme/panda-syntax.css' - //提示css - import "codemirror/addon/hint/show-hint.css"; + // 提示css + import 'codemirror/addon/hint/show-hint.css' // 需要引入具体的语法高亮库才会有对应的语法高亮效果 // codemirror 官方其实支持通过 /addon/mode/loadmode.js 和 /mode/meta.js 来实现动态加载对应语法高亮库 @@ -64,10 +64,10 @@ type: String, default: null }, - languageChange:{ + languageChange: { type: Boolean, - default:false, - required:false + default: false, + required: false }, placeholder: { type: String, @@ -101,14 +101,14 @@ height: { type: [String, Number], default: '240px' - }, + } }, data () { return { // 内部真实的内容 code: '', iconType: 'fullscreen', - hasCode:false, + hasCode: false, // 默认的语法类型 mode: 'javascript', // 编辑器实例 @@ -126,7 +126,7 @@ users: ['name', 'score', 'birthDate'], countries: ['name', 'population', 'size'] } - }, + } }, // 支持切换的语法高亮类型,对应 JS 已经提前引入 // 使用的是 MIME-TYPE ,不过作为前缀的 text/ 在后面指定时写死了 @@ -172,12 +172,12 @@ } }, watch: { - fullCoder:{ + fullCoder: { handler(value) { - if(value){ - this.iconType="fullscreen-exit" - }else{ - this.iconType="fullscreen" + if (value) { + this.iconType = 'fullscreen-exit' + } else { + this.iconType = 'fullscreen' } } }, @@ -216,7 +216,7 @@ return this.placeholder } }, - nullTipStyle(){ + nullTipStyle() { if (this.lineNumbers) { return { left: '36px' } } else { @@ -234,7 +234,7 @@ } }, isAutoHeight() { - let {autoHeight} = this + let { autoHeight } = this if (typeof autoHeight === 'string' && autoHeight.toLowerCase().trim() === '!ie') { autoHeight = !(isIE() || isIE11()) } else { @@ -251,7 +251,7 @@ }, style: {} } - if(isIE() || isIE11()){ + if (isIE() || isIE11()) { props.style['height'] = '240px' } if (this.fullCoder) { @@ -273,53 +273,52 @@ // 初始化编辑器实例,传入需要被实例化的文本域对象和默认配置 this.coder = CodeMirror.fromTextArea(this.$refs.textarea, this.coderOptions) // 编辑器赋值 - if(this.value||this.code){ - this.hasCode=true - //this.coder.setValue(this.value || this.code) + if (this.value || this.code) { + this.hasCode = true + // this.coder.setValue(this.value || this.code) this.setCodeContent(this.value || this.code) - }else{ + } else { this.coder.setValue('') - this.hasCode=false + this.hasCode = false } // 支持双向绑定 this.coder.on('change', (coder) => { this.code = coder.getValue() - if(this.code){ - this.hasCode=true - }else{ - this.hasCode=false + if (this.code) { + this.hasCode = true + } else { + this.hasCode = false } if (this.$emit) { this.$emit('input', this.code) } }) this.coder.on('focus', () => { - this.hasCode=true + this.hasCode = true }) this.coder.on('blur', () => { - if(this.code){ - this.hasCode=true - }else{ - this.hasCode=false + if (this.code) { + this.hasCode = true + } else { + this.hasCode = false } }) /* this.coder.on('cursorActivity',()=>{ this.coder.showHint() - })*/ - + }) */ }, - getCodeContent(){ + getCodeContent() { return this.code }, - setCodeContent(val){ - setTimeout(()=>{ - if(!val){ + setCodeContent(val) { + setTimeout(() => { + if (!val) { this.coder.setValue('') - }else{ + } else { this.coder.setValue(val) } - },300) + }, 300) }, // 获取当前语法类型 _getLanguage (language) { @@ -357,7 +356,7 @@ // 允许父容器通过以下函数监听当前的语法值 this.$emit('language-change', label) }, - nullTipClick(){ + nullTipClick() { this.coder.focus() } } @@ -480,4 +479,4 @@ .CodeMirror-cursor{ height:18.4px !important; } - \ No newline at end of file +