cuiqian2004
2025-08-29 f9aa1010e164e21a3c8147e0f2e13b828676800a
pages/modal/5601.vue
@@ -108,7 +108,7 @@
            </view>
         </uni-popup>
      </view>
   </view>
</template>
@@ -295,11 +295,309 @@
         },
         async loadInitialEvent() {
            try {
               if (this.initialEvent.id) {
                  this.onChange(this.initialEvent)
               const event = this.initialEvent
               if (event.id) {
                  //获取表头属性
                  var head_attr = {};
                  this.head_styledef.form.items.forEach(item => {
                     if (item.name == "Layout") { //判断是否是栅栏格式
                        item.setting.colList.forEach(col => {
                           if (col != null) head_attr[col
                              .fieldId] = col.value;
                        });
                     } else
                        head_attr[item.fieldId] = item.value;
                  });
                  var obj_attr = this.head_styledef.form.model;
                  // console.log(obj_attr);
                  var input_param = Base64.encode(
                     JSON.stringify({
                        id: "",
                        attrs: Object.keys(head_attr).map((a) => ({
                           attr: a,
                           value: head_attr[a] || "",
                        }))
                     })
                  );
                  var $this = this;
                  const jsonList = []
                  this.pageDetail.forEach((page) => {
                     jsonList.push({
                        page_name: page.Name,
                        item_list: $this.getDetailAttrList(
                           page),
                        ext_data: page.ExtData || {}
                     })
                  })
                  const data_json = Base64.encode(
                     JSON.stringify(jsonList)
                  );
                  console.log(jsonList)
                  var dataInfo = {
                     ed_type: 0,
                     start_transaction: true,
                     class_id: this.head_styledef.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: data_json,
                     compose_info: '',
                     ext_info: '',
                     global_attr: '',
                     input_param: input_param,
                  };
                  const result = await runCustomEvent(dataInfo)
                  console.log(result);
                  if (result.ret != 0 && result.ret != 1) {
                     let cls_name = result.event_info?.cls_name
                     let event_name = result.event_info?.event_name
                     tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result
                        .err_info
                        .join('\n') : ''
                     if (result.ret == 801) {
                        if (this.param.Only_Script_Error) {
                           let pos = tip.indexOf(":");
                           if (pos > -1) tip = tip.substring(pos + 1);
                        }
                     }
                     if (cls_name && event_name) tip = `执行“${cls_name}”数据类的“${event_name}”脚本时返回错误:${tip}`
                     if (result.ret == 801) showInfo(tip)
                     else showError(`${tip},提示:${result.ret}`, this.translateSys('tip'))
                     this.saving = false
                     return false
                  } else {
                     var tip = result.info ? typeof result.info == 'string' ? result.info :
                        result.info.join('\n') : '';
                     tip = tip || result.err_info
                     let time = result.info_time || 0
                     if (time)
                        showError(tip, this.translateSys('tip'))
                     else
                        showInfo(tip)
                     if ([0, 2, 3, 4, -1].includes(result.result_type)) {
                        if (result.result_type == 2) {
                        } else if (typeof result.result == 'string') {
                           showInfo(result.result)
                        }
                        try {
                           let actionList = result.action || []
                           actionList.forEach(item => {
                              if (item.action_type ==
                                 "insert_subtable_page_row"
                              ) { //码盘中
                                 $this.param.Show_Welcom_Page =
                                    false;
                                 var value = item.value;
                                 $this.viewAceionRow(value);
                              } else if (item.action_type ==
                                 "set_subtable_page_content"
                              ) { //已码盘
                                 $this.param.Show_Welcom_Page =
                                    false;
                                 var value = item.value;
                                 const pageData = $this
                                    .pageDetail.find((
                                       page) => {
                                       return value
                                          .page_name ==
                                          page.Name;
                                    });
                                 if (value.clear_confirm !=
                                    false && value.clear ==
                                    true &&
                                    pageData && pageData
                                    .DefList.length > 0
                                 ) { //判断是否清空页签内容,正在码盘是否有数据
                                    uni.showModal({
                                       title: this
                                          .translateSys(
                                             'tip'),
                                       content: this
                                          .translate(
                                             "are_you_sure_clear_first"
                                          ) +
                                          this
                                          .translateSys(
                                             "quotation_mark_left"
                                          ) +
                                          value
                                          .page_name +
                                          this
                                          .translateSys(
                                             "quotation_mark_right"
                                          ) +
                                          this
                                          .translate(
                                             "are_you_sure_clear_last"
                                          ),
                                       cancelText: $this
                                          .translateSys(
                                             'ok'),
                                       confirmText: $this
                                          .translateSys(
                                             'cancel'
                                          ),
                                       success: function(
                                          res) {
                                          if (res
                                             .cancel
                                          ) {
                                             if (
                                                pageData)
                                                pageData
                                                .DefList = [];
                                             $this
                                                .viewAceionContent(
                                                   value
                                                );
                                          } else if (
                                             res
                                             .confirm
                                          ) {
                                             if (
                                                pageData)
                                                pageData
                                                .DefList = [];
                                             $this
                                                .viewAceionContent(
                                                   value
                                                );
                                          }
                                       }
                                    });
                                 } else {
                                    if (pageData)
                                       pageData.DefList = [];
                                    $this.viewAceionContent(
                                       value);
                                 }
                              } else if (item.action_type ==
                                 "select_subtable_page") {
                                 var value = item.value;
                                 const pageIndex = $this
                                    .pageDetail.findIndex((
                                       page) => {
                                       return value
                                          .page_name ==
                                          page.Name;
                                    });
                                 if (pageIndex > -1) {
                                    $this.setData({
                                       current: pageIndex
                                    })
                                 }
                              } else if (item.action_type ==
                                 "select_subtable_page_row") {
                                 // value = {"page_name":"码盘中", "row":{"id":"xx"}}
                                 var value = item.value;
                                 $this.viewActionSelectRow(
                                    value)
                              } else if (item.action_type ==
                                 "remove_subtable_page_row"
                              ) { //清除面板中指定id的数据
                                 var value = item.value;
                                 $this.viewActionRemoveRow(
                                    value)
                              } else if (item.action_type ==
                                 "set_subtable_page_row") {
                                 $this.viewActionSetRow(item
                                    .value)
                              } else if (item.action_type ==
                                 "set_subtable_page_ext_data") {
                                 var value = item.value;
                                 const pageData = $this
                                    .pageDetail.find((
                                       page) => {
                                       return value
                                          .page_name ==
                                          page.Name;
                                    });
                                 if (pageData)
                                    pageData.ExtData = value
                                    .ext_data
                              } else if (item.action_type ==
                                 "clear_subpage_rows") {
                                 var value = item.value;
                                 const pageIndex = $this
                                    .pageDetail.findIndex((
                                       page) => {
                                       return value
                                          .page_name ==
                                          page.Name;
                                    });
                                 if (pageIndex > -1) {
                                    const pageData = $this
                                       .pageDetail[pageIndex]
                                    pageData.DefList = []
                                    pageData.ExtData = {}
                                    $this.$set(this.pageDetail,
                                       pageIndex, pageData
                                    )
                                 }
                              } else if (item.action_type ==
                                 "set_dlg_current_edit_attr") {
                                 if ($this.focusOldFieldId ==
                                    item.value) {
                                    $this.setData({
                                       focusFieldId: ""
                                    })
                                 } else {
                                    $this.setData({
                                       focusFieldId: $this
                                          .focusOldFieldId
                                    })
                                 }
                                 $this.$nextTick(() => {
                                    $this.setData({
                                       focusFieldId: item
                                          .value
                                    })
                                 });
                              } else if (item.action_type ==
                                 "set_dlg_attr") {
                                 // 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)
                              }
                           });
                        } catch (ex) {
                           let actionList = (result.action || []).map(a =>
                              a.action_type).join(';')
                           let tip = typeof ex == 'string' ? ex : ex
                              .message
                           tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                           showError(tip, this.translateSys('tip'))
                           return
                        }
                     }
                  }
               }
            } catch (ex) {
               showError(ex, this.translateSys('error'))
               console.log(ex);
               showError(ex, this.translateSys('error') + "4.2")
            }
         },
@@ -860,7 +1158,7 @@
                  if (time)
                     showError(tip, this.translateSys('tip'))
                  else
                  showInfo(tip)
                     showInfo(tip)
                  if ([0, 2, 3, 4, -1].includes(result.result_type)) {
                     if (result.result_type == 2) {
@@ -1055,7 +1353,7 @@
                     if (time)
                        showError(tip, this.translateSys('tip'))
                     else
                     showInfo(tip)
                        showInfo(tip)
                     if ([0, 2, 3, 4, -1].includes(result.result_type)) {
                        if (result.result_type == 2) {
@@ -2400,7 +2698,7 @@
                  if (time)
                     showError(tip, this.translateSys('tip'))
                  else
                  showInfo(tip)
                     showInfo(tip)
                  if ([0, 2, 3, 4, -1].includes(data
                        .result_type)) {
                     if (data.result_type == 2) {
@@ -3525,7 +3823,7 @@
                  if (time)
                     showError(tip, this.translateSys('tip'))
                  else
                  showInfo(tip)
                     showInfo(tip)
                  if ([0, 2, 3, 4, -1].includes(
                        result.result_type)) {
                     if (result.result_type == 2) {
@@ -3861,8 +4159,7 @@
                                 var data = item.value;
                                 const eventChannel = this.getOpenerEventChannel();
                                 eventChannel.emit('remove_pre_page_subtable_row', data);
                              }
                              else if (item.action_type == "goback_to_pre_page") {
                              } else if (item.action_type == "goback_to_pre_page") {
                                 //返回上一页
                                 uni.navigateBack({
                                    delta: 1, //返回层数,2则上上页