// pages/exampleDetail/index.js Page({ data: { type: "", envId: "", showTip: false, title: "", content: "", haveGetOpenId: false, openId: "", haveGetCodeSrc: false, codeSrc: "", haveGetRecord: false, record: [], haveGetImgSrc: false, imgSrc: "", // ai modelConfig: { modelProvider: "deepseek", // 大模型服务厂商 quickResponseModel: "deepseek-v3", // 快速响应模型 (混元 turbo, gpt4 turbo版,deepseek v3等) logo: "https://cloudcache.tencent-cloud.com/qcloud/ui/static/static_source_business/2339414f-2c0d-4537-9618-1812bd14f4af.svg", // model 头像 welcomeMsg: "我是deepseek-v3,很高兴见到你!", // model 欢迎语 }, callcbrCode: "", initEnvCode: "", callOpenIdCode: "", callMiniProgramCode: "", callFunctionCode: "", callCreateCollectionCode: "", callUploadFileCode: "", showInsertModal: false, insertRegion: "", insertCity: "", insertSales: "", haveGetCallContainerRes: false, callContainerResStr: "", ai_page_config: `{ "usingComponents": { "agent-ui":"/components/agent-ui/index" }, }`, ai_wxml_config: `<agent-ui agentConfig="{{agentConfig}}" showBotAvatar="{{showBotAvatar}}" chatMode="{{chatMode}}" modelConfig="{{modelConfig}}""></agent-ui>`, ai_data_config: `data: { chatMode: "bot", // bot 表示使用agent,model 表示使用大模型 showBotAvatar: true, // 是否在对话框左侧显示头像 agentConfig: { botId: "your agent id", // agent id, allowWebSearch: true, // 允许客户端选择展示联网搜索按钮 allowUploadFile: true, // 允许客户端展示上传文件按钮 allowPullRefresh: true, // 允许客户端展示下拉刷新 allowUploadImage: true, // 允许客户端展示上传图片按钮 allowMultiConversation: true, // 允许客户端展示查看会话列表/新建会话按钮 showToolCallDetail: true, // 是否展示 mcp server toolCall 细节 allowVoice: true, // 允许客户端展示语音按钮 showBotName: true, // 允许展示bot名称 }, modelConfig: { modelProvider: "hunyuan-open", // 大模型服务厂商 quickResponseModel: "hunyuan-lite", // 大模型名称 logo: "", // model 头像 welcomeMsg: "欢迎语", // model 欢迎语 }, }`, }, onLoad(options) { console.log("options", options); if ( options.type === "cloudbaserunfunction" || options.type === "cloudbaserun" ) { this.getCallcbrCode(); } if (options.type === "getOpenId") { this.getOpenIdCode(); } if (options.type === "getMiniProgramCode") { this.getMiniProgramCode(); } if (options.type === "createCollection") { this.getCreateCollectionCode(); } if (options.type === "uploadFile") { this.getUploadFileCode(); } this.setData({ type: options?.type, envId: options?.envId }); }, copyUrl() { wx.setClipboardData({ data: "https://gitee.com/TencentCloudBase/cloudbase-agent-ui/tree/main/apps/miniprogram-agent-ui/miniprogram/components/agent-ui", success: function (res) { wx.showToast({ title: "复制成功", icon: "success", }); }, }); }, insertRecord() { this.setData({ showInsertModal: true, insertRegion: "", insertCity: "", insertSales: "", }); }, deleteRecord(e) { console.log("deleteRecord e", e); // 调用云函数删除记录 wx.showLoading({ title: "删除中...", }); wx.cloud .callFunction({ name: "quickstartFunctions", data: { type: "deleteRecord", data: { _id: e.currentTarget.dataset.id, }, }, }) .then((resp) => { wx.showToast({ title: "删除成功", }); this.getRecord(); // 刷新列表 wx.hideLoading(); }) .catch((e) => { wx.showToast({ title: "删除失败", icon: "none", }); wx.hideLoading(); }); // const index = e.currentTarget.dataset.index; // const record = this.data.record; // record.splice(index, 1); // this.setData({ // record, // }); }, // 输入框事件 onInsertRegionInput(e) { this.setData({ insertRegion: e.detail.value }); }, onInsertCityInput(e) { this.setData({ insertCity: e.detail.value }); }, onInsertSalesInput(e) { this.setData({ insertSales: e.detail.value }); }, // 取消弹窗 onInsertCancel() { this.setData({ showInsertModal: false }); }, // 确认插入 async onInsertConfirm() { const { insertRegion, insertCity, insertSales } = this.data; if (!insertRegion || !insertCity || !insertSales) { wx.showToast({ title: "请填写完整信息", icon: "none" }); return; } wx.showLoading({ title: "插入中..." }); try { await wx.cloud.callFunction({ name: "quickstartFunctions", data: { type: "insertRecord", data: { region: insertRegion, city: insertCity, sales: Number(insertSales), }, }, }); wx.showToast({ title: "插入成功" }); this.setData({ showInsertModal: false }); this.getRecord(); // 刷新列表 } catch (e) { wx.showToast({ title: "插入失败", icon: "none" }); } finally { wx.hideLoading(); } }, getOpenId() { wx.showLoading({ title: "", }); wx.cloud .callFunction({ name: "quickstartFunctions", data: { type: "getOpenId", }, }) .then((resp) => { this.setData({ haveGetOpenId: true, openId: resp.result.openid, }); wx.hideLoading(); }) .catch((e) => { wx.hideLoading(); const { errCode, errMsg } = e; if (errMsg.includes("Environment not found")) { this.setData({ showTip: true, title: "云开发环境未找到", content: "如果已经开通云开发,请检查环境ID与 `miniprogram/app.js` 中的 `env` 参数是否一致。", }); return; } if (errMsg.includes("FunctionName parameter could not be found")) { this.setData({ showTip: true, title: "请上传云函数", content: "在'cloudfunctions/quickstartFunctions'目录右键,选择【上传并部署-云端安装依赖】,等待云函数上传完成后重试。", }); return; } }); }, clearOpenId() { this.setData({ haveGetOpenId: false, openId: "", }); }, clearCallContainerRes() { this.setData({ haveGetCallContainerRes: false, callContainerResStr: "", }); }, getCodeSrc() { wx.showLoading({ title: "", }); wx.cloud .callFunction({ name: "quickstartFunctions", data: { type: "getMiniProgramCode", }, }) .then((resp) => { this.setData({ haveGetCodeSrc: true, codeSrc: resp.result, }); wx.hideLoading(); }) .catch((e) => { wx.hideLoading(); const { errCode, errMsg } = e; if (errMsg.includes("Environment not found")) { this.setData({ showTip: true, title: "云开发环境未找到", content: "如果已经开通云开发,请检查环境ID与 `miniprogram/app.js` 中的 `env` 参数是否一致。", }); return; } if (errMsg.includes("FunctionName parameter could not be found")) { this.setData({ showTip: true, title: "请上传云函数", content: "在'cloudfunctions/quickstartFunctions'目录右键,选择【上传并部署-云端安装依赖】,等待云函数上传完成后重试。", }); return; } }); }, clearCodeSrc() { this.setData({ haveGetCodeSrc: false, codeSrc: "", }); }, bindInput(e) { const index = e.currentTarget.dataset.index; const record = this.data.record; record[index].sales = Number(e.detail.value); this.setData({ record, }); }, getRecord() { wx.showLoading({ title: "", }); wx.cloud .callFunction({ name: "quickstartFunctions", data: { type: "selectRecord", }, }) .then((resp) => { this.setData({ haveGetRecord: true, record: resp.result.data, }); wx.hideLoading(); }) .catch((e) => { this.setData({ showTip: true, }); wx.hideLoading(); }); }, clearRecord() { this.setData({ haveGetRecord: false, record: [], }); }, updateRecord() { wx.showLoading({ title: "", }); wx.cloud .callFunction({ name: "quickstartFunctions", data: { type: "updateRecord", data: this.data.record, }, }) .then((resp) => { wx.showToast({ title: "更新成功", }); wx.hideLoading(); }) .catch((e) => { console.log(e); this.setData({ showUploadTip: true, }); wx.hideLoading(); }); }, uploadImg() { wx.showLoading({ title: "", }); // 让用户选择一张图片 wx.chooseMedia({ count: 1, success: (chooseResult) => { // 将图片上传至云存储空间 wx.cloud .uploadFile({ // 指定上传到的云路径 cloudPath: `my-photo-${new Date().getTime()}.png`, // 指定要上传的文件的小程序临时文件路径 filePath: chooseResult.tempFiles[0].tempFilePath, }) .then((res) => { console.log("upload res", res); this.setData({ haveGetImgSrc: true, imgSrc: res.fileID, }); }) .catch((e) => { console.log("e", e); }); }, complete: () => { wx.hideLoading(); }, }); }, clearImgSrc() { this.setData({ haveGetImgSrc: false, imgSrc: "", }); }, goOfficialWebsite() { const url = "https://docs.cloudbase.net/toolbox/quick-start"; wx.navigateTo({ url: `../web/index?url=${url}`, }); }, runCallContainer: async function () { const app = getApp(); console.log("globalData", app.globalData); const c1 = new wx.cloud.Cloud({ resourceEnv: app.globalData.env, }); await c1.init(); const r = await c1.callContainer({ path: "/api/users", // 填入业务自定义路径 header: { "X-WX-SERVICE": "express-test", // 填入服务名称 }, // 其余参数同 wx.request method: "GET", }); console.log(r); this.setData({ haveGetCallContainerRes: true, callContainerResStr: `${JSON.stringify(r.data.items, null, 2)}`, }); }, getCallcbrCode: function () { const app = getApp(); this.setData({ callcbrCode: `const c1 = new wx.cloud.Cloud({ resourceEnv: ${app.globalData.env} }) await c1.init() const r = await c1.callContainer({ path: '/api/users', // 此处填入业务自定义路径, /api/users 为示例路径 header: { 'X-WX-SERVICE': 'express-test', // 填入业务服务名称,express-test 为示例服务 }, // 其余参数同 wx.request method: 'GET', })`, }); }, getInitEnvCode: function () { const app = getApp(); this.setData({ initEnvCode: `wx.cloud.init({ env: ${app.globalData.env}, traceUser: true, });`, }); }, getCreateCollectionCode: function () { this.setData({ callCreateCollectionCode: `const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); const db = cloud.database(); // 创建集合云函数入口函数 exports.main = async (event, context) => { try { // 创建集合 await db.createCollection('sales'); return { success: true }; } catch (e) { return { success: true, data: 'create collection success' }; } };`, }); }, getOpenIdCode: function () { this.setData({ callOpenIdCode: `const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); // 获取openId云函数入口函数 exports.main = async (event, context) => { // 获取基础信息 const wxContext = cloud.getWXContext(); return { openid: wxContext.OPENID, appid: wxContext.APPID, unionid: wxContext.UNIONID, }; };`, callFunctionCode: `wx.cloud.callFunction({ name: 'quickstartFunctions', data: { type: 'getOpenId' } }).then((resp) => console.log(resp))`, }); }, getMiniProgramCode: function () { this.setData({ callMiniProgramCode: `const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }); // 获取小程序二维码云函数入口函数 exports.main = async (event, context) => { // 获取小程序二维码的buffer const resp = await cloud.openapi.wxacode.get({ path: 'pages/index/index' }); const { buffer } = resp; // 将图片上传云存储空间 const upload = await cloud.uploadFile({ cloudPath: 'code.png', fileContent: buffer }); return upload.fileID; }; `, callFunctionCode: `wx.cloud.callFunction({ name: 'quickstartFunctions', data: { type: 'getMiniProgramCode' } }).then((resp) => console.log(resp))`, }); }, getUploadFileCode: function () { this.setData({ callUploadFileCode: `wx.chooseMedia({ count: 1, success: (chooseResult) => { // 将图片上传至云存储空间 wx.cloud .uploadFile({ // 指定上传到的云路径 cloudPath: "my-photo.png", // 指定要上传的文件的小程序临时文件路径 filePath: chooseResult.tempFiles[0].tempFilePath, }) .then((res) => { console.log(res) }) .catch((e) => { console.log('e', e) }); } });`, }); }, });