cuiqian2004
2025-10-17 49dfdd3bf265db28d38167f34e9aabfdd3e8e5db
pages/modal/form/index.vue
@@ -506,7 +506,16 @@
            }
         },
         onClick(item) {
            this.focusFieldId = item.fieldId
            if (item.name == "Input" || item.name == "InputNumber" || item.name == "Textarea") {
               this.focusFieldId = item.fieldId
            } else if (item.name == "ImageButton") {
               var onClickEvent = item.bind.onClickEvent; //后图标点击回调
               if (!onClickEvent.id) {
                  showInfo(this.translate('icon_click_event_empty'))
                  return;
               }
               this.onChange(onClickEvent);
            }
         },
         ontap(item) { //扫码功能
            // var $ele = e;
@@ -642,7 +651,7 @@
            // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
            this.$refs.popup.open(this.popupType);
            this.dataObjRunCustomEvent_Return(onSuffixClickEvent.id, '', onSuffixClickCallbackEvent.id,
            this.dataObjRunCustomEvent_Return(onSuffixClickEvent.id, onSuffixClickCallbackEvent.id,
               item);
         },
@@ -697,85 +706,7 @@
                  };
                  runCustomEvent(dataInfo).then(result => {
                     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 (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 {
                              var actionList = result.action || []
                              actionList.forEach(item => {
                                 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 (action.action_type ==
                                    'set_dlg_attr_show') {
                                    var data = action.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
                           }
                        }
                     }
                     $this.onFormEventResult(result, "")
                  }).catch(ex => {
                     // console.log(ex);
@@ -786,7 +717,268 @@
               showError(ex, this.translateSys('tip') + "4.2")
            }
         },
         async onFormEventResult(data, button_callback, item) {
            try {
               const $this = this
               var enviroment = {
                  'function': '3000', // 功能点编号
                  cls_id: $this.clsId, // 功能点主数据类标识
                  'button': 'top', // top/bottom
                  button_name: $this.translateSys('add2'),
                  master: {
                     cls_id: $this.clsId, // button=bottom时 master的cls_id
                     //obj_id: ''  // button=bottom时 master的obj_id
                  }
               };
               if (data.ret != 0 && data.ret != 1) {
                  let cls_name = data.event_info?.cls_name
                  let event_name = data.event_info?.event_name
                  tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info
                     .join('\n') : ''
                  if (cls_name && event_name) tip = `执行“${cls_name}”数据类的“${event_name}”脚本时返回错误:${tip}`
                  if (data.ret == 801) showInfo(tip)
                  else showError(`${tip},提示:${data.ret}`, this.translateSys('tip'))
                  this.saving = false
                  return false
               } else {
                  var tip = data.info ? typeof data.info == 'string' ? data.info :
                     data.info.join('\n') : '';
                  tip = tip || data.err_info
                  let time = data.info_time || 0
                  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) {
                     } else if (typeof data.result == 'string') {
                        showInfo(data.result)
                     }
                     try {
                        var enviroment = JSON.stringify(enviroment);
                        var actions = data.action || []
                        for (var i = 0; i < actions.length; i++) {
                           var action = actions[i];
                           console.log(action)
                           var val = action.value;
                           if (action.action_type ==
                              "set_dlg_current_edit_attr"
                           ) {
                              if ($this
                                 .focusOldFieldId ==
                                 action.value) {
                                 $this.setData({
                                    focusFieldId: ""
                                 })
                              } else {
                                 $this.setData({
                                    focusFieldId: $this
                                       .focusOldFieldId
                                 })
                              }
                              $this.$nextTick(() => {
                                 $this.setData({
                                    focusFieldId: action
                                       .value
                                 })
                              });
                           } else if (action.action_type ==
                              "set_dlg_attr") {
                              // value = {"attr":"xxx", "value":"xxx"}
                              var data = action.value;
                              $this.setFormValues(data)
                           } else if (action.action_type ==
                              'set_dlg_attr_show') {
                              var data = action.value;
                              $this.setFormItemVisible(data)
                           } else if (action.action_type == 'set_global_attr') {
                              $this.global_attr = action.value || [];
                           } else 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: ""
                              }
                              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: ""
                                 }
                                 $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 {
                              showInfo($this.translateSys(
                                    "quotation_mark_left") +
                                 action.action_type + $this
                                 .translateSys(
                                    "quotation_mark_right") + $this
                                 .translate(
                                    "tip_action_unprocessed"))
                           }
                        }
                     } catch (ex) {
                        let actionList = (data.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") + "10.1")
            }
         },
         setFormValues(attrs) {
            console.log(attrs)
            const head_styledef = this.head_styledef
@@ -944,6 +1136,8 @@
         async DataObjRunCustomEvent(info, data_attr) {
            var $this = this;
            if (!info.eventid)
               return
            var enviroment = {
               'function': '3000', // 功能点编号
               cls_id: this.clsId, // 功能点主数据类标识
@@ -1003,79 +1197,15 @@
            console.log(dataInfo);
            // return;
            runCustomEvent(dataInfo).then(data => {
               if (data.ret != 0 && data.ret != 1) {
                  let cls_name = data.event_info?.cls_name
                  let event_name = data.event_info?.event_name
                  tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info
                     .join('\n') : ''
                  if (cls_name && event_name) tip = `执行“${cls_name}”数据类的“${event_name}”脚本时返回错误:${tip}`
                  if (data.ret == 801) showInfo(tip)
                  else showError(`${tip},提示:${data.ret}`, this.translateSys('tip'))
                  this.saving = false
                  return false
               } else {
                  var tip = data.info ? typeof data.info == 'string' ? data.info :
                     data.info.join('\n') : '';
                  tip = tip || data.err_info
                  let time = data.info_time || 0
                  if (time)
                     showError(tip, this.translateSys('tip'))
                  else
                     showInfo(tip)
                  if ([0, 2, 3, 4, -1].includes(data.result_type)) {
                     if (data.result_type == 2) {
                        $this.setFormValues(data.result || [])
                     } else if (typeof data.result == 'string') {
                        showInfo(data.result)
                     }
                     try {
                        var actionlist = data.action || []
                        for (var i = 0; i < actionlist.length; i++) {
                           var action = actionlist[i];
                           if (action.action_type == 'set_dlg_attr') {
                              var result = action.value;
                              $this.setFormValues(result)
                           } else if (action.action_type == 'set_dlg_attr_show') {
                              var result = action.value;
                              $this.setFormItemVisible(result)
                           } else if (action.action_type == 'set_global_attr') {
                              $this.global_attr = action.value || [];
                           } 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")
                              });
                           }
                        }
                     } catch (ex) {
                        let actionList = (data.action || []).map(a => a.action_type).join(';')
                        let tip = typeof ex == 'string' ? ex : ex.message
                        tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                        showError(tip, this.translateSys('tip'))
                        return
                     }
                  }
               }
               $this.onFormEventResult(data, "")
            }).catch(ex => {
               // console.log(ex);
               showError(ex, this.translateSys('error') + "3.1")
            });
         },
         dataObjRunCustomEvent_Return(eventid, data_attr, button_callback, item) {
            console.log("dataObjRunCustomEvent_Return", eventid, data_attr, button_callback)
         dataObjRunCustomEvent_Return(eventid, button_callback, item) {
            console.log("dataObjRunCustomEvent_Return", eventid, button_callback)
            const $this = this
            var enviroment = {
               'function': '3000', // 功能点编号
@@ -1132,217 +1262,7 @@
            console.log(dataInfo);
            // return;
            runCustomEvent(dataInfo).then(data => {
               if (data.ret != 0 && data.ret != 1) {
                  let cls_name = data.event_info?.cls_name
                  let event_name = data.event_info?.event_name
                  tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info
                     .join('\n') : ''
                  if (cls_name && event_name) tip = `执行“${cls_name}”数据类的“${event_name}”脚本时返回错误:${tip}`
                  if (data.ret == 801) showInfo(tip)
                  else showError(`${tip},提示:${data.ret}`, this.translateSys('tip'))
                  this.saving = false
                  return false
               } else {
                  var tip = data.info ? typeof data.info == 'string' ? data.info :
                     data.info.join('\n') : '';
                  tip = tip || data.err_info
                  let time = data.info_time || 0
                  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) {
                     } else if (typeof data.result == 'string') {
                        showInfo(data.result)
                     }
                     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 = {
                                 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
                                 }
                                 $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 {
                              showInfo($this.translateSys(
                                    "quotation_mark_left") +
                                 action.action_type + $this
                                 .translateSys(
                                    "quotation_mark_right") + $this
                                 .translate(
                                    "tip_action_unprocessed"))
                           }
                        }
                     } catch (ex) {
                        let actionList = (data.action || []).map(a => a.action_type).join(';')
                        let tip = typeof ex == 'string' ? ex : ex.message
                        tip = `执行脚本返回的${actionList}时出现异常,请检查脚本返回的数据格式是否正确。${tip}`
                        showError(tip, this.translateSys('tip'))
                        return
                     }
                  }
               }
               $this.onFormEventResult(data, button_callback, item)
            }).catch(ex => {
               showError(ex, this.translateSys('tip') + "5.1")