index.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <template>
  2. <!-- 菜单区-->
  3. <div>
  4. <ul
  5. id="sds-desktop-shortcut"
  6. class="sds-desktop-shortcut"
  7. @contextmenu.prevent=""
  8. >
  9. <div class="sds-desktop-layout">
  10. <li
  11. class="launch-icon icon-item"
  12. :class="detailMessage.spacialCls"
  13. tabindex="0"
  14. v-for="(
  15. detailMessage, detailMessageIndex
  16. ) in shortcutDetail.detailMessageList"
  17. :key="detailMessage.id"
  18. @click="clickShortcutItem(detailMessage.id, detailMessageIndex)"
  19. @contextmenu.prevent="
  20. contextmenuAppViewItem(
  21. $event,
  22. detailMessage,
  23. detailMessage.selectList
  24. )
  25. "
  26. >
  27. <div
  28. class="image"
  29. :style="{ backgroundImage: `url(${detailMessage.titleImgUrl})` }"
  30. >
  31. <div class="sds-application-notify-badge-num-wrap">
  32. <div
  33. class="sds-application-notify-badge-num"
  34. :class="detailMessage.unReadyMessageCls"
  35. v-if="detailMessage.unReadyMessage.length && dataLoaded"
  36. ></div>
  37. </div>
  38. </div>
  39. <div class="text">{{ detailMessage.title }}</div>
  40. </li>
  41. </div>
  42. <PortalTarget></PortalTarget>
  43. </ul>
  44. </div>
  45. </template>
  46. <script>
  47. import PortalTarget from "../../DesktopAppView/PortalTarget";
  48. export default {
  49. props: ["defaultZIndex"],
  50. mounted() {
  51. this.$bus.on(
  52. "clickAppViewItemClearUnReady",
  53. this.clickAppViewItemClearUnReady
  54. );
  55. this.$bus.on("pushShortcutList", this.pushShortcutList);
  56. this.$bus.on("spliceShortcutList", this.spliceShortcutList);
  57. setTimeout(() => {
  58. this.shortcutDetail.detailMessageList.forEach((item) => {
  59. if (item.unReadyMessage.length) {
  60. item.unReadyMessageCls = "bounce-effect";
  61. }
  62. });
  63. this.dataLoaded = true;
  64. }, 800);
  65. setTimeout(() => {
  66. this.shortcutDetail.detailMessageList.forEach((item) => {
  67. if (item.unReadyMessageCls === "bounce-effect") {
  68. item.unReadyMessageCls = "";
  69. }
  70. });
  71. }, 1400);
  72. },
  73. data() {
  74. return {
  75. dataLoaded: false,
  76. shortcutDetail: {
  77. detailMessageList: [
  78. {
  79. id: 2,
  80. width: "1254px",
  81. height: "calc(100vh - 80px)",
  82. minHeight: "560px",
  83. title: "套件中心",
  84. spacialCls: "tjCenter",
  85. cls: "deactive-win",
  86. titleImgUrl: "../../../../public/image/index/tjCenter.png",
  87. display: "none",
  88. zIndex: 9050,
  89. iconRestore: "none",
  90. iconMaximize: "block",
  91. unReadyMessage: [],
  92. unReadyMessageCls: "",
  93. selectList: [
  94. {
  95. id: 10,
  96. text: "删除快捷方式",
  97. },
  98. {
  99. id: 11,
  100. text: "111",
  101. },
  102. ],
  103. },
  104. {
  105. id: 0,
  106. width: "1150px",
  107. height: "calc(100vh - 120px)",
  108. minHeight: "520px",
  109. title: "控制中心",
  110. spacialCls: "controlCenter",
  111. cls: "deactive-win",
  112. titleImgUrl: "../../../../public/image/index/controlCenter.png",
  113. display: "none",
  114. zIndex: 9050,
  115. iconRestore: "none",
  116. iconMaximize: "block",
  117. unReadyMessage: [1],
  118. unReadyMessageCls: "",
  119. selectList: [
  120. {
  121. id: 10,
  122. text: "删除快捷方式",
  123. },
  124. {
  125. id: 11,
  126. text: "222",
  127. },
  128. ],
  129. },
  130. {
  131. id: 12,
  132. width: "1010px",
  133. height: "calc(100vh - 200px)",
  134. minHeight: "440px",
  135. title: "File Station",
  136. spacialCls: "file",
  137. cls: "deactive-win",
  138. titleImgUrl: "../../../../public/image/index/file.png",
  139. display: "none",
  140. zIndex: 9050,
  141. iconRestore: "none",
  142. iconMaximize: "block",
  143. unReadyMessage: [],
  144. unReadyMessageCls: "",
  145. selectList: [
  146. {
  147. id: 10,
  148. text: "删除快捷方式",
  149. },
  150. {
  151. id: 11,
  152. text: "333",
  153. },
  154. ],
  155. },
  156. {
  157. id: 1,
  158. width: "1010px",
  159. height: "calc(100vh - 220px)",
  160. minHeight: "420px",
  161. title: "DSM 说明",
  162. spacialCls: "question",
  163. cls: "deactive-win",
  164. titleImgUrl: "../../../../public/image/index/question.png",
  165. display: "none",
  166. zIndex: 9050,
  167. iconRestore: "none",
  168. iconMaximize: "block",
  169. unReadyMessage: [1],
  170. unReadyMessageCls: "",
  171. selectList: [
  172. {
  173. id: 10,
  174. text: "删除快捷方式",
  175. },
  176. {
  177. id: 11,
  178. text: "444",
  179. },
  180. {
  181. id: 11,
  182. text: "555",
  183. },
  184. ],
  185. },
  186. ],
  187. },
  188. };
  189. },
  190. methods: {
  191. // 点击图标
  192. clickShortcutItem(id, detailMessageIndex) {
  193. this.shortcutDetail.detailMessageList[detailMessageIndex].unReadyMessage =
  194. [];
  195. this.$bus.emit("clickAppViewItem", id);
  196. },
  197. // 点击菜单页的图标
  198. clickAppViewItemClearUnReady(id) {
  199. this.shortcutDetail.detailMessageList.forEach((item) => {
  200. if (item.id === id && item.unReadyMessage.length) {
  201. item.unReadyMessage = [];
  202. }
  203. });
  204. },
  205. // 新添加的快捷方式
  206. pushShortcutList(selectedItem) {
  207. let bol = this.shortcutDetail.detailMessageList.some((item) => {
  208. return item.id === selectedItem.id;
  209. });
  210. if (!bol) {
  211. this.shortcutDetail.detailMessageList.push(selectedItem);
  212. } else {
  213. let obj = {
  214. cls: "",
  215. icon: "",
  216. title: "",
  217. text: "该页面已存在!",
  218. buttonList: [
  219. {
  220. id: 0,
  221. text: "确认",
  222. cls:'v-btn-main',
  223. event: () => {
  224. this.$bus.emit("closeMessage");
  225. this.$bus.emit("closeMask");
  226. },
  227. },
  228. ],
  229. };
  230. this.$bus.emit("openMessage", obj);
  231. this.$bus.emit("openMask");
  232. }
  233. },
  234. // 鼠标点击右键
  235. contextmenuAppViewItem(e, item, selectList) {
  236. let obj = { left: e.pageX - 120, top: e.pageY - 40, item, selectList };
  237. this.$bus.emit("showPortalTarget", obj);
  238. },
  239. // 删除快捷方式
  240. spliceShortcutList(selectedItem) {
  241. let index = this.shortcutDetail.detailMessageList.findIndex((item) => {
  242. return item.id === selectedItem.id;
  243. });
  244. if (index !== -1) {
  245. this.shortcutDetail.detailMessageList.splice(index, 1);
  246. }
  247. this.$bus.emit("hiddenPortalTarget");
  248. },
  249. },
  250. components: {
  251. PortalTarget,
  252. },
  253. name: "Shortcut",
  254. };
  255. </script>