Преглед изворни кода

fix: 移动端添加表单字段的基础事件回调 onEvent函数

johnsen пре 9 месеци
родитељ
комит
b7347f7152

+ 10 - 1
src/business/platform/form/dynamic-form/form-item.vue

@@ -65,6 +65,7 @@ export default {
     code: {
       type: String
     },
+    rowElClass: String,
     readonlyRights: {
       // 只读
       type: Boolean,
@@ -235,9 +236,11 @@ export default {
       })
     },
     handleFieldRights(name, val) {
+      // console.log('name, val===>', name, val)
       if (this.$utils.isEmpty(name)) {
         return
       }
+
       this.rights[name] = val
       this.$emit('update:rights', {
         ...this.rights,
@@ -303,8 +306,14 @@ export default {
         }
       }
     },
-    emitEvent(event) {
+    emitEvent(event, val) {
       this.$emit(event, ...Array.from(arguments).slice(1))
+      this.$emit('onEvent', {
+        type: event,
+        val,
+        field: this.field,
+        trClass: this.rowElClass
+      })
     },
     /**
      * 获得表单验证

+ 4 - 1
src/business/platform/form/dynamic-form/form-table-block.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="aaaaaa">
     <!--栅格布局-->
     <ibps-dynamic-form-grid
       v-if="
@@ -20,6 +20,7 @@
       :row="row"
       :readonly-rights="readonlyRights"
       :params="params"
+      :row-el-class="rowElClass"
       v-on="$listeners"
     />
     <!--其他类型-->
@@ -35,6 +36,7 @@
       :main-code="mainCode"
       :code="code"
       :row="row"
+      :row-el-class="rowElClass"
       :readonly-rights="readonlyRights"
       :params="params"
       v-on="$listeners"
@@ -61,6 +63,7 @@ export default {
       type: Boolean,
       default: false
     },
+    rowElClass: String,
     readonlyStyle: String, // 只读样式
     labelWidth: String, // 字段宽度
     params: Object,

+ 10 - 0
src/business/platform/form/dynamic-form/form-table.vue

@@ -28,6 +28,7 @@
             :readonly-rights="readonlyRights"
             :params="params"
             @update-form-data="updateFormData"
+            @onEvent="(e) => onEvent(e, dataModel[i], i)"
           />
         </van-collapse-item>
       </template>
@@ -36,6 +37,7 @@
         <van-collapse-item
           v-for="(data, i) in dataModel"
           :key="i"
+          :class="'tr' + i"
           :name="collapseNameKey + i"
           :test="collapseNameKey + i"
         >
@@ -152,6 +154,7 @@
             :rights.sync="columnsRights"
             :form-data="formData"
             :row="i"
+            :row-el-class="'tr' + i"
             :field="column"
             :desc-position="descPosition"
             :main-code="mainCode"
@@ -159,6 +162,7 @@
             :mode="mode"
             :readonly-rights="readonlyRights"
             :params="params"
+            @onEvent="(e) => onEvent(e, dataModel[i], i)"
             @update-form-data="updateFormData"
           />
         </van-collapse-item>
@@ -303,6 +307,7 @@
           :data="dialogFormData"
           :rights="rights[column.name]"
           :params="params"
+          @onEvent="(e) => $emit('onEvent', e)"
           @cinput="handleDialogInput($event)"
         />
       </div>
@@ -567,6 +572,11 @@ export default {
     })
   },
   methods: {
+    onEvent(e, row, i) {
+      e.row = row
+      e.colName = i
+      this.$emit('onEvent', e)
+    },
     /**
      * 获取本地缓存
      */

+ 2 - 1
src/business/platform/form/dynamic-form/form.vue

@@ -26,6 +26,7 @@
         :params="formParams"
         :readonly-rights="readonlyRights"
         @change-form-opinion="handleFormOpinion"
+        v-on="$listeners"
       />
       <ibps-dynamic-form-item
         v-else
@@ -40,6 +41,7 @@
         :params="formParams"
         :readonly-rights="readonlyRights"
         @change-form-opinion="handleFormOpinion"
+        v-on="$listeners"
       />
     </template>
   </van-form>
@@ -213,7 +215,6 @@ export default {
   },
   mounted() {
     // 初始化脚本
-    console.log(this, 'thisthis')
     this.$nextTick(() => {
       if (this.validateImmediately) {
         this.getFormValidator()

+ 10 - 0
src/business/platform/form/formrender/formrender.vue

@@ -22,6 +22,7 @@
         :initialization="initialization"
         :cur-active-step.sync="curActiveStep"
         @load-script="loadScript"
+        @onEvent="onEvent"
       />
     </div>
     <!-- fr-toolbar  表单操作按钮-->
@@ -552,6 +553,15 @@ export default {
       }
       JForm._beforeSubmit(this, action, this.getFormData(), callback)
     },
+    onEvent(option) {
+      console.log('9999==》', JForm)
+      if (!this.hasScript()) {
+        return
+      }
+      JForm._on
+        ? JForm._on(this, option, this.getFormData())
+        : JForm.onEvent(this, option, this.getFormData())
+    },
     // 后置脚本
     afterScript(action, params, callback) {
       this.formParams = params

+ 7 - 0
src/business/platform/form/utils/JForm.js

@@ -115,6 +115,12 @@ _.extend(JForm, {
       callback(true)
     }
   },
+  // 统一事件出口
+  _on: function (tableForm, action, position, params) {
+    if (_.isFunction(this._on)) {
+      return this.onEvent(tableForm, action, position, params)
+    }
+  },
   // 子表统计
   _summaryMethod: function (tableForm, tableName, params) {
     if (_.isFunction(this.summaryMethod)) {
@@ -131,6 +137,7 @@ _.extend(JForm, {
     this.summaryMethod = null
     this.afterSubmit = null
     this.beforeSubmit = null
+    this._on = null
     this._isInitialization = false
   }
 })

+ 1 - 1
src/components/ibps-radio/index.vue

@@ -102,7 +102,7 @@ import IbpsPickerToolbar from '@/components/ibps-picker-toolbar'
 import ActionUtils from '@/utils/action'
 
 export default {
-  name: 'ibps-radio',
+  name: 'IbpsRadio',
   components: {
     IbpsPickerToolbar
   },

+ 1 - 0
src/views/component/facility/facilityData.vue

@@ -60,6 +60,7 @@
           />
           <van-field
             v-model="item.value"
+            required
             class="pink"
             label="参数值"
             :placeholder="readonly ? '' : '请输入'"