刘光辉
11 小时以前 0dfe84494048ce27ba8449831782128412d3eb13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<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>