14、cap4表单PC运行态

14、cap4表单PC运行态

1、cap4表单运行态所属项目工程

cap4表单运行态项目工程: cap-front

cap4表单运行态项目文件:cap-front/pc_form

2、cap4表单运行态入口、出口文件

    CAP4中的组织控件数据回填是方法

    pc_form\src\mixins\utils\form-controlWork.js

/**
      组织控件处理方法
      @param {String} 控件类型
      @param {Object} 控件数据
      @param {xxx}
    */
    _organizeNext (type, params, customOrgMess) {
       
    }

3、cap4表单运行态调试方法

1:在cap-front/pc_form项目工程中使用 npm run dev 启动项目

2:在运行态把iframe中的地址copy一下,新开一个浏览器页签,使用localhost/[copy_url]

4、cap4表单运行态暴露给业务的方法

 CAP4表单控件暴露给客开的js在 cap-front\pc_form\static\js\redirectApi.js

CAP4表单的状态可以通过setFieldData方法更改

5、明细表、明细表高级设置

明细表、明细表高级设置(表头有筛选项)是两套不同的代码实现逻辑

明细表入口文件: pc_form\src\components\drawTable\index.vue

明细表高级设置表入口文件:pc_form\src\components\drawListTable\index.vue

提示:运行态明细表、明细表高级设置【新增】【删除】【复制】是通过后端接口返回的数据做渲染

6、CAP4控件-能否编辑客户bug修改方法

1:先看后端接口 form/createOrEdit 接口返回数据中对应的auth 是否有问题?

    1.a:后端的【auth】没有问题

        1.a.1:查看标准代码控件对应的组件是否渲染有问题?cap4控件path:cap-front\pc_form\src\components\widgets

            1.a.1.a:标准代码控件没有问题,定位暴露给客开的setFieldData方法是否被调用?一般情况下,标准组件没有修改控件的编辑的权限,99%的可能是客开通过setFieldData修改。

    1.b:后端返回的【auth】问题

        1.b.1:直接给后端处理。

7、CAP4控件-大写控件未更新修改方法

在8.1sp1之前的版本:

修改文件是 cap-front\pc_form\src\mixins\handlerData.js 文件中的backfillFormControlData 方法

// 自定义控件数据回填
       backfillFormControlData(params, formmainName) {
           const { fillBackControlData } = this;
           const self= this;
           let changeFields = {};
           // 阻止计算
           this.limitCalculate = true;
           // 处理回填的是Array还是Object
           if (Array.isArray(params)) {
                params.forEach((item, index) => {
                    fillBackControlData(item, changeFields, formmainName);
                });
            } else if (Bridge.checkDataType(params, 'Object')) {
                fillBackControlData(params, changeFields, formmainName);
            }
           // 将这句话注释掉,就可以解决
           //if(Object.keys(changeFields).length > 0){ 
               // 全表计算
               setTimeout(() => {
                   // 释放计算锁
                   self.limitCalculate = false;
                    _self.allTableCalculate({},
                   Object.keys(changeFields), formmainName);
                }, 10);
           //}
       },

8、CAP4控件-自定义控件渲染异常修改方法

   cap4中选人自定义控件的文件在: pc_form\src\mixins\loadControl.js

   renderFormComponents 方法

   问题:在form表单中使用中发现配置条件后表单控件出现渲染错误等问题,可以使用以下方法解决:

   fieldCustomV2组件渲染时绑定key,同时给fieldCustomV1组件渲染时绑定key

    <fieldCustomV2
     key={data.Xkey}
     data={data}
     formmainName={formmainName}
     formdata=
     {drawInitData.currentFormData}
     formDetails={getCurrentTableDateils}
     formSave={formSave}
     currentRight={currentRightId}
                                   ></fieldCustomV2>
   <fieldCustomV1
                                    key={data.Xkey}
                                    data={data}
                                    formmainName={formmainName}
                                    formdata={drawInitData.currentFormData}
                                    formDetails={getCurrentTableDateils}
                                    formSave={formSave}
                                    currentRight={currentRightId}
                                    onBackfillFormControlData={
                                       this.BackfillFormControlData
                                    }
                                    onBackfillFormAttachment={
                                       this.backfillFormAttachment
                                    }
                                    onBackfillFormUpdateData={
                                       this.backfillFormUpdateData
                                    }
                               ></fieldCustomV1>

9、cap4表单附件不能预览修改方法

cap4表单预览使用_previewType方法

cap-front\pc_form\src\mixins\utils\form-controlWork.js

 // 查看控件业务关系
       previewType(...args) {
           let [iType, type, params, index, attType] = args;
           if (attType === "img") {
               const datas = [];
                params.attachmentInfo.attachmentInfos.forEach((v, i) => {
                   const t = v.filename.split(".");
                   if (iType.indexOf(t[t.length - 1].toLowerCase()) >= 0) {
                        datas.push({
                            src: ${Config.ctxPath()}/fileUpload.do?method=showRTE&fileId=${v.fileUrl}&createDate=${v.createdate}&type=image&showType=big,
                            originalsrc: ${Config._ctxPath()}/fileUpload.do?method=showRTE&fileId=${v.fileUrl}&createDate=${v.createdate}&type=image
                        });
                       if (i === index) {
                            index = datas.length - 1;
                        }
                    }
                });
                Config.currentWindow.$.touch({
                    id: new Date().getTime(),
                    datas,
                    currentIndex: index || 0
                });
            } else if (attType === "pdf") {
               const currentFile = params.attachmentInfo.attachmentInfos[index];
               // 不支持office在线转换,走以前的逻辑
               if(currentFile.isWpsOnlineEnable === '0'){
                   let url = ${Config._ctxPath()}/fileDownload.do?method=doDownload4Office&type=Pdf&isOpenFile=true&fileId=${currentFile.fileUrl}&createDate=${currentFile.createdate}&filename=${encodeURIComponent(currentFile.filename)}&v=${currentFile.v}${Config.urlSurffix};
                    Config.currentWindow.addattachDialog = null;
                    Config.currentWindow.addattachDialog = Config.currentWindow.$.dialog({
                        title: $.i18n("officeTrans.view.label"),
                        transParams: { parentWin: window },
                        url,
                        width: 1280,
                        height: 800
                    });
                }else{
                   let url = ${Config._ctxPath()}/officeTrans.do?method=view&fileId=${currentFile.fileUrl}&createDate=${currentFile.createdate}&filename=${encodeURIComponent(currentFile.filename)}&v=${currentFile.v}${Config.urlSurffix};
                   this.$refs.myFormIframe.src = url;
                }
            } else {
               const file = params.attachmentInfo.attachmentInfos[index];
               const viewUrl = ${Config._ctxPath()}/officeTrans.do?method=view&fileId=${file.fileUrl}&createDate=${file.createdate}&v=${file.v}&filename=${encodeURI(file.filename)};
               this.$refs.myFormIframe.src = viewUrl;
            }
        },

10、修改公共组件后打包流程

版本V8.1SP2-20220902分支

第一步:进入m_index先执行npm run buildSeeyon

第二步:进入pc_portal_space再执行 npm run buildSeeyon

LICENSED UNDER CC BY-NC-SA 4.0