| @@ -34,6 +34,7 @@ | |||
| "vue": "^3.2.45", | |||
| "vue-cropper": "^1.0.9", | |||
| "vue-i18n": "9", | |||
| "vue-qr": "^4.0.9", | |||
| "vue-router": "^4.0.13" | |||
| }, | |||
| "devDependencies": { | |||
| @@ -0,0 +1,27 @@ | |||
| import request from "@/utils/request.js"; | |||
| /** | |||
| * @description:购买金币下单 | |||
| * @param productId | |||
| * @return: data | |||
| */ | |||
| export function createOrderApi(data) { | |||
| return request({ | |||
| url: `api/productOrder/createOrder`, | |||
| method: 'post', | |||
| data | |||
| }) | |||
| } | |||
| /** | |||
| * @description:获取订单数据 | |||
| * @param data | |||
| * @return: data | |||
| */ | |||
| export function createPayApi(data) { | |||
| return request({ | |||
| url: `api/productOrder/createPay`, | |||
| method: 'post', | |||
| data | |||
| }) | |||
| } | |||
| @@ -2,7 +2,6 @@ | |||
| export {} | |||
| declare global { | |||
| const EffectScope: typeof import('vue')['EffectScope'] | |||
| const ElForm: typeof import('element-plus/es')['ElForm'] | |||
| const ElMessage: typeof import('element-plus/es')['ElMessage'] | |||
| const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] | |||
| const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] | |||
| @@ -271,7 +270,6 @@ import { UnwrapRef } from 'vue' | |||
| declare module 'vue' { | |||
| interface ComponentCustomProperties { | |||
| readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']> | |||
| readonly ElForm: UnwrapRef<typeof import('element-plus/es')['ElForm']> | |||
| readonly ElMessage: UnwrapRef<typeof import('element-plus/es')['ElMessage']> | |||
| readonly ElMessageBox: UnwrapRef<typeof import('element-plus/es')['ElMessageBox']> | |||
| readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']> | |||
| @@ -18,13 +18,10 @@ declare module '@vue/runtime-core' { | |||
| ElDropdown: typeof import('element-plus/es')['ElDropdown'] | |||
| ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] | |||
| ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] | |||
| ElForm: typeof import('element-plus/es')['ElForm'] | |||
| ElFormItem: typeof import('element-plus/es')['ElFormItem'] | |||
| ElIcon: typeof import('element-plus/es')['ElIcon'] | |||
| ElInput: typeof import('element-plus/es')['ElInput'] | |||
| ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] | |||
| ElOption: typeof import('element-plus/es')['ElOption'] | |||
| ElPagination: typeof import('element-plus/es')['ElPagination'] | |||
| ElSelect: typeof import('element-plus/es')['ElSelect'] | |||
| ElSwitch: typeof import('element-plus/es')['ElSwitch'] | |||
| ElTooltip: typeof import('element-plus/es')['ElTooltip'] | |||
| @@ -32,19 +29,13 @@ declare module '@vue/runtime-core' { | |||
| GithubCorner: typeof import('./../components/GithubCorner/index.vue')['default'] | |||
| Hamburger: typeof import('./../components/Hamburger/index.vue')['default'] | |||
| IconSelect: typeof import('./../components/IconSelect/index.vue')['default'] | |||
| IEpCloseBold: typeof import('~icons/ep/close-bold')['default'] | |||
| IEpDelete: typeof import('~icons/ep/delete')['default'] | |||
| IEpDocumentAdd: typeof import('~icons/ep/document-add')['default'] | |||
| IEpDownload: typeof import('~icons/ep/download')['default'] | |||
| IEpEdit: typeof import('~icons/ep/edit')['default'] | |||
| IEpGoods: typeof import('~icons/ep/goods')['default'] | |||
| IEpLoading: typeof import('~icons/ep/loading')['default'] | |||
| IEpLock: typeof import('~icons/ep/lock')['default'] | |||
| IEpMenu: typeof import('~icons/ep/menu')['default'] | |||
| IEpPhone: typeof import('~icons/ep/phone')['default'] | |||
| IEpSearch: typeof import('~icons/ep/search')['default'] | |||
| IEpUser: typeof import('~icons/ep/user')['default'] | |||
| IEpVideoPlay: typeof import('~icons/ep/video-play')['default'] | |||
| LangSelect: typeof import('./../components/LangSelect/index.vue')['default'] | |||
| MultiUpload: typeof import('./../components/Upload/MultiUpload.vue')['default'] | |||
| MyLoading: typeof import('./../components/myLoading.vue')['default'] | |||
| @@ -186,28 +186,111 @@ | |||
| <div class="left"> | |||
| <!-- <div class="title">{{ $t(presentItme.value.title) }}</div> --> | |||
| <div class="title">{{ $t(presentItme.value.typeDesc) }}</div> | |||
| <div class="price"> | |||
| <span>{{ presentItme.value.price }}</span> | |||
| 元/{{ presentItme.value.priceTime }} | |||
| <div class="money"> | |||
| <span class="price">{{ | |||
| lanChange == "zh-cn" | |||
| ? presentItme.value.rmb + "¥" | |||
| : presentItme.value.dollar + "$" | |||
| }}</span | |||
| >/{{ presentItme.value.validityDuration }}{{ $t("shop.day") }} | |||
| </div> | |||
| <div | |||
| class="authority" | |||
| v-for="item in presentItme.value.authority" | |||
| :key="item" | |||
| > | |||
| {{ item }}123 | |||
| <div class="time"> | |||
| <span>{{ presentItme.value.credit }}</span | |||
| >{{ $t("shop.score") }} | |||
| </div> | |||
| <!-- 套餐内容 --> | |||
| <div class="authority"> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.InviteGetscore") }}: | |||
| <span> | |||
| <i>{{ presentItme.value.inviteUserCredit }}</i | |||
| >{{ $t("shop.score") }}</span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.createVideoPrice") }}:<span | |||
| ><i>{{ presentItme.value.videoPrice }}</i | |||
| >{{ $t("shop.score") }}</span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.AIGeneratesPhotoPrices") }}:<span | |||
| ><i>{{ presentItme.value.photoPrice }}</i | |||
| >{{ $t("shop.score") }}</span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.UnitChargeDuration") }}:<span | |||
| ><i>{{ presentItme.value.chargeTime }}</i | |||
| >{{ $t("shop.second") }}</span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.Language") }}:<span | |||
| ><i>{{ | |||
| presentItme.value.userPackageDetails[0].languageDesc | |||
| }}</i></span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.sound") }}:<span | |||
| ><i>{{ | |||
| presentItme.value.userPackageDetails[0].soundDesc | |||
| }}</i></span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.IndividualVideoDuration") }}:<span | |||
| ><i>{{ presentItme.value.userPackageDetails[0].videoTime }}</i | |||
| >{{ $t("shop.second") }}</span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.Watermark") }}:<span>{{ | |||
| presentItme.value.userPackageDetails[0].aiPortrait == 0 | |||
| ? $t("shop.yes") | |||
| : $t("shop.no") | |||
| }}</span> | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.AIGeneratedPortrait") }}:<span>{{ | |||
| presentItme.value.userPackageDetails[0].aiPortrait == 0 | |||
| ? $t("shop.no") | |||
| : $t("shop.yes") | |||
| }}</span> | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.PhotoSinging") }}:<span>{{ | |||
| presentItme.value.userPackageDetails[0].photoSing == 0 | |||
| ? $t("shop.no") | |||
| : $t("shop.yes") | |||
| }}</span> | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.AIGeneratedText") }}:<span | |||
| ><i>{{ | |||
| presentItme.value.userPackageDetails[0].aiCreateTime | |||
| }}</i></span | |||
| > | |||
| </div> | |||
| <div class="authority-item"> | |||
| {{ $t("shop.VideoResolution") }}:<span>{{ | |||
| presentItme.value.userPackageDetails[0].resolutionRatioDesc | |||
| }}</span> | |||
| </div> | |||
| </div> | |||
| </div> | |||
| <div class="right"> | |||
| <div | |||
| style="background-color: #07c160; cursor: pointer" | |||
| @click="showOrderCode(1)" | |||
| @click="showOrderCode(2)" | |||
| > | |||
| {{ $t("shop.WeChatPay") }} | |||
| </div> | |||
| <div | |||
| style="background-color: #1378fe; cursor: pointer" | |||
| @click="showOrderCode(2)" | |||
| @click="showOrderCode(4)" | |||
| > | |||
| {{ $t("shop.Alipay") }} | |||
| </div> | |||
| @@ -225,11 +308,17 @@ | |||
| width="30%" | |||
| append-to-body | |||
| destroy-on-close | |||
| @closed="clearCode" | |||
| > | |||
| <div class="orderCodeDialog"> | |||
| <div class="codeImg"> | |||
| <my-Loading-Icon v-if="!orderCodeUrl"></my-Loading-Icon> | |||
| <img v-if="orderCodeUrl" src="../../assets/img/false1.png" alt="" /> | |||
| <my-Loading-Icon2 v-if="!payCodeUrl"></my-Loading-Icon2> | |||
| <vue-qr | |||
| v-if="payCodeUrl" | |||
| :text="payCodeUrl" | |||
| :size="280" | |||
| :callback="qrcode" | |||
| ></vue-qr> | |||
| </div> | |||
| <div class="tips">扫描二维码进行付款</div> | |||
| <div class="btnBox"> | |||
| @@ -254,6 +343,9 @@ import { getCurrentInstance, ref, onMounted } from "vue"; | |||
| import { useI18n } from "vue-i18n"; | |||
| import talkUs from "@/components/talkUs.vue"; | |||
| import { useRoute, useRouter } from "vue-router"; | |||
| import { createOrderApi, createPayApi } from "@/apis/pay"; | |||
| import vueQr from "vue-qr/src/packages/vue-qr.vue"; | |||
| const route = useRoute(); | |||
| const router = useRouter(); | |||
| const { locale } = useI18n(); | |||
| @@ -472,12 +564,15 @@ function clickPayDialog(item) { | |||
| presentItme.value = item; | |||
| showPayDialog.value = true; | |||
| } | |||
| function showOrderCode(type) { | |||
| orderCodeDialogShow.value = true; | |||
| } | |||
| //#endregion ------------------------------------ | |||
| //#region 点击套餐内的支付 | |||
| function showOrderCode(type) { | |||
| orderCodeDialogShow.value = true; | |||
| myPayVendor.value = type; | |||
| createOrderFunc(); | |||
| } | |||
| const orderCodeDialogShow = ref(false); | |||
| const orderCodeUrl = ref(null); | |||
| //#endregion ------------------------------------ | |||
| @@ -520,11 +615,65 @@ const updateShowTalkUsDialog = (newValue) => { | |||
| //#region 页面初始化 | |||
| onMounted(async () => { | |||
| // getPackageList(); | |||
| // createOrderFunc(); | |||
| }); | |||
| //#endregion ------------------------------------ | |||
| //#region | |||
| //#region 支付 | |||
| const myPayVendor = ref(null); // 2微信 4支付宝 | |||
| const payCodeUrl = ref(null); //付款二维码地址 | |||
| const payCodeImg = ref(null); //付款二维码图片 | |||
| // 支付失败处理 | |||
| function payErrorHandle() { | |||
| orderCodeDialogShow.value = false; | |||
| ElMessage.error( | |||
| lanChange.value == "zh-cn" | |||
| ? `获取订单失败,请重试` | |||
| : `Failed to get the order, please try again` | |||
| ); | |||
| } | |||
| // 获取订单 | |||
| async function createOrderFunc() { | |||
| const data = { | |||
| productId: 30, | |||
| }; | |||
| try { | |||
| const res = await createOrderApi(data); | |||
| if (res.code == 200) { | |||
| createPayFunc(res.data); | |||
| } else { | |||
| payErrorHandle(); | |||
| } | |||
| } catch (error) { | |||
| payErrorHandle(); | |||
| } | |||
| } | |||
| // 获取订单详情 | |||
| async function createPayFunc(orderNumber) { | |||
| const data = { | |||
| orderNumber, | |||
| payVendor: myPayVendor.value, | |||
| }; | |||
| try { | |||
| const res = await createPayApi(data); | |||
| if (res.code == 200) { | |||
| payCodeUrl.value = res.data.codeUrl; | |||
| } else { | |||
| payErrorHandle(); | |||
| } | |||
| } catch (error) { | |||
| payErrorHandle(); | |||
| } | |||
| } | |||
| // 生成二维码 | |||
| function qrcode() { | |||
| return; | |||
| } | |||
| // 关闭二维码弹窗 | |||
| function clearCode(params) { | |||
| myPayVendor.value = null; // 2微信 4支付宝 | |||
| payCodeUrl.value = null; | |||
| } | |||
| //#endregion ------------------------------------ | |||
| //#region | |||
| @@ -744,7 +893,8 @@ onMounted(async () => { | |||
| font-size: 30px; | |||
| text-align: center; | |||
| } | |||
| .price { | |||
| .money { | |||
| text-align: center; | |||
| span { | |||
| font-size: 30px; | |||
| font-weight: 700; | |||
| @@ -752,7 +902,40 @@ onMounted(async () => { | |||
| } | |||
| } | |||
| .authority { | |||
| padding: 10px 20px; | |||
| margin-top: 10px; | |||
| &-item { | |||
| display: flex; | |||
| justify-content: space-between; | |||
| cursor: pointer; | |||
| font-weight: 400; | |||
| font-size: 14px; | |||
| padding: 2px 3px; | |||
| color: #7c7c7a; | |||
| span { | |||
| cursor: pointer; | |||
| color: #7c7c7a; | |||
| margin-right: 30px; | |||
| } | |||
| i { | |||
| font-size: 20px; | |||
| font-style: normal; | |||
| margin-right: 5px; | |||
| background-image: -webkit-linear-gradient( | |||
| left, | |||
| #4b61dc, | |||
| #15d1b8 25%, | |||
| #4b61dc 50%, | |||
| #15d1b8 75%, | |||
| #4b61dc | |||
| ) !important; | |||
| -webkit-text-fill-color: transparent !important; | |||
| -webkit-background-clip: text !important; | |||
| background-clip: text !important; | |||
| -webkit-background-size: 200% 100% !important; | |||
| background-size: 200% 100% !important; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .right { | |||
| @@ -2289,6 +2289,13 @@ decode-uri-component@^0.2.0: | |||
| resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz" | |||
| integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== | |||
| decompress-response@^6.0.0: | |||
| version "6.0.0" | |||
| resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" | |||
| integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== | |||
| dependencies: | |||
| mimic-response "^3.1.0" | |||
| dedent@0.7.0: | |||
| version "0.7.0" | |||
| resolved "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz" | |||
| @@ -3182,6 +3189,17 @@ glob@7.2.3, glob@^7.1.3: | |||
| once "^1.3.0" | |||
| path-is-absolute "^1.0.0" | |||
| glob@^8.0.1: | |||
| version "8.1.0" | |||
| resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" | |||
| integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== | |||
| dependencies: | |||
| fs.realpath "^1.0.0" | |||
| inflight "^1.0.4" | |||
| inherits "2" | |||
| minimatch "^5.0.1" | |||
| once "^1.3.0" | |||
| global-dirs@^0.1.1: | |||
| version "0.1.1" | |||
| resolved "https://registry.npmmirror.com/global-dirs/-/global-dirs-0.1.1.tgz" | |||
| @@ -3759,6 +3777,11 @@ js-base64@^2.1.9: | |||
| resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz" | |||
| integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== | |||
| js-binary-schema-parser@^2.0.2: | |||
| version "2.0.3" | |||
| resolved "https://registry.yarnpkg.com/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz#3d7848748e8586e63b34e8911b643f59cfb6396e" | |||
| integrity sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg== | |||
| js-sdsl@^4.1.4: | |||
| version "4.4.0" | |||
| resolved "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.4.0.tgz" | |||
| @@ -4299,6 +4322,11 @@ mimic-fn@^4.0.0: | |||
| resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz" | |||
| integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== | |||
| mimic-response@^3.1.0: | |||
| version "3.1.0" | |||
| resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" | |||
| integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== | |||
| min-indent@^1.0.0: | |||
| version "1.0.1" | |||
| resolved "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz" | |||
| @@ -4311,6 +4339,13 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: | |||
| dependencies: | |||
| brace-expansion "^1.1.7" | |||
| minimatch@^5.0.1: | |||
| version "5.1.6" | |||
| resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" | |||
| integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== | |||
| dependencies: | |||
| brace-expansion "^2.0.1" | |||
| minimatch@^6.1.6: | |||
| version "6.2.0" | |||
| resolved "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz" | |||
| @@ -4565,7 +4600,7 @@ ohash@^1.1.1: | |||
| resolved "https://registry.npmjs.org/ohash/-/ohash-1.1.2.tgz" | |||
| integrity sha512-9CIOSq5945rI045GFtcO3uudyOkYVY1nyfFxVQp+9BRgslr8jPNiSSrsFGg/BNTUFOLqx0P5tng6G32brIPw0w== | |||
| once@^1.3.0: | |||
| once@^1.3.0, once@^1.3.1: | |||
| version "1.4.0" | |||
| resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz" | |||
| integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== | |||
| @@ -4665,6 +4700,11 @@ parent-module@^1.0.0: | |||
| dependencies: | |||
| callsites "^3.0.0" | |||
| parenthesis@^3.1.5: | |||
| version "3.1.8" | |||
| resolved "https://registry.yarnpkg.com/parenthesis/-/parenthesis-3.1.8.tgz#3457fccb8f05db27572b841dad9d2630b912f125" | |||
| integrity sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw== | |||
| parse-json@^5.0.0: | |||
| version "5.2.0" | |||
| resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz" | |||
| @@ -5271,6 +5311,20 @@ signal-exit@^4.0.1: | |||
| resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.0.2.tgz" | |||
| integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== | |||
| simple-concat@^1.0.0: | |||
| version "1.0.1" | |||
| resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" | |||
| integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== | |||
| simple-get@^4.0.1: | |||
| version "4.0.1" | |||
| resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" | |||
| integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== | |||
| dependencies: | |||
| decompress-response "^6.0.0" | |||
| once "^1.3.1" | |||
| simple-concat "^1.0.0" | |||
| sirv@^2.0.2: | |||
| version "2.0.3" | |||
| resolved "https://registry.npmmirror.com/sirv/-/sirv-2.0.3.tgz" | |||
| @@ -5471,6 +5525,13 @@ string-argv@^0.3.1: | |||
| resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz" | |||
| integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== | |||
| string-split-by@^1.0.0: | |||
| version "1.0.0" | |||
| resolved "https://registry.yarnpkg.com/string-split-by/-/string-split-by-1.0.0.tgz#53895fb3397ebc60adab1f1e3a131f5372586812" | |||
| integrity sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A== | |||
| dependencies: | |||
| parenthesis "^3.1.5" | |||
| string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: | |||
| version "4.2.3" | |||
| resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz" | |||
| @@ -6268,6 +6329,16 @@ vue-i18n@9: | |||
| "@intlify/vue-devtools" "9.2.2" | |||
| "@vue/devtools-api" "^6.2.1" | |||
| vue-qr@^4.0.9: | |||
| version "4.0.9" | |||
| resolved "https://registry.yarnpkg.com/vue-qr/-/vue-qr-4.0.9.tgz#6cb965dd0c5a0dff947e6ef582ef149b0780b986" | |||
| integrity sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw== | |||
| dependencies: | |||
| glob "^8.0.1" | |||
| js-binary-schema-parser "^2.0.2" | |||
| simple-get "^4.0.1" | |||
| string-split-by "^1.0.0" | |||
| vue-router@^4.0.13: | |||
| version "4.0.13" | |||
| resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.0.13.tgz" | |||