{"remainingRequest":"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/thread-loader/dist/cjs.js!/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/babel-loader/lib/index.js!/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/cache-loader/dist/cjs.js??ref--0-0!/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/vue-loader/lib/index.js??vue-loader-options!/data/jenkins/workspace/test-v5inweb-5.x-vue/src/components/form_normalform.vue?vue&type=script&lang=js&","dependencies":[{"path":"/data/jenkins/workspace/test-v5inweb-5.x-vue/src/components/form_normalform.vue","mtime":1739760944315},{"path":"/data/jenkins/workspace/test-v5inweb-5.x-vue/babel.config.js","mtime":1739760943855},{"path":"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/babel-loader/lib/index.js","mtime":315532800000},{"path":"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/vue-loader/lib/index.js","mtime":1655715099000}],"contextDependencies":[],"result":["import \"core-js/modules/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.regexp.search\";\nimport \"core-js/modules/es7.object.values\";\nimport \"core-js/modules/es6.object.keys\";\nimport _typeof from \"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/@babel/runtime-corejs2/helpers/esm/typeof.js\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.function.name\";\nimport _defineProperty from \"/data/jenkins/workspace/test-v5inweb-5.x-vue/node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/web.dom.iterable\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport Constant from \"@/Constant.js\";\nimport API from \"@/api.js\";\nimport activity from \"@/components/activity.vue\";\nimport approvers from \"@/components/approvers.vue\";\nimport form_flowpanel from \"@/components/form_flowpanel.vue\";\nimport form_new_flowpanel from \"@/components/form_new_flowpanel.vue\";\nimport form_print from \"@/components/form_print\";\nimport flowDialog from \"@/components/flow_dialog.vue\";\n// import { Loading } from 'element-ui';\nimport form_selectApprover_flowpanel from \"@/components/form_selectApprover_flowpanel.vue\";\nimport form_termination_flowpanel from \"@/components/form_termination_flowpanel.vue\";\nimport Watermark from \"@/assets/js/watermark\"; //路径不要写错\nimport form_sendMailOrSms_flowpanel from \"@/components/form_sendMailOrSms_flowpanel.vue\";\nimport form_template from \"@/expandedComponents/form_template.vue\";\nimport common_linkcontent from \"@/components/common_linkcontent.vue\";\nimport form_signature from \"@/expandedComponents/form_signature.vue\";\nimport form_stamp from \"@/expandedComponents/form_stamp.vue\";\nimport form_signlist from \"@/expandedComponents/form_sign_list.vue\";\n\n//import { constants } from 'crypto';\nimport authority from \"@/components/authority.vue\";\nimport Signature from \"@/assets/kinggrid/signature.all.min.js\";\nimport escapeHTML from \"@/assets/js/escapeHTML.js\";\nexport default {\n inject: [\"refreshForm\", \"addTab\", \"openNewpage\"],\n name: \"form-normalform\",\n props: [\"openParams\", \"callback\", \"originalFormDocid\", \"emptyParams\", \"openType\" //表单打开类型,277弹出层\n ],\n provide: function provide() {\n return {\n setListViewDocIds: this.setListViewDocIds,\n findField: this.findField,\n buildFormData: this.buildFormData\n };\n },\n components: {\n activity: activity,\n approvers: approvers,\n form_flowpanel: form_flowpanel,\n form_new_flowpanel: form_new_flowpanel,\n form_print: form_print,\n flowDialog: flowDialog,\n form_selectApprover_flowpanel: form_selectApprover_flowpanel,\n form_termination_flowpanel: form_termination_flowpanel,\n authority: authority,\n form_sendMailOrSms_flowpanel: form_sendMailOrSms_flowpanel,\n form_template: form_template,\n common_linkcontent: common_linkcontent,\n form_signature: form_signature,\n form_stamp: form_stamp,\n form_signlist: form_signlist\n },\n // created\n created: function created() {\n var op = this.openParams;\n this.initForm({\n appId: op.appId,\n formId: op.actionContent,\n //docId: this.openParams.docId (9/03改)\n docId: op._select\n });\n this.initSigns();\n },\n data: function data() {\n return {\n isBlockClick: false,\n // 阻止按钮点击\n formTableWrapHeight: \"\",\n formdata: {},\n printData: \"\",\n isActive: false,\n hidden: true,\n inputId: \"\",\n inputVal: \"\",\n inputCurrentInfo: \"\",\n inputCurrentVal: \"\",\n copyFormData: \"\",\n dialogVisible: false,\n isRouterAlive: true,\n showDialog: \"\",\n divId: \"\",\n loading: true,\n hackReset: true,\n parameterObj: {},\n //加签主办或者协办新添加的数据,由子组件form_selectHostOrCohost得到\n printParams: {},\n flowDialogVisible: false,\n flowProcessAct: {},\n //流程处理按钮\n approverVisible: false,\n approverName: \"\",\n isFreeFlow: \"\",\n //判断是否是自由流程\n nextUserId: \"\",\n //自由流程的下一节点人\n submitTo: {},\n isAppentCirculator: \"\",\n approversObj: {},\n //指定审批人参数\n saveApproverStatus: \"\",\n approverNumType: \"\",\n //判断指定审批人的用户选择框是单选还是多选。\n terminationVisible: false,\n //终止流程弹出窗\n sendMailVisible: false,\n //通过邮件或者手机短信分享弹窗\n groupNum: \"\",\n subFlowToApprover: [],\n //提交面板的子流程-并行流程数据保存到form_selectApprover_flowpanel\n isSubFlow: \"\",\n subFlowApproverData: \"\",\n //子流程选择的数据提交到流程面板\n subFlowGroup: \"\",\n //子流程-并行流程数据保存到流程面板\n subFlowGroupNum: \"\",\n newHostOrCohostList: [],\n //加签主办或者协办新添加的数据,由子组件form_selectHostOrCohost得到\n formTemplateDocid: \"\",\n cCname: \"\",\n //抄送人姓名\n allowEditApprover: false,\n popupLayerType: \"\",\n //弹出层打开视图然后新建或者打开视图时,判断打开类型\n jumpParams: \"\",\n //跳转按钮参数\n jumpParamsForm: \"\",\n //弹出层打开的视图进入表单的参数\n jumpPopup: false,\n //跳转按钮弹出窗\n isJumpForm: \"\",\n //跳转按钮参数\n isJumpView: \"\",\n //跳转按钮参数\n isExternalLink: \"\",\n //判断是否是外部链接\n customMessagePopup: false,\n //按钮,自定义发送消息的弹窗\n newOpenParams: \"\",\n oldBuildFormData: \"\",\n //数据保存后后台返回的表单数据,用户新建带旧数据等\n commDialog: {\n //弹出窗样选择\n userDialog: \"user-dialog\"\n },\n processHostingList: [],\n //加签协办和加签主办列表\n isClickGoBackBtn: false,\n //判断返回按钮是否点击过\n isShowHandSign: true,\n //是否显示手签按钮(补签和点评时不需要手签)\n isShowKeyboard: true,\n //流程启动时不需要显示输入意见\n formSignatureData: {\n showFormSignature: false,\n list: []\n },\n currentCustomSign: {\n data: \"\",\n showSign: false\n },\n //当前盖章的数据(非金格签章)\n subSelects: [],\n //包含元素或者tab页,获取docIds\n isShowFormActivity: true,\n //是否显示表单按钮\n isDialogOpenExternalLink: false,\n //弹窗打开外链判断是否刷新\n jumpPopupStyle: {},\n //跳转按钮或者计算脚本打开弹窗时设置弹窗宽高\n screenHeight: document.documentElement.clientHeight - 120 + \"px\",\n haveViewGridview: false,\n //表单有网格视图\n timeIds: [],\n handleIncludeControlBugImpl: null\n };\n },\n computed: {\n template: function template() {\n // debugger\n var data = this.formdata;\n if (data && data.fields) {\n // input 编辑状态下需要补样式\n data.fields.map(function (item) {\n if (!item.customStyle && data.style && data.style.content) {\n // 编辑时样式无效\n // item.customStyle = {\n // content: data.style.content ? data.style.content : ''\n // }\n } else if (!item.customStyle && item.type == \"tabfield\" && item.tabs && item.tabs.length > 0) {\n // 选项卡样式不生效\n // item.tabs.forEach(tab => {\n // if(tab.fields && tab.fields.length > 0) {\n // tab.fields.map(item2 => {\n // if(!item2.customStyle && tab.style && tab.style.content){\n // item2.customStyle = {content: tab.style.content}\n // }\n // })\n // }\n // })\n }\n });\n if (!data.formTemplate.template) {\n this.isShowFormActivity = false;\n return {\n components: {\n authority: authority\n },\n template: \"
\"\n };\n } else {\n //555\n return {\n methods: {\n findField: this.findField,\n refresh: this.refresh,\n checkData: this.checkData,\n getAllFields: this.getAllFields,\n addTabs: this.addTabs,\n scriptJump: this.scriptJump\n },\n template: \"
\" + data.formTemplate.template + \"
\"\n };\n }\n } else if (data.formTemplate && data.formTemplate.template) {\n return {\n template: \"
\" + data.formTemplate.template + \"
\"\n };\n } else {\n return {\n template: \"
\"\n };\n }\n }\n },\n watch: {\n template: function template(nval) {\n //实时响应template模板\n // 内嵌元素 无限扩大 动态计算他的宽度\n // debugger\n if (nval) {\n this.handleIncludeControlBug();\n // onResize 重新触发计算\n /**\n * apply,call,bind三者的区别--面向对象编程(不是函数编程)\n ● 三者都可以改变函数的this对象指向。\n ● 三者第一个参数都是this要指向的对象,如果没有这个参数或参数为undefined或null,则默认指向全局window。\n ● 三者都可以传参,但是apply是数组,而call是参数列表,且apply和call是一次性传入参数,而bind可以分为多次传入。\n ● bind 是返回绑定this之后的函数,便于稍后调用;apply 、call 则是立即执行 \n */\n //this.handleIncludeControlBugImpl 这是是获取当前页面的元素,只有监听到resize屏幕响应缩放才执行==>this.handleIncludeControlBug.bind(this) 等同于 this.handleIncludeControlBug;\n this.handleIncludeControlBugImpl = this.handleIncludeControlBug.bind(this); //.bind(this) 柯里化(我们给一个函数传入一部分参数,此时就会返回一个函数来接收剩余的参数) 绑定this执行为this.handleIncludeControlBug该对象object,而不是window对象\n window.addEventListener('resize', this.handleIncludeControlBugImpl);\n }\n }\n },\n mounted: function mounted() {\n var that = this;\n window.addEventListener('message', function (e) {\n //监听弹窗关闭-bcx\n\n if (e.data) {\n that.jumpPopup = false;\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.timeIds.forEach(function (id) {\n clearInterval(id);\n });\n window.removeEventListener('resize', this.handleIncludeControlBugImpl); //生命周期销毁前,移除监听resize屏幕响应缩放\n },\n methods: {\n // 处理include-control 自动增大逻辑\n handleIncludeControlBug: function handleIncludeControlBug() {\n var _this = this;\n this.timeIds.forEach(function (id) {\n clearInterval(id);\n });\n this.$nextTick(function () {\n var formwrappers = document.querySelectorAll('#formwrapper');\n formwrappers.forEach(function (item) {\n var includeControls = item.querySelectorAll('.include-control');\n var tabControls = item.querySelectorAll('.tab-control');\n _this.handleIncludeControlRefresh(includeControls, function () {\n return _this.handleIncludeControlComputed(includeControls);\n });\n _this.handleIncludeControlRefresh(tabControls, function () {\n return _this.handleIncludeControlComputed(tabControls);\n });\n });\n });\n },\n handleIncludeControlRefresh: function handleIncludeControlRefresh(controls, cb) {\n // resize 计算会走这里\n // include可能原本就被隐藏 这里要集合\n var affectedIncludeControls = [];\n controls.forEach(function (itm) {\n if (itm.style.display !== 'none') {\n itm.style.display = \"none\";\n affectedIncludeControls.push(itm);\n }\n });\n this.$nextTick(function () {\n cb(); //这个执行的是handleIncludeControlComputed(controls)();\n affectedIncludeControls.forEach(function (itm) {\n itm.style.display = \"block\";\n });\n });\n },\n handleIncludeControlComputed: function handleIncludeControlComputed(controls) {\n var _this2 = this;\n controls.forEach(function (item) {\n var pw = item.parentNode.clientWidth - (parseFloat(getComputedStyle(item.parentNode).paddingLeft) + parseFloat(getComputedStyle(item.parentNode).paddingRight));\n if (pw > 0) {\n item.style.width = pw + 'px'; //增加父元素固定宽度'.include-control' 与 '.tab-control'\n } else {\n var id = setTimeout(function () {\n // resize 计算会走这里\n // include可能原本就被隐藏 这里要集合\n if (item.style.display !== 'none') {\n item.style.display = \"none\";\n _this2.$nextTick(function () {\n item.style.display = \"block\";\n });\n }\n _this2.$nextTick(function () {\n var pw = item.parentNode.clientWidth - (parseFloat(getComputedStyle(item.parentNode).paddingLeft) + parseFloat(getComputedStyle(item.parentNode).paddingRight));\n if (pw > 0) {\n item.style.width = pw + 'px'; //增加父元素固定宽度'.include-control' 与 '.tab-control'\n item.style.display = \"block\";\n clearInterval(id);\n }\n });\n }, 200);\n _this2.timeIds.push(id);\n }\n });\n },\n //如果是包含元素或者tab页,获取docIds\n setListViewDocIds: function setListViewDocIds(docIds) {\n this.subSelects = docIds;\n },\n //取消\n handleCancel: function handleCancel(val) {\n this.terminationVisible = val;\n },\n //新表单的data.formTemplate.template会返回overflow:hidden;导致弹出层没有滚动条\n dialogShowScrollbar: function dialogShowScrollbar() {\n var containerDom = document.getElementsByName(\"容器1\")[0];\n containerDom.style.overflow = \"unset\";\n },\n //确定签章\n confirmSignature: function confirmSignature(data) {\n var _this3 = this;\n var op = this.openParams;\n var appId = op.appId;\n var formData = this.buildFormData();\n var documentId = formData.id;\n formData.docId = formData.id;\n var versions = \"\";\n var templateForm = \"\";\n if (op.realformId) {\n //如果是模板表单,realformId是真实formID,而不是templateForm\n formData.formId = op.realformId;\n formData.document.formId = op.realformId;\n templateForm = op.actionContent;\n }\n var signArr = [];\n signArr.push(data);\n var document = {\n applicationId: appId,\n formId: formData.formId,\n id: documentId,\n items: formData.items,\n parentId: formData.parentId,\n sign: JSON.stringify(signArr),\n versions: versions,\n exparams: {},\n templateForm: templateForm\n };\n delete formData.items;\n formData.document = document;\n formData.viewId = \"\";\n this.$api.confirmSignature(appId, formData.docId, formData, {\n onSucess: function onSucess(res) {\n if (res.data.errcode == 0) {\n _this3.$notify({\n title: \"成功\",\n message: res.data.data,\n type: \"success\"\n });\n _this3.currentCustomSign.showSign = false;\n _this3.formSignatureData.showFormSignature = false;\n var _op2 = _this3.openParams;\n _this3.initForm({\n appId: _op2.appId,\n formId: _op2.actionContent,\n //docId: this.openParams.docId (9/03改)\n docId: formData.docId\n });\n // this.refreshForm()\n }\n }\n });\n },\n //获取当前需要盖章的数据\n getCustomSignatureData: function getCustomSignatureData(data) {\n var cs = this.currentCustomSign;\n cs.data = data;\n cs.showSign = true;\n },\n //自定义签章初始化\n initSigns: function initSigns() {\n var _this4 = this;\n this.$api.getSigns({\n onSucess: function onSucess(res) {\n _this4.formSignatureData.list = res.data.data;\n }\n });\n },\n delCB: function delCB(signatureid, signatureData) {\n for (var key in Signature.list) {\n if (signatureid == key && Signature.list[signatureid].keysn == signatureData.keysn) {\n var signatureCreator = Signature.create();\n signatureCreator.removeSignature(signatureData.documentid, signatureid, function (data) {});\n break;\n }\n }\n return true;\n },\n hiddenCustomizeVisible: function hiddenCustomizeVisible() {\n var _this5 = this;\n this.hackReset = false;\n this.$nextTick(function () {\n _this5.hackReset = true;\n });\n },\n mousewheel: function mousewheel(e) {\n if (this.flowDialogVisible) {\n e.preventDefault();\n }\n },\n closeCustomMessagePopup: function closeCustomMessagePopup() {\n this.customMessagePopup = false;\n },\n addTabs: function addTabs(params) {\n if (typeof params == \"string\") {\n params = JSON.parse(params);\n }\n this.$emit(\"add-tab\", params);\n },\n getDocId: function getDocId() {\n return this.formdata.docId;\n },\n getformId: function getformId() {\n return this.formdata.formId;\n },\n getAppId: function getAppId() {\n return this.openParams.appId;\n },\n getAllFields: function getAllFields() {\n return this.formdata.fields;\n },\n onAction: function onAction(act) {\n var actId = act.id;\n var activityType = act.type;\n switch (act.type) {\n case 1:\n //载入视图\n break;\n case 4:\n //保存并启动流程\n this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n break;\n case 5:\n //流程处理\n this.flowHandle(act);\n break;\n case 10:\n //\n // this.goBack(act);\n this.v3ActionSubmit(actId, \"\", \"\", activityType, \"\", act); //bcx替换合并一个接口\n // this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n break;\n case 11:\n //提交55 --普通表单提交bcx -----测试没效果记得删除\n this.v3ActionSubmit(actId, \"\", \"\", activityType, \"\", act); //bcx替换合并一个接口 \n // this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n break;\n case 13:\n //自定义按钮55--bcx \n this.v3ActionSubmit(actId, \"\", \"\", activityType, \"\", act); //bcx替换合并一个接口 \n // this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n break;\n case 14: //网页打印\n case 16: //导出excel\n case 21: //保存并复制\n case 25:\n //导出pdf\n this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n break;\n case 26:\n //文件下载\n this.runBeforeAction(actId, \"\", \"\", activityType);\n break;\n case 28:\n //自定义按钮\n this.runBeforeAction(actId, \"\", \"\", activityType, act);\n break;\n case 30:\n //自定义打印\n this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n break;\n case 33:\n //流程启动\n this.flowHandle(act); //不支持流程启动功能\n break;\n case 34:\n //保存\n // this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n this.v3ActionSubmit(actId, \"\", \"\", activityType, \"\", act); //bcx替换合并一个接口\n break;\n case 37:\n //流程启动\n this.flowHandle(act);\n //this.sendMailOrSms()\n break;\n case 42:\n //保存并新建\n this.runBeforeAction(actId, \"\", \"\", activityType, act.withOld, act);\n break;\n case 43: //跳转\n case 46:\n //签章\n this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n break;\n case 47:\n //回退流程\n this.flowHandle(act);\n break;\n case 48:\n //流程催办\n this.flowHandle(act);\n break;\n case 49:\n //流程挂起\n this.suspendWorkflow(act);\n break;\n case 50:\n //流程恢复\n this.recoveryWorkflow();\n break;\n case 51:\n //回撤流程\n this.runBeforeAction(actId, \"\", \"\", activityType, \"\", act);\n this.retracementWorkflow(actId, act);\n break;\n case 52: //终止流程\n case 53: //编辑流程审批人\n case 55: //点评\n case 56: //补签\n case 57: //加签主办\n case 58:\n //加签协办\n this.flowHandle(act);\n break;\n default:\n break;\n }\n },\n findField: function findField(id) {\n if (id) {\n var data = this.formdata;\n for (var i = 0; i < data.fields.length; i++) {\n var fld = data.fields[i];\n if (id == fld.id) {\n return fld;\n } else if (fld.tabs && fld.tabs.length > 0) {\n for (var z = 0; z < fld.tabs.length; z++) {\n if (fld.tabs[z].fields && fld.tabs[z].fields.length > 0) {\n for (var h = 0; h < fld.tabs[z].fields.length; h++) {\n if (id == fld.tabs[z].fields[h].id) {\n return fld.tabs[z].fields[h];\n }\n }\n }\n }\n }\n }\n //TODO:临时处理隐藏字段--Jarod\n return {\n id: id,\n displayType: Constant.PermissionType_HIDDEN,\n hiddenValue: \"\"\n };\n } else {\n return this.formdata;\n }\n },\n initForm: function initForm(_ref) {\n var _this6 = this;\n var appId = _ref.appId,\n formId = _ref.formId,\n docId = _ref.docId;\n var openParams = this.openParams;\n if (openParams.appId) {\n this.$root.appid = openParams.appId; //如果有多个软件,当从首页进入表单,需要把当前页当前数据的appId赋值给全局变量,否则有可能导致软件的appId拿错\n }\n if (docId && docId != \"\") {\n var obj = {\n _: new Date().getTime()\n };\n if (openParams.includeDisplayType && (openParams.includeDisplayType == 1 || openParams.includeDisplayType == 4)) {\n //1, 4为不可用\n obj.isReadonly = true;\n }\n if (openParams.exparams) {\n obj = this.setParams(openParams.exparams, obj);\n }\n if (openParams.formParams) {\n obj = this.setParams(openParams.formParams, obj);\n }\n if (openParams.urlParams) {\n obj = this.setParams(openParams.urlParams, obj);\n }\n API.getForm(appId, formId, docId, obj,\n // {},\n {\n onSucess: function onSucess(response) {\n _this6.formTemplateDocid = docId.replace(/_/g, \"\");\n _this6.loading = false;\n var fd = response.data.data;\n fd.fields.forEach(function (val) {\n if (val.value) {\n val.value = val.value.replace(/%/g, \"%\");\n }\n if (val.tabs) {\n //选项卡里套着标签页\n val.tabs.forEach(function (item) {\n if (item.fields) {\n item.fields.forEach(function (items) {\n if (items.value) {\n items.value = items.value.replace(/%/g, \"%\");\n }\n });\n }\n });\n }\n });\n var data = fd;\n var formType = data.formTemplate.showType; //新表单还是旧表单\n var openComment = data.openComment;\n var commentFlag = data.commentFlag;\n var loopOpe = function loopOpe(fields) {\n for (var i = 0; i < fields.length; i++) {\n if (fields[i].value) {\n fields[i].value = fields[i].value;\n }\n if (!fields[i].isComment) {\n fields[i].formShowType = formType;\n fields[i].appId = appId;\n if (fields[i].formField == \"IncludeField\") {\n fields[i].isRefresh = \"false\";\n if (fields[i].openType == 288) {\n //网格视图\n _this6.haveViewGridview = true;\n }\n }\n if (fields[i].tabs && fields[i].tabs.length > 0) {\n for (var j = 0; j < fields[i].tabs.length; j++) {\n if (fields[i].tabs[j].openComment) {\n //tab下有评论\n var cf = fields[i].tabs[j].commentFlag;\n var commentField = {\n id: new Date().getTime() + \"_评论\",\n appId: appId,\n docId: cf ? cf : docId,\n isComment: true\n };\n fields[i].tabs[j].fields.push(commentField);\n var dom = \"
\\n \\n \\n
\");\n fields[i].tabs[j].template += dom;\n }\n if (fields[i].tabs[j].fields && fields[i].tabs[j].fields.length > 0) {\n loopOpe(fields[i].tabs[j].fields);\n }\n }\n }\n }\n }\n };\n if (data.fields && data.fields.length > 0) {\n loopOpe(data.fields);\n }\n fd.formId = formId;\n fd.docId = docId;\n if (openComment) {\n //有评论\n var commentField = {\n id: new Date().getTime() + \"_评论\",\n appId: appId,\n docId: commentFlag ? commentFlag : docId,\n isComment: true\n };\n data.fields.push(commentField);\n var dom = \"
\");\n data.formTemplate.template += dom;\n }\n _this6.formdata = fd;\n if (fd.style && fd.style.content) {\n //自定义样式\n var formCss = \"#formTemplate_\" + _this6.formTemplateDocid + \" \" + fd.style.content;\n var css = formCss,\n // let css = fd.style.content,\n head = document.head || document.getElementsByTagName(\"head\")[0],\n style = document.createElement(\"style\");\n head.appendChild(style);\n style.type = \"text/css\";\n style.appendChild(document.createTextNode(css));\n }\n if (response.data.data.waterMarkText) {\n _this6.$nextTick(function () {\n var str = docId.replace(/_/g, \"\");\n var id = \"formTemplate_\" + str;\n Watermark.set(response.data.data.waterMarkText, id);\n });\n }\n _this6.$nextTick(function () {\n Signature.init({\n //初始化属性\n keysn: \"T001\",\n delCallBack: function delCB(signatureid, signatureData) {\n for (var key in Signature.list) {\n if (signatureid == key && Signature.list[signatureid].keysn == signatureData.keysn) {\n var signatureCreator = Signature.create();\n signatureCreator.removeSignature(signatureData.documentid, signatureid, function (data) {});\n break;\n }\n }\n return true;\n },\n imgtag: 0,\n //签章类型:0:无; 1:公章; 2:私章; 3:法人章; 4:法人签名; 5:手写签名\n certType: \"server\",\n //设置证书在签章服务器\n sealType: \"server\",\n //设置印章从签章服务器取\n serverUrl: \"http://171.34.78.70:8899/iSignatureHTML5/html5\",\n //H5官网演示地址\n documentid: _this6.openParams._select ? _this6.openParams._select : \"\",\n //设置文档ID\n documentname: _this6.openParams._select ? _this6.openParams._select : \"\",\n //设置文档名称\n //pw_enc_save : true,//密码是否加密保存\n //pw_server_timeout:true,\n pw_timeout: \"s1800\",\n //s:秒;h:小时;d:天\n scaleImage: 1,\n //签章图片的缩放比例\n showProtectedBtn: true //设置是否显示保护项按钮\n });\n _this6.$api.getHTMLsignature(_this6.$root.appid, docId, {\n onSucess: function onSucess(res) {\n if (res.data) {\n var signature = {};\n for (var j = 0; j < res.data.data.length; j++) {\n signature[res.data.data[j].signatureId] = true;\n }\n var signatureCreator = Signature.create();\n signatureCreator.getSaveSignatures(docId, function (signs) {\n var signdata = new Array();\n var jsonList = eval(\"(\" + signs + \")\");\n for (var i = 0; i < jsonList.length; i++) {\n var map = {};\n map.signatureid = jsonList[i][\"signatureId\"];\n map.signatureData = jsonList[i][\"signature\"];\n if (signature[map.signatureid]) {\n signdata.push(map);\n }\n //signdata.push(map);\n }\n Signature.loadSignatures(signdata);\n });\n }\n }\n });\n });\n var showLog = false; //新表单formTemplate.template返回overflow:hidden会影响操作日志的显示\n if (formType == \"new\") {\n for (var i = 0; i < data.fields.length; i++) {\n if (data.fields[i].isModified) {\n showLog = true;\n break;\n }\n }\n }\n _this6.$nextTick(function () {\n var actBtnHeight = _this6.$refs.actBox.offsetHeight;\n _this6.formTableWrapHeight = \"calc(100% - \" + actBtnHeight + \"px\" + \" )\";\n if (formType == \"new\" && openParams.type == 277 || showLog == true) {\n _this6.dialogShowScrollbar(); //新表单弹出层有docId时显示滚动条\n }\n });\n _this6.$emit(\"event\", fd.formTemplate.formName);\n }\n });\n } else {\n var queryStr = \"\";\n if (openParams.queryString) {\n //参数\n queryStr = JSON.parse(openParams.queryString);\n }\n var _obj = {\n appId: openParams.appId,\n formId: openParams.actionContent,\n _: new Date().getTime()\n };\n if (openParams.isRelate === true || openParams.isRelate === \"true\") {\n //包含原素或者标签也新建可能会携带isRelate和parentId,需要传到后台\n _obj.isRelate = \"true\";\n } else {\n _obj.isRelate = openParams.isRelate;\n }\n if (openParams.parentId) {\n _obj.parentId = openParams.parentId;\n }\n if (queryStr && queryStr.length > 0) {\n for (var i = 0; i < queryStr.length; i++) {\n _obj[queryStr[i].paramKey] = queryStr[i].paramValue;\n }\n }\n var emptyParams = this.emptyParams;\n if (emptyParams && emptyParams.length > 0) {\n //视图列带参数跳转\n for (var _i = 0; _i < emptyParams.length; _i++) {\n for (var key in emptyParams[_i]) {\n _obj[key] = emptyParams[_i][key];\n }\n }\n }\n if (openParams.exparams) {\n _obj = this.setParams(openParams.exparams, _obj);\n }\n if (openParams.formParams) {\n _obj = this.setParams(openParams.formParams, _obj);\n }\n if (openParams.urlParams) {\n _obj = this.setParams(openParams.urlParams, _obj);\n }\n if (openParams.realformId) {\n //如果是模板表单\n _obj.formId = openParams.realformId;\n formId = openParams.realformId;\n }\n API.getDocumentEmpty(appId, formId, _obj, {\n onSucess: function onSucess(response) {\n if (response.data.errcode == 0) {\n if (openParams.isNewCreate) {\n //视图新建后执行脚本\n if (openParams.isOpenNewWindow) {\n //如果是新窗口打开\n var _rp = JSON.parse(openParams.runAfterParams);\n _rp.docId = response.data.data.id;\n _this6.viewCreateRunAfterAction(_rp).then(function () {\n if (response.data.data) {\n _this6.loading = false;\n var _docId = _this6.originalFormDocid ? _this6.originalFormDocid : response.data.data.id; //判断是不是保存并新建_带旧数据的docid\n _this6.currentFormDocId = _docId;\n _this6.formTemplateDocid = response.data.data.id.replace(/_/g, \"\");\n _this6.getForm(appId, formId, _docId, {}, response.data.data.id);\n } else {\n _this6.loading = false;\n }\n });\n } else {\n if (openParams.runAfterParams) {\n openParams.runAfterParams.docId = response.data.data.id;\n var treedocid = openParams.treedocid;\n // this.viewCreateRunAfterAction(openParams.runAfterParams, treedocid); //如果是树形视图新建这个执行顺序一定要在empty之后才会生效\n _this6.viewCreateRunAfterAction(openParams.runAfterParams, treedocid, response.data.data.id).then(function () {\n if (response.data.data) {\n _this6.loading = false;\n var _docId2 = _this6.originalFormDocid ? _this6.originalFormDocid : response.data.data.id; //判断是不是保存并新建_带旧数据的docid\n _this6.currentFormDocId = _docId2;\n _this6.formTemplateDocid = response.data.data.id.replace(/_/g, \"\");\n _this6.getForm(appId, formId, _docId2, {}, response.data.data.id);\n } else {\n _this6.loading = false;\n }\n });\n } else {\n _this6.currentFormDocId = response.data.data.id;\n _this6.getForm(appId, formId, response.data.data.id, {}, response.data.data.id);\n _this6.loading = false;\n }\n }\n } else {\n if (response.data.data) {\n _this6.loading = false;\n var _docId3 = _this6.originalFormDocid ? _this6.originalFormDocid : response.data.data.id; //判断是不是保存并新建_带旧数据的docid\n _this6.currentFormDocId = _docId3;\n _this6.formTemplateDocid = response.data.data.id.replace(/_/g, \"\");\n _this6.getForm(appId, formId, _docId3, {}, response.data.data.id);\n } else {\n _this6.loading = false;\n }\n }\n }\n }\n });\n }\n },\n getForm: function getForm(appId, formId, docId, params, currentResDocId) {\n var _this7 = this;\n // debugger\n var op = this.openParams;\n if (op.exparams) {\n params = this.setParams(op.exparams, params);\n }\n if (op.formParams) {\n params = this.setParams(op.formParams, params);\n }\n if (op.urlParams) {\n params = this.setParams(op.urlParams, params);\n } else if (this.$route.query) {\n //获取url自定义参数bcx\n params = _objectSpread(_objectSpread({}, params), this.$route.query);\n }\n API.getForm(appId, formId, docId, params, {\n onSucess: function onSucess(res) {\n var fd = res.data.data;\n _this7.formTemplateDocid = docId.replace(/_/g, \"\");\n if (!fd.activities) {\n _this7.isShowFormActivity = false;\n }\n if (fd.style) {\n fd.fields.forEach(function (val) {\n val.customStyle = fd.style;\n });\n }\n // this.formdata = fd;//res.data.data;\n if (fd.fields) {\n fd.fields.forEach(function (val) {\n if (val.value) {\n val.value = val.value.replace(/%/g, \"%\");\n }\n });\n }\n var data = fd;\n var formType = data.formTemplate.showType; //新表单还是旧表单\n var openComment = data.openComment;\n var commentFlag = data.commentFlag;\n var loopOpe = function loopOpe(fields) {\n for (var i = 0; i < fields.length; i++) {\n if (fields[i].value) {\n fields[i].value = fields[i].value;\n }\n if (!fields[i].isComment) {\n fields[i].appId = appId;\n fields[i].formShowType = formType;\n if (fields[i].formField == \"IncludeField\") {\n fields[i].isRefresh = new Date().getTime();\n if (fields[i].openType == 288) {\n //网格视图\n _this7.haveViewGridview = true;\n }\n if (op.type && op.type == 277) {\n fields[i].isOpenDialog = true;\n fields[i].dialogId = op.dialogId ? op.dialogId : op.jumpDialogId; //op.jumpDialogId解决当视图列跳转按钮以弹出层打开表单时,包含元素无法显示\n }\n } else if (fields[i].formField == \"InputField\") {\n fields[i].isRefresh = parseInt(Math.random() * 100 + 1) + new Date().getTime();\n } else if (fields[i].formField == \"CalctextField\") {\n if (op.isWidgetLink) {\n fields[i].isWidgetLink = true;\n }\n }\n if (fields[i].type == \"tabfield\") {\n //表单嵌套tab判断传递参数\n fields[i].exparams = op.exparams;\n }\n if (fields[i].tabs && fields[i].tabs.length > 0) {\n for (var j = 0; j < fields[i].tabs.length; j++) {\n if (fields[i].tabs[j].openComment || fields[i].tabs[j].commentFlag) {\n //tab下有评论\n var cf = fields[i].tabs[j].commentFlag;\n var commentField = {\n id: new Date().getTime() + \"_评论\",\n appId: appId,\n docId: cf ? cf : docId,\n isComment: true\n };\n fields[i].tabs[j].fields.push(commentField);\n var dom = \"
\\n \\n \\n
\");\n fields[i].tabs[j].template += dom;\n }\n if (fields[i].tabs[j].fields && fields[i].tabs[j].fields.length > 0) {\n loopOpe(fields[i].tabs[j].fields);\n }\n }\n }\n }\n }\n };\n if (data.fields && data.fields.length > 0) {\n loopOpe(data.fields);\n }\n fd.formId = formId;\n fd.docId = currentResDocId; //docId,一直拿新页面的docId;\n if (openComment) {\n //有评论\n var commentField = {\n id: new Date().getTime() + \"_评论\",\n appId: appId,\n docId: commentFlag ? commentFlag : docId,\n isComment: true\n };\n data.fields.push(commentField);\n var dom = \"
\");\n data.formTemplate.template += dom;\n }\n\n // if(fd.style && fd.style.content) { //自定义样式\n // debugger\n // let css = fd.style.content,\n // head = document.head || document.getElementsByTagName('head')[0],\n // style = document.createElement('style');\n // head.appendChild(style);\n // style.type = 'text/css';\n // style.appendChild(document.createTextNode(css));\n // }\n\n _this7.formdata = fd; //res.data.data;\n if (fd.style && fd.style.content) {\n //自定义样式\n var formCss = \"#formTemplate_\" + _this7.formTemplateDocid + \" \" + fd.style.content;\n var css = formCss,\n head = document.head || document.getElementsByTagName(\"head\")[0],\n style = document.createElement(\"style\");\n head.appendChild(style);\n style.type = \"text/css\";\n style.appendChild(document.createTextNode(css));\n }\n if (res.data.data.waterMarkText) {\n //表单水印\n _this7.$nextTick(function () {\n var str = docId.replace(/_/g, \"\");\n var id = \"formTemplate_\" + str;\n Watermark.set(res.data.data.waterMarkText, id);\n });\n }\n if (_this7.oldBuildFormData) {\n //以下为判断当保存并新建后带旧数据时,把旧数据赋值给新表单\n var oldBuildFormData = _this7.oldBuildFormData;\n for (var key in oldBuildFormData) {\n for (var i = 0; i < fd.fields.length; i++) {\n if (key === fd.fields[i].name) {\n fd.fields[i].value = oldBuildFormData[key];\n }\n }\n }\n }\n _this7.$nextTick(function () {\n var actBtnHeight = _this7.$refs.actBox.offsetHeight;\n _this7.formTableWrapHeight = \"calc(100% - \" + actBtnHeight + \"px\" + \" )\";\n if (formType == \"new\" && op.type == 277) {\n _this7.dialogShowScrollbar(); //新表单弹出层无docId时显示滚动条\n }\n });\n _this7.$emit(\"event\", fd.formTemplate.formName);\n }\n });\n },\n setParams: function setParams(params, obj) {\n params = params.replace(/^(\\s|&)+|(\\s|&)+$/g, \"\");\n var list = params.split(\"&\");\n for (var i = 0; i < list.length; i++) {\n var p = list[i].split(\"=\");\n var isJson = this.isJSON(p[1]);\n if (isJson) {\n obj[p[0]] = encodeURI(p[1]); //encodeURIComponent(p[1])\n } else {\n obj[p[0]] = p[1] ? p[1] : \"\";\n }\n }\n return obj;\n },\n isJSON: function isJSON(str) {\n //判断是json字符串\n if (typeof str == \"string\") {\n try {\n var obj = JSON.parse(str);\n if (_typeof(obj) == \"object\" && obj) {\n return true;\n } else {\n return false;\n }\n } catch (e) {\n return false;\n }\n }\n },\n //视图新建后执行脚本\n viewCreateRunAfterAction: function viewCreateRunAfterAction(params, treedocid, docId) {\n var _this8 = this;\n if (docId) {\n params.formData.docId = docId;\n }\n return new Promise(function (resolve) {\n _this8.$api.runAfterActionScript(params.appId, params.divId, docId, params.actionContent, params.relatedForm, params._templateForm, params.parentId, params._, params.formData, \"\", treedocid ? treedocid : \"\", {\n onSucess: function onSucess(response) {\n if (response.data.data) {\n var returnData = response.data.data;\n if (returnData.changedField) {\n _this8.$notify.success({\n title: returnData.content,\n message: \"\"\n });\n } else {\n var errmsg = response.data.data.content;\n if (returnData.type && returnData.type == \"message\") {\n if (errmsg.type == 16 || errmsg.type == 1) {\n _this8.$notify.success({\n title: errmsg.content,\n message: \"\"\n });\n }\n } else if (returnData.type && returnData.type == \"1\") {\n _this8.$notify.success({\n title: errmsg,\n message: \"\"\n });\n } else {\n _this8.$notify.error({\n title: errmsg,\n message: \"\"\n });\n }\n resolve();\n }\n } else if (response.data.errcode == 0) {\n resolve();\n }\n }\n });\n });\n },\n refresh: function refresh(fId) {\n var _this9 = this;\n var op = this.openParams;\n var fieldId = \"\";\n if (fId.id) {\n fieldId = fId.id;\n } else {\n fieldId = fId;\n }\n //刷新方法\n var fd = this.buildFormData();\n var data = {\n document: fd,\n formId: op.actionContent,\n docId: fd.id,\n parentId: \"\",\n templateForm: \"\",\n viewId: \"\",\n applicationId: fd.applicationId,\n id: fd.id\n };\n fieldId = fieldId.replace(/\"/g, \"\");\n API.refreshForm(fieldId, data, {\n onSucess: function onSucess(response) {\n var fields = response.data.data;\n var keys = Object.keys(fields);\n var formdata = _this9.formdata;\n keys.forEach(function (key) {\n var field = fields[key];\n var loopOpe = function loopOpe(fields) {\n fields.forEach(function (f, i) {\n if (field.id == f.id) {\n fields[i].value = field.value; //只能更新value,而不能简单做对象替换,field.value绑定在组件v-model上,如果直接替换只是数组内存指针简单变更\n fields[i].options = field.options;\n fields[i].tabs = field.tabs;\n //如果为选择类型field,则options也要在这里替换.....\n fields[i].displayType = field.displayType;\n fields[i].data = field.data;\n fields[i].activity = field.activity;\n if (field.formField == \"DepartmentField\") {\n //这个会把部门选择框的值去除掉,后果未知,先这样\n if (fields[i].value && fields[i].options.length <= 0) {\n fields[i].value = \"\";\n }\n } else if (field.formField == \"IncludeField\") {\n fields[i].isRefresh = new Date().getTime();\n } else if (field.formField == \"InputField\") {\n fields[i].addInTtems = true; //如果刷新重计算有返回控件,就算控件值是隐藏的,也要传到后台,在buildForamData中处理\n // fields[i].isRefresh = parseInt(Math.random()*100+1)+new Date().getTime();\n }\n // if(fields[i].type=='tabfield'){ //表单嵌套tab判断传递参数\n // fields[i].exparams=op.exparams\n // console.log(fields[i].exparams)\n // }\n }\n if (f.tabs && f.tabs.length > 0) {\n for (var j = 0; j < f.tabs.length; j++) {\n if (f.tabs[j].fields && f.tabs[j].fields.length > 0) {\n loopOpe(f.tabs[j].fields);\n }\n }\n }\n });\n };\n loopOpe(formdata.fields);\n });\n _this9.formdata = formdata;\n }\n });\n },\n handleClose: function handleClose(done) {\n done();\n if (this.isDialogOpenExternalLink) {\n var appId = this.openParams.appId;\n var bf = this.buildFormData();\n var formId = bf.formId;\n var docId = bf.id;\n this.initForm({\n appId: appId,\n formId: formId,\n docId: docId\n });\n }\n },\n setPopupOpenType: function setPopupOpenType(type, params) {\n //当视图是弹出层打开,新建或打开视图列表\n if (type == \"FORM\") {\n params.isPopupLayerDisplay = true;\n this.jumpParamsForm = params;\n this.popupLayerType = type;\n } else if (type == \"VIEW\") {\n this.popupLayerType = type;\n }\n },\n checkData: function checkData(value) {\n if (value) {\n var data = this.buildFormData();\n return data;\n }\n },\n //按钮事件执行前\n /* actId:参数值为act.id;\n * isOrRefresh:刷新重计算\n * id:\n * activityType:参数值为act.type.\n * withOld:判断是否是保存并新建,\n * act:当前点击的按钮的全部参数\n */\n runBeforeAction: function runBeforeAction(actId, isOrRefresh, id, activityType, withOld, act) {\n var _this10 = this;\n this.isBlockClick = true;\n var op = this.openParams;\n var appId = op.appId;\n var formData = \"\";\n var documentId = \"\";\n if (this.copyFormData) {\n //复制文档时存在\n var cf = this.copyFormData;\n formData = this.buildFormData(); //当复制时数据不变,只改变id值\n formData.docId = cf.id;\n formData.id = cf.id;\n documentId = cf.id;\n } else {\n var bf = this.buildFormData();\n formData = bf;\n formData.docId = bf.id;\n documentId = bf.id;\n }\n var subDocuments = [];\n var versions = \"\";\n var templateForm = \"\";\n var subDoc = this.$store.state.subDocuments;\n var haveViewGridview = this.haveViewGridview;\n var time = 0;\n if (haveViewGridview) {\n //如果有网格视图\n this.$store.commit(\"SET_SAVESUBDOCMENTS\", {\n randomId: new Date().getTime(),\n docId: formData.docId\n });\n time = 100;\n }\n setTimeout(function () {\n var subDocData = _this10.$store.state.subDocumentsData;\n if (subDoc && subDoc.length > 0) {\n //判断是否是包含元素网格视图\n subDocuments = subDoc;\n versions = formData.versions;\n delete formData.subDocuments;\n delete formData.versions;\n delete formData.templateForm;\n } else if (subDocData && haveViewGridview) {\n //网格视图,看store.js\n subDocuments = _this10.setAllSubDocmentsData(subDocData);\n } else {\n subDocuments = formData.subDocuments;\n versions = formData.versions;\n }\n var document = {\n applicationId: op.appId,\n formId: formData.formId,\n id: documentId,\n items: formData.items,\n parentId: formData.parentId,\n sign: formData.sign,\n subDocuments: subDocuments,\n versions: versions,\n exparams: {},\n templateForm: templateForm\n };\n delete formData.items;\n var subSelects = _this10.subSelects;\n if (subSelects.length > 0) {\n formData.subSelects = subSelects;\n }\n if (op.parentId) {\n if (op.isRelate === true || op.isRelate === \"true\") {\n document.isRelate = \"true\";\n } else {\n document.isRelate = op.isRelate;\n }\n document.parentId = op.parentId;\n formData.parentId = op.parentId;\n }\n formData.document = document;\n formData.viewId = \"\";\n formData.templateForm = \"\";\n if (op.realformId) {\n //如果是模板表单,realformId是真实formID,而不是templateForm\n formData.formId = op.realformId;\n formData.document.formId = op.realformId;\n formData.templateForm = op.actionContent;\n }\n _this10.parameterObj = formData;\n delete _this10.$route.query.id; //url去掉id不要覆盖原来的id\n formData = _objectSpread(_objectSpread({}, formData), _this10.$route.query);\n API.runBeforeActionScript(appId, actId, formData, activityType, \"\",\n //treedocid\n \"\",\n //flowType\n {\n onSucess: function onSucess(response) {\n if (response.data.data) {\n //如果有数据返回,结束下一步\n var resData = response.data.data;\n var errmsg = response.data.data.content;\n if (!resData.type) {\n //没有type值,但是有返回数据,把数据放进document\n _this10.isBlockClick = false;\n if (resData.changedField) {\n var items = _this10.formdata.fields; //formData.document.items;\n var resDataItem = resData.changedField;\n if (resDataItem) {\n for (var j = 0; j < items.length; j++) {\n for (var i = 0; i < resDataItem.length; i++) {\n for (var el in resDataItem[i]) {\n if (items[j].name == el) {\n formData.document.items[el] = resDataItem[i][el];\n items[j].value = resDataItem[i][el];\n }\n }\n }\n }\n }\n switch (activityType) {\n case 4:\n //保存并启动流程\n _this10.saveStartWorkFlow(activityType, actId, act);\n break;\n case 8:\n //关闭窗口\n _this10.goBack();\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 10:\n //返回\n _this10.goBack(activityType, actId, \"\", act);\n break;\n case 11:\n //保存并返回\n _this10.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 13:\n // this.execute(appId, actId, formData, act);\n _this10.execute({\n actId: actId,\n formData: formData,\n act: act\n });\n break;\n case 14:\n //网页打印\n _this10.printForm(act);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 15:\n //网页打印_包含流程打印\n _this10.printForm(act);\n break;\n case 19:\n //保存草稿\n _this10.saveDraft(activityType, actId, act);\n break;\n case 21:\n //保存并复制\n _this10.doSave(activityType, actId, \"\", \"\", act);\n break;\n case 25:\n //PDF导出\n _this10.leadingOut();\n break;\n case 26:\n //文件下载\n _this10.fileDownload(actId);\n break;\n case 30:\n //自定义打印\n _this10.printForm(act);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 34:\n //保存(校验)数据\n _this10.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 37:\n //通过邮件或短信通知\n _this10.showSendMailOrSmsFlowpanel(act);\n break;\n case 42:\n //保存并新建\n _this10.doSave(activityType, actId, withOld, \"\", act);\n break;\n case 43:\n //跳转\n _this10.jumpType(act);\n break;\n case 45:\n //归档\n _this10.placeOnFile();\n break;\n case 46:\n //签章\n _this10.isBlockClick = false;\n _this10.formSignatureData.showFormSignature = true;\n break;\n default:\n break;\n }\n }\n } else if (resData.type == 1) {\n _this10.$notify.success({\n title: errmsg,\n message: \"\"\n });\n _this10.isBlockClick = false;\n } else if (resData.type == 16) {\n _this10.$notify({\n title: errmsg,\n message: \"\",\n type: \"warning\"\n });\n _this10.isBlockClick = false;\n } else if (resData.type == 32) {\n _this10.$confirm(\"\".concat(errmsg), _this10.$t(\"tip\"), {\n confirmButtonText: _this10.$t(\"msg.confirm\"),\n cancelButtonText: _this10.$t(\"btns.cancel\"),\n type: \"warning\"\n }).then(function () {\n switch (activityType) {\n case 4:\n //保存并启动流程\n _this10.saveStartWorkFlow(activityType, actId, act);\n break;\n case 8:\n //关闭窗口\n _this10.goBack(activityType, actId);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 10:\n //返回\n _this10.goBack(activityType, actId, \"\", act);\n break;\n case 11:\n //保存并返回\n _this10.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 13:\n // this.execute(appId, actId, formData, act);\n _this10.execute({\n actId: actId,\n formData: formData,\n act: act\n });\n break;\n case 14:\n //网页打印\n _this10.printForm(act);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 15:\n //网页打印_包含流程打印\n _this10.printForm(act);\n break;\n case 19:\n //保存草稿\n _this10.saveDraft(activityType, actId, act);\n break;\n case 21:\n //保存并复制\n _this10.doSave(activityType, actId, \"\", \"\", act);\n break;\n case 25:\n //PDF导出\n _this10.leadingOut();\n break;\n case 26:\n //文件下载\n _this10.fileDownload(actId);\n break;\n case 28:\n //电子签章\n _this10.isBlockClick = false;\n _this10.doSignature(act);\n break;\n case 30:\n //自定义打印\n _this10.printForm(act);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 34:\n //保存(校验)数据\n _this10.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 37:\n //通过邮件或短信通知\n _this10.showSendMailOrSmsFlowpanel(act);\n break;\n case 42:\n //保存并新建\n _this10.doSave(activityType, actId, withOld, \"\", act);\n break;\n case 43:\n //跳转\n _this10.jumpType(act);\n break;\n case 45:\n //归档\n _this10.placeOnFile();\n break;\n case 46:\n //签章\n break;\n default:\n break;\n }\n }).catch(function () {});\n }\n } else {\n switch (activityType) {\n case 4:\n //保存并启动流程\n _this10.saveStartWorkFlow(activityType, actId, act);\n break;\n case 8:\n //关闭窗口\n _this10.goBack(activityType, actId);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 10:\n //返回\n _this10.goBack(activityType, actId, \"\", act);\n break;\n case 11:\n //保存并返回\n _this10.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 13:\n // this.execute(appId, actId, formData, act);\n _this10.execute({\n actId: actId,\n formData: formData,\n act: act\n });\n break;\n case 14:\n //网页打印\n _this10.printForm(act);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 15:\n //网页打印_包含流程打印\n _this10.printForm(act);\n break;\n case 19:\n //保存草稿\n _this10.saveDraft(activityType, actId, act);\n break;\n case 21:\n //保存并复制\n _this10.doSave(activityType, actId, \"\", \"\", act);\n break;\n case 25:\n //PDF导出\n _this10.leadingOut();\n break;\n case 26:\n //文件下载\n _this10.fileDownload(actId);\n break;\n case 28:\n //电子签章\n _this10.isBlockClick = false;\n _this10.doSignature(act);\n break;\n case 30:\n //自定义打印\n _this10.printForm(act);\n _this10.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 34:\n //保存(校验)数据\n _this10.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 37:\n //通过邮件或短信通知\n _this10.showSendMailOrSmsFlowpanel(act);\n break;\n case 42:\n //保存并新建\n _this10.doSave(activityType, actId, withOld, \"\", act);\n break;\n case 43:\n //跳转\n _this10.jumpType(act);\n break;\n case 45:\n //归档\n _this10.placeOnFile();\n break;\n case 46:\n //签章\n _this10.formSignatureData.showFormSignature = true;\n break;\n default:\n break;\n }\n if (isOrRefresh) {\n _this10.refresh(id);\n }\n }\n }\n });\n }, time);\n },\n //执行脚本后\n runAfterAction: function runAfterAction(actId, num, withOld, subDoc, act) {\n var _this11 = this;\n var op = this.openParams;\n var that = this;\n var appId = op.appId;\n var formData = this.parameterObj;\n var docId = \"\";\n var bf = this.buildFormData();\n if (this.copyFormData) {\n //复制时存在\n docId = this.copyFormData.id;\n } else {\n docId = bf.id;\n }\n var _bfd = bf;\n var formId = _bfd.formId;\n var viewId = \"\";\n var _templateForm = \"\";\n if (formData.templateForm) {\n _templateForm = formData.templateForm;\n }\n var _ = new Date().getTime();\n var parentId = _bfd.parentId;\n delete this.$route.query.id;\n formData = _objectSpread(_objectSpread({}, formData), this.$route.query); //获取url参数,去掉url的id不要覆盖原来的id\n API.runAfterActionScript(appId, actId, docId, viewId, formId, _templateForm, parentId, _, formData, act.type, \"\",\n //treedocid\n {\n onSucess: function onSucess(response) {\n _this11.isBlockClick = false;\n if (response.data.errcode == 0) {\n if (response.data.data) {\n var resData = response.data.data;\n var errmsg = response.data.data.content;\n if (errmsg.content) {\n if (errmsg.type == 1) {\n _this11.$notify.success({\n title: errmsg.content,\n message: \"\"\n });\n if (num == 34) {\n _this11.initForm({\n //保存后重新加载页面数据,其他按钮也要执行该操作\n appId: appId,\n formId: formId,\n docId: docId\n });\n }\n }\n } else {\n if (!resData.type) {\n //没有type值,但是有返回数据,把数据放进document\n if (resData.changedField) {\n var items = _this11.formdata.fields; //formData.document.items;\n var resDataItem = resData.changedField;\n if (resDataItem) {\n for (var j = 0; j < items.length; j++) {\n for (var i = 0; i < resDataItem.length; i++) {\n for (var el in resDataItem[i]) {\n if (items[j].name == el) {\n formData.document.items[el] = resDataItem[i][el];\n items[j].value = resDataItem[i][el];\n }\n }\n }\n }\n }\n }\n } else if (resData.type == 1) {\n _this11.$notify.success({\n title: errmsg,\n message: \"\"\n });\n if (num == 34) {\n _this11.initForm({\n //保存后重新加载页面数据,其他按钮也要执行该操作\n appId: appId,\n formId: formId,\n docId: docId\n });\n }\n } else {\n _this11.$notify.success({\n title: errmsg,\n message: \"\"\n });\n }\n }\n } else {\n if (num == 4) {\n _this11.initForm({\n appId: appId,\n formId: formId,\n docId: docId\n });\n } else if (num == 11) {\n //关闭当前页\n setTimeout(function () {\n that.goBack();\n }, 500);\n } else if (num == 21) {\n //保存并复制\n _this11.copyDoc();\n } else if (num == 42) {\n //保存并重建\n setTimeout(function () {\n if (withOld) {\n //保留旧数据\n that.$parent.reloading(docId);\n } else {\n _this11.initForm({\n appId: appId,\n formId: formId,\n docId: \"\"\n });\n }\n }, 500);\n } else if (num == 34) {\n var openParams = _this11.openParams;\n var isSave = \"\";\n isSave = true;\n if (openParams.isIncludeCreate && openParams.isIncludeCreate == \"include\") {\n _this11.$emit(\"action\", isSave);\n } else if (openParams.isTabCreate && openParams.isTabCreate == \"tab\" || openParams.showtype == \"tab\") {\n //选项卡\n _this11.$emit(\"action\", isSave);\n }\n if (openParams.homeWidgetType && openParams.homeWidgetType == \"system_workflow\") {\n _this11.$store.dispatch(\"getPendingListWithWidget\"); //保存完毕后首页流程处理widget数据重新刷新\n _this11.$store.dispatch(\"getProcessedListWithWidget\");\n }\n if (openParams.type == 277) {\n that.goBack(num);\n }\n var isIncludeViewRefresh = _this11.$store.state.isIncludeViewRefresh;\n if (isIncludeViewRefresh && subDoc && subDoc.length > 0) {\n //是包含元素网格视图并要刷新\n that.$parent.reloading();\n var obj = {\n data: [],\n isRefresh: false\n };\n _this11.$store.commit(\"saveSubDocuments\", obj); //保存成功后重新把包含元素网格视图的数据清空\n }\n _this11.initForm({\n //保存后重新加载页面数据,其他按钮也要执行该操作\n appId: appId,\n formId: formId,\n docId: docId\n });\n var list = _this11.formdata.fields;\n for (var _i2 = 0; _i2 < list.length; _i2++) {\n if (list[_i2].isModified) {\n var data = {\n fieldName: list[_i2].name,\n _: new Date().getTime()\n };\n var _docId4 = list[_i2].docId;\n _this11.$store.dispatch(\"getOperationLog\", {\n appId: appId,\n docId: _docId4,\n data: data\n });\n }\n }\n _this11.$store.commit(\"SET_SUBDOCUMENTS_DATA\", {\n //保存后清空store里的网格视图的数据\n op: \"\",\n view: \"\",\n _afd: \"\",\n _dl: \"\"\n });\n _this11.$store.commit(\"saveSubDocuments\", {\n data: [],\n isRefresh: false\n });\n }\n }\n if (num == 13) {\n //自定义按钮\n _this11.customBtnOperation(act.actionType, appId, formId, docId);\n }\n }\n }\n });\n },\n //重构自定义、普通按钮的功能\n //普通按钮(type=11: 比如: 考试申报->资格证报名管理->报名人员->报名->提交按钮),\n //自定义按钮(type=13: 比如: 报名审核 ->学员管理->材料审核->提交审核)\n v3ActionSubmit: function v3ActionSubmit(actId, isOrRefresh, id, activityType, withOld, act) {\n var _this12 = this;\n this.isBlockClick = false;\n var op = this.openParams;\n var appId = op.appId;\n var formData = \"\";\n var documentId = \"\";\n if (this.copyFormData) {\n //复制文档时存在\n var cf = this.copyFormData;\n formData = this.buildFormData(); //当复制时数据不变,只改变id值\n formData.docId = cf.id;\n formData.id = cf.id;\n documentId = cf.id;\n } else {\n var bf = this.buildFormData();\n formData = bf;\n formData.docId = bf.id;\n documentId = bf.id;\n }\n var subDocuments = [];\n var versions = \"\";\n var templateForm = \"\";\n var subDoc = this.$store.state.subDocuments;\n var haveViewGridview = this.haveViewGridview;\n var time = 0;\n if (haveViewGridview) {\n //如果有网格视图\n this.$store.commit(\"SET_SAVESUBDOCMENTS\", {\n randomId: new Date().getTime(),\n docId: formData.docId\n });\n time = 100;\n }\n setTimeout(function () {\n var subDocData = _this12.$store.state.subDocumentsData;\n if (subDoc && subDoc.length > 0) {\n //判断是否是包含元素网格视图\n subDocuments = subDoc;\n versions = formData.versions;\n delete formData.subDocuments;\n delete formData.versions;\n delete formData.templateForm;\n } else if (subDocData && haveViewGridview) {\n //网格视图,看store.js\n subDocuments = _this12.setAllSubDocmentsData(subDocData);\n } else {\n subDocuments = formData.subDocuments;\n versions = formData.versions;\n }\n var document = {\n applicationId: op.appId,\n formId: formData.formId,\n id: documentId,\n items: formData.items,\n parentId: formData.parentId,\n sign: formData.sign,\n subDocuments: subDocuments,\n versions: versions,\n exparams: {},\n templateForm: templateForm\n };\n delete formData.items;\n var subSelects = _this12.subSelects;\n if (subSelects.length > 0) {\n formData.subSelects = subSelects;\n }\n if (op.parentId) {\n if (op.isRelate === true || op.isRelate === \"true\") {\n document.isRelate = \"true\";\n } else {\n document.isRelate = op.isRelate;\n }\n document.parentId = op.parentId;\n formData.parentId = op.parentId;\n }\n formData.document = document;\n formData.viewId = \"\";\n formData.templateForm = \"\";\n if (op.realformId) {\n //如果是模板表单,realformId是真实formID,而不是templateForm\n formData.formId = op.realformId;\n formData.document.formId = op.realformId;\n formData.templateForm = op.actionContent;\n }\n _this12.parameterObj = formData;\n\n //重构start\n var treedocid = \"\";\n var flowType = \"\";\n var step = \"BeforeAction\";\n var req = {\n step: step,\n appId: appId,\n actId: actId,\n formData: formData,\n activityType: activityType,\n treedocid: treedocid,\n flowType: flowType\n };\n _this12.v3Activities(step, appId, actId, formData, activityType, treedocid, flowType, act); //重构执行前代码\n //重构end\n }, time);\n },\n v3Activities: function v3Activities(step, appId, actId, formData, activityType, treedocid, flowType, act) {\n var _this13 = this;\n this.isBlockClick = true;\n API.v3ActivitiesApi(step, appId, actId, formData, activityType, treedocid, flowType, {\n onSucess: function onSucess(response) {\n var errcode = response.data.errcode;\n var errmsg = response.data.errmsg;\n var errorsList = response.data.errors;\n _this13.isBlockClick = false;\n if (errcode == 4001) {\n _this13.isBlockClick = false;\n var promptData = \"\";\n if (errorsList && errorsList.length > 0) {\n errorsList.forEach(function (item) {\n promptData += item.errmsg + \"\\n\";\n });\n }\n _this13.promptBox(errcode, errmsg, promptData); //错误提示,多个文字循环判断-换行\n return;\n }\n // alert(response.data.errcode)\n // console.log(response.data.errcode)\n // if(response.data.data&&response.data.data.type==32){//执行前进入执行后\n // this.$confirm(`${errmsg}`, this.$t('tip'), {\n // confirmButtonText: this.$t('msg.confirm'),\n // cancelButtonText: this.$t('btns.cancel'),\n // type: \"warning\",\n // }).then(() => {\n // let step=response.data.data.next-step\n // this.v3Activities(step,appId,actId,formData,activityType,treedocid,flowType) //重构执行前代码 \n // }).catch((error)=>{}) \n // return\n // }else if(response.data.errcode==0){//55--自定义按钮13返回 \n // this.goBack(); \n // return\n // }\n\n if (response.data.data) {\n //如果有数据返回,结束下一步\n var resData = response.data.data;\n var _errmsg = response.data.data.content;\n if (!resData.type) {\n //没有type值,但是有返回数据,把数据放进document\n _this13.isBlockClick = false;\n if (resData.changedField) {\n var items = _this13.formdata.fields; //formData.document.items;\n var resDataItem = resData.changedField;\n if (resDataItem) {\n for (var j = 0; j < items.length; j++) {\n for (var i = 0; i < resDataItem.length; i++) {\n for (var el in resDataItem[i]) {\n if (items[j].name == el) {\n formData.document.items[el] = resDataItem[i][el];\n items[j].value = resDataItem[i][el];\n }\n }\n }\n }\n }\n switch (activityType) {\n case 4:\n //保存并启动流程\n _this13.saveStartWorkFlow(activityType, actId, act);\n break;\n case 8:\n //关闭窗口\n _this13.goBack();\n _this13.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 10:\n //返回\n _this13.goBack(activityType, actId, \"\", act);\n break;\n case 11:\n //保存并返回\n _this13.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 13:\n // this.execute(appId, actId, formData, act);\n _this13.execute({\n actId: actId,\n formData: formData,\n act: act\n });\n break;\n case 14:\n //网页打印\n _this13.printForm(act);\n _this13.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 15:\n //网页打印_包含流程打印\n _this13.printForm(act);\n break;\n case 19:\n //保存草稿\n _this13.saveDraft(activityType, actId, act);\n break;\n case 21:\n //保存并复制\n _this13.doSave(activityType, actId, \"\", \"\", act);\n break;\n case 25:\n //PDF导出\n _this13.leadingOut();\n break;\n case 26:\n //文件下载\n _this13.fileDownload(actId);\n break;\n case 30:\n //自定义打印\n _this13.printForm(act);\n _this13.runAfterAction(actId, activityType, \"\", \"\", act);\n break;\n case 34:\n //保存(校验)数据\n _this13.doSave(activityType, actId, \"\", subDoc, act);\n break;\n case 37:\n //通过邮件或短信通知\n _this13.showSendMailOrSmsFlowpanel(act);\n break;\n case 42:\n //保存并新建\n _this13.doSave(activityType, actId, withOld, \"\", act);\n break;\n case 43:\n //跳转\n _this13.jumpType(act);\n break;\n case 45:\n //归档\n _this13.placeOnFile();\n break;\n case 46:\n //签章\n _this13.isBlockClick = false;\n _this13.formSignatureData.showFormSignature = true;\n break;\n default:\n break;\n }\n }\n } else if (resData.type == 1) {\n _this13.$notify({\n title: _errmsg,\n message: \"\",\n type: 'warning'\n });\n _this13.isBlockClick = false;\n } else if (resData.type == 16) {\n _this13.$notify({\n title: _errmsg,\n message: \"\",\n type: \"warning\"\n });\n _this13.isBlockClick = false;\n } else if (resData.type == 32) {\n _this13.$confirm(\"\".concat(_errmsg), _this13.$t(\"tip\"), {\n confirmButtonText: _this13.$t(\"msg.confirm\"),\n cancelButtonText: _this13.$t(\"btns.cancel\"),\n closeOnClickModal: false,\n type: \"warning\"\n }).then(function () {\n var step = response.data.data[\"next-step\"];\n _this13.v3Activities(step, appId, actId, formData, activityType, treedocid, flowType); //重构执行前代码 \n }).catch(function () {\n _this13.isBlockClick = false;\n });\n }\n } else if (response.data.errcode == 0) {\n //请求成功返回\n\n if (response.data.actionStep === 'AfterAction' && activityType == 34) {\n //activityType=34才提示\n _this13.$message({\n type: 'success',\n message: '操作成功'\n });\n }\n if (response.data.actionStep === 'AfterAction' && activityType == 13) {\n //activityType=13才提示\n _this13.$message({\n type: 'success',\n message: '操作成功'\n });\n }\n _this13.goBack();\n return;\n }\n }\n });\n },\n setSubDocmentsData: function setSubDocmentsData(data) {\n var _afd = data._afd;\n var _dl = data._dl;\n if (_afd && _afd.length > 0) {\n for (var i = 0; i < _afd.length; i++) {\n for (var j = 0; j < _dl.length; j++) {\n if (_afd[i].docId == _dl[j].id) {\n var fields = _afd[i].data.fields;\n var items = _dl[j].items;\n for (var key in items) {\n for (var z = 0; z < fields.length; z++) {\n if (items[key].id == fields[z].id) {\n items[key].value = fields[z].value;\n }\n }\n }\n }\n }\n }\n }\n var arr = [];\n var dataList = data._dl;\n var view = data.view;\n var op = data.op;\n for (var _i3 = 0; _i3 < dataList.length; _i3++) {\n var obj = JSON.parse(JSON.stringify(dataList[_i3]));\n if (op.parentId) {\n obj.parentId = op.parentId;\n }\n if (op.isRelate === true || op.isRelate === \"true\") {\n obj.isRelate = \"true\";\n } else {\n obj.isRelate = op.isRelate;\n }\n obj.items = {};\n for (var _j = 0; _j < view.columns.length; _j++) {\n for (var _key in dataList[_i3].items) {\n if (_key == view.columns[_j].id) {\n obj.items[dataList[_i3].items[_key].name] = dataList[_i3].items[_key].value;\n if (dataList[_i3].edit) {\n obj.edit = true;\n } else {\n //暂时没想到其他好方法,只能全部都给edit保存了\n obj.edit = true;\n }\n }\n }\n }\n arr.push(obj);\n }\n return arr;\n },\n setAllSubDocmentsData: function setAllSubDocmentsData(data) {\n var docId = this.formdata.docId;\n var subDoc = data[docId];\n var arr = [];\n if (Object.values(data).length > 0) {\n for (var key in subDoc) {\n // arr.push(subDoc[key])\n arr = arr.concat(subDoc[key]);\n }\n }\n return arr;\n },\n //电子签章\n doSignature: function doSignature() {\n var that = this;\n var posid = \"formTemplate_\" + this.formTemplateDocid + \"_1\";\n var signatureCreator = Signature.create();\n signatureCreator.run({\n protectedItems: [],\n //设置定位页面DOM的id,自动查找ID,自动获取保护DOM的kg-desc属性作为保护项描述,value属性为保护数据。不设置,表示不保护数据,签章永远有效。\n position: posid,\n //设置盖章定位dom的ID,必须设置\n okCall: function okCall(fn, image) {\n //点击确定后的回调方法,this为签章对象 ,签章数据撤销时,将回调此方法,需要实现签章数据持久化(保存数据到后台数据库),保存成功后必须回调fn(true/false)渲染签章到页面上\n // console.log(\"盖章ID:\"+this.getSignatureid());\n // console.log(\"盖章数据:\"+this.getSignatureData());\n // var result = {\"data\":{}};\n var json = {};\n var docId = that.buildFormData().id;\n var signatureData = Signature.verifySignByList([this])[0]; //返回签章信息\n signatureData.documentid = docId, signatureData.documentname = docId, signatureData.position = posid;\n var imgData = image.imgdata; //返回签章图片base64数据\n json.signatureData = signatureData;\n json.imgData = imgData;\n json.userId = that.$root.user.id,\n //that.$store.state.userId; //user写死了\n json.nodeId = \"\";\n json.stateLabel = \"\";\n fn(true);\n var signatureCreator = Signature.create();\n var list = Signature.list;\n json.signatureId = this.signatureid;\n that.$api.saveHTMLsignature(that.$root.appid, docId, json, {\n onSucess: function onSucess(res) {\n if (res.data.errcode === 4001) {\n Signature.hide(); //隐藏签章\n Toast({\n message: res.data.errmsg,\n iconClass: \"fa fa-close fa-2x\"\n });\n return;\n } else {\n for (var key in list) {\n signatureCreator.saveSignature(docId, key, list[key].getSignatureData());\n }\n }\n }\n });\n },\n cancelCall: function cancelCall() {\n //点击取消后的回调方法\n }\n });\n },\n //自定义按钮操作\n customBtnOperation: function customBtnOperation(actionType, appId, formId, docId) {\n switch (actionType) {\n case 0:\n this.initForm({\n //保存后重新加载页面数据,其他按钮也要执行该操作\n appId: appId,\n formId: formId,\n docId: docId\n });\n var list = this.formdata.fields;\n for (var i = 0; i < list.length; i++) {\n if (list[i].isModified) {\n var data = {\n fieldName: list[i].name,\n _: new Date().getTime()\n };\n var _docId5 = list[i].docId;\n this.$store.dispatch(\"getOperationLog\", {\n appId: appId,\n docId: _docId5,\n data: data\n });\n }\n }\n break;\n case 1:\n this.goBack();\n break;\n case 2:\n this.goBack();\n break;\n case 3:\n break;\n default:\n break;\n }\n },\n //保存(校验)数据\n doSave: function doSave(num, actId, withOld, subDoc, act) {\n var _this14 = this;\n // debugger\n\n var openParams = this.openParams;\n var that = this;\n var transferrData = \"\";\n var id = \"\";\n var formId = \"\";\n if (this.copyFormData) {\n //复制时存在\n transferrData = this.buildFormData(); //this.copyFormData\n id = this.copyFormData.id;\n transferrData.id = id;\n } else {\n var bf = this.buildFormData();\n transferrData = bf;\n id = bf.id;\n }\n if (openParams.parentId) {\n transferrData.parentId = openParams.parentId;\n } else {\n transferrData.parentId = \"\";\n }\n if (openParams.isRelate === true || openParams.isRelate === \"true\") {\n transferrData.isRelate = \"true\";\n } else {\n transferrData.isRelate = \"\";\n }\n var subDocData = this.$store.state.subDocumentsData;\n if (subDoc && subDoc.length > 0) {\n //包含元素网格视图\n transferrData.subDocuments = subDoc;\n } else if (subDocData && this.haveViewGridview) {\n //网格视图,看store.js\n transferrData.subDocuments = this.setAllSubDocmentsData(subDocData);\n }\n if (openParams.realformId) {\n //如果是模板表单,realformId是真实formID,而不是templateForm\n transferrData.templateForm = openParams.actionContent;\n transferrData.formId = openParams.realformId;\n formId = openParams.realformId;\n } else {\n formId = this.formdata.formId;\n }\n delete this.$route.query.id;\n transferrData = _objectSpread(_objectSpread({}, transferrData), this.$route.query); //获取url参数,去掉id不要覆盖原来的id\n\n API.saveDocument(openParams.appId, formId, id, transferrData, {\n onSucess: function onSucess(response) {\n var errcode = response.data.errcode;\n var errmsg = response.data.errmsg;\n var errorsList = response.data.errors;\n if (errcode == 4001) {\n _this14.isBlockClick = false;\n var promptData = \"\";\n if (errorsList && errorsList.length > 0) {\n errorsList.forEach(function (item) {\n promptData += item.errmsg + \"\\n\";\n });\n }\n _this14.promptBox(errcode, errmsg, promptData); //错误提示,多个文字循环判断-换行\n } else if (errcode == 0) {\n that.promptBox(errcode, errmsg).then(function () {\n _this14.runAfterAction(actId, num, withOld, subDoc, act);\n });\n if (num == 42) {\n //保存后重建\n if (openParams.isIncludeCreate && openParams.isIncludeCreate == \"include\") {\n _this14.$emit(\"action\");\n } else if (openParams.type && openParams.type == 277) {\n _this14.$emit(\"action\", true);\n }\n }\n if (response.data.data.items && num != 42) {\n _this14.oldBuildFormData = response.data.data.items;\n }\n\n // debugger\n // if(!openParams.isFlowCenterCreate) { //流程中心处发起新建,保存后会重新加载整个表单页面,为了不刷新页面,判断非流程中心才执行下一步(m 忘了是不是我写的,但是这里导致普通表单保存后,新建了)\n // this.$parent.$parent.refreshView(openParams); //普通视图保存成功后刷新视图页面\n // }\n }\n }\n });\n },\n //复制文档\n copyDoc: function copyDoc() {\n var _this15 = this;\n var appId = this.openParams.appId;\n var docId = \"\";\n var doc = {};\n var formData = \"\";\n var bf = this.buildFormData();\n if (this.copyFormData) {\n //复制时存在\n formData = bf;\n formData.id = this.copyFormData.id;\n docId = this.copyFormData.id;\n doc.document = formData;\n } else {\n formData = bf;\n docId = bf.id;\n doc.document = formData;\n }\n delete doc.document.items.button_act;\n delete doc.document.items.null;\n delete doc.document.items.undefined;\n API.copeDocument(appId, docId, doc, {\n onSucess: function onSucess(response) {\n _this15.copyFormData = _this15.buildFormData();\n _this15.copyFormData.id = response.data.data.id;\n }\n });\n },\n //保存草稿(19)\n saveDraft: function saveDraft(num, actId, act) {\n var _this16 = this;\n var that = this;\n var formData = \"\";\n if (this.copyFormData) {\n //复制时存在\n formData = this.buildFormData();\n formData.id = this.copyFormData.id;\n } else {\n formData = this.buildFormData();\n }\n delete formData.items.button_act;\n delete formData.items.null;\n delete formData.items.undefined;\n API.saveWithoutValidDocument(this.openParams.appId, formData.id, formData, {\n onSucess: function onSucess(response) {\n if (response.data.errcode == 0) {\n var errcode = response.data.errcode;\n var errmsg = response.data.errmsg;\n _this16.promptBox(errcode, errmsg).then(function (data) {\n that.runAfterAction(actId, num, \"\", \"\", act);\n });\n }\n }\n });\n },\n //返回\n /**\n * num为按钮类型type\n */\n goBack: function goBack(num, actId, isFlowPanel, act) {\n // debugger\n var params = this.openParams;\n if (params.isOpenNewWindow) {\n //如果是新窗口打开 //|| (top == window 导致保存并返回,提交流程等关闭页签无法执行)\n window.close();\n } else if (params.isExternalLink) {\n //外链,打开的是opener组件\n if (params.isOpenDialog) {\n //弹窗打开\n window.parent.handleClose();\n } else {\n this.$emit(\"onAction\", \"\", true);\n }\n } else if (params.isIncludeCreate && params.isIncludeCreate == \"include\" && !(params.openType && params.openType == 293)) {\n //包含元素\n this.$emit(\"action\");\n } else if (params.isTabCreate && params.isTabCreate == \"tab\") {\n //选项卡\n this.$emit(\"action\");\n } else if (params.type && params.type == 277) {\n var isSave = \"\";\n if (num && num == 34) {\n isSave = true;\n }\n this.$emit(\"action\", isSave);\n } else if (isFlowPanel) {\n //打开了提交面板,提交流程后关闭表单标签,但是第一个if已经判断了,这里暂时后续再看,先不删除\n var tab = params;\n this.$parent.doBack();\n // let havePar = false;\n // let par = '';\n // while(!havePar) {\n // par = par + '.$parent';\n // let url = 'this' + par + '.onCloseBtnClick';\n // if(eval(url)) {\n // let path = url + '(' + JSON.stringify(tab) +')';\n // eval(path);\n // break\n // }\n // }\n // let tab = this.openParams;\n // this.$parent.$parent.onCloseBtnClick(tab);\n } else if (params.isPopupLayerDisplay) {\n //如果是弹出层打开的视图打开的表单\n this.$emit(\"popupOpenType\", \"VIEW\");\n this.$emit(\"action\");\n } else {\n if (num && num == 8) {\n if (this.isClickGoBackBtn) {\n return;\n }\n }\n var _tab = params;\n this.isClickGoBackBtn = true;\n if (params.allowOpenDoc && params.allowOpenDoc == true) {\n this.$parent.$parent.handleDocumentClose(); //视图选择框允许查看文档点击返回按钮弹框false\n } else {\n // this.$parent.$parent.onCloseBtnClick(tab);\n this.$parent.doBack();\n }\n }\n if (num && num == 10) {\n //返回按钮执行执行后脚本\n this.runAfterAction(actId, num, \"\", \"\", act);\n }\n },\n printPage: function printPage() {\n var newWindow = window.open(\"_blank\"); // 打开新窗口\n var codestr = document.getElementById(\"print\").innerHTML; // 获取需要生成pdf页面的div代码\n newWindow.document.write(codestr); // 向文档写入HTML表达式或者JavaScript代码\n newWindow.document.close(); // 关闭document的输出流, 显示选定的数据\n setTimeout(function () {\n newWindow.print();\n }, 100);\n },\n //打印数据\n printForm: function printForm(act) {\n this.isBlockClick = false;\n if (act.type == 14) {\n this.printParams.formId = this.formdata.formId;\n this.printParams.docId = this.formdata.docId;\n var routeData = this.$router.resolve({\n name: \"formPrint\",\n query: {\n appId: this.openParams.appId,\n formId: this.formdata.formId,\n docId: this.formdata.docId,\n printType: act.type\n }\n });\n window.open(routeData.href, \"_blank\");\n } else if (act.type == 30) {\n this.printParams.formId = this.formdata.formId;\n this.printParams.docId = this.formdata.docId;\n var _routeData = this.$router.resolve({\n name: \"formPrint\",\n query: {\n appId: this.openParams.appId,\n onActionPrint: act.onActionPrint,\n docId: this.formdata.docId,\n printType: act.type\n }\n });\n window.open(_routeData.href, \"_blank\");\n }\n },\n //归档\n placeOnFile: function placeOnFile() {\n var _this17 = this;\n var appId = this.openParams.appId;\n var docId = this.buildFormData().id;\n API.Archive(appId, docId, {\n onSucess: function onSucess() {\n _this17.isBlockClick = false;\n }\n });\n },\n //文件下载\n fileDownload: function fileDownload(actId) {\n var _this18 = this;\n var appId = this.openParams.appId;\n var docId = this.buildFormData().id;\n API.documentDownload(appId, docId, actId, {\n onSucess: function onSucess(res) {\n _this18.isBlockClick = false;\n var path = res.data.data;\n if (path && (path.indexOf(\"https://\") > -1 || path.indexOf(\"http://\") > -1)) {\n window.open(encodeURI(path));\n return false;\n }\n var url = obpmConfig.obpmFilePath + path;\n // window.open(url);\n var elink = document.createElement(\"a\");\n var arr = path.split(\"/\");\n elink.download = arr[arr.length - 1];\n elink.style.display = \"none\";\n elink.href = url;\n document.body.appendChild(elink);\n elink.click();\n URL.revokeObjectURL(elink.href);\n document.body.removeChild(elink);\n\n // let fileName = \"\";\n // let type = response.headers['content-type'];\n // if(response.headers['content-disposition']) {\n // fileName = decodeURIComponent(response.headers['content-disposition'].split(\"=\")[1]);\n // }else {\n // fileName=\"下载\";\n // }\n // if(response.data.size >0){\n // this.download(response, type, fileName);\n // }else {\n // this.$notify({\n // title: this.$t('form.warning'),\n // message: '文件不存在',\n // type: 'warning'\n // });\n // }\n },\n onError: function onError() {\n _this18.isBlockClick = false;\n _this18.$notify({\n title: _this18.$t(\"form.warning\"),\n message: _this18.$t(\"view.nofile\"),\n type: \"warning\"\n });\n }\n });\n },\n setHtmlReadnoly: function setHtmlReadnoly(isRead) {\n var data = this.formdata;\n var loopOpe = function loopOpe(fields) {\n for (var i = 0; i < fields.length; i++) {\n if (isRead) {\n if (fields[i].displayType == Constant.PermissionType_MODIFY) {\n fields[i].originalDisplayType = Constant.PermissionType_MODIFY;\n fields[i].displayType = Constant.PermissionType_READONLY;\n }\n } else {\n if (fields[i].originalDisplayType) {\n fields[i].displayType = fields[i].originalDisplayType;\n }\n }\n if (!fields[i].isComment) {\n if (fields[i].tabs && fields[i].tabs.length > 0) {\n for (var j = 0; j < fields[i].tabs.length; j++) {\n if (fields[i].tabs[j].fields && fields[i].tabs[j].fields.length > 0) {\n loopOpe(fields[i].tabs[j].fields);\n }\n }\n }\n }\n }\n };\n if (data.fields && data.fields.length > 0) {\n loopOpe(data.fields);\n }\n this.formdata = data;\n },\n //PDF导出\n leadingOut: function leadingOut() {\n var _this19 = this;\n var appId = this.openParams.appId;\n var _bf = this.buildFormData();\n var docId = _bf.id; //__HIyNvkSUkqN1PsZOicZ\n var formId = _bf.formId;\n this.setHtmlReadnoly(true);\n setTimeout(function () {\n var domId = \"formTemplate_\" + docId.replace(/_/g, \"\"); //formTemplate_HIyNvkSUkqN1PsZOicZ\n var htmlBody = document.getElementById(domId).innerHTML;\n var linkCss = \"\";\n htmlBody += linkCss;\n var params = {\n htmlBody: htmlBody\n };\n var statiContextPath = obpmConfig.statiContextPath;\n _this19.setHtmlReadnoly(false);\n if (statiContextPath) {\n //5.0 trunk\n API.trunkPDFExport(appId, formId, docId, params, {\n onSucess: function onSucess(res) {\n _this19.isBlockClick = false;\n var url = obpmConfig.obpmFilePath + res.data.data;\n window.open(url);\n }\n });\n } else {\n //4.4 stable\n API.stablePDFExport(appId, formId, docId, {\n onSucess: function onSucess(response) {\n _this19.isBlockClick = false;\n // 获取在response headers中返回的下载文件类型\n var type = response.headers[\"content-type\"];\n /*获取在response headers中返回的下载文件名\n 因为返回文件名是通过encodeURIComponent()函数进行了编码,因此需要通过decodeURIComponent()函数解码\n */\n var fileName = decodeURIComponent(response.headers[\"content-disposition\"].split(\"=\")[1]);\n // 调用封装好的下载函数\n _this19.download(response, type, fileName);\n }\n });\n }\n }, 100);\n },\n download: function download(res, type, filename) {\n var blob = new Blob([res.data], {\n // 如果后端没返回下载文件类型,则需要手动设置:type: 'application/pdf;chartset=UTF-8' 表示下载文档为pdf,如果是word则设置为msword,excel为excel\n type: type\n });\n var a = document.createElement(\"a\");\n var herf = window.URL.createObjectURL(blob);\n // 下载链接\n a.href = herf;\n // 下载文件名,如果后端没有返回,可以自己写a.download = '文件.pdf'\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n window.URL.revokeObjectURL(herf);\n },\n //关闭跳转按钮打开的窗口\n closeDialog: function closeDialog() {\n this.jumpPopup = false;\n if (this.isDialogOpenExternalLink) {\n var appId = this.openParams.appId;\n var bf = this.buildFormData();\n var formId = bf.formId;\n var docId = bf.id;\n this.initForm({\n appId: appId,\n formId: formId,\n docId: docId\n });\n }\n },\n //计算脚本a标签跳转\n scriptJump: function scriptJump(openType, params, jumpType, styleParams) {\n var newparams = JSON.parse(params)[0];\n newparams.name = this.formdata.formTemplate.formName;\n if (jumpType === \"opendocument\") {\n if (openType == \"open-eject\" || openType == \"dialog\") {\n if (styleParams) {\n styleParams = JSON.parse(styleParams);\n }\n var screen = document.documentElement.clientHeight;\n var dialogHeight = styleParams.dialogHeight;\n if (dialogHeight) {\n var dh = dialogHeight.split(\"px\")[0];\n if (dh > screen) {\n styleParams.dialogHeight = screen - 80 + \"px\";\n } else {\n styleParams.dialogHeight = dh - 80 + \"px\";\n }\n }\n this.isJumpForm = true;\n newparams.dialogId = \"dialog_normalform_\" + this.openParams.actionContent; //用于弹窗打开表单有包含元素时,计算包含元素宽度\n this.jumpParams = newparams;\n this.jumpPopupStyle = styleParams;\n this.jumpPopup = true;\n } else if (openType == \"open-present\") {\n newparams.isCurrentPageOpen = true;\n this.$emit(\"openNewpage\", newparams);\n } else if (openType == \"open-blank\") {\n var routeData = this.$router.resolve({\n name: \"open\",\n query: newparams\n });\n window.open(routeData.href, \"_blank\");\n } else {\n //默认用tab方式打开\n this.$emit(\"add-tab\", newparams);\n }\n } else if (jumpType === \"openview\") {\n if (openType == \"open-eject\" || openType == \"dialog\") {\n this.isJumpView = true;\n this.jumpParams = newparams;\n this.jumpPopup = true;\n this.popupLayerType = \"VIEW\";\n } else if (openType == \"open-present\") {\n newparams.isCurrentPageOpen = true;\n this.$emit(\"openNewpage\", newparams);\n } else if (openType == \"open-blank\") {\n var _routeData2 = this.$router.resolve({\n name: \"view_blank\",\n query: newparams\n });\n window.open(_routeData2.href, \"_blank\");\n } else {\n //默认用tab方式打开\n this.$emit(\"add-tab\", newparams);\n }\n } else if (jumpType === \"jumpto\") {\n // let routeData = this.$router.resolve({\n // name: \"open\",\n // query: newparams,\n // });\n // window.open(routeData.href, \"_blank\");\n window.open(newparams.actionContent);\n }\n },\n //跳转\n jumpType: function jumpType(act) {\n var _this20 = this;\n var _op = this.openParams;\n var name = act.name;\n if (act.jumpMode === 0) {\n var actId = act.targetList.split(\"|\")[0];\n var params = {\n linkType: \"00\",\n appId: this.openParams.appId,\n actionContent: actId,\n _select: \"\",\n name: name\n };\n if (_op.isOpenNewWindow == \"true\") {\n params.isCurrentPageOpen = true;\n }\n var isExternalLink = false;\n switch (act.jumpActOpenType) {\n case 0:\n if (!isExternalLink) {\n params.isCurrentPageOpen = true;\n // this.openNewpage(params)\n this.$emit(\"openNewpage\", params);\n this.runAfterAction(act.id, act.type, \"\", \"\", act);\n }\n break;\n case 1:\n this.isJumpForm = true;\n if (!isExternalLink) {\n params.isPopupLayerDisplay = true;\n this.jumpParams = params;\n this.jumpPopup = true;\n this.popupLayerType = \"VIEW\";\n this.runAfterAction(act.id, act.type, \"\", \"\", act);\n } else {\n this.jumpParams = params;\n this.jumpPopup = true;\n }\n break;\n case 2:\n if (!isExternalLink) {\n this.$emit(\"add-tab\", params);\n this.runAfterAction(act.id, act.type, \"\", \"\", act);\n }\n break;\n case 3:\n if (!isExternalLink) {\n params.isOpenNewWindow = true; //判断是新窗口打开\n var routeData = this.$router.resolve({\n // name: \"form_blank\",\n name: \"open\",\n query: params\n });\n window.open(routeData.href, \"_blank\");\n this.runAfterAction(act.id, act.type, \"\", \"\", act);\n }\n break;\n case 4:\n break;\n default:\n break;\n }\n } else if (act.jumpMode === 1) {\n var subSelects = this.subSelects;\n var subSelectId = \"\";\n if (subSelects && subSelects.length > 0) {\n subSelectId = subSelects.join(\";\");\n }\n this.$api.runScript(this.openParams.appId, act.id, this.buildFormData().id, \"dispatcherUrl\", \"\", subSelectId, {\n onSucess: function onSucess(res) {\n if (res.data.errcode === 0) {\n _this20.isBlockClick = false;\n var url = res.data.data;\n var urlParams = \"\";\n if (url.indexOf(\"?\") > -1) {\n urlParams = url.split(\"?\")[1];\n }\n var isForm = url.search(\"form.html\") != -1;\n var isView = url.search(\"view.html\") != -1;\n var isOpenCurrentSoftwareData = url.search(\"open?\") != -1;\n var urlArrayF = url.split(\"?\");\n var urlArray = \"\";\n if (urlArrayF[1]) {\n urlArray = urlArrayF[1].split(\"&\");\n }\n _this20.isJumpForm = isForm;\n _this20.isJumpView = isView;\n var type = \"\";\n var _isExternalLink = false;\n if (isForm) {\n type = \"00\";\n } else if (isView) {\n type = \"01\";\n } else if (!isForm && !isView && !isOpenCurrentSoftwareData) {\n _isExternalLink = true;\n _this20.isExternalLink = true; //判断是否是外部链接\n }\n var _params = {\n linkType: type,\n appId: _this20.openParams.appId,\n actionContent: \"\",\n name: act.name,\n _select: \"\",\n viewId: \"\"\n };\n if (_op.isOpenNewWindow == \"true\") {\n _params.isCurrentPageOpen = true;\n }\n var obj = {};\n if (urlArray && urlArray.length > 0) {\n for (var i = 0; i < urlArray.length; i++) {\n var val = urlArray[i].split(\"=\");\n obj[val[0]] = val[1];\n }\n }\n switch (act.jumpActOpenType) {\n case 0:\n //当前页打开\n if (!_isExternalLink) {\n if (isOpenCurrentSoftwareData) {\n //如果外链形式还是打开产品的控件,那么不用iframe的方法嵌套\n if (_op.exparams) {\n obj.exparams = _op.exparams;\n }\n obj.name = act.name;\n obj.isCurrentPageOpen = true;\n // this.$emit(\"openNewpage\",obj)\n _this20.openNewpage(obj);\n } else {\n _params = {\n linkType: type,\n appId: _this20.openParams.appId,\n actionContent: obj.viewId ? obj.viewId : obj.formId,\n name: act.name,\n _select: obj.docid ? obj.docid : \"\",\n viewId: \"\",\n clearTemp: obj.clearTemp ? obj.clearTemp : \"\",\n isCurrentPageOpen: true\n };\n if (urlParams) {\n _params.urlParams = urlParams;\n }\n // this.$emit(\"openNewpage\",params)\n _this20.openNewpage(obj);\n }\n } else {\n _params = {\n linkType: \"103\",\n appId: _this20.openParams.appId,\n actionContent: url\n };\n _this20.$emit(\"openNewpage\", _params);\n _this20.runAfterAction(act.id, act.type, \"\", \"\", act);\n }\n break;\n case 1:\n //弹出窗打开\n if (!_isExternalLink) {\n if (isOpenCurrentSoftwareData) {\n var formParams = \"\";\n for (var key in obj) {\n if (key != \"name\" && key != \"actionContent\" && key != \"searchData\" && key != \"showtype\" && key != \"realformId\" && key != \"templateForm\" && key != \"urlParams\" && key != \"exparams\" && key != \"runAfterParams\" && key != \"queryString\" && key != \"isOpenDialog\") {\n if (obj[key]) {\n formParams += \"&\" + key + \"=\" + obj[key];\n }\n }\n }\n if (_op.exparams) {\n if (formParams) {\n formParams = formParams + \"\" + _op.exparams;\n } else {\n formParams = _op.exparams;\n }\n }\n if (formParams) {\n obj.formParams = formParams;\n }\n obj.name = act.name;\n obj.isPopupLayerDisplay = true;\n if (obj.linkType == \"00\") {\n //表单\n _this20.isJumpForm = true;\n } else if (obj.linkType == \"01\") {\n //视图\n _this20.isJumpView = true;\n _this20.popupLayerType = \"VIEW\";\n }\n if (obj.isRefresh && obj.isRefresh == \"true\") {\n _this20.isDialogOpenExternalLink = true;\n }\n _this20.jumpParams = obj;\n } else {\n _params = {\n linkType: type,\n appId: _this20.openParams.appId,\n actionContent: obj.viewId ? obj.viewId : obj.formId,\n name: act.name,\n _select: obj.docid ? obj.docid : \"\",\n viewId: \"\",\n clearTemp: obj.clearTemp ? obj.clearTemp : \"\",\n isPopupLayerDisplay: true //弹出层打开\n };\n if (urlParams) {\n _params.urlParams = urlParams;\n }\n _this20.jumpParams = _params;\n _this20.popupLayerType = \"VIEW\";\n }\n _this20.jumpPopup = true;\n } else {\n _params = {\n linkType: \"103\",\n appId: _this20.openParams.appId,\n actionContent: url,\n name: act.name,\n _select: obj.docid ? obj.docid : \"\",\n viewId: \"\",\n clearTemp: obj.clearTemp ? obj.clearTemp : \"\"\n };\n if (obj.isRefresh && obj.isRefresh == \"true\") {\n _this20.isDialogOpenExternalLink = true;\n }\n _this20.jumpParams = _params;\n _this20.jumpPopup = true;\n _this20.runAfterAction(act.id, act.type, \"\", \"\", act);\n }\n break;\n case 2:\n //页签打开\n if (!_isExternalLink) {\n if (isOpenCurrentSoftwareData) {\n if (_op.exparams) {\n obj.exparams = _op.exparams;\n }\n obj.name = act.name;\n _this20.addTab(obj);\n } else {\n _params = {\n linkType: type,\n appId: _this20.openParams.appId,\n actionContent: obj.viewId ? obj.viewId : obj.formId,\n name: act.name,\n _select: obj.docid ? obj.docid : \"\",\n viewId: \"\",\n clearTemp: obj.clearTemp ? obj.clearTemp : \"\"\n };\n if (urlParams) {\n _params.urlParams = urlParams;\n }\n // this.$emit(\"add-tab\", params);\n _this20.addTab(_params);\n }\n } else {\n _params = {\n linkType: \"103\",\n appId: _op.appId,\n actionContent: url,\n name: act.name,\n isExternalLink: true,\n //url是打开opener组件,判断是外链。\n refreshId: _op.id //判断是否得刷新\n };\n _this20.$emit(\"add-tab\", _params);\n _this20.runAfterAction(act.id, act.type, \"\", \"\", act);\n }\n break;\n case 3:\n //新窗口打开\n if (!_isExternalLink) {\n _params = {\n linkType: type,\n appId: _this20.openParams.appId,\n actionContent: obj.viewId ? obj.viewId : obj.formId,\n name: act.name,\n _select: obj.docid ? obj.docid : \"\",\n viewId: \"\",\n clearTemp: obj.clearTemp ? obj.clearTemp : \"\"\n };\n if (urlParams) {\n _params.urlParams = urlParams;\n }\n if (isForm) {\n var _routeData3 = _this20.$router.resolve({\n // name: \"form_blank\",\n name: \"open\",\n query: _params\n });\n window.open(_routeData3.href, \"_blank\");\n } else if (isView) {\n var _routeData4 = _this20.$router.resolve({\n name: \"view_blank\",\n query: _params\n });\n window.open(_routeData4.href, \"_blank\");\n } else if (isOpenCurrentSoftwareData) {\n url += \"&isOpenNewWindow=true\";\n window.open(url);\n }\n } else {\n window.open(url, \"_blank\");\n _this20.runAfterAction(act.id, act.type, \"\", \"\", act);\n }\n break;\n case 4:\n break;\n default:\n break;\n }\n }\n }\n });\n }\n },\n //执行前脚本返回成功后,执行\n execute: function execute(_ref2) {\n var _this21 = this;\n var actId = _ref2.actId,\n formData = _ref2.formData,\n act = _ref2.act;\n if (act.actionSelection === 0) {\n var params = {\n docId: formData.docId,\n viewId: formData.viewId ? formData.viewId : \"\",\n formId: formData.formId,\n _templateForm: formData.templateForm ? formData.templateForm : \"\",\n parentId: formData.parentId ? formData.parentId : \"\"\n };\n var obj = JSON.parse(JSON.stringify(formData));\n obj.document.exparams = {};\n delete obj.subDocuments;\n delete obj.versions;\n delete obj.sign;\n var appId = this.openParams.appId;\n API.executeCustom(appId, actId, obj, params, {\n onSucess: function onSucess(res) {\n var errcode = res.data.errcode;\n if (errcode == 0) {\n var errmsg = act.name + _this21.$t(\"success\");\n _this21.promptBox(errcode, errmsg);\n var _obj2 = {\n docId: \"\",\n appId: _this21.openParams.appId,\n viewId: act.parentForm,\n opentarget: \"\",\n containTitle: _this21.formdata.formTemplate.formName,\n field: \"\",\n isRelate: undefined,\n parentId: \"\"\n };\n _this21.$api.getAxecuteAddress(_this21.openParams.appId, act.id, _obj2, {\n onSucess: function onSucess(res) {\n if (res.data.errcode === 0) {\n var resData = res.data.data;\n if (resData && resData.type == 16) {\n var isOpenCurrentSoftwareData = resData.content.search(\"open?\") != -1;\n if (isOpenCurrentSoftwareData) {\n var urlArrayF = resData.content.split(\"?\");\n var urlArray = \"\";\n if (urlArrayF[1]) {\n urlArray = urlArrayF[1].split(\"&\");\n }\n var _obj3 = {};\n if (urlArray && urlArray.length > 0) {\n for (var i = 0; i < urlArray.length; i++) {\n var val = urlArray[i].split(\"=\");\n _obj3[val[0]] = val[1];\n }\n }\n _obj3.name = act.name;\n _this21.$emit(\"add-tab\", _obj3);\n } else {\n var _params2 = {\n linkType: \"103\",\n appId: _this21.openParams.appId,\n actionContent: resData.content,\n name: act.name,\n _select: \"\",\n viewId: \"\"\n };\n _this21.$emit(\"add-tab\", _params2);\n }\n }\n // if(resData.content&&resData.content.indexOf('processHtmlTem.html')>-1){\n // API.softwareApplication(appId,{\n // onSucess:res=>{\n // console.log(\"11111111\")\n // console.log(res)\n // let errcode = res.data.errcode;\n // if(errcode == 0) {\n // let software=JSON.stringify(res.data.data)\n // console.log('编辑流程end')\n // sessionStorage.setItem('appId',this.openParams.appId)\n // sessionStorage.setItem('software',software)\n\n // }\n // }\n // })\n // }\n\n _this21.runAfterAction(actId, act.type, \"\", \"\", act);\n }\n }\n });\n } else {\n var _errmsg2 = response.data.errmsg;\n _this21.promptBox(errcode, _errmsg2);\n }\n }\n });\n } else if (act.actionSelection === 1) {\n var _obj4 = {\n appId: this.openParams.appId,\n actionContent: this.openParams.actionContent,\n _select: \"\",\n relatedFormId: act.relatedFormId,\n opentarget: \"detail\"\n };\n this.newOpenParams = _obj4;\n this.customMessagePopup = true;\n }\n\n // API.executeCustom(\n // appId,\n // divId,\n // formData,\n // {\n // onSucess: response => {\n // let errcode = response.data.errcode;\n // if(errcode == 0) {\n // if(act.actionSelection == 0) {\n // let obj = {\n // docId: '',\n // appId: this.openParams.appId,\n // viewId: act.parentForm,\n // opentarget: '',\n // containTitle: this.formdata.formTemplate.formName,\n // field:'',\n // isRelate: undefined,\n // parentId:'',\n // };\n // this.$api.getAxecuteAddress(\n // this.openParams.appId,\n // act.id,\n // obj,\n // {\n // onSucess: res => {\n // if(res.data.errcode === 0) {\n // let resData = res.data.data;\n // if(resData.type == 16) {\n // let params = {\n // linkType: '103',\n // appId: this.openParams.appId,\n // actionContent: resData.content,\n // name: act.name,\n // _select: '',\n // viewId: '',\n // };\n // this.$emit(\"add-tab\", params);\n // }\n\n // }\n // }\n // }\n // )\n // }else {\n // let errmsg = \"成功!\";\n // this.promptBox(errcode, errmsg);\n // }\n // }else {\n // let errmsg = response.data.errmsg\n // this.promptBox(errcode, errmsg);\n // }\n // }\n // }\n // )\n\n // if(act.actionSelection === 0) {\n // }else if(act.actionSelection === 1) {\n // let obj = {\n // appId: this.openParams.appId,\n // actionContent: this.openParams.actionContent,\n // _select: '',\n // relatedFormId: act.relatedFormId,\n // opentarget: \"detail\"\n // }\n // this.newOpenParams = obj;\n // this.customMessagePopup = true;\n // }else {\n\n // }\n },\n //返回成功或失败时的提示框\n promptBox: function promptBox(errcode, errmsg, title) {\n var that = this;\n var p = new Promise(function (resolve) {\n if (errcode == 4001) {\n that.$notify({\n title: title,\n message: \"\",\n type: \"warning\"\n });\n } else if (errcode == 0) {\n that.$notify({\n title: errmsg,\n message: \"\",\n type: \"success\"\n });\n resolve(\"成功\");\n }\n });\n return p;\n },\n buildFormData: function buildFormData() {\n var _this22 = this;\n var items = {};\n // 判断如果没有值就不执行\n if (this.formdata.fields) {\n var loopOpe = function loopOpe(fields) {\n for (var i = 0; i < fields.length; i++) {\n var fld = fields[i];\n if (fld.formField == \"AttachmentUploadField\") {\n var attachmentUploadVale = fld.value;\n var isJSON = _this22.isJSON(attachmentUploadVale);\n if (isJSON) {\n attachmentUploadVale = JSON.parse(attachmentUploadVale);\n }\n if (attachmentUploadVale) {\n attachmentUploadVale.forEach(function (item) {\n item.isEdit = false;\n });\n }\n }\n if (fld.name && fld.value != undefined && fld.formField != \"ButtonField\" && fld.displayType != undefined) {\n if (fld.textType == \"hidden\" && fld.value) {\n items[fld.name] = fld.value;\n } else if (fld.textType != \"hidden\") {\n items[fld.name] = fld.value;\n }\n if (fld.textType == \"hidden\" && !fld.value) {\n if (fld.isUpdatedValue) {\n //这里针对视图选择框 隐藏并且没值时,但有选过值,也要把这个属性传到后台\n items[fld.name] = \"\";\n }\n }\n }\n if (fld.addInTtems) {\n items[fld.name] = fld.value;\n }\n if (fld.tabs && fld.tabs.length > 0) {\n fld.tabs.forEach(function (tab) {\n if (tab.fields) {\n loopOpe(tab.fields);\n }\n if (tab.type == \"view\" && tab.openType == 288) {\n //选项卡打开网格视图\n _this22.haveViewGridview = true;\n }\n });\n }\n }\n };\n loopOpe(this.formdata.fields);\n }\n return {\n applicationId: this.openParams.appId,\n formId: this.formdata.formId,\n id: this.formdata.docId,\n items: items,\n parentId: \"\",\n sign: \"\",\n subDocuments: [],\n versions: \"0\"\n };\n },\n showSendMailOrSmsFlowpanel: function showSendMailOrSmsFlowpanel(act) {\n this.isBlockClick = false;\n this.flowProcessAct = act;\n this.sendMailVisible = true;\n },\n flowHandle: function flowHandle(act) {\n if (this.flowDialogVisible) {\n this.flowDialogVisible = false;\n return;\n }\n if (act.type == 5) {\n this.flowProcessAct = act;\n this.flowDialogVisible = true;\n } else if (act.type == 47 ||\n //回退流程\n act.type == 33 ||\n //流程启动\n act.type == 48 ||\n //流程催办\n act.type == 55 ||\n //点评\n act.type == 56 ||\n //补签\n act.type == 57 ||\n //加签主办\n act.type == 58 //加签主办\n ) {\n if (act) {\n this.flowProcessAct = act;\n }\n this.flowDialogVisible = true;\n if (act.type == 56 || act.type == 55 || act.type == 33) {\n //补签和点评和流程启动\n this.isShowHandSign = false;\n this.isShowKeyboard = false;\n }\n if (act.type == 47) {\n act.flowType = \"81\";\n }\n } else if (act.type == 37) {\n //发送邮件或者短信\n this.flowProcessAct = act;\n this.sendMailVisible = true;\n } else if (act.type == 52) {\n //终止流程\n if (act) {\n this.flowProcessAct = act;\n }\n if (act.workFlowType == 1) {\n //自由流程\n this.flowDialogVisible = true;\n } else {\n this.terminationVisible = true;\n }\n } else if (act.type == 53) {\n //编辑流程审批人\n if (act) {\n this.flowProcessAct = act;\n }\n this.allowEditApprover = true;\n this.approverVisible = true;\n }\n },\n //提交成功或者失败后关闭流程提交面板或者流程退回面板\n closeThePopup: function closeThePopup(status, isClose) {\n var _this23 = this;\n var isFlowPanel = true;\n if (isClose) {\n this.flowDialogVisible = false; //流程提交面板\n this.goBack();\n } else if (status == \"SUCCESS\" && !isClose) {\n var _op = this.openParams;\n if (_op.isOpenNewWindow == \"true\") {\n //新窗口打开,延迟一下显示提示再关闭\n setTimeout(function () {\n _this23.flowDialogVisible = false; //流程提交面板\n _this23.goBack(\"\", \"\", isFlowPanel);\n }, 800);\n } else {\n this.flowDialogVisible = false; //流程提交面板\n this.isShowKeyboard = true;\n this.goBack(\"\", \"\", isFlowPanel);\n }\n } else if (status == \"ERROR\" && !isClose) {\n this.flowDialogVisible = false;\n } else {\n this.flowDialogVisible = false; //流程提交面板\n this.sendMailVisible = false;\n this.isShowHandSign = true;\n this.isShowKeyboard = true;\n setTimeout(function () {\n _this23.flowDialogVisible = false; //流程提交面板\n _this23.goBack(\"\", \"\", isFlowPanel);\n }, 800);\n }\n },\n //指定审批人时显示用户显示用户选择框\n designatedApprover: function designatedApprover(approversObj, flowId, isFreeFlow, saveApprover, approverNumType, isAppentCirculator) {\n this.isAppentCirculator = isAppentCirculator; //是否知道流程抄送人\n this.approversObj = approversObj;\n this.flowId = flowId;\n this.isFreeFlow = isFreeFlow; //判断是否是自由流程\n this.saveApproverStatus = saveApprover;\n this.approverNumType = approverNumType;\n this.approverVisible = true;\n this.isSubFlow = false;\n },\n // 加签主办或者加签协办有数据,显示在用户选择框\n getProcessHosting: function getProcessHosting(list) {\n this.processHostingList = list;\n this.approverVisible = true;\n },\n //指定审批人后显示在流程处理面板上\n selectApprover: function selectApprover(approverName, submitTo, nextUserId, isAppentCirculator) {\n if (!isAppentCirculator) {\n this.approverName = approverName;\n } else {\n this.cCname = approverName;\n }\n this.nextUserId = nextUserId;\n this.submitTo = submitTo;\n this.approverVisible = false;\n },\n closeApproverDialog: function closeApproverDialog(isRefresh) {\n if (isRefresh) {\n //\n // this.isRouterAlive= false;\n // this.$nextTick(() => (this.isRouterAlive= true));\n this.$parent.updateData();\n }\n this.approverVisible = false;\n },\n reloadApprover: function reloadApprover(act) {\n var _this24 = this;\n if (act.type == \"51\") {\n this.isRouterAlive = false;\n this.$nextTick(function () {\n _this24.isRouterAlive = true;\n });\n }\n },\n //回撤流程\n retracementWorkflow: function retracementWorkflow(actId, act) {\n var _this25 = this;\n var openParams = this.openParams;\n var appId = openParams.appId;\n var docId = openParams._select;\n this.$api.retracementWorkflow(appId, docId, {\n onSucess: function onSucess(response) {\n var errcode = \"\";\n var errmsg = \"\";\n if (response.data.data) {\n errcode = response.data.errcode;\n errmsg = response.data.data;\n _this25.runAfterAction(actId, \"\", \"\", \"\", act);\n _this25.$notify({\n title: _this25.$t(\"success\"),\n message: errmsg,\n type: \"success\"\n });\n _this25.initForm({\n appId: openParams.appId,\n formId: openParams.actionContent,\n docId: openParams._select\n });\n setTimeout(function () {\n _this25.reloadApprover(act); //回撤要重新加载流程状态\n }, 500);\n } else {\n errcode = response.data.errcode;\n errmsg = response.data.errors[0].errmsg;\n if (errcode == 4001) {\n _this25.$notify({\n title: _this25.$t(\"msg.failure\"),\n message: errmsg,\n position: \"top-left\"\n });\n // this.promptBox(errcode, errmsg, response.data.errors[0].errmsg);\n } else if (errcode == 0) {\n // this.promptBox(errcode, errmsg);\n _this25.$notify({\n title: _this25.$t(\"success\"),\n message: errmsg,\n type: \"success\"\n });\n _this25.goBack();\n }\n }\n }\n });\n },\n //终止流程\n terminationWorkflow: function terminationWorkflow(act) {\n var errcode = \"\";\n var errmsg = \"\";\n if (act.data) {\n errcode = act.errcode;\n errmsg = act.data;\n this.promptBox(errcode, errmsg);\n this.goBack();\n } else {\n errcode = act.errcode;\n errmsg = act.errors[0].errmsg;\n if (errcode == 4001) {\n // this.promptBox(errcode, errmsg, act.errors[0].errmsg);\n this.$notify({\n title: this.$t(\"msg.failure\"),\n message: errmsg,\n position: \"top-left\"\n });\n } else if (errcode == 0) {\n // this.promptBox(errcode, errmsg);\n this.$notify({\n title: this.$t(\"success\"),\n message: errmsg,\n type: \"success\"\n });\n this.goBack();\n }\n }\n },\n //流程挂起\n suspendWorkflow: function suspendWorkflow() {\n var _this26 = this;\n var appId = this.openParams.appId;\n var docId = this.openParams._select;\n this.$api.suspendWorkflow(appId, docId, {\n onSucess: function onSucess(response) {\n var errcode = \"\";\n var errmsg = \"\";\n if (response.data.data) {\n errcode = response.data.errcode;\n errmsg = response.data.data;\n //this.promptBox(errcode, errmsg);\n _this26.$notify({\n title: _this26.$t(\"success\"),\n message: errmsg,\n type: \"success\"\n });\n _this26.goBack();\n } else {\n errcode = response.data.errcode;\n errmsg = response.data.errors[0].errmsg;\n if (errcode == 4001) {\n //this.promptBox(errcode, errmsg, response.data.errors[0].errmsg);\n _this26.$notify({\n title: _this26.$t(\"msg.failure\"),\n message: errmsg,\n position: \"top-left\"\n });\n } else if (errcode == 0) {\n //this.promptBox(errcode, errmsg);\n _this26.$notify({\n title: _this26.$t(\"success\"),\n message: errmsg,\n type: \"success\"\n });\n _this26.goBack();\n }\n }\n }\n });\n },\n //子流程-并行流程(用户选择框的弹窗)\n showSubFlowDialog: function showSubFlowDialog(approversObj, flowId, isFreeFlow, saveApprover, approverNumType, isAppentCirculator, groupNum, subFlowGroup, isSubFlow) {\n this.approversObj = approversObj;\n this.flowId = flowId;\n this.isFreeFlow = isFreeFlow; //判断是否是自由流程\n this.saveApproverStatus = saveApprover;\n this.approverNumType = approverNumType;\n this.groupNum = groupNum; //子流程小组数量\n this.subFlowToApprover = subFlowGroup;\n this.isSubFlow = isSubFlow;\n this.approverVisible = true;\n },\n //子流程-并行流程(用户选择框的弹窗)组件选择的用户提交到流程面板\n subflowDataTopanel: function subflowDataTopanel(name, subObj, currentGroup, groupNum) {\n this.approverName = name;\n this.subFlowApproverData = subObj;\n this.subFlowGroup = currentGroup; //数据保存在流程面板中\n this.subFlowGroupNum = groupNum;\n this.approverVisible = false;\n },\n //流程恢复\n recoveryWorkflow: function recoveryWorkflow() {\n var _this27 = this;\n var appId = this.openParams.appId;\n var docId = this.openParams._select;\n this.$api.recoveryWorkflow(appId, docId, {\n onSucess: function onSucess(response) {\n var errcode = \"\";\n var errmsg = \"\";\n if (response.data.data) {\n errcode = response.data.errcode;\n errmsg = response.data.data;\n _this27.$notify({\n title: errmsg,\n message: \"\",\n type: \"success\"\n });\n _this27.goBack();\n } else {\n errcode = response.data.errcode;\n errmsg = response.data.errors[0].errmsg;\n if (errcode == 4001) {\n _this27.$notify({\n title: errmsg,\n message: \"\",\n position: \"top-left\"\n });\n } else if (errcode == 0) {\n _this27.$notify({\n title: errmsg,\n message: \"\",\n type: \"success\"\n });\n _this27.goBack();\n }\n }\n }\n });\n },\n //加签添加角色确定后(子组件调用)\n selectHostOrCohost: function selectHostOrCohost(data, obj) {\n this.newHostOrCohostList = data;\n this.saveApproverStatus = obj;\n this.approverVisible = false;\n },\n //保存并启动流程\n saveStartWorkFlow: function saveStartWorkFlow(num, actId, act) {\n var _this28 = this;\n var appId = this.openParams.appId;\n var formData = {};\n formData.document = this.buildFormData();\n if (this.openParams.parentId) {\n formData.document.parentId = this.openParams.parentId;\n }\n this.$api.saveStartWorkFlow(appId, formData, {\n onSucess: function onSucess(response) {\n var errcode = \"\";\n var errmsg = \"\";\n if (response.data.data) {\n _this28.runAfterAction(actId, num, \"\", \"\", act);\n _this28.$notify({\n title: _this28.$t(\"success\"),\n message: \"\",\n type: \"success\"\n });\n } else {\n errcode = response.data.errcode;\n errmsg = response.data.errors[0].errmsg;\n if (errcode == 4001) {\n _this28.$notify({\n title: errmsg,\n message: \"\",\n type: \"error\"\n });\n } else if (errcode == 0) {\n _this28.runAfterAction(actId, num, \"\", \"\", act);\n _this28.$notify({\n title: errmsg,\n message: \"\",\n type: \"success\"\n });\n }\n }\n }\n });\n },\n //邮件或短信通知,打开用户选择框\n openUserDialg: function openUserDialg() {}\n }\n};",null]}