浏览代码

移动端脚本为空,使用PC脚本;过滤原因暂时隐藏总数徽标

cyy 2 年之前
父节点
当前提交
da806ad1e2

+ 143 - 56
src/business/platform/form/dynamic-form/form.vue

@@ -6,11 +6,16 @@
     :label-align="labelPosition"
     :input-align="inputAlign"
   >
-    <template v-for="(field,index) in formDef.fields">
+    <template v-for="(field, index) in formDef.fields">
       <!--栅格布局-->
       <ibps-dynamic-form-grid
-        v-if="field.field_type === 'grid' || field.field_type === 'tabs' ||field.field_type === 'steps' || field.field_type === 'collapse'"
-        :key="field.name+index"
+        v-if="
+          field.field_type === 'grid' ||
+            field.field_type === 'tabs' ||
+            field.field_type === 'steps' ||
+            field.field_type === 'collapse'
+        "
+        :key="field.name + index"
         ref="formItem"
         :models.sync="models"
         :rights.sync="rights"
@@ -18,7 +23,6 @@
         :code="code"
         :form-opinion="responseFormOpinionData[field.name]"
         :desc-position="formDef.attrs.descPosition"
-
         :params="formParams"
         :readonly-rights="readonlyRights"
         @change-form-opinion="handleFormOpinion"
@@ -26,14 +30,13 @@
       <ibps-dynamic-form-item
         v-else
         ref="formItem"
-        :key="field.name+index"
+        :key="field.name + index"
         :models.sync="models"
         :rights.sync="rights"
         :field="field"
         :code="code"
         :form-opinion="responseFormOpinionData[field.name]"
         :desc-position="formDef.attrs.descPosition"
-
         :params="formParams"
         :readonly-rights="readonlyRights"
         @change-form-opinion="handleFormOpinion"
@@ -43,7 +46,6 @@
 </template>
 
 <script>
-
 import FormOptions from '../constants/formOptions'
 import FormUtils from '../utils/formUtil'
 
