mirror of
				https://github.com/soybeanjs/soybean-admin.git
				synced 2025-11-04 15:53:43 +08:00 
			
		
		
		
	@@ -56,7 +56,7 @@
 | 
			
		||||
    "@better-scroll/core": "^2.4.2",
 | 
			
		||||
    "@soybeanjs/vue-admin-layout": "^1.1.1",
 | 
			
		||||
    "@soybeanjs/vue-admin-tab": "^1.0.5",
 | 
			
		||||
    "@vueuse/core": "^9.1.0",
 | 
			
		||||
    "@vueuse/core": "^9.1.1",
 | 
			
		||||
    "axios": "^0.27.2",
 | 
			
		||||
    "clipboard": "^2.0.11",
 | 
			
		||||
    "colord": "^2.9.3",
 | 
			
		||||
@@ -87,7 +87,7 @@
 | 
			
		||||
    "@soybeanjs/eslint-config": "0.2.10",
 | 
			
		||||
    "@types/bmapgl": "^0.0.5",
 | 
			
		||||
    "@types/crypto-js": "^4.1.1",
 | 
			
		||||
    "@types/node": "^18.7.9",
 | 
			
		||||
    "@types/node": "^18.7.11",
 | 
			
		||||
    "@types/qs": "^6.9.7",
 | 
			
		||||
    "@types/ua-parser-js": "^0.7.36",
 | 
			
		||||
    "@vitejs/plugin-vue": "^3.0.3",
 | 
			
		||||
 
 | 
			
		||||
@@ -18,10 +18,11 @@
 | 
			
		||||
    </component>
 | 
			
		||||
  </div>
 | 
			
		||||
  <context-menu
 | 
			
		||||
    v-model:visible="dropdown.visible"
 | 
			
		||||
    :visible="dropdown.visible"
 | 
			
		||||
    :current-path="dropdown.currentPath"
 | 
			
		||||
    :x="dropdown.x"
 | 
			
		||||
    :y="dropdown.y"
 | 
			
		||||
    @update:visible="handleDropdownVisible"
 | 
			
		||||
  />
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
@@ -76,14 +77,31 @@ function setDropdown(x: number, y: number, currentPath: string) {
 | 
			
		||||
  Object.assign(dropdown, { x, y, currentPath });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
let isClickContextMenu = false;
 | 
			
		||||
 | 
			
		||||
function handleDropdownVisible(visible: boolean) {
 | 
			
		||||
  if (!isClickContextMenu) {
 | 
			
		||||
    dropdown.visible = visible;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 点击右键菜单 */
 | 
			
		||||
async function handleContextMenu(e: MouseEvent, fullPath: string) {
 | 
			
		||||
  e.preventDefault();
 | 
			
		||||
 | 
			
		||||
  const { clientX, clientY } = e;
 | 
			
		||||
 | 
			
		||||
  isClickContextMenu = true;
 | 
			
		||||
 | 
			
		||||
  const DURATION = dropdown.visible ? 150 : 0;
 | 
			
		||||
 | 
			
		||||
  hideDropdown();
 | 
			
		||||
  setDropdown(clientX, clientY, fullPath);
 | 
			
		||||
  await nextTick();
 | 
			
		||||
  showDropdown();
 | 
			
		||||
 | 
			
		||||
  setTimeout(() => {
 | 
			
		||||
    setDropdown(clientX, clientY, fullPath);
 | 
			
		||||
    showDropdown();
 | 
			
		||||
    isClickContextMenu = false;
 | 
			
		||||
  }, DURATION);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
watch(
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user