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