| | |
| | | <script> |
| | | import LayoutHeader from './LayoutHeader' |
| | | import {createFlow, getFlowDetail} from '@/api/design' |
| | | |
| | | import ProcessDesign from '@/views/admin/layout/ProcessDesign' |
| | | |
| | | export default { |
| | |
| | | const tempJson = data.find(f => |
| | | f.index_no === index |
| | | ) |
| | | console.log("tempJson",tempJson); |
| | | //解析子审批节点 |
| | | parent.children = { |
| | | "id": tempJson.id, |
| | | "parentId": parentId, |
| | | "name": "审批人", |
| | | "type": "APPROVAL", |
| | | "children":{},//必须要 不然选中的值无法传递 |
| | | "props": |
| | | { |
| | | "assignedType": "ASSIGN_USER", |
| | |
| | | //获取流程详情 |
| | | getFlowDetail(param).then(rsp => { |
| | | let form = rsp.data.data; |
| | | console.log("getFlowDetail-form", form) |
| | | form.logo = "" |
| | | form.formItems = [] |
| | | form.process =this.convertToTreeData(form.steps, { |
| | |
| | | form.templateName = form.name |
| | | form.groupId = null; |
| | | |
| | | console.log("输出转换后的form,",form) |
| | | |
| | | this.$store.commit('loadForm', form) |
| | | }).catch(err => { |
| | | this.$message.error(err) |
| | |
| | | }) |
| | | }, |
| | | validateDesign() { |
| | | console.log('000') |
| | | this.validVisible = true |
| | | this.validStep = 0 |
| | | this.showValiding() |
| | |
| | | }, |
| | | //审批流树形结构转换为json |
| | | dataTree(data, index, parentId) { |
| | | let result = []; |
| | | let names = []; |
| | | let ruleCode = []; |
| | | console.log("data》》》",data) |
| | | let result = [];//存放结果 |
| | | let names = [];//存放审批人 |
| | | let ruleCode = [];//架构组 |
| | | data.props.assignedUser.forEach(org => names.push(org.name)); |
| | | let ids = [] |
| | | data.props.assignedUser.forEach(org => ids.push(org.id)); |
| | |
| | | rule_code: ruleCode.length > 0 ? String(ruleCode).replaceAll(',', '、') : null |
| | | } |
| | | ) // 只取当前节点的信息,不包括 children |
| | | console.log("result>>>",result) |
| | | //如果下面还有子项 继续往下读数据 |
| | | if (data.children!==undefined&&Object.keys(data.children).length !== 0) { |
| | | let getChildren = this.dataTree(data.children, index + 1, parentId) |
| | |
| | | |
| | | return result |
| | | }, |
| | | |
| | | doPublish() { |
| | | this.$confirm('确认发布后流程立即生效,是否继续?', '提示', { |
| | | confirmButtonText: '发布', |
| | |
| | | type: 'warning' |
| | | }).then(() => { |
| | | let processNew = JSON.parse(JSON.stringify(this.setup.process)); |
| | | console.log("processNew", processNew) |
| | | //判断条件分支 |
| | | this.conditionRecursion(processNew); |
| | | let data = {}; |
| | | data.name = this.form.name; |
| | | data.id = processNew.id||'' |
| | | var i = 1; |
| | | let i = 1; |
| | | //转数据结构 |
| | | data.steps = this.dataTree(processNew.children, i, processNew.id); |
| | | let template = {data} |
| | | console.log("新数组结构-template", template); |
| | | createFlow(template).then(rsp => { |
| | | this.$message.success("创建流程成功") |
| | | this.$router.push("/formsPanel") |
| | |
| | | getGroups() { |
| | | let template = {"dataname": "sys_state_approve"} |
| | | getEntitySet(template).then(rsp => { |
| | | console.log("getEntitySet", rsp.data.data) |
| | | this.groups = rsp.data.data.entityset |
| | | console.log("this.groups", this.groups) |
| | | }).catch(err => this.$message.error('获取审批流程异常')) |
| | | }, |
| | | newProcess(groupId) { |
| | |
| | | |
| | | |
| | | viewGroup(item, group) { |
| | | console.log("viewGroup",item) |
| | | this.$router.push( |
| | | { |
| | | path: "/workspace/process/instance/tabs", |
| | |
| | | |
| | | |
| | | editFrom(item, group) { |
| | | console.log("item",item) |
| | | this.$router.push("/admin/design?code=" + item.id); |
| | | }, |
| | | |
| | |
| | | this.$emit('input', path) |
| | | }, |
| | | handleSelect(key, keyPath) { |
| | | console.log(key, keyPath); |
| | | }, |
| | | listener() { |
| | | window.onunload = this.closeBefore() |
| | |
| | | }, |
| | | computed:{ |
| | | selectedNode(){ |
| | | console.log("ProcessDesign-selectedNode") |
| | | return this.$store.state.selectedNode |
| | | } |
| | | }, |
| | |
| | | return this.$refs["process-tree"].validateProcess() |
| | | }, |
| | | nodeSelected(node){ |
| | | console.log('配置节点aaa', node) |
| | | this.showConfig = true |
| | | } |
| | | }, |
| | |
| | | }, |
| | | computed:{ |
| | | selectedNode(){ |
| | | console.log("ProcessDiagramViewer-selectedNode",this.$store.state) |
| | | return this.$store.state.selectedNode |
| | | } |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | test(){ |
| | | console.log("test") |
| | | }, |
| | | validate(){ |
| | | return this.$refs["process-tree"].validateProcess() |
| | | }, |
| | | nodeSelected(node){ |
| | | console.log('配置节点bbb', node) |
| | | this.showConfig = true |
| | | } |
| | | }, |
| | |
| | | import Subprocess from '@/views/common/process/nodes/SubprocessNode.vue' |
| | | |
| | | import DefaultProps from "./DefaultNodeProps" |
| | | |
| | | export default { |
| | | name: "ProcessTree", |
| | | components: {Node, Root, Approval, Task, Cc, Trigger, Concurrent, Condition, Inclusive, Delay, Empty, Subprocess}, |
| | |
| | | ])) |
| | | return h('div', {class:{'_root': true}, ref:'_root'}, processTrees) |
| | | }, |
| | | |
| | | methods: { |
| | | getDomTree(h, node) { |
| | | this.toMapping(node); |
| | |
| | | //解码渲染的时候插入dom到同级 |
| | | decodeAppendDom(h, node, dom, props = {}){ |
| | | props.config = node |
| | | console.log("decodeAppendDom",props) |
| | | dom.unshift(h(node.type.toLowerCase(), { |
| | | props: props, |
| | | ref: node.id, |
| | |
| | | //id映射到map,用来向上遍历 |
| | | toMapping(node){ |
| | | if (node && node.id){ |
| | | //console.log("node=> " + node.id + " name:" + node.name + " type:" + node.type) |
| | | this.nodeMap.set(node.id, node) |
| | | } |
| | | }, |
| | |
| | | return node.type === 'CONCURRENTS' |
| | | }, |
| | | getRandomId(){ |
| | | console.log("tree生成节点id") |
| | | return ' '; |
| | | //return `HighDatas_${new Date().getTime().toString().substring(5)}${Math.round(Math.random()*9000+1000)}` |
| | | }, |
| | | //选中一个节点 |
| | | selectNode(node){ |
| | | this.$store.commit('selectedNode', node) |
| | | this.$store.commit('selectedNode', node); |
| | | this.$emit('selectedNode', node) |
| | | }, |
| | | //处理节点插入逻辑 |
| | | insertNode(type, parentNode){ |
| | | console.log("insertNode-parentNode",parentNode) |
| | | |
| | | this.$refs['_root'].click() |
| | | let afterNode = parentNode.children |
| | | console.log("afterNode",afterNode) |
| | | //插入新节点 |
| | | parentNode.children = { |
| | | |
| | | id: this.getRandomId(), |
| | | parentId: parentNode.id, |
| | | props: {}, |
| | |
| | | |
| | | } |
| | | switch (type){ |
| | | |
| | | case 'APPROVAL': this.insertApprovalNode(parentNode, afterNode); break; |
| | | case 'SUBPROCESS' : this.insertApprovalNode(parentNode, afterNode); break; |
| | | case 'TASK': this.insertTaskNode(parentNode); break; |
| | |
| | | afterNode.parentId = parentNode.children.id |
| | | } |
| | | this.$set(parentNode.children, 'children', Object) |
| | | console.log("parentNode.children",parentNode.children) |
| | | |
| | | } |
| | | this.$forceUpdate() |
| | | }, |
| | | insertApprovalNode(parentNode){ |
| | | this.$set(parentNode.children, "name", "审批人") |
| | | console.log("tree-DefaultProps.APPROVAL_PROPS)",DefaultProps.APPROVAL_PROPS) |
| | | |
| | | this.$set(parentNode.children, "props", this.$deepCopy(DefaultProps.APPROVAL_PROPS)) |
| | | console.log("parentNode.children",parentNode.children) |
| | | |
| | | |
| | | }, |
| | | insertTaskNode(parentNode){ |
| | | this.$set(parentNode.children, "name", "办理人") |
| | |
| | | name: "条件1", |
| | | children:{} |
| | | },{ |
| | | |
| | | id: this.getRandomId(), |
| | | parentId: parentNode.children.id, |
| | | type: "CONDITION", |
| | |
| | | }, |
| | | //删除当前节点 |
| | | delNode(node){ |
| | | console.log("ProcessTree删除节点", node) |
| | | |
| | | //获取该节点的父节点 |
| | | let parentNode = this.nodeMap.get(node.parentId) |
| | | if (parentNode){ |
| | |
| | | }, |
| | | //选中一个节点 |
| | | selectNode(node){ |
| | | console.log("ProcessTreeViewer-emit-selectNode") |
| | | this.$store.commit('selectedNode', node) |
| | | this.$emit('selectedNode', node) |
| | | }, |
| | |
| | | }, |
| | | //删除当前节点 |
| | | delNode(node){ |
| | | console.log("删除节点", node) |
| | | //获取该节点的父节点 |
| | | let parentNode = this.nodeMap.get(node.parentId) |
| | | if (parentNode){ |
| | |
| | | <i class="el-icon-s-check" style="color:rgb(255, 148, 62);"></i> |
| | | <span>审批人</span> |
| | | </div> |
| | | <div @click="addTaskNode"> |
| | | <i class="el-icon-s-check" style="color:rgb(230, 176, 57);"></i> |
| | | <span>办理人</span> |
| | | </div> |
| | | <div @click="addCcNode"> |
| | | <i class="el-icon-s-promotion" style="color:rgb(50, 150, 250);"></i> |
| | | <span>抄送人</span> |
| | | </div> |
| | | <div @click="addConditionsNode"> |
| | | <i class="el-icon-share" style="color:rgb(21, 188, 131);"></i> |
| | | <span>条件分支</span> |
| | | </div> |
| | | <div @click="addConcurrentsNode"> |
| | | <i class="el-icon-s-operation" style="color:#718dff;"></i> |
| | | <span>并行分支</span> |
| | | </div> |
| | | <div @click="addInclusivesNode"> |
| | | <i class="el-icon-s-operation" style="color:#718dff;"></i> |
| | | <span>包容分支</span> |
| | | </div> |
| | | <div @click="addDelayNode"> |
| | | <i class="el-icon-time" style="color:#f25643;"></i> |
| | | <span>延迟等待</span> |
| | | </div> |
| | | <div @click="addTriggerNode"> |
| | | <i class="el-icon-set-up" style="color:#15BC83;"></i> |
| | | <span>触发器</span> |
| | | </div> |
| | | <div @click="addSubprocessNode"> |
| | | <i class="el-icon-set-up" style="color:#15BC93;"></i> |
| | | <span>子流程</span> |
| | | </div> |
| | | <!-- <div @click="addTaskNode">--> |
| | | <!-- <i class="el-icon-s-check" style="color:rgb(230, 176, 57);"></i>--> |
| | | <!-- <span>办理人</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div @click="addCcNode">--> |
| | | <!-- <i class="el-icon-s-promotion" style="color:rgb(50, 150, 250);"></i>--> |
| | | <!-- <span>抄送人</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div @click="addConditionsNode">--> |
| | | <!-- <i class="el-icon-share" style="color:rgb(21, 188, 131);"></i>--> |
| | | <!-- <span>条件分支</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div @click="addConcurrentsNode">--> |
| | | <!-- <i class="el-icon-s-operation" style="color:#718dff;"></i>--> |
| | | <!-- <span>并行分支</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div @click="addInclusivesNode">--> |
| | | <!-- <i class="el-icon-s-operation" style="color:#718dff;"></i>--> |
| | | <!-- <span>包容分支</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div @click="addDelayNode">--> |
| | | <!-- <i class="el-icon-time" style="color:#f25643;"></i>--> |
| | | <!-- <span>延迟等待</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div @click="addTriggerNode">--> |
| | | <!-- <i class="el-icon-set-up" style="color:#15BC83;"></i>--> |
| | | <!-- <span>触发器</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div @click="addSubprocessNode">--> |
| | | <!-- <i class="el-icon-set-up" style="color:#15BC93;"></i>--> |
| | | <!-- <span>子流程</span>--> |
| | | <!-- </div>--> |
| | | </div> |
| | | <el-button icon="el-icon-plus" slot="reference" type="primary" size="small" circle></el-button> |
| | | </el-popover> |
| | |
| | | return this.$store.state.selectedNode |
| | | }, |
| | | nodeProps() { |
| | | console.log("this.$store.state.selectedNode.props",this.$store.state.selectedNode.props) |
| | | return this.$store.state.selectedNode.props |
| | | }, |
| | | select() { |
| | | console.log("this.config--select", this.config) |
| | | return this.config.assignedUser |
| | | }, |
| | | |
| | |
| | | this.selectedNode.props.groups.splice(index, 1) |
| | | }, |
| | | addConditionGroup() { |
| | | console.log("this.config", this.config) |
| | | this.config.groups.push({ |
| | | }) |
| | | }, |
| | | selected(select, type) { |
| | | debugger |
| | | console.log("this.config.props",this.config) |
| | | this.nodeProps.assignedUser = [] |
| | | if (type === 'group') { |
| | | this.nodeProps.staffGroup = {} |
| | |
| | | } |
| | | ) |
| | | } |
| | | console.log("输出选中select", this.nodeProps) |
| | | this.orgPickerSelected.length = 0 |
| | | this.$forceUpdate() |
| | | |
| | | }, |
| | | removeOrgItem(index) { |
| | | this.select.splice(index, 1) |
| | |
| | | } |
| | | }, |
| | | selected(select) { |
| | | console.log(select) |
| | | this.users.length = 0 |
| | | select.forEach(u => this.users.push(u)) |
| | | }, |
| | |
| | | group.conditions.splice(index, 1) |
| | | }, |
| | | conditionChange(index, group) { |
| | | console.log("index",index); |
| | | console.log("group",group); |
| | | //判断新增的 |
| | | group.cids.forEach(cid => { |
| | | if (0 > group.conditions.findIndex(cd => cd.id === cid)){ |
| | |
| | | //条件节点 |
| | | prioritySortList() { |
| | | let node = this.$store.state.nodeMap.get(this.selectedNode.parentId) |
| | | console.log(this.selectedNode.id, node) |
| | | if (node) { |
| | | return node.branchs || [] |
| | | } |
| | |
| | | this.showOrgSelect = true |
| | | }, |
| | | selected(select) { |
| | | console.log(select) |
| | | this.showOrgSelect = false |
| | | select.forEach(val => this.select.push(val)) |
| | | }, |
| | |
| | | } |
| | | }, |
| | | selected(select) { |
| | | console.log(select) |
| | | this.users.length = 0 |
| | | select.forEach(u => this.users.push(u)) |
| | | }, |
| | |
| | | if (0 > group.conditions.findIndex(cd => cd.id === cid)){ |
| | | //新增条件 |
| | | let condition = {...this.conditionList[index]} |
| | | console.log(condition, this.conditionList, index) |
| | | condition.compare = ''; |
| | | condition.value = [] |
| | | group.conditions.push(condition) |
| | |
| | | //条件节点 |
| | | prioritySortList() { |
| | | let node = this.$store.state.nodeMap.get(this.selectedNode.parentId) |
| | | console.log(this.selectedNode.id, node) |
| | | if (node) { |
| | | return node.branchs || [] |
| | | } |
| | |
| | | <template> |
| | | <div> |
| | | <el-tabs v-model="active" v-if="name && formConfig.length > 0"> |
| | | <el-tab-pane :label="name" name="properties"> |
| | | <component :is="(selectNode.type||'').toLowerCase()" :config="selectNode.props"/> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="表单权限设置" name="permissions"> |
| | | <form-authority-config/> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <component :is="(selectNode.type||'').toLowerCase()" v-else :config="selectNode.props"/> |
| | | <component :is="(selectNode.type||'').toLowerCase()" :config="selectNode.props"/> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | }, |
| | | computed: { |
| | | selectNode() { |
| | | console.log("selectNode",this.$store.state) |
| | | return this.$store.state.selectedNode |
| | | }, |
| | | formConfig() { |
| | |
| | | }, |
| | | computed:{ |
| | | select(){ |
| | | console.log("this.config.assignedUser-select",this.config.assignedUser) |
| | | return this.config.assignedUser |
| | | } |
| | | }, |
| | |
| | | this.$refs.orgPicker.show() |
| | | }, |
| | | selected(select) { |
| | | console.log(select) |
| | | this.orgPickerSelected.length = 0 |
| | | select.forEach(val => this.orgPickerSelected.push(val)) |
| | | }, |
| | |
| | | }, |
| | | content(){ |
| | | const config = this.config.props |
| | | console.log("content:config.assignedUser",config) |
| | | let texts = [] |
| | | config.assignedUser.forEach(org => texts.push(org.name)) |
| | | return String(texts).replaceAll(',', '、')||"aaa" |
| | | return String(texts).replaceAll(',', '、') |
| | | }, |
| | | |
| | | }, |
| | | created() { |
| | | console.log("加载ApprovalNode.vue") |
| | | this.content |
| | | }, |
| | | methods: { |
| | | getFormItemById(id){ |
| | |
| | | return true; |
| | | }, |
| | | validate_FORM_USER(err){ |
| | | if (this.config.props.formUser === ''){ |
| | | this.errorInfo = '请指定表单中的人员组件' |
| | | err.push(`${this.config.name} 审批人为表单中人员,但未指定`) |
| | | return false |
| | | } |
| | | if (this.config.props.formUser === ''){ |
| | | this.errorInfo = '请指定表单中的人员组件' |
| | | err.push(`${this.config.name} 审批人为表单中人员,但未指定`) |
| | | return false |
| | | } |
| | | return true; |
| | | }, |
| | | validate_REFUSE(err){ |
| | |
| | | }, |
| | | //校验数据配置的合法性 |
| | | validate(err) { |
| | | console.log('condition children', this.config.children) |
| | | console.log('this.level', this.level) |
| | | console.log('this.size', this.size) |
| | | if (!(this.level == this.size && this.size != 0) && !this.config.children?.id) { |
| | | this.showError = true |
| | | this.errorInfo = '条件分支后不能为空' |
| | |
| | | }, |
| | | //校验数据配置的合法性 |
| | | validate(err) { |
| | | console.log('inclusive children', this.config.children) |
| | | if (!(this.level == this.size && this.size != 0) && !this.config.children?.id) { |
| | | this.showError = true |
| | | this.errorInfo = '条件分支后不能为空' |
| | |
| | | }, |
| | | content(){ |
| | | const config = this.config.props |
| | | console.log("role,config.assignedUser",config.assignedUser) |
| | | switch (config.assignedType){ |
| | | case "ASSIGN_USER": |
| | | if (config.assignedUser.length > 0){ |
| | |
| | | }, |
| | | content(){ |
| | | const config = this.config.props |
| | | console.log("content:config.assignedUser",config) |
| | | let texts = [] |
| | | config.assignedUser.forEach(org => texts.push(org.name)) |
| | | return String(texts).replaceAll(',', '、') |
| | |
| | | // } |
| | | }, |
| | | created() { |
| | | console.log("加载ApprovalNode.vue") |
| | | }, |
| | | methods: { |
| | | getFormItemById(id){ |
| | |
| | | let items = subCondition.value.map(function (item) { |
| | | return item.label |
| | | }) |
| | | console.log("subCondition",String(items)) |
| | | return `${subCondition.title}为[${String(items).replaceAll(',', '、')}]中之一` |
| | | case 'B': |
| | | return `${subCondition.value[0]} < ${subCondition.title} < ${subCondition.value[1]}` |
| | |
| | | }, |
| | | //校验数据配置的合法性 |
| | | validate(err) { |
| | | console.log('condition children', this.config.children) |
| | | console.log('this.level', this.level) |
| | | console.log('this.size', this.size) |
| | | |
| | | if (!(this.level == this.size && this.size != 0) && !this.config.children?.id) { |
| | | this.showError = true |
| | | this.errorInfo = '条件分支后不能为空' |
| | |
| | | }, |
| | | //校验数据配置的合法性 |
| | | validate(err) { |
| | | console.log('inclusive children', this.config.children) |
| | | if (!(this.level == this.size && this.size != 0) && !this.config.children?.id) { |
| | | this.showError = true |
| | | this.errorInfo = '条件分支后不能为空' |
| | |
| | | }, |
| | | content(){ |
| | | const config = this.config.props |
| | | console.log("role,config.assignedUser",config.assignedUser) |
| | | switch (config.assignedType){ |
| | | case "ASSIGN_USER": |
| | | if (config.assignedUser.length > 0){ |
| | |
| | | const tempJson = data.find(f => |
| | | f.index_no === index |
| | | ) |
| | | console.log("tempJson",tempJson); |
| | | this.$store.state.noTakeList .push(tempJson.id) |
| | | parent.children = { |
| | | "id": tempJson.id, |
| | |
| | | let param = {"id": this.processInstanceId} |
| | | getWorkSetpsByBusinessId(param).then(rsp => { |
| | | let workSetps=rsp.data.data |
| | | console.log("workSetps", workSetps) |
| | | if(workSetps.length>0){ |
| | | let index=-1; |
| | | let resultProcess; |
| | |
| | | }else{ |
| | | //否则就取遍历查询 审批节点不为空 index_no最大的 |
| | | workSetps.forEach(item => { |
| | | console.log("indexno",item.index_no) |
| | | if (item.index_no > index && item.end_time!==null) { |
| | | index = item.index_no; |
| | | resultProcess = item; |
| | | } |
| | | }) |
| | | } |
| | | |
| | | console.log("resultProcess", resultProcess) |
| | | this.$store.state.runningList .push(resultProcess.approve_step_id) |
| | | param.id=resultProcess.approve_id |
| | | this.getFlowDetail(param) |
| | | }else{ |
| | | this.$message.error("未查询到审批流数据!") |
| | | } |
| | | |
| | | console.log("workSetps", workSetps) |
| | | }).catch(err => { |
| | | this.$message.error(err) |
| | | }) |
| | |
| | | }, |
| | | getFlowDetail(param){ |
| | | getFlowDetail(param).then(rsp => { |
| | | |
| | | let form = rsp.data.data; |
| | | console.log("getFlowDetail-form", form) |
| | | form.logo = "" |
| | | form.settings = { |
| | | "commiter": [], |
| | | "admin": [], |
| | | "sign": false, |
| | | "notify": { |
| | | "types": [ |
| | | "APP" |
| | | ], |
| | | " title": "消息通知标题" |
| | | } |
| | | } |
| | | form.formItems = [] |
| | | |
| | | form.process =this.convertToTreeData(form.steps, { |
| | | "id": form.id, "parentId": null, |
| | | "type": "ROOT", |
| | |
| | | |
| | | form.name=this.$Utils.decode(form.name); |
| | | form.templateName = form.name |
| | | form.groupId = null; |
| | | form.icon = "{\"icon\":\"el-icon-eleme\",\"background\":\"#1e90ff\"}"; |
| | | form.notify = ""; |
| | | form.remark = "备注说明"; |
| | | form.isStop = false |
| | | form.processDefinitionId = null |
| | | this.$store.state.design = form; |
| | | console.log("this.$store.state.design",this.$store.state.design) |
| | | console.log("输出转换后的form,",form) |
| | | this.$store.commit('loadForm', form) |
| | | }).catch(err => { |
| | | this.$message.error(err) |