釘釘企業應用開發系列:前端實現自定義右上角菜單(dd.http + Vue3)

本文將圍繞“如何在釘釘企業應用中自定義右上角菜單”這一主題進行講解,并結合現代前端技術棧(Vue3 + Composition API)展示完整實現過程,幫助你快速構建具備原生交互體驗的企業應用。


一、前置準備

1. 注冊釘釘開發者賬號并創建應用

  • 訪問?釘釘開放平臺
  • 創建一個?企業內部應用
  • 獲取以下參數:
    • corpId:企業唯一標識
    • agentId:應用的 Agent ID

注意:確保你的應用已開啟“前端接口權限”,并配置了正確的域名白名單(必須 HTTPS)


二、自定義右上角菜單的作用與原理

釘釘默認為每個頁面提供了一個“...”按鈕,點擊后可看到一些系統默認的操作項(如刷新、復制鏈接等)。通過調用釘釘提供的 JSAPI 接口,我們可以覆蓋這個菜單,添加我們自己的按鈕和事件處理邏輯。

核心流程如下:

  1. 頁面加載時調用?dd.http.get?或?dd.http.post?獲取必要的數據或狀態;
  2. 調用?dd.showActionSheet?或?dd.ui.setRight()?設置右上角按鈕;
  3. 綁定點擊事件,執行業務邏輯(如跳轉頁面、提交數據等);

三、前端實現詳解(基于 Vue3 + Composition API)

我們將使用釘釘提供的 JSAPI 實現自定義右上角菜單按鈕,并綁定點擊事件。

1. 引入釘釘 SDK

在 HTML 文件中引入釘釘官方 JSAPI:

<script src="https://g.alicdn.com/dingding/open-develop/1.11.5/dingtalk.js"></script>

2. 創建自定義菜單組件(CustomMenu.vue)

