动态参数请求后台服务未发送,如何解决?

新手上路,请多包涵
import { onMounted, reactive, Ref, ref, nextTick, defineComponent } from "vue";
import { EI } from "EIX/ei";
import xrEfForm from "EFX/xrEfForm";
import xrEfPanel from "EFX/xrEfPanel";
import xrEfSearchBox from "EFX/xrEfSearchBox";
import xrEfDialog from "EFX/xrEfDialog";
import EFUtility from "EFX/EFUtility";

import erLayout from "ERX/ErLayout";

import erGrid from "ERX/ErGrid";
import { ER } from "ERX/Er";
//import { EI } from 'ERX/FiUtils';
import { SiUtils } from "ERX/SiUtils";
import { FiUtils } from "ERX/FiUtils";
import EFDialogForm, { EFDialogFormMessage } from "EFX/EFDialogForm";

import { info, log } from "console";
import { emptyProps } from "ant-design-vue/es/empty";
import ErPopFree from "ERX/ErPopFree";
import ErPopQuery from "ERX/ErPopQuery";
import { PopFreeReturnInfo, PopQueryReturnInfo } from "ERX/er-type";

export default defineComponent({
  name: "MMHRX20Q2P2",
  components: {
    xrEfForm,
    xrEfPanel,
    xrEfSearchBox,
    xrEfDialog,
    erGrid,
    erLayout,
    FiUtils,
    EFDialogForm,
  },
  setup: () => {
    // 获取画面的分区信息及设置画面初始化service
    // const formParams = EFFormInfo.getFormParams();
    // const formPartition = formParams.formPartition;
    const initializeService ="mmhr_form_get";
    // const g_formParams = EFFormInfo.getFormParams();
    // 变量定义
    //const formName = "MMHRD20Q2"; 
    //const erFormHelper = reactive(new ErFormHelper());
    const initializeFlag = ref(0);
    const configId_INQ_DETAIL = ref("");
    const configId_INQ = ref("");
    const configId_QUERY = ref("");
    let mm_table_ename: any = "";
    let mm_form_ename: any = "";
    let mm_layout1_ename: any = "";
    let mm_layout2_ename: any = "";
    let mm_gridview_ename: any = "";
    const formPartition = ref("");
    const efFormInfo = ref<{ [key: string]: any }>({});
    const efFormIsReady = ref(false);
    const erFormHelper: ER.FormHelper = new ER.FormHelper() as any;
    let formName2 = ""; // 当前画面名
    //子母画面参数

    // 画面相关数据初始化
    const efFormReady = async (e: any) => {
      console.log("11111", e);
      efFormInfo.value = e.formInfo;
      efFormIsReady.value = true;
      formPartition.value = efFormInfo.value.formPartition;
      console.log("efFormInfo.value.formPartition:",efFormInfo.value.formPartition);
      console.log("efFormInfo.value",efFormInfo.value);
      formName2 = efFormInfo.value.formName;
      //formName2=MMHRX20Q2P2
      //formName2.substring(5, 9)=20Q2
      //console.log("formName2:",formName2);
      console.log("MM_TABLE_ENAME",efFormInfo.value.formParams.MM_TABLE_ENAME);
      console.log("MM_FORM_ENAME",efFormInfo.value.formParams.MM_FORM_ENAME);
      console.log("MM_LAYOUT1_ENAME",efFormInfo.value.formParams.MM_LAYOUT1_ENAME);
      console.log("MM_LAYOUT2_ENAME",efFormInfo.value.formParams.MM_LAYOUT2_ENAME);
      console.log("MM_GRIDVIEW_ENAME",efFormInfo.value.formParams.MM_GRIDVIEW_ENAME);
      if (efFormInfo.value.formParams?.MM_TABLE_ENAME) {
        mm_table_ename = efFormInfo.value.formParams["MM_TABLE_ENAME"];//
      }
      console.log("mm_table_ename",mm_table_ename);

      if (efFormInfo.value.formParams?.MM_FORM_ENAME) {
        mm_form_ename = efFormInfo.value.formParams["MM_FORM_ENAME"];//
      }
       console.log("mm_form_ename",mm_form_ename);

      if (efFormInfo.value.formParams?.MM_LAYOUT1_ENAME) {
        mm_layout1_ename = efFormInfo.value.formParams["MM_LAYOUT1_ENAME"];//
      }
       console.log("mm_layout1_ename",mm_layout1_ename);

      if (efFormInfo.value.formParams?.MM_LAYOUT2_ENAME) {
        mm_layout2_ename = efFormInfo.value.formParams["MM_LAYOUT2_ENAME"];//
      }
       console.log("mm_layout2_ename",mm_layout2_ename); 

      if (efFormInfo.value.formParams?.MM_GRIDVIEW_ENAME) {
        mm_gridview_ename = efFormInfo.value.formParams["MM_GRIDVIEW_ENAME"];//
      }
      console.log("mm_gridview_ename",mm_gridview_ename); 

      configId_INQ_DETAIL.value =mm_layout2_ename;
      configId_INQ.value = mm_gridview_ename;
      configId_QUERY.value =mm_layout1_ename;
      
      //configId_INQ_DETAIL.value ="MMHRD" + formName2.substring(5, 9) + "_INQ_DETAIL";
      //configId_INQ.value = "MMHRD" + formName2.substring(5, 9) + "_INQ";
      //configId_QUERY.value = "MMHRD" + formName2.substring(5, 9) + "_QUERY";
      //console.log("configId_INQ_DETAIL.value",configId_INQ_DETAIL.value);
      console.log("configId_INQ.value",configId_INQ.value);
      
     
      // 初始化低代码工具类
      Initialize();
      // console.log('configId_INQ_DETAIL',configId_INQ_DETAIL.value,configId_INQ.value,configId_QUERY.value);
    };

    const erGrid1Ready = () => {
      erFormHelper.setGridEditable(configId_INQ.value, false);
      
    };
    // 画面相关数据初始化
    const Initialize = async () => {
      const initFormParas = {
        MM_TABLE_ENAME: mm_table_ename,
        MM_FORM_ENAME: mm_form_ename,
        MM_LAYOUT1_ENAME:mm_layout1_ename,
        MM_LAYOUT2_ENAME:mm_layout2_ename,
        MM_GRIDVIEW_ENAME:mm_gridview_ename,
      };
      const initialResult = await erFormHelper.Initialize(
        formPartition.value,
         mm_form_ename,
        "",
        initializeService,
        initFormParas
      );
      console.log("111", initialResult);
      if (initialResult.flag >= 0) {
        // 画面工具类初始化成功后将画面渲染条件设置为1
        initializeFlag.value = 1;
        //  Query();
        // 回调函数获取控件信息及设置定义事件等操作
        nextTick(() => {
          // 获取画面上的主要控件信息
        });
      } else {
        erFormHelper.messageError(
          "ErFormHelper initialize faild, error msg is [" +
            initialResult.msg +
            "]!"
        );
      }
    };

    onMounted(() => {
      //initializePage();
    });

    const setgridToolBar = (gridView: string, bool: boolean) => {
        erFormHelper.setGridToolbarVisible(gridView, {
          addrow: bool,
          copyrow: bool,
          delete: bool,
          cancel: bool,
        });
      };
const queryGrid1=async() =>{
     const eiblock = erFormHelper.getAllControlValueAsEiBlock(
        configId_QUERY.value
      );
      console.log("eiblock:",eiblock);//MAT_NO材料号
      if (eiblock.containsColumn("MAT_NO")) {
        eiblock.data[0]["MAT_NO"] = eiblock.data[0]["MAT_NO"]
          ?.toString()
          .trim()
          .replace("\r\n", "','") as any;
        eiblock.data[0]["MAT_NO"] = eiblock.data[0]["MAT_NO"]
          ?.toString()
          .trim()
          .replace("\n\n", "','") as any;
        eiblock.data[0]["MAT_NO"] = eiblock.data[0]["MAT_NO"]
          ?.toString()
          .trim()
          .replace("\n", "','") as any;
        eiblock.data[0]["MAT_NO"] = eiblock.data[0]["MAT_NO"]
          ?.toString()
          .trim()
          .replace("\r", "") as any;
        eiblock.data[0]["MAT_NO"] = eiblock.data[0]["MAT_NO"]
          ?.toString()
          .trim()
          .replace(" ", "") as any;
      }
      //UNIT_CODE:机组
      if (typeof eiblock.data[0]["UNIT_CODE"] !== "undefined") {
        if (eiblock.data[0]["UNIT_CODE"]?.toString().trim() === "") {
          erFormHelper.messageError("请选择机组");
          return;
        }
      }
      eiblock.addColumn("MM_TABLE_ENAME", mm_table_ename);
      console.log("eiblock.addColumn:",eiblock)
      const inInfo = new EI.EIInfo();
      inInfo.addBlock(eiblock, "AGTable");
      console.log("inInfo包括",inInfo);
      console.log("configId_INQ.value:", typeof configId_INQ.value, configId_INQ.value); 
      //MMHRD20Q2_INQ
      erFormHelper.setGridServerPagingService(
       configId_INQ.value,
        inInfo,
        "mmhr20q1f2_inq"
      );
      
      console.log("11");
    };
    const F2_DO = async (e: any) => {
      // erFormHelper.getGridServerPageData(configId_INQ.value);
     queryGrid1();
    };
 const F3_DO = async (e: any) => {
        erFormHelper.stopGridEditing([configId_INQ.value], async () => {
            const eiInfo = new EI.EIInfo();
            const created1 = erFormHelper.getGridRowsAsBlock(configId_INQ.value, "add");
        
            if (!created1 || created1.data.length === 0) {
              erFormHelper.messageInfo("没有新增的数据");
              return;
            }
        
            eiInfo.addBlock(created1, "ADD1");
            //需添加服务
            const outInfo = await erFormHelper.callService("", eiInfo, true, true);
            if (outInfo.sys.status < 0) {
              erFormHelper.messageError("新增失败:" + outInfo.sys.msg);
            } else {
              erFormHelper.messageInfo(outInfo.sys.msg || "新增成功");
              queryGrid1();
              setgridToolBar(configId_INQ.value, false);
              erFormHelper.setGridEditable(configId_INQ.value, false);
            }
          });
      };
    
      const F3_PRE_DO = async (e: any) => {
        //设置底部工具栏可见
        setgridToolBar(configId_INQ.value, true);
        //设置列可编辑
        erFormHelper.setGridEditable(configId_INQ.value, true);
      };
      const F3_CANCEL = async (e: any) => {
        //设置底部工具栏不可见
        setgridToolBar(configId_INQ.value, false);
         //设置列可编辑
        erFormHelper.setGridEditable(configId_INQ.value, false);
      };
        
      const F4_DO = async (e: any) => {
        erFormHelper.stopGridEditing([configId_INQ.value], async () => {
            const eiInfo = new EI.EIInfo();
            const deleted1 = erFormHelper.getGridRowsAsBlock(configId_INQ.value, "delete");
            if (!deleted1 || deleted1.data.length === 0) {
              erFormHelper.messageInfo("没有删除的数据");
              return;
            }
            eiInfo.addBlock(deleted1, "DEL1");
            const outInfo = await erFormHelper.callService("", eiInfo, true, true);//需添加服务
            if (outInfo.sys.status < 0) {
              erFormHelper.messageError("删除失败:" + outInfo.sys.msg);
            } else {
              erFormHelper.messageInfo(outInfo.sys.msg || "删除成功");
              queryGrid1();
              setgridToolBar(configId_INQ.value, false);
              erFormHelper.setGridEditable(configId_INQ.value, false);
            }
          })  
      };
      const F4_PRE_DO = async (e: any) => {
        setgridToolBar(configId_INQ.value, true);
        erFormHelper.setGridEditable(configId_INQ.value, true);
         
      };
      const F4_CANCEL = async (e: any) => {
        setgridToolBar(configId_INQ.value, false);
        erFormHelper.setGridEditable(configId_INQ.value, false);
      };
      const F5_DO = async (e: any) => {
         erFormHelper.stopGridEditing([configId_INQ.value], async () => {
            const eiInfo = new EI.EIInfo();
            const updated1 = erFormHelper.getGridRowsAsBlock(configId_INQ.value, "modify");
            if (!updated1 || updated1.data.length === 0) {
              erFormHelper.messageInfo("没有修改的数据");
              return;
            }
            eiInfo.addBlock(updated1, "UPD1");
            const outInfo = await erFormHelper.callService("", eiInfo, true, true);//需添加修改服务
            if (outInfo.sys.status < 0) {
              erFormHelper.messageError("修改失败:" + outInfo.sys.msg);
            } else {
              erFormHelper.messageInfo(outInfo.sys.msg || "修改成功");
              queryGrid1();
              setgridToolBar(configId_INQ.value, false);
              erFormHelper.setGridEditable(configId_INQ.value, false);
            }
          });
      };
      const F5_PRE_DO = async (e: any) => {
        setgridToolBar(configId_INQ.value, true);
        erFormHelper.setGridEditable(configId_INQ.value, true);
      };
      const F5_CANCEL = async (e: any) => {
        setgridToolBar(configId_INQ.value, false);
        erFormHelper.setGridEditable(configId_INQ.value, false);
      };


      const inqIdxFocusChanged = async (e: any) => {
        if (e && e.rowChanged) {
          console.log("e:",e); 
          console.log("e.data:",e.data); 
          if (e.data) {
             const prodSeqNo = e.data.PROD_SEQ_NO;
             console.log("prodSeqNo",prodSeqNo);
             if (!prodSeqNo || prodSeqNo.toString().trim() === "") {
            // 说明是新增未提交的行,跳过查询
            erFormHelper.clearLayoutData(configId_INQ_DETAIL.value);
            return;
            }

            const eiBlock1 = erFormHelper.addJsonToEiBlock(
              JSON.parse(JSON.stringify(e.data))
            );
            const eiBlock = new EI.EiBlock();
            eiBlock.pushData(
              {
                MM_TABLE_ENAME: mm_table_ename,
                PROD_SEQ_NO: eiBlock1.data[0]["PROD_SEQ_NO"],//生产流水号
              },
              true
            );

            const eiInfo = new EI.EIInfo();
            eiInfo.addBlock(eiBlock);
            console.log("eiInfo=",eiInfo);
            const outInfo = await erFormHelper.callService(
              "mmhr20q1a1_inq",
              eiInfo,
              true,
              true,
              true,
              formPartition.value
            );
            if (outInfo.sys.status < 0) {
              erFormHelper.messageError(
                "实绩信息的焦点行查询错误:" + outInfo.sys.msg
              );
              return;
            }
             
            if (outInfo.getBlock("Table0").data.length > 0) {
              let list = {};
              list = outInfo.getBlock("Table0").data[0];
              console.log("list",list);
              erFormHelper.setControlValueEx(configId_INQ_DETAIL.value, list);
            } else {
              erFormHelper.clearLayoutData(configId_INQ_DETAIL.value);
            }
          } else {
            erFormHelper.clearLayoutData(configId_INQ_DETAIL.value);
          }
        }
      };
    return {
      erFormHelper,
      initializeFlag,
      F2_DO,
      F3_DO,
      F3_PRE_DO,
      F3_CANCEL,
      F4_DO,
      F4_PRE_DO,
      F4_CANCEL,
      F5_DO,
      F5_PRE_DO,
      F5_CANCEL,
      inqIdxFocusChanged,
      configId_QUERY,
      configId_INQ,
      configId_INQ_DETAIL,
      efFormReady,
      erGrid1Ready,
    };
  },
});

在画面点击按钮F2(查询)请求服务发送不到后台,之前用写死的方法(configId_INQ.value换成"MMHRD20Q2_INQ")是可以发送请求服务的,并返回查询的数据,就是下面这个服务:

    erFormHelper.setGridServerPagingService(
       configId_INQ.value,
        inInfo,
        "mmhr20q1f2_inq"
      );

image.png

我用日志打印出动态传入的参数,发现类型和值都是和写死的相同的,不知道为什么换一下就不行了(纯新手,请求大神帮忙指点,代码是根据别人的模仿的)

阅读 540
1 个回答

configId_INQ.value 的值是通过异步操作(如 efFormReady)赋值的,可能在调用 queryGrid1() 时还未完成初始化。

确保 queryGrid1() 调用前 configId_INQ.value 已赋值。

在 efFormReady 中初始化完成后才允许按钮操作:

const isReady = ref(false);
const efFormReady = async (e: any) => {
    // ...其他初始化代码
    isReady.value = true; // 初始化完成标志
};
const F2_DO = async () => {
    if (!isReady.value) {
        erFormHelper.messageError("画面未初始化完成,请稍后重试");
        return;
    }
    await queryGrid1();
};
推荐问题