cuiqian2004
2025-05-20 a94f1b73dce878f7102081aae0d796c233a4699f
pages/modal/form/index.vue
@@ -2,97 +2,9 @@
   <view class="uni-page-modal-form">
      <view class="view-content">
         <!-- 表头样式 -->
         <uni-forms ref="baseForm" label-align="right">
            <view v-for="(item,index) in head_styledef.form.items" :key="index" class="v-head-style">
               <!-- 普通布局 -->
               <uni-forms-item v-if="item.name != 'Layout'" :label="item.label ?item.label +':':'' "
                  :label-width="item.labelWidth+'px'">
                  <uni-data-picker v-if="item.name=='Select'" :class="item.disabled?'input-disabled':''"
                     v-model="item.value" :localdata="item.dict" @change="onEnterChange(item)"
                     :readonly="item.disabled" :clear-icon="false" :popup-title="item.label"></uni-data-picker>
                  <view class="input-wrapper" v-if="item.name=='Input' || item.name=='InputNumber'">
                     <text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
                        @click="classAttr_extButton(item)">&#xe568;</text>
                     <input class="uni-input" :class="item.disabled?'input-disabled':''"
                        :style="{'padding-left':item.setting.prefix?0 : '8rpx','right':item.setting.suffix?0 : '8rpx'}"
                        :type="item.name=='Input'?'text':'number'" v-model="item.value"
                        :disabled="item.disabled" :placeholder="item.placeholder"
                        :focus="focusFieldId == item.fieldId" @focus="ontap(item)" @click="onClick(item)"
                        @keyup.enter="onEnterChange(item)" @blur="onEnterChange(item)" :maxlength="-1" />
                     <text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
                        @click="classAttr_extButton(item)"></text>
                  </view>
                  <!-- 复选框 -->
                  <checkbox-group v-if="item.name=='Checkbox'" :class="item.disabled?'input-disabled':''"
                     :disabled="item.disabled" @change="onCheckBoxValue" :data-attr="item.fieldId"
                     :data-index="index">
                     <label v-for="(item2) in item.selections" :key="item2.value">
                        <checkbox :value="item2.value" :checked="item.value.includes(item2.value)" />
                        <text>{{item2.label}}</text>
                     </label>
                  </checkbox-group>
                  <!-- 单选框 -->
                  <radio-group v-if="item.name=='Radio'" :class="item.disabled?'input-disabled':''"
                     :disabled="item.disabled" @change="onRadioBoxValue" :data-attr="item.fieldId"
                     :data-index="index">
                     <label v-for="(item2) in item.selections" :key="item2.value">
                        <radio :value="item2.value" :checked="item2.value === item.value" />
                        <text>{{item2.label}}</text>
                     </label>
                  </radio-group>
                  <!-- Switch开关 -->
                  <switch class="input-switch" v-if="item.name=='Switch'"
                     :class="item.disabled?'input-disabled':''" :disabled="item.disabled" v-model="item.value"
                     @change="onEnterChange(item)" />
               </uni-forms-item>
               <!-- 栅格布局 -->
               <uni-row v-else :gutter="item.setting.gutter">
                  <uni-col
                     :span=" item.setting.spanList && item.setting.spanList[key]? item.setting.spanList[key] : 24 / item.setting.col"
                     v-for="(col,key) in item.setting.colList">
                     <uni-forms-item :label="col.label ? col.label +':':''" :label-width="col.labelWidth+'px'">
                        <uni-data-picker v-if="col.name=='Select'" :class="col.disabled?'input-disabled':''"
                           v-model="col.value" :localdata="col.dict" @change="onEnterChange(col)"
                           :readonly="col.disabled" :clear-icon="false"
                           :popup-title="col.label"></uni-data-picker>
                        <view class="input-wrapper" v-if="col.name=='Input' || col.name=='InputNumber'">
                           <text v-if="col.setting.prefix" class="uni-icon" :class="[col.setting.prefix]"
                              @click="classAttr_extButton(col)">&#xe568;</text>
                           <input class="uni-input" :class="col.disabled?'input-disabled':''"
                              :style="{'padding-left':col.setting.prefix?0 : '8px','right':col.setting.suffix?0 : '8px'}"
                              :type="col.name=='Input'?'text':'number'" v-model="col.value"
                              :disabled="col.disabled" :placeholder="col.placeholder"
                              :focus="focusFieldId == col.fieldId" @focus="ontap(col)" @click="onClick(col)"
                              @keyup.enter="onEnterChange(col)" @blur="onEnterChange(col)" :maxlength="-1" />
                           <text v-if="col.setting.suffix" class="uni-icon" :class="[col.setting.suffix]"
                              @click="classAttr_extButton(col)"></text>
                        </view>
                        <!-- 复选框 -->
                        <checkbox-group v-if="col.name=='Checkbox'" :class="col.disabled?'input-disabled':''"
                           :disabled="col.disabled" @change="onCheckBoxValue" :data-attr="col.fieldId"
                           :data-index="index" :data-iindex="key">
                           <label v-for="(col2) in col.selections" :key="col2.value">
                              <checkbox :value="col2.value" :checked="col.value.includes(col2.value)" />
                              <text>{{col2.label}}</text>
                           </label>
                        </checkbox-group>
                        <!-- 单选框 -->
                        <radio-group v-if="col.name=='Radio'" :class="col.disabled?'input-disabled':''"
                           :disabled="col.disabled" @change="onRadioBoxValue" :data-attr="col.fieldId"
                           :data-index="index" :data-iindex="key">
                           <label v-for="(col2) in col.selections" :key="col2.value">
                              <radio :value="col2.value" :checked="col2.value === col.value" />
                              <text>{{col2.label}}</text>
                           </label>
                        </radio-group>
                        <!-- Switch开关 -->
                        <switch v-if="col.name=='Switch'" :class="col.disabled?'input-disabled':''"
                           :disabled="col.disabled" v-model="col.value" @change="onEnterChange(col)" />
                     </uni-forms-item>
                  </uni-col>
               </uni-row>
            </view>
         </uni-forms>
         <OIForm ref="refBaseForm" class="v-head-style" :form="head_styledef.form" :focusId="focusFieldId"
            @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton"
            @on-click-suffix="classAttr_extButton"></OIForm>
      </view>
      <view class="view-bottom">
         <button type="primary" @tap="ok" class="btn_add" :class="okLoading?'btn_disabled':''"
