{"remainingRequest":"D:\\jenkins\\workspace\\xypm-web\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xypm-web\\src\\components\\flow\\taskFlowComponents\\formContent.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\xypm-web\\src\\components\\flow\\taskFlowComponents\\formContent.vue","mtime":1675214577167},{"path":"D:\\jenkins\\workspace\\xypm-web\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\jenkins\\workspace\\xypm-web\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xypm-web\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\r\nimport OnlineForm from '@/components/flow/OnlineForm.vue'\r\nimport form from '@/api/formContent.js'\r\nimport {Message} from 'element-ui'\r\nimport {Loading} from 'element-ui'\r\nimport FilePreview from '@/components/common/FilePreview.vue'\r\nimport req from '@/request.js'\r\nexport default {\r\n    name: 'formContent',\r\n    props: [\r\n        'instId',\r\n        'taskId',\r\n        'defId',\r\n        'proInstId',\r\n        'type',\r\n        'readId',\r\n        'readDoneId',\r\n        'myReadType',\r\n        'leaderId',\r\n        'formLoading',\r\n        'task_state',\r\n        'tasks',\r\n        'isLook',\r\n        'copyInstId',\r\n        'startFlow',\r\n        'relationData',\r\n    ],\r\n    data() {\r\n        return {\r\n            buttons: [],\r\n            status_style: '',\r\n            dataInstId: '',\r\n            html: null,\r\n            data: null,\r\n            permission: null,\r\n            isView: true,\r\n            formType: 'INNER',\r\n            htmlSrc: null,\r\n            urgentStateConf: {},\r\n            formHelpFile: '',\r\n            src: '',\r\n            files: [],\r\n            fileId: '',\r\n            fileTree: '',\r\n            formData: '',\r\n            initFillData: false,\r\n            formId: '',\r\n            flowKey: '',\r\n            taskDetailLoading: '',\r\n            topDivHeight: '99px', //空div的高度 用于撑开页面下的div内容\r\n            formKey: '', //表单key\r\n            formComponentKey: new Date().getTime(),\r\n            iframeWin: null,\r\n        }\r\n    },\r\n    watch: {\r\n        tasks: function (newVal, oldVal) {\r\n            if (newVal) {\r\n                this.init()\r\n            }\r\n        },\r\n        urgentStateValue: function (newVal, oldVal) {\r\n            if (window.urgentStateValue) {\r\n                window.urgentStateValue.new = newVal\r\n            }\r\n        },\r\n    },\r\n    created() {\r\n        if (this.isPlmeformPage) {\r\n            this.topDivHeight = 0\r\n        }\r\n        //待办的时候,watch已经监听了tasks,可以不用初始化\r\n        if (!this.taskId) {\r\n            this.init()\r\n        }\r\n        if (this.type == 'request') {\r\n            this.topDivHeight = '20px'\r\n        }\r\n    },\r\n    methods: {\r\n        /**\r\n         * 修改样式\r\n         * @param divheight  最上面div的高度\r\n         */\r\n        updateStyle(divheight) {\r\n            this.topDivHeight = divheight\r\n        },\r\n        previewHelpFile() {\r\n            let obj = {}\r\n            obj.id = this.formHelpFile[0].id\r\n            obj.name = this.formHelpFile[0].name\r\n            obj.size = this.formHelpFile[0].size\r\n            this.$refs.filePreview.preview(obj)\r\n        },\r\n        setInitFillData(isInitFillData) {\r\n            this.initFillData = isInitFillData\r\n        },\r\n        hiddenContent() {\r\n            this.$refs.formContainer.className = 'form-container-not'\r\n        },\r\n        init(updateFormComponent) {\r\n            if (this.task_state == 'FOLLOW') {\r\n                this.status_style = 'padding-top:0px !important;'\r\n            }\r\n            var $ = require('jquery')\r\n            let _me = this\r\n            if (_me.tasks) {\r\n                _me.initFillData = _me.tasks.initFillData\r\n            }\r\n            let readOnly = false\r\n            if (\r\n                _me.tasks &&\r\n                _me.tasks.bpmTask &&\r\n                (_me.tasks.bpmTask.status === 'COMMU' ||\r\n                    _me.tasks.bpmTask.status === 'TRANSFORMEDINQU' ||\r\n                    _me.tasks.bpmTask.status === 'FOLLOW')\r\n            ) {\r\n                readOnly = true\r\n            }\r\n\r\n            //获取流程定义key\r\n            _me.getFlowKey()\r\n            let handlerJs = function (rep) {\r\n                const currentUser = _me.$store.state.login.currentUser\r\n\r\n                let data = _me.data\r\n                let _this = _me\r\n                if (rep && rep.diyJs) {\r\n                    eval(rep.diyJs)\r\n                }\r\n            }\r\n\r\n            let handler = function (rep) {\r\n                //发起流程的时候得到按钮对象\r\n                if (rep.buttons) {\r\n                    _me.buttons = rep.buttons\r\n                }\r\n                if (_me.taskDetailLoading) {\r\n                    _me.taskDetailLoading.close()\r\n                }\r\n                if (_me.myReadType == 'agent') {\r\n                    Message.warning('此流程已被委托,没有审批权')\r\n                }\r\n                if (!rep) {\r\n                    return\r\n                }\r\n                if (JSON.stringify(rep) == '{}') {\r\n                    Message.error('此流程还没有设置全局表单,请先设置全局表单!')\r\n                    return\r\n                }\r\n                if (rep.resultMsg == 'formEmpty' || rep.result == 'formEmpty') {\r\n                    Message.error('此流程还没有设置表单,请先设置表单!')\r\n                    return\r\n                }\r\n                _me.formKey = rep.form.formKey\r\n                //_me.formId=rep.form.formId;\r\n                if (rep.form && rep.form.type == 'FRAME') {\r\n                    _me.htmlSrc = rep.form.formValue\r\n                    console.log(_me.htmlSrc, '_me.htmlSrc ', _me)\r\n                    _me.formType = rep.form.type\r\n\r\n                    //表单加载完成发布事件 审批按钮才可以点击\r\n                    _me.$root.$emit('formLoading', false)\r\n                } else {\r\n                    _me.formId = rep.form.formId\r\n                    form.preview(rep.form.formId, handlerJs)\r\n                    if (_me.formData) {\r\n                        _me.data = JSON.parse(Base64.decode(_me.formData))\r\n                    } else {\r\n                        _me.data = rep.data\r\n                    }\r\n\r\n                    if (rep.permission) {\r\n                        const permissionObj = JSON.parse(rep.permission)\r\n                        let commonRight = ''\r\n                        //如果是管理端进入，则将页面字段的权限修改为可编辑\r\n                        if (_me.type == 'manage') {\r\n                            commonRight = 'w'\r\n                            //如果是查看实例，也是获取发起流程的表单和权限。只不过所有可见的权限要变成编辑\r\n                        } else if (\r\n                            'request' == _me.type ||\r\n                            _me.myReadType == 'myRequest' ||\r\n                            _me.myReadType == 'delegate' ||\r\n                            _me.myReadType == 'myRead' ||\r\n                            _me.readDoneId ||\r\n                            _me.type == 'read' ||\r\n                            readOnly\r\n                        ) {\r\n                            commonRight = 'r'\r\n                        }\r\n                        if (permissionObj.fields && commonRight) {\r\n                            for (var key in permissionObj.fields) {\r\n                                const bodef = permissionObj.fields[key]\r\n                                if (bodef) {\r\n                                    for (var fname in bodef) {\r\n                                        if (\r\n                                            commonRight == 'w' ||\r\n                                            (commonRight == 'r' &&\r\n                                                bodef[fname] != 'n')\r\n                                        ) {\r\n                                            bodef[fname] = commonRight\r\n                                        }\r\n                                    }\r\n                                }\r\n                                permissionObj.fields[key] = bodef\r\n                            }\r\n                        }\r\n                        if (permissionObj.table && commonRight) {\r\n                            for (var key in permissionObj.table) {\r\n                                const table = permissionObj.table[key]\r\n                                if (table) {\r\n                                    if (commonRight == 'w') {\r\n                                        table['hidden'] = false\r\n                                        table['add'] = true\r\n                                        table['del'] = true\r\n                                    } else if (commonRight == 'r') {\r\n                                        table['add'] = false\r\n                                        table['del'] = false\r\n                                        table['required'] = false\r\n                                        table['edit'] = false\r\n                                    }\r\n                                }\r\n                                permissionObj.table[key] = table\r\n                            }\r\n                        }\r\n\r\n                        _me.permission = permissionObj\r\n                    }\r\n                    _me.html = rep.form.formHtml\r\n                    if (rep.form.helpFile) {\r\n                        _me.formHelpFile = JSON.parse(rep.form.helpFile)\r\n                    }\r\n                    if (_me.html.split('ref=\"next_step_check_').length > 1) {\r\n                        _me.$root.$emit('startFlowBtnChange', false)\r\n                    }\r\n                    //表单加载完成发布事件 审批按钮才可以点击\r\n                    _me.$root.$emit('formLoading', false)\r\n                    if (updateFormComponent) {\r\n                        _me.formComponentKey = new Date().getTime()\r\n                    }\r\n                }\r\n            }\r\n            this.$store\r\n                .dispatch('storeProcess/getUrgentStateConf', {\r\n                    defId: this.defId,\r\n                    instId: this.instId,\r\n                    taskId: this.taskId,\r\n                })\r\n                .then((data) => {\r\n                    if (data.conf) {\r\n                        try {\r\n                            data.conf = JSON.parse(data.conf)\r\n                        } catch (error) {\r\n                            data.conf = eval('(' + data.conf + ')')\r\n                        }\r\n                        window.urgentStateValue = {old: data.value}\r\n                        if (!data.value) {\r\n                            for (let index = 0, c; (c = data.conf[index++]); ) {\r\n                                if (c.default) {\r\n                                    data.value = c.state\r\n                                    break\r\n                                }\r\n                            }\r\n                        }\r\n                        _me.urgentStateConf = data\r\n                    }\r\n                })\r\n            if (\r\n                this.taskId &&\r\n                this.tasks &&\r\n                JSON.stringify(this.tasks) != '{}'\r\n            ) {\r\n                if (\r\n                    !this.tasks.bpmTask &&\r\n                    !this.tasks.state &&\r\n                    this.tasks.message == '此任务已被处理或不存在！'\r\n                ) {\r\n                    _me.$router.push('/v-flow/v-todo')\r\n                    return\r\n                }\r\n                this.taskDetailLoading = Loading.service({\r\n                    fullscreen: true,\r\n                    lock: true,\r\n                    text: '表单数据加载中，请耐心等待...',\r\n                    spinner: 'el-icon-loading',\r\n                    background: 'rgba(0, 0, 0, 0.7)',\r\n                }) //开始\r\n                if (this.tasks.bpmTask.bpmnInstId) {\r\n                    form.taskDetail(\r\n                        {taskId: this.taskId, leaderId: this.leaderId},\r\n                        handler\r\n                    )\r\n                } else {\r\n                    form.getInstFormAndBO(\r\n                        this.tasks.bpmTask.procInstId,\r\n                        handler\r\n                    )\r\n                }\r\n            } else if (\r\n                this.taskId &&\r\n                window.location.href.indexOf('/task/' + this.taskId + '/0') !=\r\n                    -1\r\n            ) {\r\n                form.taskDetail(\r\n                    {taskId: this.taskId, leaderId: this.leaderId},\r\n                    handler\r\n                )\r\n                let params = {\r\n                    taskId: this.taskId,\r\n                    leaderId: this.leaderId,\r\n                }\r\n                this.$store.dispatch('storeProcess/taskDetail', params) //获取操作按钮\r\n            } else if (this.instId) {\r\n                if ('start' != this.type) {\r\n                    this.isView = false\r\n                }\r\n                //查看我发起的，也使用发起流程的表单。只不过把编辑和必填权限改成只读\r\n                if ('request' == this.type || 'myRequest' == this.myReadType) {\r\n                    form.getFormAndBO({proInstId: this.instId}, handler)\r\n                } else if ('read' == this.type || this.myReadType) {\r\n                    const this_ = this\r\n                    if (this.readId) {\r\n                        //知会待办\r\n                        //根据待办知会任务主键ID获取任务ID\r\n                        this.$store\r\n                            .dispatch(\r\n                                'storeProcess/getBpmTaskNoticeById',\r\n                                this_.readId\r\n                            )\r\n                            .then((row) => {\r\n                                if (row.taskId) {\r\n                                    //根据任务Id获取审批历史数据（只有一条）\r\n                                    this.$store\r\n                                        .dispatch(\r\n                                            'storeProcess/getTaskKeyByTaskId',\r\n                                            row.taskId\r\n                                        )\r\n                                        .then((res) => {\r\n                                            if (res.formData) {\r\n                                                this_.formData = res.formData\r\n                                            }\r\n                                            let isIncludData = res.formData\r\n                                                ? false\r\n                                                : true\r\n                                            form.getInstFormAndBO(\r\n                                                {\r\n                                                    instId: this_.instId,\r\n                                                    nodeId: res.taskKey,\r\n                                                    includData: isIncludData,\r\n                                                },\r\n                                                handler\r\n                                            )\r\n                                        })\r\n                                } else if (row.nodeId) {\r\n                                    let data = {\r\n                                        nodeId: row.nodeId,\r\n                                        instId: this_.instId,\r\n                                    }\r\n                                    //根据任务节点ID和流程实例ID获取审批历史数据（只有一条）\r\n                                    this.$store\r\n                                        .dispatch(\r\n                                            'storeProcess/getTaskKeyByNodeId',\r\n                                            data\r\n                                        )\r\n                                        .then((res) => {\r\n                                            if (res.formData) {\r\n                                                this_.formData = res.formData\r\n                                            }\r\n                                            let isIncludData = res.formData\r\n                                                ? false\r\n                                                : true\r\n                                            form.getInstFormAndBO(\r\n                                                {\r\n                                                    instId: this_.instId,\r\n                                                    nodeId: res.taskKey,\r\n                                                    includData: isIncludData,\r\n                                                },\r\n                                                handler\r\n                                            )\r\n                                        })\r\n                                } else {\r\n                                    //查看我发起的，也使用发起流程的表单\r\n                                    form.getFormAndBO(\r\n                                        {proInstId: this.instId},\r\n                                        handler\r\n                                    )\r\n                                    // form.getInstFormAndBO(this_.instId, handler);\r\n                                }\r\n                            })\r\n                    } else if (this.readDoneId) {\r\n                        //知会已办\r\n                        //根据已办知会任务主键ID获取任务ID\r\n                        this.$store\r\n                            .dispatch(\r\n                                'storeProcess/getBpmTaskNoticeDoneById',\r\n                                this_.readDoneId\r\n                            )\r\n                            .then((row) => {\r\n                                if (row.taskId) {\r\n                                    //根据任务Id获取审批历史数据（只有一条）\r\n                                    this.$store\r\n                                        .dispatch(\r\n                                            'storeProcess/getTaskKeyByTaskId',\r\n                                            row.taskId\r\n                                        )\r\n                                        .then((res) => {\r\n                                            if (res.formData) {\r\n                                                this_.formData = res.formData\r\n                                            }\r\n                                            let isIncludData = res.formData\r\n                                                ? false\r\n                                                : true\r\n                                            form.getInstFormAndBO(\r\n                                                {\r\n                                                    instId: this_.instId,\r\n                                                    nodeId: res.taskKey,\r\n                                                    includData: isIncludData,\r\n                                                },\r\n                                                handler\r\n                                            )\r\n                                        })\r\n                                } else if (row.taskKey) {\r\n                                    let data = {\r\n                                        nodeId: row.taskKey,\r\n                                        instId: this_.instId,\r\n                                    }\r\n                                    //根据任务节点ID和流程实例ID获取审批历史数据（只有一条）\r\n                                    this.$store\r\n                                        .dispatch(\r\n                                            'storeProcess/getTaskKeyByNodeId',\r\n                                            data\r\n                                        )\r\n                                        .then((res) => {\r\n                                            if (res.formData) {\r\n                                                this_.formData = res.formData\r\n                                            }\r\n                                            let isIncludData = res.formData\r\n                                                ? false\r\n                                                : true\r\n                                            form.getInstFormAndBO(\r\n                                                {\r\n                                                    instId: this_.instId,\r\n                                                    nodeId: res.taskKey,\r\n                                                    includData: isIncludData,\r\n                                                },\r\n                                                handler\r\n                                            )\r\n                                        })\r\n                                } else {\r\n                                    //查看我发起的，也使用发起流程的表单\r\n                                    form.getFormAndBO(\r\n                                        {proInstId: this.instId},\r\n                                        handler\r\n                                    )\r\n                                    // form.getInstFormAndBO(this.instId, handler);\r\n                                }\r\n                            })\r\n                    } else {\r\n                        //查看我发起的，也使用发起流程的表单\r\n                        form.getFormAndBO({proInstId: this.instId}, handler)\r\n                        // form.getInstFormAndBO(this.instId, handler);\r\n                    }\r\n                } else {\r\n                    //查看我发起的，也使用发起流程的表单\r\n                    form.getFormAndBO({proInstId: this.instId}, handler)\r\n                    // form.getInstFormAndBO(this.instId, handler);\r\n                }\r\n            } else if (this.defId) {\r\n                let data = {}\r\n                if (this.proInstId != undefined) {\r\n                    data = {defId: this.defId, proInstId: this.proInstId}\r\n                } else if (this.copyInstId) {\r\n                    data = {defId: this.defId, copyInstId: this.copyInstId}\r\n                } else {\r\n                    data = {defId: this.defId}\r\n                }\r\n                form.getFormAndBO(data, handler)\r\n            }\r\n        },\r\n        sendData() {\r\n            this.$refs.iframe.contentWindow.postMessage({params:this.relationData});\r\n        },\r\n        getFlowKey() {\r\n            if (this.defId || this.instId || this.taskId) {\r\n                let url = '${bpmRunTime}/runtime/instance/v1/getFlowKey'\r\n                if (this.defId) {\r\n                    url = url + '?defId=' + this.defId\r\n                } else if (this.instId) {\r\n                    url = url + '?procInstId=' + this.instId\r\n                } else if (this.taskId) {\r\n                    url = url + '?taskId=' + this.taskId\r\n                }\r\n                let _me = this\r\n                try {\r\n                    _me.$http.get(url, 'json', false).then((resp) => {\r\n                        const rep = resp.data\r\n                        if (rep.state) {\r\n                            _me.flowKey = rep.value\r\n                        }\r\n                    })\r\n                } catch (error) {}\r\n            }\r\n        },\r\n    },\r\n    computed: {\r\n        urgentStateValue: function () {\r\n            return this.urgentStateConf.value\r\n        },\r\n        isPlmeformPage() {\r\n            return this.$route.query.hasOwnProperty('plmeform')\r\n        },\r\n    },\r\n    components: {OnlineForm, FilePreview},\r\n}\r\n",null]}