<script lang="ts" setup>
|
import { useMessage } from '@jnpf/hooks';
|
import { openWindow } from '@jnpf/utils';
|
|
import { setPin } from '#/api/system/system';
|
import { APP_PREFIX } from '#/utils/constants';
|
|
defineProps({
|
list: {
|
default: () => [],
|
type: Array as any,
|
},
|
});
|
|
const emit = defineEmits(['reload']);
|
|
const { createMessage } = useMessage();
|
|
function openSystem(enCode) {
|
const url = `${window.location.origin}/${APP_PREFIX + enCode}`;
|
openWindow(url);
|
}
|
function handlePin(id, isTop) {
|
const query = {
|
id,
|
type: 'home',
|
actionType: isTop ? 0 : 1,
|
};
|
setPin(query).then((res) => {
|
createMessage.success(res.msg);
|
emit('reload');
|
});
|
}
|
</script>
|
<template>
|
<div class="my-app-pane dashboard-pane">
|
<div class="dashboard-header">
|
<div class="dashboard-header-title" id="dashboard-header-my-app">我的应用</div>
|
</div>
|
<div class="app-list">
|
<div class="app-item" v-for="item in list" :key="item.id" @click="openSystem(item.enCode)">
|
<div class="item-icon" :style="{ backgroundColor: item.backgroundColor || '#008cff' }">
|
<i :class="item.icon"></i>
|
</div>
|
<p class="app-item-title" :title="item.fullName">{{ item.fullName }}</p>
|
<a-tooltip :title="item.isTop ? '取消置顶' : '置顶'">
|
<div class="item-pin" @click.stop="handlePin(item.id, item.isTop)">
|
<i class="icon-ym" :class="item.isTop ? 'icon-ym-unpin' : 'icon-ym-pin'"></i>
|
</div>
|
</a-tooltip>
|
</div>
|
<a-col :span="24" v-if="!list.length">
|
<jnpf-empty />
|
</a-col>
|
</div>
|
</div>
|
</template>
|