commit 48f0c21c62e36b20c15e9795e75e58ce9e2f4634 Author: wintsa Date: Thu Jul 11 10:07:22 2024 +0800 first commit diff --git a/index.js b/index.js new file mode 100644 index 0000000..5e347e0 --- /dev/null +++ b/index.js @@ -0,0 +1,58 @@ +const { WeaUpload } = ecCom; + +class MinXiUDowm extends React.Component { + constructor(props) { + super(props); + this.state = { + ...props, + }; + } + componentDidMount() { + let datas=this.state.datas.length>0 ?[this.state.datas[`${this.props.rowIndex}`]]:[{}] + console.log(this.state.datas) + let value=this.state.datas.length>0 ?this.state.datas[this.props.rowIndex]['fileid'] :'' + let ids=[value] + let onFileNameEdit=(newName, data)=> { + let datas=this.state.datas[0] + datas.filename=newName + datas=[datas] + this.setState({datas:datas}) + } + let onDelete=(list,lists)=> { + let a=this.props.info[0].detailId + let b=this.props.rowIndex + WfForm.delDetailRow(`${a}`, `${b}`); + } + const base=WfForm.getBaseInfo() + + if(base.nodeid!=this.props.info[0].nodeid){ + datas[0].showDelete=false + } + this.setState({datas:datas,value:value,onFileNameEdit:onFileNameEdit,onDelete:onDelete}) + } + reName = async (id,name) => { + let options = { + url: '/api/doc/acc/rename', + method: 'POST', + params: { + imagefileid: id, + imagefilename:name + }, + }; + let info = await window.weaJs.callApi(options); + } + render() { + const newProps = { + ...this.state, + }; + return ( +
+ +
+ ) + } +} + +//发布模块 +ecodeSDK.setCom('${appId}', 'MinXiUDowm', MinXiUDowm); + diff --git a/register.js b/register.js new file mode 100644 index 0000000..a9370ad --- /dev/null +++ b/register.js @@ -0,0 +1,262 @@ +let tmpArr = null +let flagNum = 0 +// 目标对象 +const target = {}; +// 代理对象 +const handler = { + get: function (target, property, receiver) { + return Reflect.get(target, property, receiver); + }, + set: function (target, property, value) { + const oldValue = target[property]; + const baseInfo = WfForm.getBaseInfo(); + + if (baseInfo.requestid && !oldValue) { + target[property] = value; + return false + } + if (!_.isEqual(oldValue, value)) { + const found = config.find(item => item.workflowId === baseInfo.workflowid && item.mainfjid === value[0].localFieId); + if (!found) return + + _.difference(_.map(value, 'fileid'), _.map(oldValue, 'fileid'), tmpArr).forEach((e, i) => { + WfForm.addDetailRow(property, { [found.fjld]: { value: e }, [found.fjgs]: { value: value[i].fileExtendName } }) + + + }) + + target[property] = value; + } + } +}; +// 创建代理 +let proxy = new Proxy(target, handler); + + +const config = [ + { + workflowId: 93026, //资料签收 + detailId: 'detail_2', + fjld: "field114944", //明细表附件id 单行文本字段 + mainfjid: "field114963",//主表附件字段 + mxfjid: "field114942",//明细表附件字段 + nodeid: "135541", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: "field114948"//附件后缀 + }, { + workflowId: 93526, //项目图片 + detailId: 'detail_1', + fjld: "field114498", //明细表附件id 单行文本字段 + mainfjid: "field114521",//主表附件字段 + mxfjid: "field114500",//明细表附件字段 + nodeid: "136041", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: "field114497"//附件后缀 + } + , { + workflowId: 93527, //踏勘 + detailId: 'detail_1', + fjld: "field114473", //明细表附件id 单行文本字段 + mainfjid: "field114477",//主表附件字段 + mxfjid: "field114644",//明细表附件字段 + nodeid: "136044", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: "field114470"//附件后缀 + }, + { + workflowId: 108027, //日常费用报销 + detailId: 'detail_4', + fjld: "field179935", //明细表附件id 单行文本字段 + mainfjid: "field179944",//主表附件字段 + mxfjid: "field179872",//明细表附件字段 + nodeid: "153048", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + } + , + { + workflowId: 108027, //日常费用报销 + detailId: 'detail_1', + fjld: "field179933", //明细表附件id 单行文本字段 + mainfjid: "field179945",//主表附件字段 + mxfjid: "field179871",//明细表附件字段 + nodeid: "153048", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + } + , + { + workflowId: 108027, //日常费用报销 + detailId: 'detail_2', + fjld: "field179934", //明细表附件id 单行文本字段 + mainfjid: "field179946",//主表附件字段 + mxfjid: "field179876",//明细表附件字段 + nodeid: "153048", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + } + , + { + workflowId: 109026, //管理经费报销 + detailId: 'detail_4', + fjld: "field180615", //明细表附件id 单行文本字段 + mainfjid: "field180616",//主表附件字段 + mxfjid: "field180614",//明细表附件字段 + nodeid: "153548", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + }, + { + workflowId: 109026, //管理经费报销 + detailId: 'detail_1', + fjld: "field180605", //明细表附件id 单行文本字段 + mainfjid: "field180617",//主表附件字段 + mxfjid: "field180603",//明细表附件字段 + nodeid: "153548", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + }, { + workflowId: 109026, //管理经费报销 + detailId: 'detail_2', + fjld: "field180611", //明细表附件id 单行文本字段 + mainfjid: "field180618",//主表附件字段 + mxfjid: "field180609",//明细表附件字段 + nodeid: "153548", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + }, { + workflowId: 109028, //管理经费报销 + detailId: 'detail_4', + fjld: "field180959", //明细表附件id 单行文本字段 + mainfjid: "field181053",//主表附件字段 + mxfjid: "field180957",//明细表附件字段 + nodeid: "153559", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + }, { + workflowId: 109028, //管理经费报销 + detailId: 'detail_1', + fjld: "field180914", //明细表附件id 单行文本字段 + mainfjid: "field181054",//主表附件字段 + mxfjid: "field180912",//明细表附件字段 + nodeid: "153559", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + }, { + workflowId: 109028, //管理经费报销 + detailId: 'detail_2', + fjld: "field180937", //明细表附件id 单行文本字段 + mainfjid: "field181055",//主表附件字段 + mxfjid: "field180935",//明细表附件字段 + nodeid: "153559", //使用WfForm.getBaseInfo()查看,nodeid为节点一的id,节点二id不允许审批删除附件 + fjgs: ""//附件后缀 + } + +] +let firstNum = {} +ecodeSDK.overwritePropsFnQueueMapSet('WeaUpload', { + fn: (newProps) => { + if (!window.location.hash.startsWith('#/main/workflow/req')) return; + if (newProps.fuxie) return; // 控制组件只复写一次 + if (!WfForm) return; + + const baseInfo = WfForm.getBaseInfo(); + const found = config.find(item => item.workflowId === baseInfo.workflowid && item.mainfjid === newProps.fieldName); + + if (!found) return + const suffixes = config.map(obj => obj.mainfjid.match(/\d+$/)[0]); + if (!suffixes.includes(newProps.fieldid)) return; + // if (newProps.datas.length > 0) { + + newProps.datas.forEach(e => e['localFieId'] = newProps.fieldName) + proxy[found.detailId] = newProps.datas + + + // } + let onUploading = newProps.onUploading + newProps.onUploading = (string, list, number) => { + if (string == 'uploading') { + window.ecCom.WeaLoadingGlobal.start({ + tip: "上传中,请稍后..." // 自定义tip文字 + }) + } if (string == 'uploaded') { + window.ecCom.WeaLoadingGlobal.end(); // 停止遮罩loading + window.ecCom.WeaLoadingGlobal.destroy(); // 销毁遮罩loading + } + if (string == 'error') { + window.ecCom.WeaLoadingGlobal.end(); // 停止遮罩loading + WfForm.showMessage(`上传失败`, 2, 30); + } + } + newProps.className = 'mainfj' + + return newProps + }, + order: 1, //排序字段,如果存在同一个页面复写了同一个组件,控制顺序时使用 + desc: '资料签收附件显示' +}); +const MinXiUDowm = (props, Com) => { //此函数不允许写在复写方法内,会导致实例重复创建,也就是dimout不断执行 + const acParams = { + appId: '${appId}', //appId会自动识别 + name: 'MinXiUDowm', //模块名称 + isPage: false, //是否是路由页面 + noCss: true, //是否禁止单独加载css,通常为了减少css数量,css默认前置加载 + props, + } + const NewCom = Com; + return window.ecCom ? ecodeSDK.getAsyncCom(acParams) : (); +} +ecodeSDK.overwriteClassFnQueueMapSet('WeaUpload', { //组件名 + fn: (Com, newProps) => { + //进行位置判断 + if (!window.location.hash.startsWith('#/main/workflow/req')) return; + const baseInfo = WfForm.getBaseInfo(); + + const found = config.find(item => item.workflowId === baseInfo.workflowid && item.mainfjid === newProps.fieldName); + console.log(found,'1') + + if (!found) return + const suffixes = config.map(obj => obj.mxfjid.match(/\d+$/)[0]); + console.log(suffixes) + console.log(newProps.fieldid) + + if (!suffixes.includes(newProps.fieldid)) return; + + newProps.datas.forEach(e => e['localFieId'] = newProps.fieldName) + newProps.datas = proxy[found.detailId] + newProps.info = [found] + newProps.editable = true + newProps.viewAttr = 2 + newProps.showUpload = false + newProps.showUploader = true + newProps.maxUploadSize = 0 + newProps.showUploadTime = true + newProps.className = 'detailFj' + return { + com: MinXiUDowm.bind(this, newProps, Com), + props: newProps + }; + }, + order: 10, //排序字段,如果存在同一个页面复写了同一个组件,控制顺序时使用 + desc: '资料签收附件显示' +}); +let fuxie = false //不允许重复触发 +ecodeSDK.overwritePropsFnQueueMapSet('WeaReqTop', { //提交时把明细删除的附件在主表删除 + fn: (newProps) => { + if (!window.location.hash.startsWith('#/main/workflow/req')) return; + const baseInfo = WfForm.getBaseInfo(); + const found = config.find(item => item.workflowId === baseInfo.workflowid); + if (!found) return + if (!WfForm) return; + if (newProps.fuxie) return; + if (fuxie) return; + let num = found.detailId.match(/\d+$/)[0]; + let del = [] + WfForm.registerCheckEvent(WfForm.OPER_DELROW + num, function (callback) { + del = _.concat(del, WfForm.getDetailCheckedRowIndexStr(found.detailId).split(',')) + callback(); + }); + WfForm.registerCheckEvent(WfForm.OPER_SAVE + "," + WfForm.OPER_SUBMIT + "," + WfForm.OPER_SUBMITCONFIRM, function (callback) { + let oldValue = WfForm.getFieldValue(found.mainfjid).split(',') + const filteredArr = oldValue.filter((item, index) => { return !del.includes(String(index)) }); + WfForm.changeFieldValue(found.mainfjid, { value: filteredArr.join() }); + //... 执行自定义逻辑 + callback(); + }); + fuxie = true + newProps.fuxie = true + + return newProps; + }, + order: 1, //排序字段,如果存在同一个页面复写了同一个组件,控制顺序时使用 + desc: '设置提交或者保存时修改附件主表数量' +});