@@ -104,8 +16,9 @@
         <uni-popup class="view-popup" ref="popup" background-color="#fff" @change="popupChange">
            <view class="popup-header">{{check_list.title}}</view>
            <view class="popup-content" :class="{ 'popup-height': popupType === 'left' || popupType === 'right' }"
               :style="{'width':check_list.width?check_list.width+'px':'200px','height':check_list.height?check_list.height+'px':'88%'}">
               <view class="popup-cont" :style="{'height':check_list.height?check_list.height-45+'px':'415px'}">
               :style="{'width':check_list.width?check_list.width+'px':'375rpx','height':check_list.height?check_list.height+'px':popupType =='center'?'60vh':'88vh'}">
               <view class="popup-cont"
                  :style="{'height':check_list.height?check_list.height-45+'px':popupType =='center'?'50vh':'80vh'}">
                  <view class="view_popup_CheckList" v-for="(item,index) in check_list.items">
                     <checkbox-group class="check_list" @change="checkChange" :data-ischeck="item.check"
                        :data-index="index" :style="{'margin-left': '10rpx'}">
@@ -117,7 +30,7 @@
                  </view>
               </view>
               <view class="popup-footer">
                  <button type="default" @tap="popup_sava" class="btn_popup_add">{{translateSys('ok')}}</button>
                  <button type="primary" @tap="popup_sava" class="btn_popup_add">{{translateSys('ok')}}</button>
                  <button type="default" @tap="popup_cancel"
                     class="btn_popup_cancel">{{translateSys('cancel')}}</button>
               </view>
@@ -128,7 +41,9 @@
</template>
<script>
   import Base64 from '../../../components/js-base64/base64.js'
   import {
      Base64
   } from '@/js/Base64.js';
   import {
      dictGetInfo
   } from "@/api/mobox.js"
@@ -139,15 +54,17 @@
      updateDataObj,
      dataObjInfo
   } from "@/api/data.js"
   import dayjs from "dayjs";
   import OIForm from '@/components/oi-form/index.vue'
   export default {
      name: "PageModalForm",
      modules: {
         Base64,
      components: {
         OIForm
      },
      data() {
         return {
            okLoading:false,
            okLoading: false,
            title: this.translateSys('add2'),
            type: '',
            editMode: false,
@@ -158,13 +75,13 @@
            focusOldFieldId: "",
            head_styledef: {
               form: {
                  items: []
                  items: [],
                  model: {}
               }
            },
            global_attr: [],
            ext_info: {},
            data_json: [],
            refdatastore: [], //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}
            popupType: "center",
            check_list: {},
            popupParam: {},
@@ -230,7 +147,7 @@
            this.ext_info = JSON.parse(options.extInfo);
         if (options.dataJson)
            this.data_json = JSON.parse(options.dataJson);
         this.title = this.param.ShowName? this.param.ShowName : options.titlename; //设置按钮文字
         this.title = options.titlename ? options.titlename : this.param.ShowName; //设置按钮文字
         // console.log(options)
         uni.setNavigationBarTitle({
            title: this.title
@@ -243,7 +160,7 @@
               title: this.translateSys("error"),
               content: this.translate("tip_no_master_class"),
               showCancel: false,
               confirmText: this.translateSys("cancel")
               confirmText: this.translateSys('close')
            });
         }
      },
@@ -318,7 +235,7 @@
                                 styledefHead.form
                                    .model[ele.fieldId] = itemName;
                              }
                              ele.dict = selections.map((a) => {
                              ele.selections = selections.map((a) => {
                                 return {
                                    value: a.value,
                                    text: a.label
@@ -355,7 +272,7 @@
                                    styledefHead.form
                                       .model[col.fieldId] = itemName;
                                 }
                                 col.dict = selections.map((a) => {
                                 col.selections = selections.map((a) => {
                                    return {
                                       value: a.value,
                                       text: a.label
@@ -376,6 +293,25 @@
                        }
                     }
                  }
                  const app = getApp()
                  if (app.globalData.bindClasses) {
                     styledefHead.form.items.push({
                        name: "Input",
                        label: this.translate("classes"),
                        labelWidth: 100,
                        disabled: true,
                        value: app.globalData.classes,
                        setting: {
                           width: 100,
                           height: 50,
                        },
                        bind: {
                           attr: "",
                        },
                        fieldId: "S_CLASSES",
                     })
                     styledefHead.form.model["S_CLASSES"] = app.globalData.classes
                  }
               }
               this.setData({
@@ -393,7 +329,7 @@
                  title: $this.translateSys('tip') + "1",
                  content: exStr,
                  showCancel: false,
                  confirmText: $this.translateSys("cancel")
                  confirmText: $this.translateSys('close')
               });
            }
@@ -431,60 +367,48 @@
                  title: this.translateSys("error") + "3",
                  content: ex.errMsg,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
            }
         },
         async loadFormData(objAttr) {
            let formData
            let attrs = []
            if (this.objId) {
               let info = await dataObjInfo({
                  class_id: this.clsId,
                  obj_id: this.objId,
               });
               formData = {};
               formData["id"] = info.id;
               formData["state"] = info.state;
               attrs = [{
                  attr: "id",
                  value: info.id
               }, {
                  attr: "state",
                  value: info.state
               }]
               info.attr_list.forEach(({
                  name,
                  value
               }) => {
                  formData[name] = value;
               });
            } else if (objAttr) {
               formData = {};
               Object.keys(objAttr).forEach((attr) => {
                  let value = objAttr[attr];
                  formData[attr] = value;
               });
            }
            //传入参数值
            if (formData) {
               if (this.head_styledef?.form) {
                  const items = this.head_styledef?.form?.items || []
                  const model = this.head_styledef?.form?.model || {}
                  Object.assign(model, formData);
                  items.forEach(async (ele, index) => {
                     if (ele.name != "Layout") {
                        let value = formData[ele.fieldId]
                        if (value)
                           ele.value = value
                     } else {
                        ele.setting.colList.forEach(async (col) => {
                           if (col) {
                              let value = formData[col.fieldId]
                              if (value)
                                 col.value = value
                           }
                        });
                     }
                  attrs.push({
                     attr: name,
                     value: value
                  })
                  this.$data.head_styledef.form.model = model
                  this.$data.head_styledef.form.items = items
               }
               });
               this.setFormValues(attrs)
            } else if (objAttr) {
               Object.keys(objAttr).forEach((attr) => {
                  attrs.push({
                     attr: attr,
                     value: objAttr[attr]
                  })
               });
               this.setFormValues(attrs)
            }
         },
         async loadInitialEvent() {
            try {
@@ -529,7 +453,7 @@
                           content: tip,
                           showCancel: false,
                           confirmText: this.translateSys(
                              "cancel")
                              'close')
                        });
                     } else uni.showModal({
                        title: this.translateSys('tip'),
@@ -539,7 +463,7 @@
                           .ret,
                        showCancel: false,
                        confirmText: this.translateSys(
                           "cancel")
                           'close')
                     });
                     return false;
                  } else {
@@ -551,7 +475,7 @@
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys(
                           "cancel")
                           'close')
                     });
                     if (result.result_type == 0 && result.action) {
@@ -595,7 +519,7 @@
                              content: result.info,
                              showCancel: false,
                              confirmText: this
                                 .translateSys("cancel")
                                 .translateSys('close')
                           });
                        }
                     }
@@ -612,7 +536,7 @@
                  title: $this.translateSys('tip') + "2",
                  content: exStr,
                  showCancel: false,
                  confirmText: $this.translateSys("cancel")
                  confirmText: $this.translateSys('close')
               });
            }
         },
@@ -627,10 +551,11 @@
               console.log(result.decodedata);
               item.value = result.decodedata;
               var $this = this;
               if (item.oldvalue != item.value && item.value.trim() != "") {
                  item.oldvalue = item.value;
               let newVal = item.value.trim()
               if (newVal) {
                  item.oldvalue = newVal;
                  var attr = item.fieldId;
                  this.head_styledef.form.model[attr] = item.value;
                  this.head_styledef.form.model[attr] = newVal;
                  var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                  var onSuffixClickCallbackEvent = item.bind
                     .onSuffixClickCallbackEvent; //后图标点击事件
@@ -641,36 +566,59 @@
                  if (onChangeEvent?.id) { //内容变化后事件
                     $this.onChange(onChangeEvent);
                  }
                  if (item.value) { //第一个输入框不为空
                     //初始化,下个输入框focus属性
                     var findd = false
                     for (let i in $this.head_styledef.form.items) {
                        const ele = $this.head_styledef.form.items[i]
                  //初始化,下个输入框focus属性
                  var findd = false
                  for (let i in $this.head_styledef.form.items) {
                     const ele = $this.head_styledef.form.items[i]
                        if (ele.name != "Layout") {
                           if (ele.name == 'Input' || ele.name ==
                              'InputNumber') {
                              if (attr == ele.fieldId) {
                                 findd = true
                              } else {
                                 if (findd) {
                                    $this.setData({
                                       focusFieldId: ele.fieldId
                                    })
                                    break
                                 }
                     if (ele.name != "Layout") {
                        if (ele.name == 'Input' || ele.name ==
                           'InputNumber') {
                           if (attr == ele.fieldId) {
                              findd = true
                           } else {
                              if (findd) {
                                 $this.setData({
                                    focusFieldId: ele.fieldId
                                 })
                                 break
                              }
                           }
                        } else {
                           if (findd) {
                              let curIndex = ele.setting.colList.findIndex((
                                 col, index2, arr) => {
                                 return (col.name == 'Input' || col
                                    .name == 'InputNumber');
                        }
                     } else {
                        if (findd) {
                           let curIndex = ele.setting.colList.findIndex((
                              col, index2, arr) => {
                              return (col.name == 'Input' || col
                                 .name == 'InputNumber');
                           })
                           if (curIndex > -1) {
                              $this.setData({
                                 focusFieldId: ele.setting
                                    .colList[curIndex]
                                    .fieldId
                              })
                              if (curIndex > -1) {
                              break
                           }
                        } else {
                           let curIndex = ele.setting.colList.findIndex((
                              col, index2, arr) => {
                              return attr == col.fieldId;
                           })
                           if (curIndex > -1) {
                              findd = true
                              let curIndex2 = ele.setting.colList
                                 .findIndex((col, index2, arr) => {
                                    return (col.name == 'Input' ||
                                          col.name ==
                                          'InputNumber') &&
                                       index2 >
                                       curIndex;
                                 })
                              if (curIndex2 > -1) {
                                 $this.setData({
                                    focusFieldId: ele.setting
                                       .colList[curIndex]
@@ -678,34 +626,9 @@
                                 })
                                 break
                              }
                           } else {
                              let curIndex = ele.setting.colList.findIndex((
                                 col, index2, arr) => {
                                 return attr == col.fieldId;
                              })
                              if (curIndex > -1) {
                                 findd = true
                                 let curIndex2 = ele.setting.colList
                                    .findIndex((col, index2, arr) => {
                                       return (col.name == 'Input' ||
                                             col.name ==
                                             'InputNumber') &&
                                          index2 >
                                          curIndex;
                                    })
                                 if (curIndex2 > -1) {
                                    $this.setData({
                                       focusFieldId: ele.setting
                                          .colList[curIndex]
                                          .fieldId
                                    })
                                    break
                                 }
                              }
                           }
                        }
                     }
                  }
@@ -715,74 +638,26 @@
         onEnterChange(item) { //回车,点击按钮,取消节点事件
            console.log(item);
            if (item.oldvalue != item.value && item.value.trim() != "") {
               item.oldvalue = item.value;
            let newVal = item.value
            if (typeof item.value == "string") {
               newVal = item.value.trim()
               if (!newVal) {
                  item.oldvalue = newVal;
                  var attr = item.fieldId;
                  this.head_styledef.form.model[attr] = newVal;
                  return
               }
            }
            if (item.oldvalue != newVal) {
               item.oldvalue = newVal;
               var attr = item.fieldId;
               this.head_styledef.form.model[attr] = item.value;
               this.head_styledef.form.model[attr] = newVal;
               var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
               if (onChangeEvent?.id) { //内容变化后事件
                  this.onChange(onChangeEvent);
               }
            }
         },
         onCheckBoxValue(e) { //绑定Model值
            let values = e.detail.value || []
            const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
            if (item?.setting?.colList) {
               const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
               if (col) {
                  col.value = values
                  let attr = col.fieldId;
                  this.head_styledef.form.model[attr] = col.value;
                  var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
                  return
               }
            } else {
               if (item) {
                  item.value = values
                  let attr = item.fieldId;
                  this.head_styledef.form.model[attr] = item.value;
                  var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
               }
            }
         },
         onRadioBoxValue(e) { //绑定Model值
            let values = e.detail.value || ""
            const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
            if (item?.setting?.colList) {
               const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
               if (col) {
                  col.value = values
                  let attr = col.fieldId;
                  this.head_styledef.form.model[attr] = col.value;
                  var onChangeEvent = col.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
                  return
               }
            } else {
               if (item) {
                  item.value = values
                  let attr = item.fieldId;
                  this.head_styledef.form.model[attr] = item.value;
                  var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
                  if (onChangeEvent?.id) { //内容变化后事件
                     this.onChange(onChangeEvent);
                  }
               }
            }
         },
         classAttr_extButton(item) {
            var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件
@@ -793,7 +668,7 @@
                  title: this.translateSys("tip"),
                  content: this.translate('icon_click_callback_empty'),
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return;
            }
@@ -802,15 +677,15 @@
                  title: this.translateSys("tip"),
                  content: this.translate('icon_click_event_empty'),
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return;
            }
            this.$data.popupType = 'right'
            this.popupType = 'right'
            // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
            this.$refs.popup.open(this.popupType);
            this.dataObjRunCustomEvent_Return(onSuffixClickCallbackEvent.id, '', onSuffixClickEvent.id,
            this.dataObjRunCustomEvent_Return(onSuffixClickEvent.id, '', onSuffixClickCallbackEvent.id,
               item);
         },
@@ -883,7 +758,7 @@
                              content: tip,
                              showCancel: false,
                              confirmText: this.translateSys(
                                 "cancel")
                                 'close')
                           });
                        } else uni.showModal({
                           title: this.translateSys('tip'),
@@ -893,7 +768,7 @@
                              .ret,
                           showCancel: false,
                           confirmText: this.translateSys(
                              "cancel")
                              'close')
                        });
                        return false;
                     } else {
@@ -905,7 +780,7 @@
                           content: tip,
                           showCancel: false,
                           confirmText: this.translateSys(
                              "cancel")
                              'close')
                        });
                        if (result.result_type == 0 && result.action) {
@@ -949,7 +824,7 @@
                                 content: result.info,
                                 showCancel: false,
                                 confirmText: this
                                    .translateSys("cancel")
                                    .translateSys('close')
                              });
                           }
                        }
