cuiqian2004
2025-08-01 8f1880cf13440b9cb57d15520ebc3b785f3dabb1
pages/modal/form/index.vue
@@ -2,7 +2,8 @@
   <view class="uni-page-modal-form" :class="largeMode?'large-mode':''">
      <view class="view-content">
         <!-- 表头样式 -->
         <OIForm ref="refBaseForm" class="v-head-style" :form="head_styledef.form" :focusId="focusFieldId"
         <OIForm ref="refBaseForm" class="v-head-style" :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>
      </view>
@@ -64,7 +65,7 @@
      },
      data() {
         return {
               largeMode: getApp().globalData.largeMode || false,
            largeMode: getApp().globalData.largeMode || false,
            okLoading: false,
            title: this.translateSys('add2'),
            type: '',
@@ -471,6 +472,7 @@
                     var tip = result.info ? typeof result.info ==
                        'string' ? result.info :
                        result.info.join('<br/>') : '';
                     tip = tip || result.err_info
                     if (tip) uni.showModal({
                        title: this.translateSys('tip'),
                        content: tip,
@@ -478,9 +480,21 @@
                        confirmText: this.translateSys(
                           'close')
                     });
                     if (result.result_type == 2) {
                     if (result.result_type == 0 && result.action) {
                        result.action.forEach(item => {
                     } else if (typeof result.result == 'string') {
                        if (result.result) {
                           uni.showModal({
                              title: this.translateSys('tip'),
                              content: result.result,
                              showCancel: false,
                              confirmText: this.translateSys('close')
                           });
                        }
                     }
                     try {
                        var actionList = result.action || []
                        actionList.forEach(item => {
                           if (item.action_type ==
                              "set_dlg_current_edit_attr"
@@ -509,22 +523,26 @@
                              // value = {"attr":"xxx", "value":"xxx"}
                              var data = item.value;
                              $this.setFormValues(data)
                           } else if (action.action_type == 'set_dlg_attr_show') {
                              var data = action.value;
                              $this.setFormItemVisible(data)
                           }
                        });
                     } else {
                        if (result.info) {
                           uni.showModal({
                              title: this.translateSys(
                                 "error") + "4.3",
                              content: result.info,
                              showCancel: false,
                              confirmText: this
                                 .translateSys('close')
                           });
                        }
                     } catch (ex) {
                        let actionList = (result.action || []).map(a => a.action_type).join(';')
                        let tip = typeof ex == 'string' ? ex : ex.message
                        tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                        uni.showModal({
                           title: this.translateSys('tip'),
                           content: tip,
                           showCancel: false,
                           confirmText: this.translateSys('close')
                        });
                        console.log(ex)
                        return
                     }
                  }
               }
@@ -776,6 +794,7 @@
                        var tip = result.info ? typeof result.info ==
                           'string' ? result.info :
                           result.info.join('<br/>') : '';
                        tip = tip || result.err_info
                        if (tip) uni.showModal({
                           title: this.translateSys('tip'),
                           content: tip,
@@ -783,9 +802,21 @@
                           confirmText: this.translateSys(
                              'close')
                        });
                        if (result.result_type == 2) {
                        if (result.result_type == 0 && result.action) {
                           result.action.forEach(item => {
                        } else if (typeof result.result == 'string') {
                           if (result.result) {
                              uni.showModal({
                                 title: this.translateSys('tip'),
                                 content: result.result,
                                 showCancel: false,
                                 confirmText: this.translateSys('close')
                              });
                           }
                        }
                        try {
                           var actionList = result.action || []
                           actionList.forEach(item => {
                              if (item.action_type ==
                                 "set_dlg_current_edit_attr"
@@ -814,21 +845,29 @@
                                 // value = {"attr":"xxx", "value":"xxx"}
                                 var data = item.value;
                                 $this.setFormValues(data)
                              } else if (action.action_type ==
                                 'set_dlg_attr_show') {
                                 var data = action.value;
                                 $this.setFormItemVisible(data)
                              }
                           });
                        } else {
                           if (result.info) {
                              uni.showModal({
                                 title: this.translateSys(
                                    "error") + "4.3",
                                 content: result.info,
                                 showCancel: false,
                                 confirmText: this
                                    .translateSys('close')
                              });
                           }
                        } catch (ex) {
                           let actionList = (result.action || []).map(a => a.action_type)
                              .join(';')
                           let tip = typeof ex == 'string' ? ex : ex.message
                           tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                           uni.showModal({
                              title: this.translateSys('tip'),
                              content: tip,
                              showCancel: false,
                              confirmText: this.translateSys('close')
                           });
                           console.log(ex)
                           return
                        }
                     }
@@ -890,7 +929,8 @@
                                 if (col.useDict) {
                                    col.dict = dictItemList;
                                 } else {
                                    col.selections = dictItemList;
                                    col.selections =
                                       dictItemList;
                                 }
                              }
                           }
@@ -924,6 +964,28 @@
               head_styledef: head_styledef
            })
         },
         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
            })
         },
         popupChange(e) {
            console.log('当前模式:' + e.type + ',状态:' + e.show);
         },
