feat(欢迎页): 添加动态获取小程序二维码功能
- 新增二维码API模块及相关类型定义 - 在欢迎页添加动态获取二维码逻辑 - 使用VITE_APP_BASE_API拼接二维码地址 - 保留静态二维码作为备用方案
This commit is contained in:
parent
529408a739
commit
7fec91ae35
|
|
@ -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<ResponseData<PageDTO<QyMpQrcodeDTO>>>("get", "/qywx/mp-qrcodes", {
|
||||
params
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取二维码详情
|
||||
* @param id 二维码ID
|
||||
* @returns 二维码详情
|
||||
*/
|
||||
export const getMpQrcodeDetailApi = (id: number) => {
|
||||
return http.request<ResponseData<QyMpQrcodeDTO>>("get", `/qywx/mp-qrcodes/${id}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增二维码
|
||||
* @param data 新增参数
|
||||
* @returns 操作结果
|
||||
*/
|
||||
export const addMpQrcodeApi = (data: AddMpQrcodeCommand) => {
|
||||
return http.request<ResponseData<void>>("post", "/qywx/mp-qrcodes", { data });
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改二维码
|
||||
* @param id 二维码ID
|
||||
* @param data 修改参数
|
||||
* @returns 操作结果
|
||||
*/
|
||||
export const updateMpQrcodeApi = (id: number, data: UpdateMpQrcodeCommand) => {
|
||||
return http.request<ResponseData<void>>("put", `/qywx/mp-qrcodes/${id}`, { data });
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除二维码
|
||||
* @param ids 二维码ID数组
|
||||
* @returns 操作结果
|
||||
*/
|
||||
export const deleteMpQrcodeApi = (ids: number[]) => {
|
||||
return http.request<ResponseData<void>>("delete", `/qywx/mp-qrcodes/${ids.join(',')}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据企业ID查询二维码
|
||||
* @param corpid 企业ID
|
||||
* @returns 二维码列表
|
||||
*/
|
||||
export const getMpQrcodeByCorpidApi = (corpid: string) => {
|
||||
return http.request<ResponseData<QyMpQrcodeEntity[]>>("get", `/qywx/mp-qrcodes/by-corpid/${corpid}`);
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据企业ID和名称查询或创建二维码
|
||||
* @param corpid 企业ID
|
||||
* @param name 二维码名称(必须为大写字母或下划线)
|
||||
* @returns 二维码信息
|
||||
*/
|
||||
export const getOrCreateMpQrcodeApi = (corpid: string, name: string) => {
|
||||
return http.request<ResponseData<QyMpQrcodeEntity>>("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 });
|
||||
};
|
||||
|
|
@ -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<TopGoodsDTO[]>([]);
|
|||
const todayLatestOrderGoods = ref<TodayLatestOrderGoodsDTO[]>([]);
|
||||
const maxOccurrenceCount = ref(0);
|
||||
|
||||
// 二维码数据
|
||||
const qrcodeData = ref<QyMpQrcodeEntity | null>(null);
|
||||
|
||||
// 借还动态数据
|
||||
const borrowReturnDynamicList = ref<BorrowReturnDynamicDTO[]>([]);
|
||||
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 () => {
|
|||
</div>
|
||||
</div>
|
||||
<div class="shop-qrcode">
|
||||
<el-image :src="qrcode" fit="contain" class="qrcode-image" />
|
||||
<el-image :src="VITE_APP_BASE_API + qrcodeData?.qrcodeUrl || qrcode" fit="contain" class="qrcode-image" />
|
||||
<p class="qrcode-text">扫码进入小程序</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue