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 { bindQyUserApi } from '@/api/ab98/user';
|
||||||
import qrcode from '@/assets/qrcode.png';
|
import qrcode from '@/assets/qrcode.png';
|
||||||
import { getBasicInfoByCorpidApi } from '@/api/qy/corp';
|
import { getBasicInfoByCorpidApi } from '@/api/qy/corp';
|
||||||
|
import { getOrCreateMpQrcodeApi, QyMpQrcodeEntity } from '@/api/qy/mpQrcode';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
|
const { VITE_APP_BASE_API } = import.meta.env;
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: "Welcome"
|
name: "Welcome"
|
||||||
|
|
@ -48,6 +50,9 @@ const topGoods = ref<TopGoodsDTO[]>([]);
|
||||||
const todayLatestOrderGoods = ref<TodayLatestOrderGoodsDTO[]>([]);
|
const todayLatestOrderGoods = ref<TodayLatestOrderGoodsDTO[]>([]);
|
||||||
const maxOccurrenceCount = ref(0);
|
const maxOccurrenceCount = ref(0);
|
||||||
|
|
||||||
|
// 二维码数据
|
||||||
|
const qrcodeData = ref<QyMpQrcodeEntity | null>(null);
|
||||||
|
|
||||||
// 借还动态数据
|
// 借还动态数据
|
||||||
const borrowReturnDynamicList = ref<BorrowReturnDynamicDTO[]>([]);
|
const borrowReturnDynamicList = ref<BorrowReturnDynamicDTO[]>([]);
|
||||||
const loading = ref(false);
|
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 () => {
|
const fetchBorrowReturnDynamic = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
|
@ -208,6 +226,9 @@ onMounted(async () => {
|
||||||
// 获取企业基本信息
|
// 获取企业基本信息
|
||||||
await fetchCorpBasicInfo();
|
await fetchCorpBasicInfo();
|
||||||
|
|
||||||
|
// 获取二维码数据
|
||||||
|
await fetchQrcodeData();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { data } = await getStats(wxStore.corpid);
|
const { data } = await getStats(wxStore.corpid);
|
||||||
shopData.value = [
|
shopData.value = [
|
||||||
|
|
@ -279,7 +300,7 @@ onMounted(async () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="shop-qrcode">
|
<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>
|
<p class="qrcode-text">扫码进入小程序</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue