cuiqian2004
1 天以前 310ab72840d7c7025273ac79363107a1f9e4bc8e
pages/modal/5601.vue
@@ -1,7 +1,7 @@
<template>
   <view class="uni-page-modal-5601" :class="largeMode?'large-mode':''">
      <!-- 表头样式 -->
      <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :focusId="focusFieldId"
      <OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" :hiddenIds="head_styledef.hiddenIds ?head_styledef.hiddenIds :[] "  :focusId="focusFieldId"
         @on-click="onClick" @on-focus="ontap" @on-change="onEnterChange" @on-click-prefix="classAttr_extButton"
         @on-click-suffix="classAttr_extButton"></OIForm>
@@ -27,7 +27,10 @@
                              @tap="onPanelClick(ii,style.form.htmlobjId)"
                              :id="'dvpanel'+style.form.htmlobjId"
                              :class="style.form.htmlobjId==active_id?'bk-active':''">
                              <OIForm class="dv-panel-form" :form="style.form" viewMode></OIForm>
                              <OIForm class="dv-panel-form" :form="style.form"
                                 :hiddenIds="style.hiddenIds ?style.hiddenIds :[] " viewMode @on-change="(item2)=>{
                                    onDetailEnterChange(item2,style,pageIndex)
                                 }"></OIForm>
                              <div class="dv-panel-button"
                                 v-if="pageData.Select_Button==true || pageData.Row_Button.length > 0">
@@ -755,6 +758,7 @@
            }
         },
         classAttr_extButton(item) {
            var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件
            var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调
@@ -784,7 +788,155 @@
            this.dataObjRunCustomEvent_Return(onSuffixClickEvent.id, '', onSuffixClickCallbackEvent.id,
               item);
         },
         onDetailEnterChange(item, style, pageIndex) {
            let newVal = item.value
            if (typeof item.value == "string") {
               newVal = item.value.trim()
               if (!newVal) {
                  item.oldvalue = newVal;
                  var attr = item.fieldId;
                  style.form.model[attr] = newVal;
                  return
               }
            }
            if (item.oldvalue != newVal) {
               item.oldvalue = newVal;
               var attr = item.fieldId;
               style.form.model[attr] = newVal;
               var onChangeEvent = item.bind.onChangeEvent; //内容变化后事件
               if (onChangeEvent?.id) { //内容变化后事件
                  this.runDetailChangeEvent(onChangeEvent, style, pageIndex)
               }
            }
         },
         async runDetailChangeEvent(event, style, pageIndex) {
            try {
               const detail_attr = {}
               style.form.items.forEach(item2 => {
                  if (item2.name == "Layout") { //判断是否是栅栏格式
                     item2.setting.colList.forEach(col => {
                        if (col != null) detail_attr[col
                           .fieldId] = col.value;
                     });
                  } else
                     detail_attr[item2.fieldId] = item2.value;
               });
               var obj_attr = detail_attr
               var input_param = Base64.encode(
                  JSON.stringify(
                     Object.keys(detail_attr).map((a) => ({
                        attr: a,
                        value: detail_attr[a] || "",
                     }))
                  )
               );
               var dataInfo = {
                  ed_type: 0,
                  start_transaction: true,
                  class_id: style.form.clsId,
                  class_name: '',
                  event_id: event.id,
                  event_name: '',
                  data_obj_id: '',
                  obj_attr: obj_attr,
                  prj_id: '',
                  ref_cls_id: '',
                  rel_obj_id: '',
                  user_login: '',
                  data_json: '',
                  compose_info: '',
                  ext_info: '',
                  global_attr: '',
                  input_param: input_param,
               };
               const result = await runCustomEvent(dataInfo)
               console.log(result)
               if (result.ret != 0) {
                  var tip = result.err_info ? typeof result
                     .err_info == 'string' ? result
                     .err_info : result.err_info.join('<br/>') :
                     '';
                  if (result.ret == 801) {
                     if (this.param.Only_Script_Error) {
                        let pos = tip.indexOf(":");
                        if (pos > -1) tip = tip.substring(pos +
                           1);
                     }
                     uni.showModal({
                        title: this.translateSys(
                           "tip"),
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys(
                           'close')
                     });
                  } else uni.showModal({
                     title: this.translateSys('tip'),
                     content: tip + ',' + this
                        .translateSys('tip') + ':' +
                        result
                        .ret,
                     showCancel: false,
                     confirmText: this.translateSys(
                        'close')
                  });
                  return false;
               } else {
                  var tip = result.info ? typeof result.info ==
                     'string' ? result.info :
                     result.info.join('<br/>') : '';
                  if (tip) uni.showModal({
                     title: this.translateSys('tip'),
                     content: tip,
                     showCancel: false,
                     confirmText: this.translateSys('close')
                  });
                  if (result.result_type == 0 && result.action) {
                     result.action.forEach(item => {
                        if (item.action_type == "set_dlg_attr") {
                           // value = {"attr":"xxx", "value":"xxx"}
                           var data = item.value;
                           this.setDetailFormValues(data, style, pageIndex)
                        } else if (item.action_type == 'set_dlg_attr_show') {
                           var data = item.value;
                           this.setDetailFormItemVisible(data, style, pageIndex)
                        }
                     });
                  } else {
                     if (result.info) {
                        uni.showModal({
                           title: this.translateSys(
                              "error") + "6.3",
                           content: result.info,
                           showCancel: false,
                           confirmText: this
                              .translateSys('close')
                        });
                     }
                  }
               }
            } catch (ex) {
               console.log(ex)
               var tip = typeof ex == "string" ? ex : ex.message;
               uni.showModal({
                  title: this.translateSys("error") + "6.1",
                  content: this.translate(
                        'execute_after_change_event_failed') + this
                     .translateSys(
                        "comma") +
                     this.translate('reason') + this.translateSys("colon") +
                     tip,
                  showCancel: false,
                  confirmText: this.translateSys('close')
               });
            }
         },
         getDetailAttrList(pageData) {
            const detailAttrList = [];
            console.log(pageData)
@@ -1057,6 +1209,10 @@
                              // value = {"attr":"xxx", "value":"xxx"}
                              var data = item.value;
                              $this.setFormValues(data)
                           }
                           else if (item.action_type == 'set_dlg_attr_show') {
                              var data = item.value;
                              $this.setFormItemVisible(data)
                           }
                        });
                     } else {
@@ -1450,7 +1606,7 @@
            data.content.forEach(cont => {
               var detailStyle = JSON.parse(styleStr);
               if (detailStyle.form) {
                  detailStyle.SelBut_Checked = data.checkbox ?? true;
               //   detailStyle.SelBut_Checked = data.checkbox ?? true;
                  detailStyle.form.objId = cont.id;
                  detailStyle.form.htmlobjId = cont.id ? cont.id.replace(/-/g,
@@ -1513,10 +1669,31 @@
            $this.$set(this.pageDetail, pageIndex, pageData)
         },
         setFormItemVisible(attrs) {
            if (!Array.isArray(attrs)) {
               return
            }
            const head_styledef = this.head_styledef
            if (!head_styledef.hiddenIds) {
               head_styledef.hiddenIds = []
            }
            attrs.forEach((attr) => {
               let index = head_styledef.hiddenIds.findIndex((id) => id == attr.attr);
               if (attr.show) {
                  if (index > -1) head_styledef.hiddenIds.splice(index, 1);
               } else {
                  if (index == -1) head_styledef.hiddenIds.push(attr.attr);
               }
            });
            this.setData({
               head_styledef: head_styledef
            })
         },
         setFormValues(attrs) {
            const head_styledef = this.head_styledef
            if (JSON.stringify(attrs) == '{}') {
               return;
            if (!Array.isArray(attrs)) {
               return
            }
            console.log(attrs)
            attrs.forEach(async (attr, key) => {
@@ -1595,13 +1772,113 @@
               head_styledef: head_styledef
            })
         },
         setDetailFormItemVisible(attrs, style, pageIndex) {
            if (pageIndex < 0)
               return
            if (!Array.isArray(attrs)) {
               return
            }
            const pageData = this.pageDetail[pageIndex]
            if (!style.hiddenIds) {
               style.hiddenIds = []
            }
            attrs.forEach((attr) => {
               let index = style.hiddenIds.findIndex((id) => id == attr.attr);
               if (attr.show) {
                  if (index > -1) style.hiddenIds.splice(index, 1);
               } else {
                  if (index == -1) style.hiddenIds.push(attr.attr);
               }
            });
            this.$set(this.pageDetail, pageIndex, pageData)
         },
         setDetailFormValues(attrs, style, pageIndex) {
            if (pageIndex < 0)
               return
            if (!Array.isArray(attrs)) {
               return
            }
            const pageData = this.pageDetail[pageIndex]
            attrs.forEach(async (attr, key) => {
               if (attr.choice_list) {
                  var dictItemList = [];
                  attr.choice_list.forEach(async (val, index) => {
                     dictItemList.push({
                        text: val,
                        value: val
                     });
                  });
                  style.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;
                           }
                        }
                     } 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;
                                 }
                              }
                           }
                        });
                     }
                  });
               }
               if (!style.form.model[attr.attr]) {
                  style.form.model[attr.attr] = attr.value;
               }
               style.form.items.forEach(async (ele) => {
                  if (ele.name != "Layout") {
                     if (ele.fieldId == attr.attr) {
                        ele.value = attr.value;
                        ele.oldvalue = attr.value;
                        if (ele.name == "Input") {
                           if (attr.prompt) ele.placeholder = attr.prompt;
                        }
                        if (attr.enable !== undefined) {
                           if (attr.enable) ele.disabled = false;
                           else ele.disabled = true;
                        }
                     }
                  } 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;
                              if (col.name == "Input") {
                                 if (attr.prompt) col.placeholder = attr.prompt;
                              }
                              if (attr.enable !== undefined) {
                                 if (attr.enable) col.disabled = false;
                                 else col.disabled = true;
                              }
                           }
                        }
                     });
                  }
               })
               //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据
            })
            this.$set(this.pageDetail, pageIndex, pageData)
         },
         onClickItem(e) { //选择页签
            // console.log(e);
            this.current = e.currentIndex
         },
         onDetail1EnterChange(item) { //码盘中样式回车事件
            console.log(item);
         },
         async del(pageData, style, event) {
            //获取表头属性
            var head_attr = {};
@@ -1870,39 +2147,8 @@
                           $this.setFormValues(result)
                        } else if (action.action_type == 'set_dlg_attr_show') {
                           var result = action.value;
                           result.forEach(async (attr, key) => {
                              $this.head_styledef.form.items.forEach(async (
                                 ele,
                                 index) => {
                                 //判断是否是栅格表单
                                 if (ele.name != 'Layout') {
                                    if (ele.fieldId == attr
                                       .attr) {
                                       ele.show = attr.show;
                                    }
                                 } else if (ele.name ==
                                    'Layout') {
                                    ele.setting.colList
                                       .forEach((col) => {
                                          if (col) {
                                             if (col
                                                .fieldId ==
                                                attr
                                                .attr
                                             ) {
                                                col.show =
                                                   attr
                                                   .show;
                                             }
                                          }
                                       });
                                 }
                              });
                           });
                           var head_styledef = JSON.parse(JSON.stringify($this.$data
                              .head_styledef));
                           $this.head_styledef = [];
                           $this.head_styledef = head_styledef;
                           $this.setFormItemVisible(result)
                           // console.log($this.head_styledef);
                        } else if (action.action_type == 'set_global_attr') {
                           $this.global_attr = action.value || [];
@@ -2846,6 +3092,10 @@
                              var data = item.value;
                              $this.setFormValues(data)
                           }
                           else if (item.action_type == 'set_dlg_attr_show') {
                              var data = item.value;
                              $this.setFormItemVisible(data)
                           }
                        });
                     } else {