<template><div class="menu-container"><h2>歡迎使用自定義右上角菜單</h2><p>點擊右上角按鈕可以執行自定義操作。</p><p v-if="actionResult" style="color: green;">{{ actionResult }}</p></div>
</template><script setup>
import { ref, onMounted } from 'vue';const actionResult = ref('');onMounted(() => {if (window.dd) {// 設置右上角按鈕dd.ui.setRight({show: true, // 顯示按鈕text: '更多', // 按鈕文字onSuccess: () => {console.log("右上角按鈕被點擊");// 觸發自定義菜單彈出dd.actionSheet({title: "請選擇操作",items: ["刷新數據", "提交表單", "關于本頁"],onSuccess: (result) => {const index = result.itemIndex;let selected = "";switch(index) {case 0:selected = "刷新數據";refreshData();break;case 1:selected = "提交表單";submitForm();break;case 2:selected = "關于本頁";showAbout();break;default:selected = "未知操作";}actionResult.value = `您選擇了:${selected}`;},onFail: (err) => {console.error("菜單彈出失敗:", err);}});},onFail: (err) => {console.error("設置右上角按鈕失敗:", err);}});} else {console.warn("當前環境不支持釘釘 JSAPI");}
});// 示例方法:刷新數據
function refreshData() {console.log("開始刷新數據...");// 可在此處調用 dd.http.get 請求更新數據
}// 示例方法:提交表單
function submitForm() {console.log("開始提交表單...");// 可在此處調用 dd.http.post 提交表單數據
}// 示例方法:顯示關于信息
function showAbout() {console.log("顯示關于信息");alert("這是一個演示頁面,用于展示釘釘右上角菜單的自定義功能。");
}
</script><style scoped>
.menu-container {padding: 20px;max-width: 600px;margin: auto;font-family: Arial, sans-serif;
}
</style>

四、關鍵代碼解析

方法描述
dd.ui.setRight({ show, text, onSuccess })設置右上角按鈕樣式與點擊行為
dd.actionSheet({ title, items, onSuccess })彈出底部操作菜單
dd.http.get(url)?/?dd.http.post(url, data)發起網絡請求獲取或提交數據

五、常見問題與調試建議

問題解決方案
dd is not defined確保在釘釘客戶端內打開頁面,且 SDK 已正確加載
按鈕不顯示檢查是否調用了?setRight?并設置了?show: true
菜單無法彈出查看是否被其他 UI 層遮擋或未觸發?onSuccess
域名未授權確保訪問地址已在釘釘后臺配置為合法域名
權限不足檢查是否開啟了“前端 JSAPI 權限”

六、總結

通過本文的學習,我們掌握了如何在釘釘企業應用中使用 JSAPI 自定義右上角菜單,并結合 Vue3 實現了完整的前端交互邏輯。這種能力不僅可以提升用戶體驗,還能讓我們的應用更貼近釘釘平臺的原生風格,增強整體一致性。

未來,我們還可以進一步拓展該功能,例如結合 dd.http 請求動態生成菜單項、根據用戶角色顯示不同菜單內容等,從而打造更加智能和個性化的企業應用界面。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87406.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87406.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87406.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STC8H驅動兩相四線步進電機

兩相步進電機, STC8H系列 用高級PWM實現SPWM細分驅動 /************* 功能說明 ************** 用B組高級PWM細分驅動2相4線小型步進電機, 支持1、2、4、8、16、32、64細分, 比如1.8度的電機4細分到0.45度. 本程序用于演示SPWM多細分直接驅動2相4線小型步進電機…

讀書筆記:《DevOps實踐指南》

《DevOps實踐指南》 美 Gene Kim, Jez Humble, Patrick Debois, John Willis 著&#xff1b;劉征&#xff0c;王磊&#xff0c;馬博文&#xff0c;曾朝京 譯 個人理解&#xff1a; 向客戶交付價值&#xff0c;快速、高效、高質量交付 信息全流程共享、全過程參與、關注軟件…

創客匠人視角:創始人 IP 從流量狂歡到價值深耕的蛻變之路

在知識付費行業浪潮中&#xff0c;創客匠人深耕九年&#xff0c;見證了無數 “一夜爆紅” 與 “迅速隕落” 的案例。從 “菏澤樹哥” 的流量泡沫&#xff0c;到天水麻辣燙的短暫熱度&#xff0c;這些現象折射出行業發展的階段性特征&#xff0c;也促使創始人 IP 打造的底層邏輯…

ArchLinux:別樣的btrfs log tree修復大賽(errno=-5 IO failure Failed to recover log tree)

archlinux 簡明指南本指南包含 archlinux 安裝、配置、維護等&#xff0c;幫助新手快速上手https://arch.icekylin.online/一個月黑風高的上午&#xff1a;美滋滋的打開電腦進grub選擇arch啟動 欸&#xff01;突然就卡在這里了&#xff0c;系統進了rootfs&#xff0c;并且長按電…

Laravel8中使用phpword生成word文檔

最近在開發有關考試試卷相關的內容&#xff0c;需要生成試卷的word文檔并下載。 這里用到了phpoffice/phpword插件&#xff0c;這里記錄下一些開發過程中注意的點。 1.安裝phpoffice/phpword composer require phpoffice/phpword2.準備一個word模板方便向其中寫入需要生成的內容…

spring-ai-alibaba官方 Playground 示例

1、Spring AI Alibaba 官方社區開發了一個包含完整 “前端UI后端實現” 的智能體 Playground 示例&#xff0c;示例使用 Spring AI Alibaba 開發&#xff0c;可以體驗聊天機器人、多輪對話、圖片生成、多模態、工具調用、MCP集成、RAG知識庫等所有框架核心能力。 2、界面 3、準…

k8s pod深度理解

一、理論 pod等同于邏輯主機&#xff0c;在它上面運行各種程序&#xff08;容器&#xff09; pod的pause容器作用&#xff0c;pod網絡、存儲 所有容器的父容器&#xff0c;負責回收僵尸容器&#xff0c;同時它為pod中的容器提供了統一的網絡及統一的共享存儲。 pod的endpoint…

Android Auto即將帶來變革

在2025年谷歌I/O開發者大會上&#xff0c;Android Auto迎來重磅升級。除了集成Gemini智能助手外&#xff0c;本次更新還突破性地為車載信息娛樂系統新增了瀏覽器和視頻應用支持。值得注意的是&#xff0c;Spotify應用也將獲得一系列創新功能&#xff0c;進一步豐富用戶的駕駛體…

Jenkins 與 GitLab CI/CD 的核心對比

Jenkins 與 GitLab CI/CD 的核心對比及中小企業選型建議如下&#xff1a; &#x1f504; ?核心功能對比? ?維度??Jenkins??GitLab CI/CD??集成性?需手動配置插件對接代碼倉庫&#xff08;如 GitLab&#xff09;原生深度集成 GitLab 倉庫&#xff0c;實現代碼-CI/CD …

每日問題總結

fairy GUI適配相關問題 為什么自己適配好了但是打包發布到unity沒有UI顯示呢&#xff1f; 原因可能是你發布的組件和圖片不在同一個包下面&#xff0c;因為fairyGUI的分包限制問題&#xff0c;每一個包限制在2048M大小。不能超過這個大小&#xff0c;所以說&#xff0c;有可能…

embbding you should know

embedding&#xff1a;就是將詞向量或者圖向量 采用權重升維度&#xff0c;更好的去表達這個特征&#xff1b;nn.Embedding 是 PyTorch 中的 查表式嵌入層&#xff08;lookup‐table&#xff09;&#xff0c;用于將離散的整數索引&#xff08;如詞 ID、實體 ID、離散特征類別等…

【JS-6.2-模板字符串】ES6 模板字符串:現代JavaScript的字符串處理利器

在ES6(ECMAScript 2015)引入的所有新特性中&#xff0c;模板字符串(Template Literals)可能是最直觀、最容易被開發者接受并廣泛使用的特性之一。它徹底改變了我們在JavaScript中處理字符串的方式&#xff0c;提供了更強大、更靈活的字符串操作能力。本文將深入探討模板字符串的…

百度捂緊“錢袋子”

何俊杰依然是李彥宏手里最能用、也最信得過的人之一。 作者|景行 編輯|文昌龍 李彥宏的OKR又兌現了一條。年初他在組織建設的OKR里放話“組織負責人進一步年輕化&#xff0c;提倡賽馬”&#xff0c;如今“賽馬”跑來了百度新CFO。 7月1日&#xff0c;李彥宏發全員郵件&#…

刷卡登入數據獲取

1.WPF刷卡登入數據獲取&#xff0c;防止用戶手動輸入 //WPF輸入框信息及觸發命令<StackPanel Orientation"Vertical" VerticalAlignment"Center" Margin"0 30" Visibility"{Binding LoginMode,Converter{StaticResource loginModeWit…

DPO訓練中的logit scale 與 reward shift 偏置問題以及可能的解決方案

Logit Scale Bias&#xff08;Logit 放縮偏置&#xff09; 定義&#xff1a; Logit scale 偏置指的是&#xff0c;不同模型&#xff08;如 Actor 與 Reference&#xff09;之間輸出的 logit 的數量級&#xff08;scale&#xff09;不一致&#xff0c;導致 log-prob 或 log-rati…

再見 RAG?Gemini 2.0 Flash 剛剛 “殺死” 了它!

最近谷歌發布了 Gemini 2.0 Flash&#xff0c;說實話&#xff0c;它可能是目前市面上性價比最高的 AI 模型了。 許多人寫過關于 RAG 可能不再需要的文章&#xff0c;也可以看到人們在討論它。有些人理解&#xff0c;有些人不理解&#xff0c;還有些人非常擔心。 所以讓我們解…

PDF的圖片文字識別工具

PDF的圖片文字識別工具是一款完全免費的PDF OCR識別軟件&#xff0c;軟件支持“單文件選擇、多文件批量選擇、文字預處理、結果后處理、Word導出”等功能。 選擇你想要識別的PDF&#xff0c;軟件就自動的開始識別PDF內容&#xff0c;識別后的文字在軟件的下方有內容預覽。 注意…

SQLite不夠用?視頻匯聚系統EasyCVR切換MySQL數據庫的關鍵參數怎么調?

一、為什么需要將EasyCVR從SQLite切換到MySQL&#xff1f; EasyCVR默認使用的SQLite數據庫屬于輕量級嵌入式數據庫&#xff0c;適合小型項目或設備量較少的場景&#xff08;通常建議設備通道數≤200&#xff09;。當設備通道數超過200或需要支持高并發訪問、海量數據存儲時&am…

【AI成長會】ubuntu 安裝運行rust

在Ubuntu上用Rust編寫第一個程序 從你的輸出可以看出&#xff0c;Rust已經成功安裝在你的Ubuntu系統上了。現在我們來編寫并運行第一個Rust程序&#xff0c;整個過程需要幾個簡單的步驟&#xff1a; 一、配置Shell環境&#xff08;如果需要&#xff09; 雖然安裝提示可能需要…

兩個手機都用同個wifi,IP地址會一樣嗎?如何更改ip地址

會的。兩個手機連接同一個 WiFi 路由器&#xff0c;它們的 IP 地址通常一樣的。 一、原因如下&#xff1a; 你看到的 IP 地址有兩種&#xff1a; 內網 IP 地址&#xff08;局域網 IP&#xff09;&#xff1a; 這是路由器分配給你手機在家庭或辦公室內部網絡使用的地址。通常格…