/** * 流程页面上下文 */ import { $CONST } from "@birt/funclib/ConstUtil"; import { FlowUtil } from "@birt/funclib/FlowUtil"; import { StoreUtil } from "@birt/funclib/StoreUtil"; import { isTrueVal } from "@birt/funclib/ExprUtil.js"; export default { data() { return { orderInfo: null, taskInfo: null }; }, computed: { // 流程单号 fnumber() { return this.param[$CONST.FLOWNUMBER]; }, // 流程任务guid ftaskguid() { return this.param[$CONST.FLOWTASKGUID]; }, // 流程实例GUID forderguid() { return this.param[$CONST.FLOWORDERGUID] }, // 流程状态 flowstate() { return this.param[$CONST.FLOWSTATE] }, // 流程功能路径 fmodelpath() { return this.param[$CONST.FLOWMODELPATH] }, // 流程标题 ftitle() { return this.param[$CONST.FLOWTITLE] }, // 下推流程版本 fversion() { return this.param[$CONST.FLOWVERSION] || this.orderinfo && this.orderinfo.fversion; }, // 流程task单据是否只读 freadonly() { return isTrueVal(this.param[$CONST.FLOWREADONLY] || (this.taskInfo && this.taskInfo.readonly));; }, // 流程是否有回退环节 fhasback() { return isTrueVal(this.param[$CONST.FLOWHASBACK] || (this.taskInfo && this.taskInfo.hasBack)); } }, methods: { // 初始化流程页面上下文 _initFlowContext() { if (this.ftaskguid) { this._initFlowContextByTask(); } else if (this.fnumber) { this._initFlowContextByNumber(); } }, // 根据单号初始化流程上下文 _initFlowContextByNumber() { var func = FlowUtil.openByNumber; var param = { request: this.$HI[$CONST.HIREQUEST], url: this.$HI[$CONST.HIURLOPNUM], fordernumber: this.fnumber, }; this._requestFlowContext(func, param); }, // 根据任务信息初始化流程上下文 _initFlowContextByTask() { var func = FlowUtil.getFlowInfo; var param = { request: this.$HI[$CONST.HIREQUEST], url: this.$HI[$CONST.HIURLFLOWINFO], data: { fmodelpath: this.fmodelpath, fversion: this.fversion, ftaskguid: this.ftaskguid, flowstate: this.flowstate, fbzid: this.userinfo.bzid, }, }; this._requestFlowContext(func, param); }, // 根据参数请求流程上下文信息 async _requestFlowContext(requestFunc, param) { let me = this; await requestFunc(param) .then(response => { let outParam = response[$CONST.OUTPARAMETER]; if (outParam) { me._setOrderInfo(outParam.order); me._setTaskInfo(outParam.task); } }) .catch(error => { console.log(error); }); }, // 获取流程数据集策略参数 _getFlowDatasetPolicyParam(mPath, mFilePaths) { return { request: this.$HI[$CONST.HIREQUEST], url: this.$HI[$CONST.HIURLPOLICY], param: { modelPath: mPath, taskguid: this.ftaskguid, modelFilePaths: JSON.stringify(mFilePaths) } }; }, // 请求流程数据集策略 async _requestFlowDatasetPolicy(mPath, mFilePaths) { // 暂时这样,当为空时后台是否取首环节 if (this.ftaskguid && !this.freadonly) { let param = this._getFlowDatasetPolicyParam(mPath, mFilePaths); let me = this; await StoreUtil.policy(param) .then(response => { let policys = response[$CONST.DATAPACK]; if (policys) { me.setPolicys(policys); } }) .catch(error => { console.log(error); }); } }, // 设置当前流程整单信息 _setOrderInfo(orderInfo) { // this.orderInfo = orderInfo; this.$set(this, "orderInfo", { ...orderInfo }); }, // 设置当前任务信息 _setTaskInfo(taskInfo) { // this.taskInfo = taskInfo; this.$set(this, "taskInfo", { ...taskInfo }); }, // 设置任务guid setTaskGuid(guid) { this.$set(this.param, $CONST.FLOWTASKGUID, guid); }, // 设置流程实例guid setOrderGuid(guid) { this.$set(this.param, $CONST.FLOWORDERGUID, guid); }, // 判断当前页面上下文是否流程 isFlow() { // let p = this.$route.path; // return p && p.indexOf($CONST.PAGEFLOW) } } }