diff --git a/src/subpackage/groupon/pages/confirm_order/ticket.vue b/src/subpackage/groupon/pages/confirm_order/ticket.vue index 25af114..b854443 100644 --- a/src/subpackage/groupon/pages/confirm_order/ticket.vue +++ b/src/subpackage/groupon/pages/confirm_order/ticket.vue @@ -29,16 +29,20 @@ onMounted(() =>{ encrypted_codes: ticket?.encrypted_codes ?? '', douyin_merchant_pay_amount: ticket?.douyin_merchant_pay_amount ?? '', certificate_id: ticket?.certificate_id ?? '', + certificate: ticket?.certificates ?? null, }) }) }) function pvc_func({ - appid, brand_id, stadium_id, encrypted_codes, douyin_merchant_pay_amount, certificate_id + appid, brand_id, stadium_id, + encrypted_codes, douyin_merchant_pay_amount, + certificate_id, certificate }){ jsapiPreVerifyCertificates({ data: { appid, brand_id, stadium_id, - encrypted_codes, douyin_merchant_pay_amount, certificate_id + encrypted_codes, douyin_merchant_pay_amount, + certificate_id, certificate }, }) .then(res=>{ diff --git a/src/subpackage/groupon/pages/list.vue b/src/subpackage/groupon/pages/list.vue index 5293ec9..2716b0c 100644 --- a/src/subpackage/groupon/pages/list.vue +++ b/src/subpackage/groupon/pages/list.vue @@ -77,13 +77,16 @@ function ticketClick(e){ // 后端接口需要 encrypted_codes: certificates?.encrypted_code ?? '', douyin_merchant_pay_amount: certificates?.amount?.pay_amount ?? 0, + certificates, } uni.navigateTo({ url: `/subpackage/groupon/pages/stadiums`, success: res => { // 通过eventChannel向被打开页面传送数据 - res.eventChannel.emit('dataForGrouponStadiums', { ticket: _ticketInfo }); + res.eventChannel.emit('dataForGrouponStadiums', { + ticket: _ticketInfo + }); } }); } diff --git a/tools/generate-package-plugin.js b/tools/generate-package-plugin.js new file mode 100644 index 0000000..b6b2480 --- /dev/null +++ b/tools/generate-package-plugin.js @@ -0,0 +1,27 @@ +import path from 'path'; +import fs from 'fs'; + +/** + * 在构建完成后自动生成 package.json 文件 配置行业 SDK。 + * + * @param {string} outputDir - 输出目录,通常是构建平台对应的输出路径(如 dist/dev/mp-toutiao) + * @param {object} packageContent - 要写入 package.json 的内容对象 + * @returns {object} - 一个符合 Vite 插件规范的插件对象 + */ +function generatePackageJsonPlugin(outputDir, packageContent) { + return { + name: 'custom-generate-package-json', + apply: 'build', + generateBundle() { + const outputPackageJsonPath = path.resolve(outputDir, 'package.json'); + try { + fs.mkdirSync(path.dirname(outputPackageJsonPath), { recursive: true }); + fs.writeFileSync(outputPackageJsonPath, JSON.stringify(packageContent, null, 2), 'utf-8'); + } catch (error) { + console.error('[package.json] Failed to generate:', error); + } + }, + }; +} + +module.exports = { generatePackageJsonPlugin }; \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index d137a1e..6a344b6 100644 --- a/vite.config.js +++ b/vite.config.js @@ -2,6 +2,7 @@ import { defineConfig, loadEnv } from 'vite'; import uni from '@dcloudio/vite-plugin-uni'; import path from 'path'; import { updateJsonFileField } from './tools/json-editor.js'; +import { generatePackageJsonPlugin } from './tools/generate-package-plugin.js'; // https://vitejs.dev/config/ /** * @param {String} mode development/production @@ -9,12 +10,16 @@ import { updateJsonFileField } from './tools/json-editor.js'; export default defineConfig(({ mode = 'development' }) =>{ const env = loadEnv(mode, './envs'); console.log('current mode:', mode); - const manifestPath = path.resolve(__dirname, 'src/manifest.json'); - updateJsonFileField(manifestPath, ['mp-toutiao', 'appid'], env.VITE_TOUTIAO_APPID); + const plugins = [ uni() ]; + if (process.env.UNI_PLATFORM === 'mp-toutiao'){ + // 根据配置文件配置 appid + const manifestPath = path.resolve(__dirname, 'src/manifest.json'); + updateJsonFileField(manifestPath, ['mp-toutiao', 'appid'], env.VITE_TOUTIAO_APPID); + // 配置行业sdk + plugins.push(generatePackageJsonPlugin(process.env.UNI_OUTPUT_DIR, { industrySDK: true })); + } return { - plugins: [ - uni(), - ], + plugins, define: { // 抖音小程序不支持该参数 __VUE_OPTIONS_API__ // 会导致 [TMA] TypeError: this.$vm.$callCreatedHook is not a function @@ -30,4 +35,4 @@ export default defineConfig(({ mode = 'development' }) =>{ } } } -}) \ No newline at end of file +})