@@ -1089,16 +1151,27 @@
                     .info
                     .join(
                        '<br/>') : '';
                  tip = tip || data.err_info
                  if (tip) uni.showModal({
                     title: this.translateSys("tip"),
                     content: tip,
                     showCancel: false,
                     confirmText: this.translateSys('close')
                  });
                  var actionlist = data.action;
                  if (actionlist) {
                     console.log(actionlist);
                  if (data.result_type == 2) {
                     $this.setFormValues(data.result || [])
                  } else if (typeof data.result == 'string') {
                     if (data.result) {
                        uni.showModal({
                           title: this.translateSys('tip'),
                           content: data.result,
                           showCancel: false,
                           confirmText: this.translateSys('close')
                        });
                     }
                  }
                  try {
                     var actionlist = data.action || []
                     for (var i = 0; i < actionlist.length; i++) {
                        var action = actionlist[i];
                        if (action.action_type == 'set_dlg_attr') {
@@ -1106,43 +1179,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;
                           // console.log($this.head_styledef);
                           $this.setFormItemVisible(result)
                        } else if (action.action_type == 'set_global_attr') {
                           $this.global_attr = action.value || [];
                        } else {
@@ -1160,11 +1198,22 @@
                           });
                        }
                     }
                  } catch (ex) {
                     let actionList = (data.action || []).map(a => a.action_type).join(';')
                     let tip = typeof ex == 'string' ? ex : ex.message
                     tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                     uni.showModal({
                        title: this.translateSys('tip'),
                        content: tip,
                        showCancel: false,
                        confirmText: this.translateSys('close')
                     });
                     console.log(ex)
                     return
                  }
                  console.log($this.head_styledef);
                  if (data.result) {
                     $this.setFormValues(data.result)
                  }
               }
            }).catch(ex => {
@@ -1268,200 +1317,217 @@
                     .info
                     .join(
                        '<br/>') : '';
                  tip = tip || data.err_info
                  if (tip) uni.showModal({
                     title: $this.translateSys("tip"),
                     content: tip,
                     showCancel: false,
                     confirmText: $this.translateSys('close')
                  });
                  if (data.result_type == 2) {
                  if (data != "") {
                     var actions = data.action;
                     if (actions) {
                        for (var i = 0; i < actions.length; i++) {
                           var action = actions[i];
                           console.log(action)
                           var val = action.value;
                           var enviroment = JSON.stringify(enviroment);
                  } else if (typeof data.result == 'string') {
                     if (data.result) {
                        uni.showModal({
                           title: this.translateSys('tip'),
                           content: data.result,
                           showCancel: false,
                           confirmText: this.translateSys('close')
                        });
                     }
                  }
                  try {
                     var actions = data.action || []
                     for (var i = 0; i < actions.length; i++) {
                        var action = actions[i];
                        console.log(action)
                        var val = action.value;
                        var enviroment = JSON.stringify(enviroment);
                           if (action.action_type == 'open_panel') {
                              var d = dialog({
                                 title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                    $this.translateSys("tip"),
                                 content: $this.translateSys(
                                       "quotation_mark_left") +
                                    action
                                    .action_type + $this.translateSys(
                                       "quotation_mark_right") + $this
                                    .translate(
                                       "tip_action_unprocessed")
                              });
                              d.show();
                           } else if (action.action_type == 'open_select_userdlg') {
                              var style = val.style;
                              // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''
                              var param = {
                        if (action.action_type == 'open_panel') {
                           var d = dialog({
                              title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                 $this.translateSys("tip"),
                              content: $this.translateSys(
                                    "quotation_mark_left") +
                                 action
                                 .action_type + $this.translateSys(
                                    "quotation_mark_right") + $this
                                 .translate(
                                    "tip_action_unprocessed")
                           });
                           d.show();
                        } else if (action.action_type == 'open_select_userdlg') {
                           var style = val.style;
                           // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''
                           var param = {
                              item: item,
                              button_callback: button_callback,
                              req: req,
                              data_attr: data_attr
                           }
                           uni.navigateTo({
                              url: '../selpsn/index?mulit=false&param=' +
                                 JSON
                                 .stringify(
                                    param),
                              events: {
                                 AddPer(data, param) {
                                    // console.log(param);
                                    console.log(data);
                                    var callback_eventid = param
                                       .button_callback
                                       .trim();
                                    var info = {
                                       eventid: callback_eventid,
                                       edtype: "0",
                                       projectid: '',
                                       rclsid: '',
                                       robjid: '',
                                       userlogin: '',
                                       clsid: $this.clsId,
                                       objid: "",
                                       attr: param.req,
                                       inputparameter: data,
                                       dataJson: [],
                                    }
                                    $this.DataObjRunCustomEvent(info,
                                       param
                                       .data_attr);
                                 }
                              }
                           });
                        } else if (action.action_type == 'open_data_query_dlg') {
                           var d = dialog({
                              title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                 $this.translateSys("tip"),
                              content: $this.translateSys(
                                    "quotation_mark_left") +
                                 action
                                 .action_type + $this.translateSys(
                                    "quotation_mark_right") + $this
                                 .translate(
                                    "tip_action_unprocessed")
                           });
                           d.show();
                        } else if (action.action_type == 'open_common_dlg') {
                           if (val.common_dlg_id == 'check_list') {
                              $this.setData({
                                 check_list: val.config
                              })
                              if (val.config.appear_style ==
                                 'sideslip') //判断是否是侧滑
                                 $this.setData({
                                    popupType: "right"
                                 })
                              else
                                 $this.setData({
                                    popupType: "center"
                                 })
                              // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
                              $this.$refs.popup.open($this.popupType);
                              var popupParam = {
                                 item: item,
                                 button_callback: button_callback,
                                 req: req,
                                 data_attr: data_attr
                              }
                              uni.navigateTo({
                                 url: '../selpsn/index?mulit=false&param=' +
                                    JSON
                                    .stringify(
                                       param),
                                 events: {
                                    AddPer(data, param) {
                                       // console.log(param);
                                       console.log(data);
                                       var callback_eventid = param
                                          .button_callback
                                          .trim();
                              $this.setData({
                                 popupParam: popupParam
                              })
                           }
                        } else if (action.action_type ==
                           'open_project_query_dlg') {
                           //console.log(action.value.select_range);
                           //console.log(action.value.mulit_select);
                           var priRel = '-1';
                           if (action.value.select_range == '全部相关')
                              priRel = '0';
                           else if (action.value.select_range == '我负责的项目')
                              priRel = '1';
                           else if (action.value.select_range == '我创建的')
                              priRel = '2';
                           else if (action.value.select_range == '我参与的' || action
                              .value
                              .select_range == '我参加的')
                              priRel = '3';
                           else if (action.value.select_range == '我关注的')
                              priRel = '4';
                           else if (action.value.select_range == '我下属的项目')
                              priRel = '5';
                           var param_ = {
                              item: item,
                              button_callback: button_callback,
                              req: req
                           }
                           uni.navigateTo({
                              url: '../selPrj/index?relation=' + priRel +
                                 '&param=' +
                                 JSON.stringify(param_),
                              events: {
                                 AddPer(data, param) {
                                    var attr = param.item.fieldId;
                                    $this.head_styledef.form.model[
                                          attr] =
                                       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();
                                    if (callback_eventid) {
                                       var info = {
                                          eventid: callback_eventid,
                                          edtype: "0",
                                          projectid: '',
                                          rclsid: '',
                                          robjid: '',
                                          userlogin: '',
                                          edtype: "2",
                                          projectid: data[0].ID,
                                          rclsid: "",
                                          robjid: "",
                                          userlogin: "",
                                          clsid: $this.clsId,
                                          objid: "",
                                          attr: param.req,
                                          inputparameter: data,
                                          dataJson: [],
                                       }
                                       $this.DataObjRunCustomEvent(info,
                                          param
                                          .data_attr);
                                       $this.DataObjRunCustomEvent(
                                          info);
                                    }
                                 }
                              });
                           } else if (action.action_type == 'open_data_query_dlg') {
                              var d = dialog({
                                 title: '<i class="ace-icon fa fa-info-circle"></i> ' +
                                    $this.translateSys("tip"),
                                 content: $this.translateSys(
                                       "quotation_mark_left") +
                                    action
                                    .action_type + $this.translateSys(
                                       "quotation_mark_right") + $this
                                    .translate(
                                       "tip_action_unprocessed")
                              });
                              d.show();
                           } else if (action.action_type == 'open_common_dlg') {
                              if (val.common_dlg_id == 'check_list') {
                                 $this.setData({
                                    check_list: val.config
                                 })
                                 if (val.config.appear_style == 'sideslip') //判断是否是侧滑
                                    $this.setData({
                                       popupType: "right"
                                    })
                                 else
                                    $this.setData({
                                       popupType: "center"
                                    })
                                 // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
                                 $this.$refs.popup.open($this.popupType);
                                 var popupParam = {
                                    item: item,
                                    button_callback: button_callback,
                                    req: req,
                                    data_attr: data_attr
                                 }
                                 $this.setData({
                                    popupParam: popupParam
                                 })
                              }
                           } else if (action.action_type == 'open_project_query_dlg') {
                              //console.log(action.value.select_range);
                              //console.log(action.value.mulit_select);
                              var priRel = '-1';
                              if (action.value.select_range == '全部相关')
                                 priRel = '0';
                              else if (action.value.select_range == '我负责的项目')
                                 priRel = '1';
                              else if (action.value.select_range == '我创建的')
                                 priRel = '2';
                              else if (action.value.select_range == '我参与的' || action
                                 .value
                                 .select_range == '我参加的')
                                 priRel = '3';
                              else if (action.value.select_range == '我关注的')
                                 priRel = '4';
                              else if (action.value.select_range == '我下属的项目')
                                 priRel = '5';
                              var param_ = {
                                 item: item,
                                 button_callback: button_callback,
                                 req: req
                              }
                              uni.navigateTo({
                                 url: '../selPrj/index?relation=' + priRel +
                                    '&param=' +
                                    JSON.stringify(param_),
                                 events: {
                                    AddPer(data, param) {
                                       var attr = param.item.fieldId;
                                       $this.head_styledef.form.model[
                                             attr] =
                                          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();
                                       if (callback_eventid) {
                                          var info = {
                                             eventid: callback_eventid,
                                             edtype: "2",
                                             projectid: data[0].ID,
                                             rclsid: "",
                                             robjid: "",
                                             userlogin: "",
                                             clsid: $this.clsId,
                                             objid: "",
                                             attr: param.req,
                                             dataJson: [],
                                          }
                                          $this.DataObjRunCustomEvent(
                                             info);
                                       }
                                    }
                                 }
                              });
                           } else {
                              uni.showModal({
                                 title: $this.translateSys("tip"),
                                 content: $this.translateSys(
                                       "quotation_mark_left") +
                                    action.action_type + $this.translateSys(
                                       "quotation_mark_right") + $this
                                    .translate(
                                       "tip_action_unprocessed"),
                                 showCancel: false,
                                 confirmText: $this.translateSys('close')
                              });
                           }
                           });
                        } else {
                           uni.showModal({
                              title: $this.translateSys("tip"),
                              content: $this.translateSys(
                                    "quotation_mark_left") +
                                 action.action_type + $this
                                 .translateSys(
                                    "quotation_mark_right") + $this
                                 .translate(
                                    "tip_action_unprocessed"),
                              showCancel: false,
                              confirmText: $this.translateSys('close')
                           });
                        }
                     }
                  } else {
                  } catch (ex) {
                     let actionList = (data.action || []).map(a => a.action_type).join(';')
                     let tip = typeof ex == 'string' ? ex : ex.message
                     tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                     uni.showModal({
                        title: $this.translateSys('tip') + "5.2",
                        content: $this.translateSys("quotation_mark_left") +
                           "before_click_button" + $this.translateSys(
                              "quotation_mark_right") + $this.translateSys(
                              "comma") + 'event_id' + eventid,
                        title: this.translateSys('tip'),
                        content: tip,
                        showCancel: false,
                        confirmText: $this.translateSys('close')
                        confirmText: this.translateSys('close')
                     });
                     console.log(ex)
                     return
                  }
               }
            }).catch(ex => {
@@ -1665,8 +1731,10 @@
                     value: obj_attr[a],
                  })),
               };
               let global_attr = Base64.encode(JSON.stringify(this.global_attr))
               let data_json = Base64.encode(JSON.stringify(this.data_json))
               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 dataInfo = {
                  ed_type: "0",
@@ -1685,7 +1753,8 @@
                  data_json,
                  ext_info,
                  compose_info: '',
                  input_param: Base64.encode(JSON.stringify(input_param)),
                  input_param: Base64.encode(JSON.stringify(
                     input_param)),
               };
               await runCustomEvent(dataInfo)
               return true
@@ -1743,7 +1812,8 @@
                  .global_attr))
               let data_json = Base64.encode(JSON.stringify(this
                  .data_json))
               let ext_info = Base64.encode(JSON.stringify(this.ext_info))
               let ext_info = Base64.encode(JSON.stringify(this
                  .ext_info))
               await runCustomEvent({
                  ed_type: 0,
@@ -1762,9 +1832,11 @@
               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.1",
                  title: this.translateSys("tip") +
                     "8.1",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys('close')
@@ -1778,18 +1850,22 @@
               var obj_attr = this.head_styledef.form.model;
               let inputParam = {
                  id: "",
                  attrs: Object.keys(obj_attr).map((a) => ({
                     attr: a,
                     value: obj_attr[a],
                  })),
                  attrs: Object.keys(obj_attr).map((a) =>
                     ({
                        attr: a,
                        value: obj_attr[a],
                     })),
               };
               let input_param = Base64.encode(JSON.stringify(
                  inputParam));
               let global_attr = Base64.encode(JSON.stringify(this
               let global_attr = Base64.encode(JSON.stringify(
                  this
                  .global_attr))
               let data_json = Base64.encode(JSON.stringify(this
               let data_json = Base64.encode(JSON.stringify(
                  this
                  .data_json))
               let ext_info = Base64.encode(JSON.stringify(this
               let ext_info = Base64.encode(JSON.stringify(
                  this
                  .ext_info))
               await runCustomEvent({
@@ -1809,13 +1885,16 @@
               let exStr = JSON.stringify(ex)
               if (exStr == "{}")
                  exStr = ex
               let tip = typeof ex.errMsg == "string" ? ex.errMsg :
               let tip = typeof ex.errMsg == "string" ? ex
                  .errMsg :
                  exStr
               uni.showModal({
                  title: this.translateSys("tip") + "8.2",
                  title: this.translateSys("tip") +
                     "8.2",
                  content: tip,
                  showCancel: false,
                  confirmText: this.translateSys('close')
                  confirmText: this.translateSys(
                     'close')
               });
               return false
            }
@@ -1823,9 +1902,11 @@
         showError(ex) {
            uni.showModal({
               title: this.translateSys('error'),
               content: typeof ex == "string" ? ex : typeof ex.errMsg == "string" ? ex.errMsg : "",
               content: typeof ex == "string" ? ex : typeof ex.errMsg == "string" ? ex
                  .errMsg : "",
               showCancel: false,
               confirmText: this.translateSys('cancel')
               confirmText: this.translateSys(
                  'cancel')
            })
         },
         translate(t) {