# 1 表单设计态
# 工程:
cap-front/form-design
# 表单设计:
form-design\src,启动命令是npm run dev ,打包命令npm run buildSeeyon
# 操作设置:
form-design\others\src\authDesign,启动命令是npm run devo ,打包命令npm run buildo
# 业务列表设置:
cap-core
# 运行调试:
(1)安装依赖(在form-design层级运行npm i)
(2)代理服务器
cap-front\form-design\bin\common-dev.js
target:代理目标地址
Cookie:将登录后的代理地址的Cookie复制替换
然后运行
运行后,将代理地址的设计器页面url index.html后的复制下来,放到运行本地工程的地址后就可以调试了
# 表单设计 (ip)/index.html?
# 操作设置 (ip)/authDesign.html?
# 2、表单运行态:
# 工程:
cap-front
# 项目文件:
cap-front/pc_form
# 调试方法
1、在cap-front/pc_form项目工程中使用 npm run dev 启动项目
2、在运行态把iframe中的地址copy一下,新开一个浏览器页签,使用localhost/[copy_url]
# 暴露给业务的方法
CAP4表单控件暴露给客开的js在 cap-front\pc_form\static\js\redirectApi.js
CAP4表单的状态可以通过setFieldData方法更改
# 明细表、明细表高级设置
明细表、明细表高级设置(表头有筛选项)是两套不同的代码实现逻辑
明细表入口文件: pc_form\src\components\drawTable\index.vue
明细表高级设置表入口文件:pc_form\src\components\drawListTable\index.vue
提示:运行态明细表、明细表高级设置【新增】【删除】【复制】是通过后端接口返回的数据做渲染
# CAP4控件-能否编辑
1、先看后端接口 form/createOrEdit 接口返回数据中对应的auth 是否有问题? 2、后端的【auth】有问题,让后端处理,如果没有问题继续看第3点 3、查看标准代码控件对应的组件是否渲染有问题?cap4控件path:cap-front\pc_form\src\components\widgets 4、标准代码控件没有问题,定位暴露给客开的setFieldData方法是否被调用?一般情况下,标准组件没有修改控件的编辑的权限,99%的可能是客开通过setFieldData修改。
# 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);
//}
},
# 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>
# 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;
}
},
# 修改公共组件后打包流程
第一步:进入m_index先执行npm run buildSeeyon
第二步:进入pc_portal_space再执行 npm run buildSeeyon