cfort hace 3 años
padre
commit
558b3b58c3

+ 235 - 212
.eslintrc.js

@@ -1,215 +1,238 @@
 module.exports = {
-  root: true,
-  parserOptions: {
-    parser: 'babel-eslint',
-    sourceType: 'module'
-  },
-  env: {
-    browser: true,
-    node: true,
-    es6: true
-  },
-  'extends': [
-    'plugin:vue/recommended',
-    'eslint:recommended'
-  ],
-  overrides: [
-    {
-      files: [
-        '**/__tests__/*.{j,t}s?(x)',
-        '**/tests/unit/**/*.spec.{j,t}s?(x)'
-      ],
-      env: {
-        jest: true
-      }
+    root: true,
+    parserOptions: {
+        parser: 'babel-eslint',
+        sourceType: 'module'
+    },
+    env: {
+        browser: true,
+        node: true,
+        es6: true
+    },
+    'extends': [
+        'plugin:vue/recommended',
+        'eslint:recommended'
+    ],
+    overrides: [
+        {
+            files: [
+                '**/__tests__/*.{j,t}s?(x)',
+                '**/tests/unit/**/*.spec.{j,t}s?(x)'
+            ],
+            env: {
+                jest: true
+            }
+        }
+    ],
+    // add your custom rules here
+    // it is base on https://github.com/vuejs/eslint-config-vue
+    rules: {
+        'vue/max-attributes-per-line': [2, {
+            'singleline': 10,
+            'multiline': {
+                'max': 1,
+                'allowFirstLine': false
+            }
+        }],
+        'vue/singleline-html-element-content-newline': 'off',
+        'vue/multiline-html-element-content-newline': 'off',
+        'vue/name-property-casing': ['error', 'kebab-case'], // |PascalCase
+        'vue/require-default-prop': 'off',
+        'vue/no-v-html': 'off',
+        'accessor-pairs': 2,
+        'arrow-spacing': [2, {
+            'before': true,
+            'after': true
+        }],
+        'block-spacing': [2, 'always'],
+        'brace-style': [2, '1tbs', {
+            'allowSingleLine': true
+        }],
+        'camelcase': [0, {
+            'properties': 'always'
+        }],
+        'comma-dangle': [2, 'never'],
+        'comma-spacing': [2, {
+            'before': false,
+            'after': true
+        }],
+        'comma-style': [2, 'last'],
+        'constructor-super': 2,
+        'curly': [2, 'multi-line'],
+        'dot-location': [2, 'property'],
+        'eol-last': 2,
+        'eqeqeq': ['error', 'always', { 'null': 'ignore' }],
+        'generator-star-spacing': [2, {
+            'before': true,
+            'after': true
+        }],
+        'handle-callback-err': [2, '^(err|error)$'],
+        // 'indent': ["off", 2, {
+        //     'SwitchCase': 1
+        // }],
+        "vue/script-indent": [
+            2,
+            4,
+            {
+                "baseIndent": 1,
+                "switchCase": 1,
+                "MemberExpression": 1
+            }
+        ],
+        "vue/html-indent": [
+            2,
+            4,
+            {
+                "attribute": 1,
+                "closeBracket": 0,
+                "alignAttributesVertically": true
+            }
+        ],
+        'jsx-quotes': [2, 'prefer-single'],
+        'key-spacing': [2, {
+            'beforeColon': false,
+            'afterColon': true
+        }],
+        'keyword-spacing': [2, {
+            'before': true,
+            'after': true
+        }],
+        'new-cap': [2, {
+            'newIsCap': true,
+            'capIsNew': false
+        }],
+        'new-parens': 2,
+        'no-array-constructor': 2,
+        'no-caller': 2,
+        'no-console': 'off',
+        'no-class-assign': 2,
+        'no-cond-assign': 2,
+        'no-const-assign': 2,
+        'no-control-regex': 0,
+        'no-delete-var': 2,
+        'no-dupe-args': 2,
+        'no-dupe-class-members': 2,
+        'no-dupe-keys': 2,
+        'no-duplicate-case': 2,
+        'no-empty-character-class': 2,
+        'no-empty-pattern': 2,
+        'no-eval': 2,
+        'no-ex-assign': 2,
+        'no-extend-native': 2,
+        'no-extra-bind': 2,
+        'no-extra-boolean-cast': 2,
+        'no-extra-parens': [2, 'functions'],
+        'no-fallthrough': 2,
+        'no-floating-decimal': 2,
+        'no-func-assign': 2,
+        'no-implied-eval': 2,
+        'no-inner-declarations': [2, 'functions'],
+        'no-invalid-regexp': 2,
+        'no-irregular-whitespace': 2,
+        'no-iterator': 2,
+        'no-label-var': 2,
+        'no-labels': [2, {
+            'allowLoop': false,
+            'allowSwitch': false
+        }],
+        'no-lone-blocks': 2,
+        'no-mixed-spaces-and-tabs': 2,
+        'no-multi-spaces': 2,
+        'no-multi-str': 2,
+        'no-multiple-empty-lines': [2, {
+            'max': 1
+        }],
+        'no-native-reassign': 2,
+        'no-negated-in-lhs': 2,
+        'no-new-object': 2,
+        'no-new-require': 2,
+        'no-new-symbol': 2,
+        'no-new-wrappers': 2,
+        'no-obj-calls': 2,
+        'no-octal': 2,
+        'no-octal-escape': 2,
+        'no-path-concat': 2,
+        'no-proto': 2,
+        'no-redeclare': 2,
+        'no-regex-spaces': 2,
+        'no-return-assign': [2, 'except-parens'],
+        'no-self-assign': 2,
+        'no-self-compare': 2,
+        'no-sequences': 2,
+        'no-shadow-restricted-names': 2,
+        'no-spaced-func': 2,
+        'no-sparse-arrays': 2,
+        'no-this-before-super': 2,
+        'no-throw-literal': 2,
+        'no-trailing-spaces': 2,
+        'no-undef': 2,
+        'no-undef-init': 2,
+        'no-unexpected-multiline': 2,
+        'no-unmodified-loop-condition': 2,
+        'no-unneeded-ternary': [2, {
+            'defaultAssignment': false
+        }],
+        'no-unreachable': 2,
+        'no-unsafe-finally': 2,
+        // 'no-unused-vars': [2, {
+        //     'vars': 'all',
+        //     'args': 'none'
+        // }],
+        // 当存在定义而未使用的组件时,关闭报错
+        'vue/no-unused-components': 'off',
+        // 当存在定义而未使用的变量时,关闭报错
+        'no-unused-vars': 'off',
+        'no-useless-call': 2,
+        'no-useless-computed-key': 2,
+        'no-useless-constructor': 2,
+        'no-useless-escape': 0,
+        'no-whitespace-before-property': 2,
+        'no-with': 2,
+        'one-var': [2, {
+            'initialized': 'never'
+        }],
+        'operator-linebreak': [2, 'after', {
+            'overrides': {
+                '?': 'before',
+                ':': 'before'
+            }
+        }],
+        'padded-blocks': [2, 'never'],
+        'quotes': [2, 'single', {
+            'avoidEscape': true,
+            'allowTemplateLiterals': true
+        }],
+        'semi': [2, 'never'],
+        'semi-spacing': [2, {
+            'before': false,
+            'after': true
+        }],
+        'space-before-blocks': [2, 'always'],
+        'space-before-function-paren': [2, 'never'],
+        'space-in-parens': [2, 'never'],
+        'space-infix-ops': 2,
+        'space-unary-ops': [2, {
+            'words': true,
+            'nonwords': false
+        }],
+        'spaced-comment': [2, 'always', {
+            'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
+        }],
+        'template-curly-spacing': [2, 'never'],
+        'use-isnan': 2,
+        'valid-typeof': 2,
+        'wrap-iife': [2, 'any'],
+        'yield-star-spacing': [2, 'both'],
+        'yoda': [2, 'never'],
+        'prefer-const': 2,
+        'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
+        'object-curly-spacing': [2, 'always', {
+            objectsInObjects: false
+        }],
+        'array-bracket-spacing': [2, 'never'],
+        'no-async-promise-executor': 'off',
+        'require-atomic-updates': 'off',
+        'no-prototype-builtins': 'off',
+        'no-irregular-whitespace': 'off'
     }
-  ],
-  // add your custom rules here
-  // it is base on https://github.com/vuejs/eslint-config-vue
-  rules: {
-    'vue/max-attributes-per-line': [2, {
-      'singleline': 10,
-      'multiline': {
-        'max': 1,
-        'allowFirstLine': false
-      }
-    }],
-    'vue/singleline-html-element-content-newline': 'off',
-    'vue/multiline-html-element-content-newline': 'off',
-    'vue/name-property-casing': ['error', 'kebab-case'], // |PascalCase
-    'vue/require-default-prop': 'off',
-    'vue/no-v-html': 'off',
-    'accessor-pairs': 2,
-    'arrow-spacing': [2, {
-      'before': true,
-      'after': true
-    }],
-    'block-spacing': [2, 'always'],
-    'brace-style': [2, '1tbs', {
-      'allowSingleLine': true
-    }],
-    'camelcase': [0, {
-      'properties': 'always'
-    }],
-    'comma-dangle': [2, 'never'],
-    'comma-spacing': [2, {
-      'before': false,
-      'after': true
-    }],
-    'comma-style': [2, 'last'],
-    'constructor-super': 2,
-    'curly': [2, 'multi-line'],
-    'dot-location': [2, 'property'],
-    'eol-last': 2,
-    'eqeqeq': ['error', 'always', { 'null': 'ignore' }],
-    'generator-star-spacing': [2, {
-      'before': true,
-      'after': true
-    }],
-    'handle-callback-err': [2, '^(err|error)$'],
-    'indent': ["off", 2, {
-      'SwitchCase': 1
-    }],
-    'jsx-quotes': [2, 'prefer-single'],
-    'key-spacing': [2, {
-      'beforeColon': false,
-      'afterColon': true
-    }],
-    'keyword-spacing': [2, {
-      'before': true,
-      'after': true
-    }],
-    'new-cap': [2, {
-      'newIsCap': true,
-      'capIsNew': false
-    }],
-    'new-parens': 2,
-    'no-array-constructor': 2,
-    'no-caller': 2,
-    'no-console': 'off',
-    'no-class-assign': 2,
-    'no-cond-assign': 2,
-    'no-const-assign': 2,
-    'no-control-regex': 0,
-    'no-delete-var': 2,
-    'no-dupe-args': 2,
-    'no-dupe-class-members': 2,
-    'no-dupe-keys': 2,
-    'no-duplicate-case': 2,
-    'no-empty-character-class': 2,
-    'no-empty-pattern': 2,
-    'no-eval': 2,
-    'no-ex-assign': 2,
-    'no-extend-native': 2,
-    'no-extra-bind': 2,
-    'no-extra-boolean-cast': 2,
-    'no-extra-parens': [2, 'functions'],
-    'no-fallthrough': 2,
-    'no-floating-decimal': 2,
-    'no-func-assign': 2,
-    'no-implied-eval': 2,
-    'no-inner-declarations': [2, 'functions'],
-    'no-invalid-regexp': 2,
-    'no-irregular-whitespace': 2,
-    'no-iterator': 2,
-    'no-label-var': 2,
-    'no-labels': [2, {
-      'allowLoop': false,
-      'allowSwitch': false
-    }],
-    'no-lone-blocks': 2,
-    'no-mixed-spaces-and-tabs': 2,
-    'no-multi-spaces': 2,
-    'no-multi-str': 2,
-    'no-multiple-empty-lines': [2, {
-      'max': 1
-    }],
-    'no-native-reassign': 2,
-    'no-negated-in-lhs': 2,
-    'no-new-object': 2,
-    'no-new-require': 2,
-    'no-new-symbol': 2,
-    'no-new-wrappers': 2,
-    'no-obj-calls': 2,
-    'no-octal': 2,
-    'no-octal-escape': 2,
-    'no-path-concat': 2,
-    'no-proto': 2,
-    'no-redeclare': 2,
-    'no-regex-spaces': 2,
-    'no-return-assign': [2, 'except-parens'],
-    'no-self-assign': 2,
-    'no-self-compare': 2,
-    'no-sequences': 2,
-    'no-shadow-restricted-names': 2,
-    'no-spaced-func': 2,
-    'no-sparse-arrays': 2,
-    'no-this-before-super': 2,
-    'no-throw-literal': 2,
-    'no-trailing-spaces': 2,
-    'no-undef': 2,
-    'no-undef-init': 2,
-    'no-unexpected-multiline': 2,
-    'no-unmodified-loop-condition': 2,
-    'no-unneeded-ternary': [2, {
-      'defaultAssignment': false
-    }],
-    'no-unreachable': 2,
-    'no-unsafe-finally': 2,
-    'no-unused-vars': [2, {
-      'vars': 'all',
-      'args': 'none'
-    }],
-    'no-useless-call': 2,
-    'no-useless-computed-key': 2,
-    'no-useless-constructor': 2,
-    'no-useless-escape': 0,
-    'no-whitespace-before-property': 2,
-    'no-with': 2,
-    'one-var': [2, {
-      'initialized': 'never'
-    }],
-    'operator-linebreak': [2, 'after', {
-      'overrides': {
-        '?': 'before',
-        ':': 'before'
-      }
-    }],
-    'padded-blocks': [2, 'never'],
-    'quotes': [2, 'single', {
-      'avoidEscape': true,
-      'allowTemplateLiterals': true
-    }],
-    'semi': [2, 'never'],
-    'semi-spacing': [2, {
-      'before': false,
-      'after': true
-    }],
-    'space-before-blocks': [2, 'always'],
-    'space-before-function-paren': [2, 'never'],
-    'space-in-parens': [2, 'never'],
-    'space-infix-ops': 2,
-    'space-unary-ops': [2, {
-      'words': true,
-      'nonwords': false
-    }],
-    'spaced-comment': [2, 'always', {
-      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
-    }],
-    'template-curly-spacing': [2, 'never'],
-    'use-isnan': 2,
-    'valid-typeof': 2,
-    'wrap-iife': [2, 'any'],
-    'yield-star-spacing': [2, 'both'],
-    'yoda': [2, 'never'],
-    'prefer-const': 2,
-    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
-    'object-curly-spacing': [2, 'always', {
-      objectsInObjects: false
-    }],
-    'array-bracket-spacing': [2, 'never'],
-    'no-async-promise-executor': 'off',
-    'require-atomic-updates': 'off',
-    'no-prototype-builtins': 'off'
-  }
 }

+ 8 - 8
src/business/platform/form/formbuilder/right-aside/editors/editor-options.vue

@@ -9,7 +9,7 @@
             <el-radio-group
                 v-model="fieldOptions.datasource"
                 size="mini"
-                style="margin-bottom: 10px"
+                style="margin-bottom: 10px;"
             >
                 <el-radio-button
                     v-for="item in datasourceOptions"
@@ -108,7 +108,7 @@
                     <ibps-data-template-selector2
                         v-model="fieldOptions.value_source"
                         placeholder="请选择值来源"
-                        style="width: 100%"
+                        style="width: 100%;"
                         @change="changeDataTemplateSelector"
                     />
                 </el-form-item>
@@ -117,7 +117,7 @@
                     <div class="el-form-item__content">
                         <el-button
                             :disabled="disabledResultColumns"
-                            style="width: 100%"
+                            style="width: 100%;"
                             type="primary"
                             size="mini"
                             plain
@@ -130,7 +130,7 @@
                     <div class="el-form-item__content">
                         <el-button
                             :disabled="disabledDynamicConditions"
-                            style="width: 100%"
+                            style="width: 100%;"
                             type="primary"
                             size="mini"
                             plain
@@ -144,7 +144,7 @@
                         <div class="el-form-item__content">
                             <el-button
                                 :disabled="disabledResultColumns"
-                                style="width: 100%"
+                                style="width: 100%;"
                                 type="primary"
                                 size="mini"
                                 plain
@@ -157,7 +157,7 @@
                         <div class="el-form-item__content">
                             <el-button
                                 :disabled="disabledResultColumns"
-                                style="width: 100%"
+                                style="width: 100%;"
                                 type="primary"
                                 size="mini"
                                 plain
@@ -217,12 +217,12 @@
                 </el-form-item>
                 <el-form-item label-width="0">
                     <el-input v-model="fieldOptions.remoteValueKey" placeholder="请输入值">
-                        <div slot="prepend" style="width: 30px">值</div>
+                        <div slot="prepend" style="width: 30px;">值</div>
                     </el-input>
                 </el-form-item>
                 <el-form-item label-width="0">
                     <el-input v-model="fieldOptions.remoteLabelKey" placeholder="请输入标签">
-                        <div slot="prepend" style="width: 30px">标签</div>
+                        <div slot="prepend" style="width: 30px;">标签</div>
                     </el-input>
                 </el-form-item>
             </template>

+ 35 - 23
src/business/platform/form/formrender/dynamic-form/dynamic-form-field.vue

@@ -1,5 +1,5 @@
 <template>
-    <div style="color: #000000" class="jbd-dynamic-form-field">
+    <div style="color: #000000;" class="jbd-dynamic-form-field">
         <!-- 单行文本、 多行文本、数字-->
         <template v-if="fieldType === 'text' || fieldType === 'textarea' || fieldType === 'number'">
             <template v-if="readonlyText">
@@ -39,19 +39,23 @@
 
                 <!-- <el-button
                     v-if="(!fieldOptions.custom_class || fieldOptions.custom_class>=120) && !dataModel"
-                    @click.stop="addDict($store.getters.userInfo.employee.groupID,field,field.label)"
                     size="mini"
                     title='添加短语'
                     plain
                     icon="el-icon-folder-add"
                     align="center"
                     class="elButtonPlace"
+                    @click.stop="addDict($store.getters.userInfo.employee.groupID,field,field.label)"
                 /> -->
 
                 <el-dropdown-menu slot="dropdown" v-show="menuHide">
-                    <el-dropdown-item v-for="(item, index) in selectModel" :key="index" :command="item.contextName">
+                    <el-dropdown-item
+                        v-for="(item, index) in selectModel"
+                        :key="index"
+                        :command="item.contextName"
+                    >
                         {{ index + 1 }}. {{ item.contextName | ellipsis }}
-                        <span style="float: right; margin-left: 50px; color: #eb6709" @click.stop="deleteDicts(item.uuId, field.label)">删</span>
+                        <span style="float: right; margin-left: 50px; color: #eb6709;" @click.stop="deleteDicts(item.uuId, field.label)">删</span>
                     </el-dropdown-item>
                 </el-dropdown-menu>
             </el-dropdown>
@@ -100,16 +104,19 @@
                 </div>
                 <div v-else :class="isTable ? '' : 'ibps-field-text-no'">/</div>
             </template>
-            <el-radio-group v-else v-model="dataModel" :disabled="readonly" v-on="$listeners">
+            <el-radio-group
+                v-else
+                v-model="dataModel"
+                :disabled="readonly"
+                v-on="$listeners"
+            >
                 <component
                     :is="fieldOptions.button ? 'el-radio-button' : 'el-radio'"
                     v-for="o in dataOptions"
                     :key="o.val"
                     :label="o.val"
                     :border="fieldOptions.border"
-                    :style="{
-                        display: fieldOptions.arrangement === 'vertical' ? 'block' : null
-                    }"
+                    :style="{ display: fieldOptions.arrangement === 'vertical' ? 'block' : null }"
                     class="ibps-pt-5"
                 >
                     {{ o.label }}
