mirror of
https://github.com/kuaifan/dootask.git
synced 2026-02-03 11:48:17 +00:00
no message
This commit is contained in:
parent
5581d1431b
commit
cd494b52a4
@ -1,9 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<micro-app
|
<micro-app
|
||||||
v-if="details.mode=='page'"
|
v-if="appConfig.displayMode=='page'"
|
||||||
v-show="details.show"
|
v-show="appConfig.isVisible"
|
||||||
:name="details.name"
|
:name="appConfig.appName"
|
||||||
:url="details.url"
|
:url="appConfig.appUrl"
|
||||||
:data="appData"
|
:data="appData"
|
||||||
@created="created"
|
@created="created"
|
||||||
@beforemount="beforemount"
|
@beforemount="beforemount"
|
||||||
@ -11,17 +11,17 @@
|
|||||||
@unmount="unmount"
|
@unmount="unmount"
|
||||||
@error="error"/>
|
@error="error"/>
|
||||||
<DrawerOverlay
|
<DrawerOverlay
|
||||||
v-else-if="details.mode=='drawer'"
|
v-else-if="appConfig.displayMode=='drawer'"
|
||||||
v-model="details.show"
|
v-model="appConfig.isVisible"
|
||||||
ref="drawer"
|
ref="drawer"
|
||||||
placement="right"
|
placement="right"
|
||||||
modal-class="micro-apps-modal"
|
modal-class="micro-apps-modal"
|
||||||
drawer-class="micro-apps-drawer"
|
drawer-class="micro-apps-drawer"
|
||||||
:size="1200">
|
:size="1200">
|
||||||
<div v-if="details.show" class="page-microapp">
|
<div v-if="appConfig.isVisible" class="page-microapp">
|
||||||
<micro-app
|
<micro-app
|
||||||
:name="details.name"
|
:name="appConfig.appName"
|
||||||
:url="details.url"
|
:url="appConfig.appUrl"
|
||||||
:data="appData"
|
:data="appData"
|
||||||
@created="created"
|
@created="created"
|
||||||
@beforemount="beforemount"
|
@beforemount="beforemount"
|
||||||
@ -52,7 +52,7 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import store from '../store/index'
|
import store from '../store/index'
|
||||||
import {mapState} from "vuex";
|
import {mapState} from "vuex";
|
||||||
import {unmountAllApps} from '@micro-zoe/micro-app'
|
import {unmountApp, unmountAllApps} from '@micro-zoe/micro-app'
|
||||||
import DialogWrapper from '../pages/manage/components/DialogWrapper.vue'
|
import DialogWrapper from '../pages/manage/components/DialogWrapper.vue'
|
||||||
import UserSelect from "./UserSelect.vue";
|
import UserSelect from "./UserSelect.vue";
|
||||||
import {languageList, languageName} from "../language";
|
import {languageList, languageName} from "../language";
|
||||||
@ -60,7 +60,7 @@ import {DatePicker} from 'view-design-hi';
|
|||||||
import DrawerOverlay from "./DrawerOverlay/index.vue";
|
import DrawerOverlay from "./DrawerOverlay/index.vue";
|
||||||
import emitter from "../store/events";
|
import emitter from "../store/events";
|
||||||
|
|
||||||
const mountApps = new Map();
|
const microApps = new Map();
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "MicroApps",
|
name: "MicroApps",
|
||||||
@ -69,7 +69,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loadIng: 0,
|
loadIng: 0,
|
||||||
details: {},
|
appConfig: {},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
datas: {
|
datas: {
|
||||||
...this.details.params,
|
...this.appConfig.initialData,
|
||||||
|
|
||||||
// theme: this.themeName,
|
// theme: this.themeName,
|
||||||
themeName: this.themeName,
|
themeName: this.themeName,
|
||||||
@ -152,15 +152,16 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
// 元素被创建
|
// 元素被创建
|
||||||
created(e) {
|
created(e) {
|
||||||
if (!mountApps.has(e.detail.name)) {
|
const item = microApps.get(e.detail.name)
|
||||||
|
if (item?.isLoading) {
|
||||||
this.loadIng++
|
this.loadIng++
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 即将渲染
|
// 即将渲染
|
||||||
beforemount(e) {
|
beforemount(e) {
|
||||||
if (!mountApps.has(e.detail.name)) {
|
const item = microApps.get(e.detail.name)
|
||||||
mountApps.set(e.detail.name, e.detail.name);
|
if (item?.isLoading) {
|
||||||
this.loadIng--
|
this.loadIng--
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -179,16 +180,31 @@ export default {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 打开微应用
|
* 打开微应用
|
||||||
* @param data
|
* @param config
|
||||||
*/
|
*/
|
||||||
openMicroApp(data) {
|
openMicroApp(config) {
|
||||||
this.details = Object.assign({
|
// 处理数据
|
||||||
mode: 'drawer', // page, drawer
|
config = Object.assign({
|
||||||
name: 'drawer-app', // 微应用名称
|
appName: 'micro-app', // 微应用唯一标识名称
|
||||||
show: true, // 是否显示
|
displayMode: 'drawer', // 显示模式: 'page'-全屏模式, 'drawer'-抽屉模式
|
||||||
url: null, // 微应用地址
|
isVisible: true, // 是否显示微应用(true/false)
|
||||||
params: {}, // 传递给微应用的数据
|
appUrl: null, // 微应用的入口URL地址
|
||||||
}, data)
|
initialData: {}, // 初始化时传递给微应用的数据对象
|
||||||
|
isLoading: true, // 私有参数,是否显示加载状态(true/false)
|
||||||
|
}, config);
|
||||||
|
|
||||||
|
// 判断卸载上一次
|
||||||
|
const item = microApps.get(config.appName)
|
||||||
|
if (item) {
|
||||||
|
if (item.displayMode != config.displayMode || item.appUrl != config.appUrl) {
|
||||||
|
unmountApp(config.appName, {destroy: true})
|
||||||
|
} else {
|
||||||
|
config.isLoading = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新数据
|
||||||
|
microApps.set(config.appName, this.appConfig = config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
26
resources/assets/js/store/actions.js
vendored
26
resources/assets/js/store/actions.js
vendored
@ -4664,30 +4664,30 @@ export default {
|
|||||||
* 打开OKR
|
* 打开OKR
|
||||||
* @param state
|
* @param state
|
||||||
* @param dispatch
|
* @param dispatch
|
||||||
* @param path
|
* @param value
|
||||||
*/
|
*/
|
||||||
openOkr({state}, path) {
|
openOkr({state}, value) {
|
||||||
if (/^\d+$/.test(path)) {
|
if (/^\d+$/.test(value)) {
|
||||||
// 打开详情页
|
// 打开详情页
|
||||||
emitter.emit('openMicroApp', {
|
emitter.emit('openMicroApp', {
|
||||||
mode: 'page',
|
appName: 'okr-details',
|
||||||
show: false,
|
displayMode: 'page',
|
||||||
name: 'app-okr-details',
|
isVisible: false,
|
||||||
|
|
||||||
url: $A.mainUrl(`apps/okr/okrDetails?data=${path}`),
|
appUrl: $A.mainUrl(`apps/okr/okrDetails?data=${value}`),
|
||||||
params: {
|
initialData: {
|
||||||
model: 'details',
|
model: 'details',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// 打开列表、统计
|
// 打开列表、统计
|
||||||
emitter.emit('openMicroApp', {
|
emitter.emit('openMicroApp', {
|
||||||
mode: 'drawer',
|
appName: `okr-${value}`,
|
||||||
show: true,
|
displayMode: 'drawer',
|
||||||
name: `app-okr-${path}`,
|
isVisible: true,
|
||||||
|
|
||||||
url: $A.mainUrl(`apps/okr/${path}`),
|
appUrl: $A.mainUrl(`apps/okr/${value}`),
|
||||||
params: {},
|
initialData: {},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user