From 48f0c21c62e36b20c15e9795e75e58ce9e2f4634 Mon Sep 17 00:00:00 2001
From: wintsa <wintsa123@gmail.com>
Date: Thu, 11 Jul 2024 10:07:22 +0800
Subject: [PATCH] first commit

---
 index.js    |  58 ++++++++++++
 register.js | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 320 insertions(+)
 create mode 100644 index.js
 create mode 100644 register.js

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 (
+      <div style={{ width: '100%' }}>
+        <WeaUpload {...newProps} datas={newProps.datas}  _noOverwrite={true} />
+      </div>
+    )
+  }
+}
+
+//发布模块
+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) : (<NewCom { ...props } />);
+}
+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: '设置提交或者保存时修改附件主表数量'
+});