@@ -963,7 +838,7 @@
                        title: this.translateSys("error") + "4.1",
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                        confirmText: this.translateSys('close')
                     });
                  });
               }
@@ -978,115 +853,76 @@
                     this.translate('reason') + this.translateSys("colon") +
                     tip,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
            }
         },
         setFormValues(data) {
         setFormValues(attrs) {
            console.log(attrs)
            const head_styledef = this.head_styledef
            if (JSON.stringify(data) == '{}') {
            if (JSON.stringify(attrs) == '{}') {
               return;
            }
            head_styledef.form.items.forEach(async (ele, index) => {
               if (ele.name != "Layout") {
                  let curIndex = data.findIndex((attr, index2, arr) => {
                     return attr.attr == ele.fieldId;
                  })
                  if (curIndex > -1) {
                     const attr = data[curIndex]
                     if (ele.name ==
                        'Select' &&
                        attr
                        .choice_list
                     ) {
                        const
                           dictItemList = [];
                        const
                           choiceList =
                           attr
                           .choice_list || [];
                        for (let d in
                              choiceList) {
                           const
                              val =
                              choiceList[
                                 d
                              ];
                           dictItemList
                              .push({
                                 text: val,
                                 value: val
                              });
            attrs.forEach(async (attr, key) => {
               if (attr.choice_list) {
                  var dictItemList = [];
                  attr.choice_list.forEach(async (val, index) => {
                     dictItemList.push({
                        text: val,
                        value: val
                     });
                  });
                  head_styledef.form.items.forEach(async (attr_item, index) => {
                     if (attr_item.name != "Layout") {
                        if (attr_item.fieldId == attr.attr) {
                           if (attr_item.useDict) {
                              attr_item.dict = dictItemList;
                           } else {
                              attr_item.selections = dictItemList;
                           }
                        }
                        ele.dict =
                           dictItemList;
                     }
                     ele.value =
                        attr
                        .value;
                  }
               } else {
                  ele.setting
                     .colList
                     .forEach(
                        async (
                           col
                        ) => {
                           if (
                              col) {
                              let curIndex = data.findIndex((
                                 attr, index2, arr) => {
                                 return attr.attr == col.fieldId;
                              })
                              if (curIndex > -1) {
                                 const attr = data[curIndex]
                                 if (col.name ==
                                    'Select' &&
                                    attr
                                    .choice_list
                                 ) {
                                    const
                                       dictItemList = [];
                                    const
                                       choiceList =
                                       attr
                                       .choice_list || [];
                                    for (let d in
                                          choiceList) {
                                       const
                                          val =
                                          choiceList[
                                             d
                                          ];
                                       dictItemList
                                          .push({
                                             text: val,
                                             value: val
                                          });
                                    }
                                    col.dict =
                                       dictItemList;
                     } else if (attr_item.name == "Layout") {
                        attr_item.setting.colList.forEach((col) => {
                           if (col) {
                              if (col.fieldId == attr.attr) {
                                 if (col.useDict) {
                                    col.dict = dictItemList;
                                 } else {
                                    col.selections = dictItemList;
                                 }
                                 col.value =
                                    attr
                                    .value;
                              }
                           }
                        })
                        });
                     }
                  });
               }
            })
               head_styledef.form.model[attr.attr] = attr.value;
               head_styledef.form.items.forEach(async (ele, index) => {
                  if (ele.name != "Layout") {
                     if (ele.fieldId == attr.attr) {
                        ele.value = attr.value;
                        ele.oldvalue = attr.value;
                     }
                  } else if (ele.name == "Layout") {
                     ele.setting.colList.forEach((col) => {
                        if (col) {
                           if (col.fieldId == attr.attr) {
                              col.value = attr.value;
                              col.oldvalue = attr.value;
                           }
                        }
                     });
                  }
               })
               //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据
            })
            this.setData({
               head_styledef: head_styledef
            })
         },
         popupChange(e) {
            console.log('当前模式:' + e.type + ',状态:' + e.show);
         },
@@ -1094,15 +930,15 @@
            // console.log(e.target.dataset);
            var index = e.target.dataset.index;
            var ischeck = e.target.dataset.ischeck;
            var data = this.$data.check_list.items;
            // this.$data.check_list.items=[];
            if (this.$data.check_list.multiple_choice == "0") { //判断时单选还是多选
            var data = this.check_list.items;
            // this.check_list.items=[];
            if (this.check_list.multiple_choice == "0") { //判断时单选还是多选
               for (var i in data) {
                  data[i].check = false;
               }
            }
            data[index].check = ischeck ? false : true;
            this.$data.check_list.items = data;
            this.check_list.items = data;
         },
         popup_cancel(e) { //弹框取消
@@ -1110,7 +946,7 @@
         },
         popup_sava(e) { //弹框确定
            var $this = this;
            var items = $this.$data.check_list.items;
            var items = $this.check_list.items;
            var data = [];
            var name = "";
            for (var i = 0; i < items.length; i++) {
@@ -1124,12 +960,12 @@
                  });
               }
            }
            if (!$this.$data.popupParam) {
            if (!$this.popupParam) {
               uni.showModal({
                  title: this.translateSys("tip"),
                  content: "popupParam为空!",
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return;
            }
@@ -1138,14 +974,14 @@
                  title: this.translateSys("tip"),
                  content: this.translate("tip_no_select_data"),
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return;
            }
            let global_attr = Base64.encode(JSON.stringify(this.global_attr))
            let data_json = Base64.encode(JSON.stringify(this.data_json))
            let ext_info = Base64.encode(JSON.stringify(this.ext_info))
            var callback_eventid = $this.$data.popupParam.button_callback.trim();
            var callback_eventid = $this.popupParam.button_callback.trim();
            var info = {
               eventid: callback_eventid,
               edtype: "0",
@@ -1155,10 +991,10 @@
               userlogin: '',
               clsid: $this.clsId,
               objid: "",
               attr: $this.$data.popupParam.req,
               attr: $this.popupParam.req,
               dataJson: data
            }
            $this.DataObjRunCustomEvent(info, $this.$data.popupParam.data_attr);
            $this.DataObjRunCustomEvent(info, $this.popupParam.data_attr);
            this.$refs.popup.close();
         },
@@ -1237,14 +1073,14 @@
                        title: this.translateSys("tip"),
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys("cancel")
                        confirmText: this.translateSys('close')
                     });
                  } else uni.showModal({
                     title: this.translateSys("tip"),
                     content: tip + ',' + this.translateSys('tip') + ':' + data
                        .ret,
                     showCancel: false,
                     confirmText: this.translateSys("cancel")
                     confirmText: this.translateSys('close')
                  });
                  return false
               } else {
@@ -1256,7 +1092,7 @@
                     title: this.translateSys("tip"),
                     content: tip,
                     showCancel: false,
                     confirmText: this.translateSys("cancel")
                     confirmText: this.translateSys('close')
                  });
                  var actionlist = data.action;
@@ -1270,7 +1106,7 @@
                        } else if (action.action_type == 'set_dlg_attr_show') {
                           var result = action.value;
                           result.forEach(async (attr, key) => {
                              $this.$data.head_styledef.form.items
                              $this.head_styledef.form.items
                                 .forEach(
                                    async (ele,
                                       index) => {
@@ -1303,11 +1139,11 @@
                           });
                           var head_styledef = JSON.parse(JSON.stringify($this.$data
                              .head_styledef));
                           $this.$data.head_styledef = [];
                           $this.$data.head_styledef = head_styledef;
                           // console.log($this.$data.head_styledef);
                           $this.head_styledef = [];
                           $this.head_styledef = head_styledef;
                           // console.log($this.head_styledef);
                        } else if (action.action_type == 'set_global_attr') {
                           $this.$data.global_attr = action.value || [];
                           $this.global_attr = action.value || [];
                        } else {
                           uni.showModal({
                              title: this.translateSys("tip"),
@@ -1319,70 +1155,14 @@
                                 .translate(
                                    "tip_action_unprocessed"),
                              showCancel: false,
                              confirmText: this.translateSys("cancel")
                              confirmText: this.translateSys('close')
                           });
                        }
                     }
                  }
                  console.log($this.head_styledef);
                  if (data.result) {
                     var result = data.result;
                     for (var i = 0; i < result.length; i++) {
                        for (var c = 0; c < $this.$data.head_styledef.form.items
                           .length; c++) {
                           var attr = $this.$data.head_styledef.form.items[c];
                           //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据
                           if ($this.head_styledef.form.model[result[i].attr] ==
                              undefined) {
                              $this.head_styledef.form.model[result[i].attr] =
                                 result[i]
                                 .value;
                           }
                           //判断是否是栅格表单
                           if (attr.name != 'Layout') {
                              if (attr.fieldId == result[i].attr) {
                                 attr.value = '';
                                 attr.oldvalue = '';
                                 attr.value = result[i].value;
                                 attr.oldvalue = result[i].value;
                                 $this.head_styledef.form.model[attr.fieldId] =
                                    result[i]
                                    .value;
                              }
                           } else if (attr.name == 'Layout') {
                              attr.setting.colList.forEach(col => {
                                 if (col) {
                                    if (col.fieldId == result[i].attr) {
                                       col.value = '';
                                       col.oldvalue = '';
                                       col.value = result[i].value;
                                       col.oldvalue = result[i].value;
                                       $this.head_styledef.form.model[col
                                             .fieldId] =
                                          result[i].value;
                                    }
                                 }
                              });
                           }
                        }
                        var length = 0;
                        if (!$this.$data.refdatastore.filter(function(s) {
                              return result[i].attr == s.attr
                           }).length) {
                           length = 1;
                           $this.$data.refdatastore.push(result[i]);
                        }
                        if (length == 0) {
                           for (var j = 0; j < $this.$data.refdatastore.length; j++) {
                              if ($this.$data.refdatastore[j].attr == result[i]
                                 .attr) {
                                 $this.$data.refdatastore[j].value = result[i]
                                    .value;
                              }
                           }
                        }
                     }
                     $this.setFormValues(data.result)
                  }
               }
