From 7fec91ae35e2312bb3a80570c84a9993ae1f1744 Mon Sep 17 00:00:00 2001 From: dzq Date: Wed, 3 Dec 2025 11:36:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=AC=A2=E8=BF=8E=E9=A1=B5):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8A=A8=E6=80=81=E8=8E=B7=E5=8F=96=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E4=BA=8C=E7=BB=B4=E7=A0=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增二维码API模块及相关类型定义 - 在欢迎页添加动态获取二维码逻辑 - 使用VITE_APP_BASE_API拼接二维码地址 - 保留静态二维码作为备用方案 --- src/api/qy/mpQrcode.ts | 164 ++++++++++++++++++++++++++++++++++++ src/views/welcome/index.vue | 23 ++++- 2 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 src/api/qy/mpQrcode.ts diff --git a/src/api/qy/mpQrcode.ts b/src/api/qy/mpQrcode.ts new file mode 100644 index 0000000..e4f8eff --- /dev/null +++ b/src/api/qy/mpQrcode.ts @@ -0,0 +1,164 @@ +import { http } from "@/utils/http"; + +/** + * 企业小程序二维码 DTO + */ +export interface QyMpQrcodeDTO { + /** 二维码ID */ + qrcodeId?: number; + /** 企业微信ID */ + corpid?: string; + /** 二维码名称 */ + name?: string; + /** 小程序码参数 */ + scene?: string; + /** 小程序页面路径 */ + page?: string; + /** 二维码链接 */ + qrcodeUrl?: string; + /** 创建者 */ + creatorName?: string; + /** 创建时间 */ + createTimeStr?: string; + /** 更新者 */ + updaterName?: string; + /** 更新时间 */ + updateTimeStr?: string; + /** 删除标志 */ + deleted?: boolean; +} + +/** + * 企业小程序二维码实体 + */ +export interface QyMpQrcodeEntity { + /** 二维码唯一ID */ + qrcodeId?: number; + /** 企业微信id */ + corpid?: string; + /** 二维码名称 */ + name?: string; + /** 小程序码参数,最大32个可见字符 */ + scene?: string; + /** 小程序页面路径 */ + page?: string; + /** 二维码链接 */ + qrcodeUrl?: string; +} + +/** + * 查询小程序二维码参数 + */ +export interface SearchMpQrcodeQuery extends BasePageQuery { + /** 企业微信ID */ + corpid?: string; + /** 二维码名称 */ + name?: string; + /** 小程序码参数 */ + scene?: string; + /** 创建开始时间 */ + createStartTime?: string; + /** 创建结束时间 */ + createEndTime?: string; +} + +/** + * 新增二维码命令 + */ +export interface AddMpQrcodeCommand { + /** 企业微信ID */ + corpid: string; + /** 二维码名称 */ + name: string; + /** 小程序码参数 */ + scene?: string; + /** 小程序页面路径 */ + page?: string; +} + +/** + * 修改二维码命令 + */ +export interface UpdateMpQrcodeCommand extends AddMpQrcodeCommand { + /** 二维码ID */ + qrcodeId: number; +} + +/** + * 获取二维码列表 + * @param params 查询参数 + * @returns 分页二维码列表 + */ +export const getMpQrcodeListApi = (params: SearchMpQrcodeQuery) => { + return http.request>>("get", "/qywx/mp-qrcodes", { + params + }); +}; + +/** + * 获取二维码详情 + * @param id 二维码ID + * @returns 二维码详情 + */ +export const getMpQrcodeDetailApi = (id: number) => { + return http.request>("get", `/qywx/mp-qrcodes/${id}`); +}; + +/** + * 新增二维码 + * @param data 新增参数 + * @returns 操作结果 + */ +export const addMpQrcodeApi = (data: AddMpQrcodeCommand) => { + return http.request>("post", "/qywx/mp-qrcodes", { data }); +}; + +/** + * 修改二维码 + * @param id 二维码ID + * @param data 修改参数 + * @returns 操作结果 + */ +export const updateMpQrcodeApi = (id: number, data: UpdateMpQrcodeCommand) => { + return http.request>("put", `/qywx/mp-qrcodes/${id}`, { data }); +}; + +/** + * 删除二维码 + * @param ids 二维码ID数组 + * @returns 操作结果 + */ +export const deleteMpQrcodeApi = (ids: number[]) => { + return http.request>("delete", `/qywx/mp-qrcodes/${ids.join(',')}`); +}; + +/** + * 根据企业ID查询二维码 + * @param corpid 企业ID + * @returns 二维码列表 + */ +export const getMpQrcodeByCorpidApi = (corpid: string) => { + return http.request>("get", `/qywx/mp-qrcodes/by-corpid/${corpid}`); +}; + +/** + * 根据企业ID和名称查询或创建二维码 + * @param corpid 企业ID + * @param name 二维码名称(必须为大写字母或下划线) + * @returns 二维码信息 + */ +export const getOrCreateMpQrcodeApi = (corpid: string, name: string) => { + return http.request>("get", `/qywx/mp-qrcodes/get-or-create`, { + params: { corpid, name } + }); +}; + +/** + * 导出二维码Excel + * @param params 查询参数 + * @param fileName 文件名 + * @returns 下载文件 + */ +export const exportMpQrcodeExcelApi = (params: SearchMpQrcodeQuery, fileName: string) => { + return http.download("/qywx/mp-qrcodes/excel", fileName, { params }); +}; \ No newline at end of file diff --git a/src/views/welcome/index.vue b/src/views/welcome/index.vue index 051542b..9d06715 100644 --- a/src/views/welcome/index.vue +++ b/src/views/welcome/index.vue @@ -9,7 +9,9 @@ import { ElDialog, ElForm, ElFormItem, ElInput, ElMessage } from 'element-plus'; import { bindQyUserApi } from '@/api/ab98/user'; import qrcode from '@/assets/qrcode.png'; import { getBasicInfoByCorpidApi } from '@/api/qy/corp'; +import { getOrCreateMpQrcodeApi, QyMpQrcodeEntity } from '@/api/qy/mpQrcode'; import { storeToRefs } from 'pinia'; +const { VITE_APP_BASE_API } = import.meta.env; defineOptions({ name: "Welcome" @@ -48,6 +50,9 @@ const topGoods = ref([]); const todayLatestOrderGoods = ref([]); const maxOccurrenceCount = ref(0); +// 二维码数据 +const qrcodeData = ref(null); + // 借还动态数据 const borrowReturnDynamicList = ref([]); const loading = ref(false); @@ -143,6 +148,19 @@ const fetchCorpBasicInfo = async () => { } }; +// 获取或创建二维码 +const fetchQrcodeData = async () => { + try { + const { data } = await getOrCreateMpQrcodeApi(wxStore.corpid, 'HOME'); + if (data) { + qrcodeData.value = data; + } + } catch (error) { + console.error('获取二维码数据失败:', error); + // 使用静态二维码作为备用 + } +}; + // 获取借还动态数据 const fetchBorrowReturnDynamic = async () => { loading.value = true; @@ -208,6 +226,9 @@ onMounted(async () => { // 获取企业基本信息 await fetchCorpBasicInfo(); + // 获取二维码数据 + await fetchQrcodeData(); + try { const { data } = await getStats(wxStore.corpid); shopData.value = [ @@ -279,7 +300,7 @@ onMounted(async () => {
- +

扫码进入小程序