|
|
@@ -37,12 +37,14 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import QRCode from 'qrcodejs2';
|
|
|
+// import QRCode from 'qrcodejs2';
|
|
|
import html2canvas from 'html2canvas';
|
|
|
import CompPreview from './CompPreview.vue';
|
|
|
-import {
|
|
|
+import {
|
|
|
queryById,
|
|
|
- getWechatGroupFissionUrl
|
|
|
+ getWechatGroupFissionUrl,
|
|
|
+ getMiniProgramQrCode,
|
|
|
+ getWecomGroupQrcode
|
|
|
} from '@/api/activity/index';
|
|
|
export default {
|
|
|
name: '',
|
|
|
@@ -78,7 +80,7 @@ export default {
|
|
|
// 初始数据
|
|
|
getData(record) {
|
|
|
// 加载详情
|
|
|
- queryById({ id: record.id }).then(res => {
|
|
|
+ queryById({ id: record.id }).then(async res => {
|
|
|
if (res.code === 200) {
|
|
|
this.formData = res.data;
|
|
|
// 时间
|
|
|
@@ -112,55 +114,130 @@ export default {
|
|
|
return nd;
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
- this.$refs.targetDom.getQRCode(this.wechatPath);
|
|
|
+
|
|
|
+ // 加载企微群二维码
|
|
|
+ // this.$refs.targetDom.getQRCode(this.wechatPath);
|
|
|
+ if (res.data.wecomGroupId) {
|
|
|
+ try {
|
|
|
+ await this.getWecomGroupQrcodeById(res.data.wecomGroupId);
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取二维码失败:', error);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+ // 获取企微群二维码
|
|
|
+ async getWecomGroupQrcodeById(chatId) {
|
|
|
+ if (!chatId) {
|
|
|
+ console.error('缺少chatId参数');
|
|
|
+ throw new Error('缺少chatId参数');
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ const res = await getWecomGroupQrcode({
|
|
|
+ chatId: chatId,
|
|
|
+ }, {
|
|
|
+ responseType: 'blob' // 设置响应类型为blob
|
|
|
+ });
|
|
|
+
|
|
|
+ if (res) {
|
|
|
+ // 将二进制流转换为Data URL
|
|
|
+ const blob = new Blob([res], { type: 'image/png' });
|
|
|
+ const imageUrl = URL.createObjectURL(blob);
|
|
|
+ this.$set(this.formData, 'wecomGroupQrcode', imageUrl); // 关键:赋值给formData
|
|
|
+ return imageUrl;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取二维码失败:', error);
|
|
|
+ this.$message.error('获取二维码失败');
|
|
|
+ throw error;
|
|
|
+ }
|
|
|
+ },
|
|
|
// 初始化二维码
|
|
|
async getQRCode(record) {
|
|
|
await getWechatGroupFissionUrl({
|
|
|
- url: 'packageF/pages/activity/weGroupFission/poster',
|
|
|
- version: 'release',
|
|
|
+ // url: 'packageF/pages/activity/weGroupFission/poster',
|
|
|
+ url: 'pages/home/home',
|
|
|
+ version: 'trial', // release 正式版,trial 体验版
|
|
|
groupFissionId: record.id,
|
|
|
}).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
this.wechatPath = res.data;
|
|
|
}
|
|
|
});
|
|
|
- this.qrcode = new QRCode('share-qrcode', {
|
|
|
- text: this.wechatPath,
|
|
|
- width: 200,
|
|
|
- height: 200,
|
|
|
- colorDark: '#000000', // 二维码前景色
|
|
|
- colorLight: '#ffffff', // 二维码背景色
|
|
|
- correctLevel: QRCode.CorrectLevel.H // 容错级别:L/M/Q/H(H最高)
|
|
|
- });
|
|
|
+ // this.qrcode = new QRCode('share-qrcode', {
|
|
|
+ // text: this.wechatPath,
|
|
|
+ // width: 200,
|
|
|
+ // height: 200,
|
|
|
+ // colorDark: '#000000', // 二维码前景色
|
|
|
+ // colorLight: '#ffffff', // 二维码背景色
|
|
|
+ // correctLevel: QRCode.CorrectLevel.H // 容错级别:L/M/Q/H(H最高)
|
|
|
+ // });
|
|
|
},
|
|
|
// 下载功能
|
|
|
async onDownload(type) {
|
|
|
if (type === 'miniCode') {
|
|
|
- const qrImg = document.querySelector('#share-qrcode img') || document.querySelector('#share-qrcode canvas');
|
|
|
- if (!qrImg) {
|
|
|
- this.$message.error('二维码生成失败!');
|
|
|
- return;
|
|
|
- }
|
|
|
+ try {
|
|
|
+ // 获取当前活动ID
|
|
|
+ const groupFissionId = this.formData.id;
|
|
|
+ if (!groupFissionId) {
|
|
|
+ this.$message.error('缺少活动ID!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- // 创建下载链接
|
|
|
- const a = document.createElement('a');
|
|
|
- a.download = '小程序码-' + new Date().getTime() + '.png'; // 下载文件名
|
|
|
+ // 生成二维码的二进制流
|
|
|
+ const blob = await getMiniProgramQrCode({
|
|
|
+ // url: 'packageF/pages/activity/weGroupFission/poster',
|
|
|
+ url: 'pages/home/home',
|
|
|
+ version: 'trial', // release 正式版,trial 体验版
|
|
|
+ groupFissionId: groupFissionId,
|
|
|
+ }, {
|
|
|
+ responseType: 'blob' // 设置响应类型为blob
|
|
|
+ });
|
|
|
|
|
|
- // 处理 Canvas 或 Img 转 DataURL
|
|
|
- if (qrImg.tagName === 'CANVAS') {
|
|
|
- a.href = qrImg.toDataURL('image/png');
|
|
|
- } else {
|
|
|
- a.href = qrImg.src;
|
|
|
+ if (blob) {
|
|
|
+ // 创建下载链接
|
|
|
+ const url = URL.createObjectURL(blob);
|
|
|
+ const a = document.createElement('a');
|
|
|
+ a.href = url;
|
|
|
+ a.download = '小程序码-' + new Date().getTime() + '.png'; // 下载文件名
|
|
|
+
|
|
|
+ // 触发下载
|
|
|
+ document.body.appendChild(a);
|
|
|
+ a.click();
|
|
|
+
|
|
|
+ // 清理资源
|
|
|
+ document.body.removeChild(a);
|
|
|
+ URL.revokeObjectURL(url);
|
|
|
+ } else {
|
|
|
+ this.$message.error('二维码生成失败!');
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('下载小程序码失败:', error);
|
|
|
}
|
|
|
+ // const qrImg = document.querySelector('#share-qrcode img') || document.querySelector('#share-qrcode canvas');
|
|
|
+ // if (!qrImg) {
|
|
|
+ // this.$message.error('二维码生成失败!');
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
|
|
|
- // 触发下载
|
|
|
- document.body.appendChild(a);
|
|
|
- a.click();
|
|
|
- document.body.removeChild(a);
|
|
|
+ // // 创建下载链接
|
|
|
+ // const a = document.createElement('a');
|
|
|
+ // a.download = '小程序码-' + new Date().getTime() + '.png'; // 下载文件名
|
|
|
+
|
|
|
+ // // 处理 Canvas 或 Img 转 DataURL
|
|
|
+ // if (qrImg.tagName === 'CANVAS') {
|
|
|
+ // a.href = qrImg.toDataURL('image/png');
|
|
|
+ // } else {
|
|
|
+ // a.href = qrImg.src;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // // 触发下载
|
|
|
+ // document.body.appendChild(a);
|
|
|
+ // a.click();
|
|
|
+ // document.body.removeChild(a);
|
|
|
} else {
|
|
|
try {
|
|
|
// 1. 获取目标 DOM 元素
|
|
|
@@ -225,14 +302,14 @@ export default {
|
|
|
.share-content {
|
|
|
.share-card {
|
|
|
padding: 20px;
|
|
|
- background: #f8faff;
|
|
|
+ background: #f8faff;
|
|
|
border-radius: 12px;
|
|
|
- border: 1px solid #eff4f9;
|
|
|
+ border: 1px solid #eff4f9;
|
|
|
transition: all 0.3s;
|
|
|
|
|
|
&:hover {
|
|
|
border-color: #d9e4ff;
|
|
|
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
|
|
|
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
|
|
|
}
|
|
|
|
|
|
.card-header {
|
|
|
@@ -251,12 +328,12 @@ export default {
|
|
|
font-size: 16px;
|
|
|
|
|
|
&.wechat-icon {
|
|
|
- background: #e7f8eb;
|
|
|
+ background: #e7f8eb;
|
|
|
color: #07c160;
|
|
|
}
|
|
|
|
|
|
&.h5-icon {
|
|
|
- background: #e6f7ff;
|
|
|
+ background: #e6f7ff;
|
|
|
color: #1890ff;
|
|
|
}
|
|
|
}
|
|
|
@@ -276,7 +353,7 @@ export default {
|
|
|
font-size: 22px;
|
|
|
cursor: pointer;
|
|
|
transition: all 0.2s;
|
|
|
- color: #1890ff;
|
|
|
+ color: #1890ff;
|
|
|
padding: 4px;
|
|
|
border-radius: 4px;
|
|
|
|
|
|
@@ -304,4 +381,4 @@ export default {
|
|
|
position: fixed;
|
|
|
top: -2000px;
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|