@@ -1396,7 +1176,7 @@
                  title: this.translateSys("error") + "3.1",
                  content: exStr,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
            });
         },
@@ -1419,18 +1199,6 @@
               attr: a,
               value: obj_attr[a] || "",
            }));
            if ($this.refdatastore.length > 0) {
               for (var i = 0; i < $this.refdatastore.length; i++) {
                  if (!req.filter(function(s) {
                        return $this.refdatastore[i].attr == s.name
                     }).length) {
                     req.push({
                        'attr': $this.refdatastore[i].attr,
                        'value': $this.refdatastore[i].value
                     });
                  }
               }
            }
            let global_attr = Base64.encode(JSON.stringify(this.global_attr))
            let data_json = Base64.encode(JSON.stringify(this.data_json))
            let ext_info = Base64.encode(JSON.stringify(this.ext_info))
@@ -1484,14 +1252,14 @@
                        title: $this.translateSys("tip"),
                        content: tip,
                        showCancel: false,
                        confirmText: $this.translateSys("cancel")
                        confirmText: $this.translateSys('close')
                     });
                  } else uni.showModal({
                     title: $this.translateSys("tip"),
                     content: tip + ',' + $this.translateSys('tip') + ':' + data
                        .ret,
                     showCancel: false,
                     confirmText: $this.translateSys("cancel")
                     confirmText: $this.translateSys('close')
                  });
                  return false
               } else {
@@ -1503,7 +1271,7 @@
                     title: $this.translateSys("tip"),
                     content: tip,
                     showCancel: false,
                     confirmText: $this.translateSys("cancel")
                     confirmText: $this.translateSys('close')
                  });
                  if (data != "") {
@@ -1642,8 +1410,8 @@
                                          data[0].ID +
                                          ';' + data[0].Name;
                                       // $this.$data.classAttrList[param.index].Attr[param.iindex].Value=data[0].Name;
                                       // $this.$data.classAttrList[param.index].Attr[param.iindex].ValID=data[0].ID+';'+data[0].Name;
                                       // $this.classAttrList[param.index].Attr[param.iindex].Value=data[0].Name;
                                       // $this.classAttrList[param.index].Attr[param.iindex].ValID=data[0].ID+';'+data[0].Name;
                                       var callback_eventid = param
                                          .button_callback
                                          .trim();
@@ -1677,7 +1445,7 @@
                                    .translate(
                                       "tip_action_unprocessed"),
                                 showCancel: false,
                                 confirmText: $this.translateSys("cancel")
                                 confirmText: $this.translateSys('close')
                              });
                           }
                        }