@@ -71,7 +73,8 @@ export default {
     columnMinWidth: {
       type: String
     },
-    validateImmediately: { // 是否初始验证
+    validateImmediately: {
+      // 是否初始验证
       type: Boolean,
       default: true
     },
@@ -108,20 +111,29 @@ export default {
       return !!(this.formAttrs && this.formAttrs.colon)
     },
     labelWidth() {
-      if (this.$utils.isNotEmpty(this.formAttrs.labelWidth) && this.$utils.isNotEmpty(this.formAttrs.labelWidthUnit)) {
+      if (
+        this.$utils.isNotEmpty(this.formAttrs.labelWidth) &&
+        this.$utils.isNotEmpty(this.formAttrs.labelWidthUnit)
+      ) {
         return this.formAttrs.labelWidth + this.formAttrs.labelWidthUnit
       } else {
         return '100px'
       }
     },
     labelPosition() {
-      return this.$utils.isNotEmpty(this.formAttrs.mobileLabelPosition) ? this.formAttrs.mobileLabelPosition : 'right'
+      return this.$utils.isNotEmpty(this.formAttrs.mobileLabelPosition)
+        ? this.formAttrs.mobileLabelPosition
+        : 'right'
     },
     inputAlign() {
-      return this.$utils.isNotEmpty(this.formAttrs.mobileInputAlign) ? this.formAttrs.mobileInputAlign : 'left'
+      return this.$utils.isNotEmpty(this.formAttrs.mobileInputAlign)
+        ? this.formAttrs.mobileInputAlign
+        : 'left'
     },
     customClass() {
-      return this.$utils.isNotEmpty(this.formAttrs.customClass) ? this.formAttrs.customClass : null
+      return this.$utils.isNotEmpty(this.formAttrs.customClass)
+        ? this.formAttrs.customClass
+        : null
     },
     code() {
       return this.formDef.code
@@ -130,12 +142,19 @@ export default {
       return this.readonly
     },
     readonlyStyle() {
-      return this.formAttrs && this.formAttrs.read_style ? this.formAttrs.read_style : 'text'
+      return this.formAttrs && this.formAttrs.read_style
+        ? this.formAttrs.read_style
+        : 'text'
     },
     hasScript() {
-      return this.formAttrs ? this.$utils.isNotEmpty(this.formAttrs.mobile_script) : false
-    },
-    formParams() { // 扩展参数
+      return this.formAttrs
+        ? this.$utils.isNotEmpty(this.formAttrs.mobile_script)
+          ? this.$utils.isNotEmpty(this.formAttrs.mobile_script)
+          : this.$utils.isNotEmpty(this.formAttrs.script)
+        : false
+    },
+    formParams() {
+      // 扩展参数
       const params = {
         code: this.code,
         responseFormula: this.responseFormula,
@@ -161,12 +180,13 @@ export default {
       handler(val) {
         // 延迟验证
         this.$nextTick(() => {
-          this.getFormValidator().then(() => { }).catch(() => {})
+          this.getFormValidator()
+            .then(() => {})
+            .catch(() => {})
         })
       },
       deep: true,
       immediate: true
-
     },
     initialization(val) {
       if (val && this.hasScript) {
@@ -178,7 +198,9 @@ export default {
     // 初始化脚本
     this.$nextTick(() => {
       if (this.validateImmediately) {
-        this.getFormValidator().then(() => { }).catch(() => {})
+        this.getFormValidator()
+          .then(() => {})
+          .catch(() => {})
       }
     })
   },
@@ -188,7 +210,9 @@ export default {
      */
     async initResponseFields() {
       const fields = this.formDef.fields
-      if (!fields) { return }
+      if (!fields) {
+        return
+      }
       await this.generateModles(fields)
       // 初始化运行公式计算
       await this.initRunCalFormula()
@@ -205,20 +229,27 @@ export default {
         const fieldType = field.field_type
         const fieldOptions = field.field_options
 
-        if (FormOptions.t.NESTED_FIELD_TYPES.includes(fieldType)) { // 嵌套布局
-          if (this.$utils.isNotEmpty(fieldOptions) && this.$utils.isNotEmpty(fieldOptions.columns)) {
+        if (FormOptions.t.NESTED_FIELD_TYPES.includes(fieldType)) {
+          // 嵌套布局
+          if (
+            this.$utils.isNotEmpty(fieldOptions) &&
+            this.$utils.isNotEmpty(fieldOptions.columns)
+          ) {
             // 循环遍历所有字段
             fieldOptions.columns.forEach(item => {
               this.generateModles(item.fields)
             })
           }
-        } else if (fieldType === 'table') { // 子表单
+        } else if (fieldType === 'table') {
+          // 子表单
           const data = this.value ? this.value[fieldName] : []
           if (fieldOptions.mode === 'block') {
             if (this.$utils.isEmpty(data)) {
               this.$set(this.models, fieldName, [])
               const defaultValue = await FormUtils.getTableDefaultData(field)
-              this.models[fieldName].push(JSON.parse(JSON.stringify(defaultValue)))
+              this.models[fieldName].push(
+                JSON.parse(JSON.stringify(defaultValue))
+              )
             } else {
               this.models[fieldName] = data || []
             }
@@ -227,30 +258,41 @@ export default {
           }
           // 初始化表单扩展参数
           this.initFormFieldParameter(field)
-        } else if (fieldType === 'approval_opinion') { // 审批意见
+        } else if (fieldType === 'approval_opinion') {
+          // 审批意见
           this.models[fieldName] = ''
           this.responseOpinionFields[fieldName] = field
           // ====== 初始化表单权限
           this.initFormApprovalOpinionRights(field)
         } else {
-          if (fieldType === 'label') { // 文本字段
+          if (fieldType === 'label') {
+            // 文本字段
             this.responseLabelFields[fieldName] = field
           }
           // 不是只读字段
           if (!FormOptions.t.NON_MODEL_FIELD_TYPES.includes(fieldType)) {
             // 空值默认
-            const defaultValueEmpty = this.$utils.toBoolean(fieldOptions.default_value_empty, true)
-            if (this.value && Object.keys(this.value).indexOf(fieldName) >= 0) { // 有值
+            const defaultValueEmpty = this.$utils.toBoolean(
+              fieldOptions.default_value_empty,
+              true
+            )
+            if (this.value && Object.keys(this.value).indexOf(fieldName) >= 0) {
+              // 有值
               const data = this.value[fieldName]
               if (this.$utils.isEmpty(data)) {
                 if (defaultValueEmpty) {
-                  this.models[fieldName] = await FormUtils.getFieldDefaultValue(field)
+                  this.models[fieldName] = await FormUtils.getFieldDefaultValue(
+                    field
+                  )
                 }
               } else {
                 this.models[fieldName] = await this.getInitData(field, data)
               }
-            } else { // 默认值
-              this.models[fieldName] = await FormUtils.getFieldDefaultValue(field)
+            } else {
+              // 默认值
+              this.models[fieldName] = await FormUtils.getFieldDefaultValue(
+                field
+              )
             }
           }
           // 初始化表单扩展参数
@@ -260,8 +302,12 @@ export default {
     },
     async getInitData(field, data) {
       const fieldType = field.field_type
-      const copyFlow = this.$utils.toBoolean(this.formParams ? this.formParams.copyFlow : false, false)
-      if (fieldType === 'autoNumber' && copyFlow) { // 复制流程初始化数据
+      const copyFlow = this.$utils.toBoolean(
+        this.formParams ? this.formParams.copyFlow : false,
+        false
+      )
+      if (fieldType === 'autoNumber' && copyFlow) {
+        // 复制流程初始化数据
         return await FormUtils.getFieldDefaultValue(field)
       }
       return data
@@ -278,38 +324,57 @@ export default {
       this.initResponseLinkages(field)
     },
     initFormApprovalOpinionRights(field) {
-      this.rights[field.name] = FormUtils.getDefaultApprovalOpinionRigths(field, this.params) || this.getPermissions(this.permissions, field) || FormUtils.getDefaultRigths(field)
+      this.rights[field.name] =
+        FormUtils.getDefaultApprovalOpinionRigths(field, this.params) ||
+        this.getPermissions(this.permissions, field) ||
+        FormUtils.getDefaultRigths(field)
     },
     /**
      *  初始化表单权限
      */
     initFormRights(field) {
-      this.rights[field.name] = this.getPermissions(this.permissions, field) || FormUtils.getDefaultRigths(field)
+      this.rights[field.name] =
+        this.getPermissions(this.permissions, field) ||
+        FormUtils.getDefaultRigths(field)
     },
     // 获取权限
     getPermissions(permissions, field) {
-      if (this.$utils.isEmpty(permissions)) { return }
+      if (this.$utils.isEmpty(permissions)) {
+        return
+      }
       const fieldType = field.field_type
       const name = field.name
       let rightsValue = null
-      const isNonInputField = FormOptions.t.NON_INPUT_FIELD_TYPES.includes(fieldType)
+      const isNonInputField = FormOptions.t.NON_INPUT_FIELD_TYPES.includes(
+        fieldType
+      )
       let isSpecial = false
-      if (isNonInputField && permissions.fields) { // 非输入字段
+      if (isNonInputField && permissions.fields) {
+        // 非输入字段
         rightsValue = permissions.fields[name] ? permissions.fields[name] : null
-      } else if (fieldType === 'approval_opinion' && permissions.opinions) { // 意见 特殊处理
-        rightsValue = permissions.opinions[name] ? permissions.opinions[name] : null
-      } else if (fieldType === 'table' && permissions.tables) { // 子表
+      } else if (fieldType === 'approval_opinion' && permissions.opinions) {
+        // 意见 特殊处理
+        rightsValue = permissions.opinions[name]
+          ? permissions.opinions[name]
+          : null
+      } else if (fieldType === 'table' && permissions.tables) {
+        // 子表
         isSpecial = true
         rightsValue = permissions.tables[name] ? permissions.tables[name] : null
-      } else { // 字段
+      } else {
+        // 字段
         rightsValue = permissions.fields[name] ? permissions.fields[name] : null
       }
-      if (this.readonly && !isNonInputField && !isSpecial) { // 只读权限
+      if (this.readonly && !isNonInputField && !isSpecial) {
+        // 只读权限
         // 修复空权限默认值的bug
         if (this.$utils.isEmpty(rightsValue)) {
           rightsValue = FormUtils.getDefaultRigths(field)
         }
-        rightsValue = rightsValue !== FormOptions.t.PERMISSIONS.HIDE ? FormOptions.t.PERMISSIONS.READ : rightsValue
+        rightsValue =
+          rightsValue !== FormOptions.t.PERMISSIONS.HIDE
+            ? FormOptions.t.PERMISSIONS.READ
+            : rightsValue
       }
       return rightsValue
     },
@@ -320,7 +385,11 @@ export default {
     // 初始化运行公式计算
     initRunCalFormula() {
       // 不需要字段的进行公式计算 比如获取但其当前时间
-      FormUtils.runCalFormula(this, this.responseFormula[FormUtils.NOT_NEED_FIELD], this.formDef.code)
+      FormUtils.runCalFormula(
+        this,
+        this.responseFormula[FormUtils.NOT_NEED_FIELD],
+        this.formDef.code
+      )
     },
     // 初始化联动数据
     initResponseLinkages(item) {
@@ -335,7 +404,8 @@ export default {
       }
       const hasBindNode = opinionData.hasBindNode
       const formOpinionConfig = opinionData.formOpinionConfig
-      if (hasBindNode) { // 1、有流程节点绑定的流程意见
+      if (hasBindNode) {
+        // 1、有流程节点绑定的流程意见
         const nodeData = opinionData.formOpinionNodeData
         for (const key in this.responseOpinionFields) {
           if (this.responseOpinionFields.hasOwnProperty(key)) {
@@ -381,7 +451,13 @@ export default {
       const formData = this.getFormData()
       for (let i = 0; i < verifys.length; i++) {
         const verify = verifys[i]
-        if (!FormUtils.runFormSubmitVerify(verify.formula, formData, this.formDef.code)) {
+        if (
+          !FormUtils.runFormSubmitVerify(
+            verify.formula,
+            formData,
+            this.formDef.code
+          )
+        ) {
           flag = false
           callback(flag, verify.msg)
           return
@@ -397,7 +473,10 @@ export default {
       const data = {}
       // 去除文本字段,表单意见字段
       for (var key in this.models) {
-        if (!this.responseOpinionFields[key] && !this.responseLabelFields[key]) {
+        if (
+          !this.responseOpinionFields[key] &&
+          !this.responseLabelFields[key]
+        ) {
           data[key] = this.models[key]
         }
       }
@@ -427,8 +506,12 @@ export default {
     getFormOpinionData() {
       const data = {}
       for (var key in this.models) {
-        if (this.responseOpinionFields[key] &&
-        (this.$utils.isEmpty(this.rights[key]) || this.rights[key] === (FormOptions.t.PERMISSIONS.EDIT || FormOptions.t.PERMISSIONS.REQUIRED))
+        if (
+          this.responseOpinionFields[key] &&
+          (this.$utils.isEmpty(this.rights[key]) ||
+            this.rights[key] ===
+              (FormOptions.t.PERMISSIONS.EDIT ||
+                FormOptions.t.PERMISSIONS.REQUIRED))
         ) {
           data[key] = this.models[key]
         }
@@ -446,16 +529,21 @@ export default {
       let i = 0
       if (flag) {
         for (const key in this.responseOpinionFields) {
-          if (this.$utils.isEmpty(this.models[key]) && (
-            this.$utils.isEmpty(this.rights[key]) ||
-            this.rights[key] === FormOptions.t.PERMISSIONS.EDIT ||
-            this.rights[key] === FormOptions.t.PERMISSIONS.REQUIRED)) {
+          if (
+            this.$utils.isEmpty(this.models[key]) &&
+            (this.$utils.isEmpty(this.rights[key]) ||
+              this.rights[key] === FormOptions.t.PERMISSIONS.EDIT ||
+              this.rights[key] === FormOptions.t.PERMISSIONS.REQUIRED)
+          ) {
             i++
           }
         }
       } else {
         for (const key in this.responseOpinionFields) {
-          if (this.$utils.isEmpty(this.models[key]) && this.rights[key] === FormOptions.t.PERMISSIONS.REQUIRED) {
+          if (
+            this.$utils.isEmpty(this.models[key]) &&
+            this.rights[key] === FormOptions.t.PERMISSIONS.REQUIRED
+          ) {
             i++
           }
         }
@@ -483,4 +571,3 @@ export default {
   }
 }
 </script>
-

+ 26 - 21
src/business/platform/form/formrender/formrender.vue

@@ -1,10 +1,7 @@
 <template>
   <div class="van-fr ibps-fixed-toolbar">
     <!-- fr-header  表头-->
-    <slot
-      v-if="formDef.name"
-      name="fr-header"
-    >
+    <slot v-if="formDef.name" name="fr-header">
       <div class="van-block__title van-ellipsis">
         {{ formDef.name }}
       </div>
@@ -43,9 +40,9 @@
 
 <script>
 import ActionUtils from '@/utils/action'
-import JForm from '../utils/JForm'// 自定义脚本
+import JForm from '../utils/JForm' // 自定义脚本
 import '../dynamic-form' // 动态表单
-import IbpsToolbar from '@/components/ibps-toolbar'// 工具栏
+import IbpsToolbar from '@/components/ibps-toolbar' // 工具栏
 
 const JFormId = 'JForm'
 
@@ -85,7 +82,8 @@ export default {
     params: {
       type: Object
     },
-    mode: { // 表单模式
+    mode: {
+      // 表单模式
       type: String
     },
     inputAlign: {
@@ -247,7 +245,7 @@ export default {
               this.closeMoreAction()
             }
             // 前置事件
-            this.beforeScript(btn.getAlias(), (result) => {
+            this.beforeScript(btn.getAlias(), result => {
               if (result) {
                 return btn.action.apply(this, [btn])
               }
@@ -264,13 +262,13 @@ export default {
     // 自定义按钮数据事件
     onLoadActions: function(key, button, type, defaultVal) {
       const buttonActionResult = JForm._onLoadActions(this, key, button, type)
-      if (typeof (buttonActionResult) !== 'undefined' && buttonActionResult) {
+      if (typeof buttonActionResult !== 'undefined' && buttonActionResult) {
         return true
       }
       return defaultVal
     },
     handleButtonEvent(button, position, data, index) {
-      const action = this.actions.find((action) => {
+      const action = this.actions.find(action => {
         return button.key === action.key
       })
       if (action) {
@@ -305,7 +303,8 @@ export default {
             key: 'next',
             icon: 'angle-right',
             label: '下一步'
-          }]
+          }
+        ]
         return defaultButtons
       }
     },
@@ -370,14 +369,16 @@ export default {
      * 获取表单验证
      */
     validate(callback) {
-      this.getFormValidator().then(() => {
-        callback(true)
-      }).catch((e) => {
-        if (e && e[0]) {
-          this.getForm().scrollToField(e[0].name)
-        }
-        callback(false, e)
-      })
+      this.getFormValidator()
+        .then(() => {
+          callback(true)
+        })
+        .catch(e => {
+          if (e && e[0]) {
+            this.getForm().scrollToField(e[0].name)
+          }
+          callback(false, e)
+        })
     },
     formErrorToast(e) {
       this.$notify({
@@ -456,8 +457,12 @@ export default {
       if (script) {
         script.parentNode.removeChild(script)
       }
-      if (this.formDef.attrs && this.formDef.attrs.mobile_script) {
-        const codeScript = this.formDef.attrs.mobile_script
+      if (
+        this.formDef.attrs &&
+        (this.formDef.attrs.mobile_script || this.formDef.attrs.script)
+      ) {
+        const codeScript =
+          this.formDef.attrs.mobile_script || this.formDef.attrs.script
         script = document.createElement('script')
         script.type = 'text/javascript'
         script.id = JFormId

+ 137 - 79
src/views/platform/data/template-list.vue

@@ -1,7 +1,7 @@
 <template>
   <div
     :class="{
-      'ibps-fixed-toolbar':checkMode
+      'ibps-fixed-toolbar': checkMode
     }"
     class="data-template-list"
   >
@@ -9,7 +9,7 @@
       <van-nav-bar
         :title="generateTitle(title)"
         :left-text="$t('common.button.back')"
-        :right-text="hasToolbar?rightText:''"
+        :right-text="hasToolbar ? rightText : ''"
         left-arrow
         @click-left="onClickLeft"
         @click-right="toCheckMode()"
@@ -17,11 +17,14 @@
       <van-search
         v-show="$utils.isNotEmpty(queryKey)"
         v-model="search"
-        :placeholder="$utils.isNotEmpty(queryName)?'请输入'+queryName:''"
+        :placeholder="$utils.isNotEmpty(queryName) ? '请输入' + queryName : ''"
         show-action
         @search="onSearch"
       >
-        <template v-if="$utils.isNotEmpty(queryColumns) && queryColumns.length >1" #left>
+        <template
+          v-if="$utils.isNotEmpty(queryColumns) && queryColumns.length > 1"
+          #left
+        >
           <div style="width:100px;">
             <ibps-select
               v-model="queryKey"
@@ -33,7 +36,11 @@
           </div>
         </template>
         <template #action>
-          <van-icon name="filter-o" :class="stateActive?'active':'disactive'" @click="clickMoreSarch" />
+          <van-icon
+            name="filter-o"
+            :class="stateActive ? 'active' : 'disactive'"
+            @click="clickMoreSarch"
+          />
         </template>
       </van-search>
       <!-- 设置过滤条件 -->
@@ -44,11 +51,22 @@
           v-model="checkFilter"
           :options="rangeData[rootIndex].options"
         />
-        <van-dropdown-item disabled title-class="menu-slot-text" class="menu-left">
+        <van-dropdown-item
+          disabled
+          title-class="menu-slot-text"
+          class="menu-left"
+        >
           <template #title>
             <label
-              :class="$utils.isNotEmpty(rangeData[rootIndex].options)?null:'options-null'"
-            >共{{ pagination?pagination.totalCount||rootIndex :0 }}条</label>
+              :class="
+                $utils.isNotEmpty(rangeData[rootIndex].options)
+                  ? null
+                  : 'options-null'
+              "
+              >共{{
+                pagination ? pagination.totalCount || rootIndex : 0
+              }}条</label
+            >
           </template>
         </van-dropdown-item>
         <van-dropdown-item
@@ -56,10 +74,7 @@
           @open="onShowFieldsList('fields')"
         >
           <template #title>
-            <span
-              class="menu-slot-right"
-              size="small"
-            >
+            <span class="menu-slot-right" size="small">
               <van-icon name="password-view" class="custom-icon" /> 显示字段
             </span>
           </template>
@@ -95,19 +110,19 @@
     <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
       <van-list v-model="loading" :finished="finished" @load="onLoad">
         <van-cell
-          v-for="(item,index) in listData"
-          :key="item[idKey]+index"
+          v-for="(item, index) in listData"
+          :key="item[idKey] + index"
           class="ibps-p-0"
         >
           <van-swipe-cell
-            :right-width="manages.length>0?(manages.length*60):0"
+            :right-width="manages.length > 0 ? manages.length * 60 : 0"
             :on-close="onClose"
           >
             <van-checkbox-group v-model="checkedIds">
               <van-cell
                 border
                 style="padding:15px 16px"
-                @click="onClick(item,index)"
+                @click="onClick(item, index)"
               >
                 <template slot="icon">
                   <van-checkbox
@@ -135,7 +150,10 @@
                       :key="descField['name']"
                       class="van-card-list__desc"
                     >
-                      <span class="van-card-list__desc__title desc">{{ descField['label'] }}:</span>
+                      <span
+class="van-card-list__desc__title desc"
+                        >{{ descField['label'] }}:</span
+                      >
                       <field-formatter
                         :label-key="descField['name']"
                         :data="item"
@@ -156,11 +174,11 @@
                 :type="button.type"
                 :text="button.name"
                 class="ibps-swipe-button"
-                @click="handleAction(button,item)"
+                @click="handleAction(button, item)"
               />
             </template>
           </van-swipe-cell>
-          <div v-if="listData.length-1 > index" class="ibps-blank-bar" />
+          <div v-if="listData.length - 1 > index" class="ibps-blank-bar" />
         </van-cell>
       </van-list>
       <ibps-list-result-page
@@ -170,7 +188,11 @@
       />
     </van-pull-refresh>
     <!--添加按钮-->
-    <div v-if="$utils.isNotEmpty(addButton)" v-show="!checkMode" class="palette-button">
+    <div
+      v-if="$utils.isNotEmpty(addButton)"
+      v-show="!checkMode"
+      class="palette-button"
+    >
       <van-button
         round
         type="info"
@@ -186,38 +208,34 @@
       icon-prefix="ibps-icon"
       :actions="toolbarButtons"
       :more-actions="moreToolbarButtons"
-      @action-event="(button)=>handleAction(button)"
+      @action-event="button => handleAction(button)"
     />
 
     <ibps-more-search
       :show="popupShow"
       :search-forms="searchForms"
       @callback="onSearch"
-      @close="callback => popupShow = callback"
+      @close="callback => (popupShow = callback)"
       @resetForm="resetForm"
     >
       <template
-        v-for="(slotForm,index) in slotForms"
+        v-for="(slotForm, index) in slotForms"
         :slot="slotForm.slotName"
         slot-scope="scopeType"
       >
         <search-field
           ref="moreSearchField"
-          :key="slotForm.prop+index"
+          :key="slotForm.prop + index"
           input-align="left"
           :forms="searchForms.forms"
           :item="scopeType.item"
         />
       </template>
     </ibps-more-search>
-    <van-popup
-      v-model="display"
-      position="bottom"
-      :overlay="true"
-    >
+    <van-popup v-model="display" position="bottom" :overlay="true">
       <ibps-picker-toolbar
-        :cancel-button-text="$t('cancel') "
-        :confirm-button-text=" $t('confirm')"
+        :cancel-button-text="$t('cancel')"
+        :confirm-button-text="$t('confirm')"
         @cancel="onCancel"
         @confirm="onConfirm"
       />
@@ -226,7 +244,7 @@
           <van-cell-group>
             <van-cell
               v-for="(item, index) in fieldsList"
-              :key="item['name']+index"
+              :key="item['name'] + index"
               :title="item.name"
               size="large"
             >
@@ -245,14 +263,23 @@
       :visible="formrenderVisible"
       :params="formrenderParams"
       @callback="onRefreshCallback"
-      @close="visible => formrenderVisible = visible"
+      @close="visible => (formrenderVisible = visible)"
     />
   </div>
 </template>
 <script>
-import { queryDataByKey, removeFormData } from '@/api/platform/data/dataTemplate'
-import { loadDataTemplateById, getDataTemplateListTemplate, buildDataTemplateFields } from '@/business/platform/data/utils'
-import ButtonsConstants, { hasButton } from '@/business/platform/data/constants/buttons'
+import {
+  queryDataByKey,
+  removeFormData
+} from '@/api/platform/data/dataTemplate'
+import {
+  loadDataTemplateById,
+  getDataTemplateListTemplate,
+  buildDataTemplateFields
+} from '@/business/platform/data/utils'
+import ButtonsConstants, {
+  hasButton
+} from '@/business/platform/data/constants/buttons'
 
 import TreeUtils from '@/utils/tree'
 import ActionUtils from '@/utils/action'
@@ -362,12 +389,15 @@ export default {
     }
   },
   computed: {
-
     toolbarButtons() {
-      return this.toolbars.length > 4 ? this.toolbars.slice(0, 4) : this.toolbars
+      return this.toolbars.length > 4
+        ? this.toolbars.slice(0, 4)
+        : this.toolbars
     },
     moreToolbarButtons() {
-      return this.toolbars.length > 4 ? this.toolbars.slice(4, this.toolbars.length) : null
+      return this.toolbars.length > 4
+        ? this.toolbars.slice(4, this.toolbars.length)
+        : null
     },
     hasToolbar() {
       return this.toolbars.length > 0 && this.$utils.isNotEmpty(this.listData)
@@ -392,7 +422,11 @@ export default {
     },
     hasScript() {
       const tmpDef = this.dataTemplate
-      return !!(tmpDef && tmpDef.attrs && tmpDef.attrs.mobile_script)
+      return !!(
+        tmpDef &&
+        tmpDef.attrs &&
+        (tmpDef.attrs.mobile_script || tmpDef.attrs.script)
+      )
     }
   },
   created() {
@@ -435,7 +469,11 @@ export default {
       if (this.$utils.isNotEmpty(listItem)) {
         this.checkFilter = listItem.value
       } else {
-        this.checkFilter = this.$utils.isNotEmpty(this.rangeData[this.rootIndex].options) ? this.rangeData[this.rootIndex].options[this.rootIndex].value : ''
+        this.checkFilter = this.$utils.isNotEmpty(
+          this.rangeData[this.rootIndex].options
+        )
+          ? this.rangeData[this.rootIndex].options[this.rootIndex].value
+          : ''
       }
     },
 
@@ -474,7 +512,9 @@ export default {
 
       this.buildQuerycolumns(template['query_columns'])
 
-      const fieldsList = template['display_columns'] ? template['display_columns'] : []
+      const fieldsList = template['display_columns']
+        ? template['display_columns']
+        : []
       if (this.$utils.isNotEmpty(fieldsList)) {
         this.fieldsList = fieldsList.map(i => {
           return { name: i.label }
@@ -496,7 +536,11 @@ export default {
         }
       }
       const displayColumns = colums
-      const filterActions = this.$utils.isNotEmpty(template['filter_conditions']) ? template['filter_conditions'] : []
+      const filterActions = this.$utils.isNotEmpty(
+        template['filter_conditions']
+      )
+        ? template['filter_conditions']
+        : []
       if (this.$utils.isNotEmpty(filterActions)) {
         this.rangeData[this.rootIndex].options = filterActions.map(i => {
           return { text: i.label, value: i.key }
@@ -698,25 +742,28 @@ export default {
       // this.beforeScript(command, position, selection, data, () => {
       this.readonly = false
       switch (buttonType) {
-        case 'add':// 添加
+        case 'add': // 添加
           this.handleEdit('', button)
           break
-        case 'edit':// 编辑
-        case 'detail':// 明细
-          ActionUtils.selectedRecord(selection).then((id) => {
-            this.handleEdit(id, button)
-          }).catch(() => { })
+        case 'edit': // 编辑
+        case 'detail': // 明细
+          ActionUtils.selectedRecord(selection)
+            .then(id => {
+              this.handleEdit(id, button)
+            })
+            .catch(() => {})
           break
-        case 'remove':// 删除
-          ActionUtils.removeRecord(selection).then((ids) => {
-            this.handleRemove(ids, button)
-          }).catch(() => { })
+        case 'remove': // 删除
+          ActionUtils.removeRecord(selection)
+            .then(ids => {
+              this.handleRemove(ids, button)
+            })
+            .catch(() => {})
 
           break
-        case 'sefStartFlow':// 启动自定义流程
-
+        case 'sefStartFlow': // 启动自定义流程
           break
-        case 'custom':// 自定义按钮
+        case 'custom': // 自定义按钮
           break
 
         default:
@@ -727,7 +774,7 @@ export default {
     getSelection(position, data) {
       const selection = []
       if (position === 'toolbar') {
-        this.checkedIds.forEach((d) => {
+        this.checkedIds.forEach(d => {
           selection.push(d[this.idKey])
         })
       } else {
@@ -824,14 +871,14 @@ export default {
       const allowButtons = ['edit', 'detail', 'remove']
 
       this.defaultToolbars = toolbars
-      this.toolbars = toolbars.filter((b) => {
+      this.toolbars = toolbars.filter(b => {
         if (allowButtons.includes(b.button_type)) {
           return b
         }
       })
 
       this.defaultManages = manages
-      this.manages = manages.filter((b) => {
+      this.manages = manages.filter(b => {
         if (allowButtons.includes(b.button_type)) {
           return b
         }
@@ -865,7 +912,7 @@ export default {
         }
       }
       return {
-        '$index': i,
+        $index: i,
         key: key,
         button_type: rf.button_type,
         code: rf.code,
@@ -889,7 +936,7 @@ export default {
     // 自定义格式数据事件
     hasButtonAction: function(key, button) {
       const buttonActionResult = JTemplate._onLoadActions(this, key, button)
-      if (typeof (buttonActionResult) !== 'undefined' && buttonActionResult) {
+      if (typeof buttonActionResult !== 'undefined' && buttonActionResult) {
         return true
       }
       return false
@@ -997,7 +1044,11 @@ export default {
           options: fieldOptions.options || []
         }
         // 目前查询字段只支持text
-        if (fieldType === 'text' || fieldType === 'textarea' || fieldType === 'autoNumber') {
+        if (
+          fieldType === 'text' ||
+          fieldType === 'textarea' ||
+          fieldType === 'autoNumber'
+        ) {
           queryColumnsData.push(fielder)
         }
         this.searchForms.forms.push(fielder)
@@ -1011,7 +1062,9 @@ export default {
 
       // 顶部查询条件
       this.queryColumns = queryColumnsData || []
-      const queryColumn = this.$utils.isNotEmpty(this.queryColumns) ? this.queryColumns[0] : {}
+      const queryColumn = this.$utils.isNotEmpty(this.queryColumns)
+        ? this.queryColumns[0]
+        : {}
       this.queryKey = queryColumn.prop || ''
       this.queryName = queryColumn.label || ''
     },
@@ -1028,8 +1081,14 @@ export default {
         el.parentNode.removeChild(el)
       }
 
-      if (this.dataTemplate.attrs && this.dataTemplate.attrs.mobile_script) {
-        const code = this.dataTemplate.attrs.mobile_script
+      if (
+        this.dataTemplate.attrs &&
+        (this.dataTemplate.attrs.mobile_script ||
+          this.dataTemplate.attrs.script)
+      ) {
+        const code =
+          this.dataTemplate.attrs.mobile_script ||
+          this.dataTemplate.attrs.script
         el = document.createElement('script')
         el.type = 'text/javascript'
         el.id = id
@@ -1047,7 +1106,7 @@ export default {
 </script>
 <style lang="scss">
 .data-template-list {
-  .options-null{
+  .options-null {
     bottom: -9px !important;
   }
   .palette-button {
@@ -1056,12 +1115,12 @@ export default {
     bottom: 30px;
     z-index: 500;
   }
-  .titles{
+  .titles {
     font-weight: 600;
     font-size: 16px;
     display: block;
   }
-  .desc{
+  .desc {
     font-size: 14px;
     line-height: 22px;
   }
@@ -1071,28 +1130,27 @@ export default {
   .disactive {
     color: #666;
   }
-  .menus{
-    .van-dropdown-menu__bar{
+  .menus {
+    .van-dropdown-menu__bar {
       height: 40px;
-       background-color: #f1f4f8;
+      background-color: #f1f4f8;
     }
-    .van-dropdown-menu__item--disabled{
+    .van-dropdown-menu__item--disabled {
       justify-content: end;
       margin: 0 7px;
     }
-    .van-dropdown-menu__item--disabled + .van-dropdown-menu__item{
+    .van-dropdown-menu__item--disabled + .van-dropdown-menu__item {
       justify-content: flex-end;
       margin: 0 20px;
     }
-    .menu-slot-right{
-      color: #3388FF;
+    .menu-slot-right {
+      color: #3388ff;
     }
   }
 }
-.van-dropdown-menu__item--disabled{
-  .van-dropdown-menu__title::after{
-    border:0
+.van-dropdown-menu__item--disabled {
+  .van-dropdown-menu__title::after {
+    border: 0;
   }
 }
-
 </style>

+ 9 - 1
src/views/system/dashboard/index.vue

@@ -88,12 +88,20 @@
             </h2>
           </template>
           <van-grid :column-num="4" :border="false" class="avatar-grid">
-            <van-grid-item
+            <!-- <van-grid-item
               v-for="menu in dashboard[childrenKey]"
               :key="menu[aliasKey]"
               :badge="getBadge(menu)"
               :text="getText(menu)"
               @click.native="onClick(menu)"
+            > -->
+
+            <!-- 过滤原因暂时隐藏总数 -->
+            <van-grid-item
+              v-for="menu in dashboard[childrenKey]"
+              :key="menu[aliasKey]"
+              :text="getText(menu)"
+              @click.native="onClick(menu)"
             >
               <template #icon>
                 <ibps-avatar