@@ -220,7 +227,7 @@
                     {{ dataModel || '/' }}
                 </div>
             </template>
-            <div v-else style="width: 99%">
+            <div v-else style="width: 99%;">
                 <el-slider
                     v-model="numberDataModel"
                     :show-input="fieldOptions.show_input"
@@ -545,7 +552,12 @@
             :icon="fieldOptions.icon ? 'ibps-icon-' + fieldOptions.icon : ''"
             v-on="$listeners"
         />
-        <Dictionaryitem v-if="dict_add" @proceedCont="proceedCont()" ref="dict_add"> </Dictionaryitem>
+        <Dictionaryitem
+            v-if="dict_add"
+            @proceedCont="proceedCont()"
+            ref="dict_add"
+        >
+        </Dictionaryitem>
         <!-- =======================其它字段==============================-->
         <!-- 文本-->
         <span v-else-if="fieldType === 'label'" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
@@ -766,7 +778,7 @@
                         return (FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['date'])
                     }
                 } else {
-                    return this.fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date']
+                    return (this.fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date'])
                 }
             },
             // 日期格式处理
@@ -825,9 +837,7 @@
             },
             // 最大文件上传
             maxFileSize() {
-                return this.$utils.isNotEmpty(this.fieldOptions.max_file_size)
-                    ? this.fieldOptions.max_file_size * 1024 * 1024
-                    : null
+                return this.$utils.isNotEmpty(this.fieldOptions.max_file_size) ? this.fieldOptions.max_file_size * 1024 * 1024 : null
             },
             // 最大文件个数
             fileQuantity() {
@@ -959,9 +969,7 @@
         created() {
             if (this.isValueSource) {
                 this.field.field_options['options'] = null
-                getByKey({
-                    dataTemplateKey: this.fieldOptions['value_source']
-                }).then(response => {
+                getByKey({ dataTemplateKey: this.fieldOptions['value_source'] }).then((response) => {
                     this.dataTemplate = this.$utils.parseData(response.data)
                     this.loadAjaxOptions()
                 }).catch(() => {})
@@ -981,9 +989,15 @@
                 let month = this.trans(date.getMonth() + 1)
                 let day = this.trans(date.getDate())
                 let addDate = year + '' + month + '' + day
-                if (this.datefmt === 'MM') this.dataModel = addDate.substring(0, 4) + '-' + val + '-01'
-                else if (this.datefmt === 'yyyy-MM') this.dataModel = val + '-01'
-                else if (this.datefmt === 'yyyy') this.dataModel = val + '-01-01'
+                if (this.datefmt === 'MM'){
+                    this.dataModel = addDate.substring(0, 4) + '-' + val + '-01'
+                }
+                else if (this.datefmt === 'yyyy-MM') {
+                    this.dataModel = val + '-01'
+                }
+                else if (this.datefmt === 'yyyy') {
+                    this.dataModel = val + '-01-01'
+                }
             },
             // 获取当前时间
             trans(val) {
@@ -1141,9 +1155,7 @@
                     request({
                         url: BPMN_URL() + '/sys/SysDataContext/deleteDataContext',
                         method: 'post',
-                        data: JSON.stringify({
-                            uuId: id
-                        })
+                        data: JSON.stringify({ uuId: id })
                     }).then(response => {
                         this.menuHide = true
                         if (response.state === 200) {