@@ -1690,7 +1458,7 @@
                              "quotation_mark_right") + $this.translateSys(
                              "comma") + 'event_id' + eventid,
                        showCancel: false,
                        confirmText: $this.translateSys("cancel")
                        confirmText: $this.translateSys('close')
                     });
                  }
               }
@@ -1705,7 +1473,7 @@
                  title: $this.translateSys('tip') + "5.1",
                  content: exStr,
                  showCancel: false,
                  confirmText: $this.translateSys("cancel")
                  confirmText: $this.translateSys('close')
               });
            });
         },
@@ -1717,19 +1485,23 @@
                  mask: true
               });
               this.okLoading = true
               console.log(obj_attr)
               var obj_attr = this.head_styledef.form.model || {};
                  console.log(obj_attr)
               console.log(obj_attr)
               let ret = await this.sava();
               this.okLoading = false
               uni.hideLoading();
               if (!ret) return;
               obj_attr.id = this.objId || "";
               const eventChannel = this.$scope.eventChannel;
               console.log(this.$scope)
               const eventChannel = this.getOpenerEventChannel();
               // const eventChannel = this.getOpenerEventChannel();
               eventChannel.emit(this.type, obj_attr);
               uni.navigateBack()
            } catch (ex) {
               this.okLoading = true
               return false;
            }
         },
@@ -1765,6 +1537,8 @@
               }
               return true;
            } catch (ex) {
               console.log("sava", ex)
               this.showError(ex)
               return false;
            }
@@ -1818,7 +1592,7 @@
                  title: this.translateSys('tip') + "7.1",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return false
            }
@@ -1845,7 +1619,7 @@
                  title: this.translateSys("tip") + "6.1",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return false
            }
@@ -1872,7 +1646,7 @@
                  title: this.translateSys("tip") + "6.2",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return false
            }
@@ -1881,7 +1655,7 @@
         async afterOK() {
            try {
               var obj_attr = this.head_styledef.form.model ||{}
               var obj_attr = this.head_styledef.form.model || {}
               // console.log(obj_attr);
               var input_param = {
                  id: "",
@@ -1923,14 +1697,14 @@
                  title: this.translateSys('tip') + "7.2",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return false
            }
         },
          async cancel(e) { //取消
         async cancel(e) { //取消
            try {
               if (!this.objId) {
                  if (this.editMode) {
@@ -1962,9 +1736,12 @@
                     value: obj_attr[a],
                  })),
               };
               let input_param = Base64.encode(JSON.stringify(inputParam));
               let global_attr = Base64.encode(JSON.stringify(this.global_attr))
               let data_json = Base64.encode(JSON.stringify(this.data_json))
               let input_param = Base64.encode(JSON.stringify(
                  inputParam));
               let global_attr = Base64.encode(JSON.stringify(this
                  .global_attr))
               let data_json = Base64.encode(JSON.stringify(this
                  .data_json))
               let ext_info = Base64.encode(JSON.stringify(this.ext_info))
               await runCustomEvent({
@@ -1989,7 +1766,7 @@
                  title: this.translateSys("tip") + "8.1",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return false
            }
@@ -2005,10 +1782,14 @@
                     value: obj_attr[a],
                  })),
               };
               let input_param = Base64.encode(JSON.stringify(inputParam));
               let global_attr = Base64.encode(JSON.stringify(this.global_attr))
               let data_json = Base64.encode(JSON.stringify(this.data_json))
               let ext_info = Base64.encode(JSON.stringify(this.ext_info))
               let input_param = Base64.encode(JSON.stringify(
                  inputParam));
               let global_attr = Base64.encode(JSON.stringify(this
                  .global_attr))
               let data_json = Base64.encode(JSON.stringify(this
                  .data_json))
               let ext_info = Base64.encode(JSON.stringify(this
                  .ext_info))
               await runCustomEvent({
                  ed_type: 0,
@@ -2027,22 +1808,33 @@
               let exStr = JSON.stringify(ex)
               if (exStr == "{}")
                  exStr = ex
               let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
               let tip = typeof ex.errMsg == "string" ? ex.errMsg :
                  exStr
               uni.showModal({
                  title: this.translateSys("tip") + "8.2",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys("cancel")
                  confirmText: this.translateSys('close')
               });
               return false
            }
         },
         showError(ex) {
            uni.showModal({
               title: this.translateSys('error'),
               content: typeof ex == "string" ? ex : typeof ex.errMsg == "string" ? ex.errMsg : "",
               showCancel: false,
               confirmText: this.translateSys('cancel')
            })
         },
         translate(t) {
            if (typeof this.$t == "function") return this.$t(`page.${t}`)
            if (typeof this.$t == "function") return this.$t(
               `page.${t}`)
            else return t;
         },
         translateSys(t) {
            if (typeof this.$t == "function") return this.$t(`sys.${t}`)
            if (typeof this.$t == "function") return this.$t(
               `sys.${t}`)
            else return t;
         },
      },
@@ -2064,38 +1856,6 @@
         flex-direction: column;
      }
      .v-head-style {
         width: 98%;
         .uni-forms-item {
            margin-bottom: 11rpx;
         }
         .input-wrapper {
            border: 1px solid #d5d5d5;
            width: 100%;
            display: flex;
            flex-direction: row;
            .uni-input {
               flex: 1;
               padding: 12rpx 8rpx;
               color: #2d8cf0;
               // height: 40rpx;
               // line-height: 40rpx;
            }
            .uni-icon {
               padding: 8rpx;
               font-size: 32rpx;
               color: rgb(192, 196, 204);
            }
         }
         .input-wrapper:hover {
            border: 1px solid rgb(41, 121, 255);
         }
      }
      .view-content {
         display: flex;
@@ -2119,7 +1879,7 @@
            margin: 0 10rpx;
            // padding: 5rpx 10rpx;
            background: #4D6AF4;
               font-size: 38rpx;
            font-size: 38rpx;
            border: none;
            color: #fff;
            float: left;
@@ -2134,8 +1894,10 @@
         .btn_cancel {
            width: 45%;
            margin: 0 10rpx;
            // background: #fff;
            // border: none;
            // color: #000;
            background: #fff;
            border: none;
            color: #000;
            font-size: 38rpx;
            float: right;
@@ -2155,7 +1917,7 @@
      .uni-icon {
         /* border: 1px solid red; */
         width: 8%;
         width: 30rpx;
         font-family: uniicons;
         font-size: 40rpx;
         font-weight: 400;
@@ -2193,7 +1955,7 @@
      .popup-footer {
         float: right;
         position: absolute;
         bottom: 0;
         bottom: 10rpx;
         right: 20rpx;
      }
@@ -2217,9 +1979,11 @@
         margin-top: 50rpx;
         padding: 15rpx;
         line-height: 1.5;
         background: #27A6E1;
         border: none;
         color: #fff;
         // background: #27A6E1;
         // border: none;
         // color: #fff;
         background: #fff;
         color: #000;
         font-size: 38rpx;
         font-weight: bold;
         /* float: right; */