apps/taro/package.json
@@ -43,6 +43,7 @@ "@babel/runtime": "^7.7.7", "@life-payment/components": "workspace:^", "@life-payment/constants": "workspace:^", "@life-payment/core-vue": "workspace:^", "@life-payment/services": "workspace:^", "@life-payment/utils": "workspace:^", "@nutui/icons-vue-taro": "^0.0.9", apps/taro/src/app.ts
@@ -10,7 +10,7 @@ import Taro from '@tarojs/taro'; import { VueQueryPlugin, VueQueryPluginOptions } from '@tanstack/vue-query'; import { myClient } from '@/constants/query'; import { VueLifeRechargePlugin } from '@life-payment/components'; import { VueLifeRechargePlugin } from '@life-payment/core-vue'; import { blLifeRecharge } from '@/utils/blLifeRecharge'; import { isWeChat } from '@/utils/env'; apps/taro/src/subpackages/login/loginByForm/verificationCodeLoginForm.vue
@@ -40,7 +40,7 @@ import { useLoginedJump } from '@/hooks'; import { useUserStore } from '@/stores/modules/user'; import Taro from '@tarojs/taro'; import { useLifeRechargeContext } from '@life-payment/components'; import { useLifeRechargeContext } from '@life-payment/core-vue'; defineOptions({ name: 'verificationCodeLoginForm', apps/taro/src/subpackages/recharge/phoneBillRecharge/InnerPage.vue
@@ -1,17 +1,20 @@ <template> <ContentScrollView :paddingH="false"> <PhoneBillRecharge @goPay="goPay" /> <PhoneBillRecharge @goPay="goPay" :isDev="isDev" /> </ContentScrollView> </template> <script setup lang="ts"> import { PhoneBillRecharge, BlLifeRecharge } from '@life-payment/components'; import { PhoneBillRecharge } from '@life-payment/components'; import { BlLifeRecharge } from '@life-payment/core-vue'; import Taro from '@tarojs/taro'; defineOptions({ name: 'InnerPage', }); const isDev = process.env.NODE_ENV === 'development'; function goPay(orderNo: string) { Taro.navigateTo({ url: `${RouterPath.selectPayType}?orderNo=${orderNo}&lifePayOrderType=${BlLifeRecharge.constants.LifePayOrderTypeEnum.话费订单}`, apps/taro/src/utils/blLifeRecharge.ts
@@ -1,4 +1,4 @@ import { BlLifeRecharge } from '@life-payment/components'; import { BlLifeRecharge } from '@life-payment/core-vue'; import { request } from './request'; import { getStorageVirtualUserId } from './storage'; apps/taro/tsconfig.json
@@ -27,6 +27,7 @@ "references": [ { "path": "../../packages/components" }, { "path": "../../packages/constants" }, { "path": "../../packages/core-vue" }, { "path": "../../packages/utils" } ] } packages/components/package.json
@@ -15,12 +15,13 @@ "./*": "./*" }, "devDependencies": { "@life-payment/core-vue": "workspace:^", "@nutui/icons-vue-taro": "0.0.9", "@nutui/nutui-taro": "4.3.13", "vue": "3.5.12" }, "peerDependencies": { "@nutui/icons-vue-taro": "0.0.9", "@life-payment/core-vue": "*", "@nutui/nutui-taro": "4.3.13", "vue": "3.5.12" } packages/components/src/hooks/index.ts
@@ -5,7 +5,8 @@ PhoneParValueResponse, QueryLifePayOrderListInput, LifeRechargeConstants, } from '../utils'; ElectricParValueResponse, } from '@life-payment/core-vue'; import { useQuery } from '@tanstack/vue-query'; import { computed, MaybeRef, reactive, unref } from 'vue'; import { useInfiniteLoading } from './infiniteLoading'; @@ -62,6 +63,25 @@ }; } export function useGetElectricParValue() { const { blLifeRecharge } = useLifeRechargeContext(); const { data: electricParValueList, isLoading } = useQuery({ queryKey: ['blLifeRecharge/getElectricParValue'], queryFn: async () => { return await blLifeRecharge.services.getElectricParValue({ showLoading: false }); }, select(data) { return data.electricParValue ?? []; }, placeholderData: () => ({} as ElectricParValueResponse), }); return { electricParValueList, }; } export type UseGetUserLifePayOrderPageOptions = { lifePayOrderType?: MaybeRef<LifeRechargeConstants.LifePayOrderTypeEnum>; }; packages/components/src/utils/index.ts
@@ -1,6 +1 @@ export * from './lifeRecharge'; export * from './plugin'; export * from './lifeRechargeServices'; export * from './types'; export * from './validator'; export * from './lifeRechargeConstants'; packages/components/src/views/Order/components/PhoneOrder.vue
@@ -19,7 +19,7 @@ import OrderCard from '../../../components/Card/OrderCard.vue'; import OrderCardItem from '../../../components/Card/OrderCardItem.vue'; import { useGetUserLifePayOrderPage } from '../../../hooks'; import { BlLifeRecharge } from '../../../utils'; import { BlLifeRecharge } from '@life-payment/core-vue'; defineOptions({ name: 'PhoneOrder', packages/components/src/views/PhoneBillRecharge/PhoneBillRecharge.vue
@@ -7,7 +7,7 @@ class="order-bill-recharge phone" > <FormItem label="选择运营商:" class="bole-form-item" prop="ispCode" required> <RadioGroup v-model="form.ispCode" direction="horizontal"> <RadioGroup v-model="form.ispCode" direction="horizontal" @change="changeIspCode"> <BlRadio :label="key" v-for="(val, key) in BlLifeRecharge.constants.IspCodeText" @@ -41,7 +41,7 @@ <FormItem label="选择充值金额" class="bole-form-item" prop="parValue" required> <RadioGroup v-model="form.parValue" direction="horizontal" class="parValue-radio-group"> <Radio :label="item" :label="Number(item)" :key="item" shape="button" v-for="item in parValueList" @@ -88,12 +88,13 @@ import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; import { reactive, ref, computed } from 'vue'; import BlRadio from '../../components/Radio/Radio.vue'; import { FormValidator } from '../../utils'; import { useLifeRechargeContext, BlLifeRecharge, LifePhoneDataCreateLifePayOrderInput, FormValidator, } from '../../utils'; LifeRechargeConstants, } from '@life-payment/core-vue'; import RechargeTipsView from '../../components/RechargeTipsView/RechargeTipsView.vue'; import ConfirmDialog from '../../components/Dialog/ConfirmDialog.vue'; import ConfirmDialogInfoItem from '../../components/Dialog/ConfirmDialogInfoItem.vue'; @@ -101,6 +102,14 @@ defineOptions({ name: 'PhoneBillRecharge', }); type Props = { isDev?: boolean; }; const props = withDefaults(defineProps<Props>(), { isDev: false, }); const form = reactive({ @@ -111,22 +120,22 @@ }); const emit = defineEmits<{ ( e: 'goPay', // form: { // ispCode: typeof BlLifeRecharge.constants.IspCode; // phone: string; // parValue: number; // name: string; // } orderNo: string ): void; (e: 'goPay', orderNo: string): void; }>(); const { lifePayPhoneRate } = useGetRate(); const { phoneParValueList } = useGetPhoneParValue(); const parValueList = [50, 100, 200]; const parValueList = computed( () => phoneParValueList.value.find((x) => x.ispCode === form.ispCode)?.parValue ?? [] ); function changeIspCode(val: LifeRechargeConstants.IspCode) { const phoneParValueItem = phoneParValueList.value.find((x) => x.ispCode === val); if (phoneParValueItem.parValue.every((x) => Number(x) !== form.parValue)) { form.parValue = 0; } } const realParValue = computed(() => blLifeRecharge.getRechargeParValue(form.parValue, lifePayPhoneRate.value) @@ -179,7 +188,7 @@ userId: blLifeRecharge.accountModel.userId, productData: { ispCode: form.ispCode, parValue: 0.1, parValue: props.isDev ? 0.1 : form.parValue, phone: form.phone, name: form.ispCode === BlLifeRecharge.constants.IspCode.dianxin ? form.name : '', }, packages/components/src/views/SelectPayTypeView/SelectPayTypeView.vue
@@ -18,7 +18,7 @@ useLifeRechargeContext, SetLifePayOrderPayTypeInput, LifeRechargeConstants, } from '../../utils'; } from '@life-payment/core-vue'; import { useQuery } from '@tanstack/vue-query'; defineOptions({ packages/components/src/views/electricBillRecharge/electricBillRecharge.vue
@@ -65,9 +65,11 @@ </div> <div class="price-wrapper"> <div class="price-text">折后</div> <div class="price">{{ blLifeRecharge.getRechargeParValue(item, rate) }}元</div> <div class="price"> {{ blLifeRecharge.getRechargeParValue(item, lifePayElectricRate) }}元 </div> <div class="discountTag">{{ rate * 100 }}折</div> </div> <div class="discountTag">{{ lifePayElectricRate * 100 }}折</div> </div> </Radio> </RadioGroup> @@ -88,8 +90,8 @@ <template #info> <ConfirmDialogInfoItem label="电网类型" content="国家电网" /> <ConfirmDialogInfoItem label="电费类型" content="住宅" /> <ConfirmDialogInfoItem label="充值金额" :content="`¥${form.parValue}`" danger /> <ConfirmDialogInfoItem label="优惠金额" :content="`¥${discountParValue}`" /> <ConfirmDialogInfoItem label="充值金额" :content="`¥${form.parValue.toFixed(2)}`" danger /> <ConfirmDialogInfoItem label="优惠金额" :content="`¥${discountParValue.toFixed(2)}`" /> <ConfirmDialogInfoItem label="实付金额" :content="`¥${realParValue}`" danger /> </template> <template #warning> @@ -103,13 +105,13 @@ import { Form, FormItem, RadioGroup, Radio, Input, Button as NutButton } from '@nutui/nutui-taro'; import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; import { reactive, ref, computed } from 'vue'; import BlRadio from '../../components/Radio/Radio.vue'; import { IspCodeText, IspCode } from '../../constants'; import { useLifeRechargeContext } from '../../utils'; import { useLifeRechargeContext } from '@life-payment/core-vue'; import RechargeTipsView from '../../components/RechargeTipsView/RechargeTipsView.vue'; import ConfirmDialog from '../../components/Dialog/ConfirmDialog.vue'; import ConfirmDialogInfoItem from '../../components/Dialog/ConfirmDialogInfoItem.vue'; import ChooseInputWithPicker from '../../components/Input/ChooseInputWithPicker.vue'; import { useGetRate, useGetElectricParValue } from '../../hooks'; defineOptions({ name: 'electricBillRecharge', @@ -129,11 +131,14 @@ sixID: '', }); const rate = 0.96; const { lifePayElectricRate } = useGetRate(); const { electricParValueList } = useGetElectricParValue(); const parValueList = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1500, 2000, 3000]; const realParValue = computed(() => blLifeRecharge.getRechargeParValue(form.parValue, rate)); const realParValue = computed(() => blLifeRecharge.getRechargeParValue(form.parValue, lifePayElectricRate.value) ); const discountParValue = computed(() => form.parValue - Number(realParValue.value)); const { blLifeRecharge } = useLifeRechargeContext(); packages/components/tsconfig.json
@@ -15,6 +15,6 @@ "../../types/api.d.ts" ] }, "include": ["./src/**/*", "./types", "./assets"], "include": ["./src/**/*", "./types", "./assets", "../core-vue"], "references": [{ "path": "../services" }] } packages/core-vue/package.json
New file @@ -0,0 +1,15 @@ { "name": "@life-payment/core-vue", "private": true, "main": "src/index.ts", "module": "./src/index.ts", "version": "0.0.1", "devDependencies": { "@life-payment/core": "workspace:^", "vue": "3.5.12" }, "peerDependencies": { "@life-payment/core": "*", "vue": "3.5.12" } } packages/core-vue/src/index.ts
New file @@ -0,0 +1,2 @@ export * from '@life-payment/core'; export * from './plugin'; packages/core-vue/src/plugin.ts
File was renamed from packages/components/src/utils/plugin.ts @@ -1,4 +1,4 @@ import { BlLifeRecharge } from './lifeRecharge'; import { BlLifeRecharge } from '@life-payment/core'; import { inject, shallowReactive } from 'vue'; import type { InjectionKey, UnwrapNestedRefs, Ref } from 'vue'; packages/core-vue/tsconfig.json
New file @@ -0,0 +1,14 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { "baseUrl": ".", "ignoreDeprecations": "5.0", "paths": { "@life-payment/*": ["../../packages/*"] }, "composite": true, "types": ["node"] }, "include": ["./src/**/*"], "references": [{ "path": "../core" }] } packages/core/package.json
New file @@ -0,0 +1,13 @@ { "name": "@life-payment/core", "private": true, "main": "src/index.ts", "module": "./src/index.ts", "version": "0.0.1", "devDependencies": { "axios": "1.4.0" }, "peerDependencies": { "axios": "*" } } packages/core/src/index.ts
New file @@ -0,0 +1,4 @@ export * from './lifeRecharge'; export * from './lifeRechargeServices'; export * from './types'; export * from './lifeRechargeConstants'; packages/core/src/lifeRecharge.ts
File was renamed from packages/components/src/utils/lifeRecharge.ts @@ -38,7 +38,7 @@ return !!this.accountModel.userId; } getRechargeParValue(amount: number, rate: number) { return (amount * rate).toFixed(2); getRechargeParValue(amount: number | string, rate: number) { return (Number(amount) * rate).toFixed(2); } } packages/core/src/lifeRechargeAccountModel.ts
File was renamed from packages/components/src/utils/lifeRechargeAccountModel.ts @@ -5,7 +5,7 @@ phoneNumber = ''; constructor(options: BlLifeRechargeAccountModelOptions = {}) { const { userId, phoneNumber } = options; const { userId = '', phoneNumber = '' } = options; this.setUserId(userId); this.setPhoneNumber(phoneNumber); } packages/core/src/lifeRechargeConstants.ts
packages/core/src/lifeRechargeServices.ts
File was renamed from packages/components/src/utils/lifeRechargeServices.ts @@ -149,14 +149,14 @@ } export interface PhoneParValueResponse { success?: string; success?: boolean; requestNo?: string; partnerId?: string; service?: string; version?: string; protocol?: string; context?: string; ext?: string; ext?: any; code?: string; message?: string; detail?: string; @@ -166,7 +166,7 @@ export interface PhoneParValueOutput { ispCode?: string; ispName?: string; parValue?: string; parValue?: string[]; rate?: number; phoneSection?: string; comments?: string; packages/core/src/types.ts
File was renamed from packages/components/src/utils/types.ts @@ -1,4 +1,4 @@ import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; import { AxiosRequestConfig } from 'axios'; export interface IRequestOptions extends AxiosRequestConfig {} packages/core/tsconfig.json
New file @@ -0,0 +1,20 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { "baseUrl": ".", "ignoreDeprecations": "5.0", "paths": { "@life-payment/*": ["../../packages/*"] }, "composite": true, "types": [ "node", "../services/api/typings.d.ts", "../services/types.d.ts", "../services/globalType.d.ts", "../../types/api.d.ts" ] }, "include": ["./src/**/*"], "references": [{ "path": "../services" }] } packages/services/api/AliPayNotify.ts
@@ -2,23 +2,8 @@ // @ts-ignore import { request } from '@/utils/request'; /** 此处后端没有提供注释 GET /api/AliPayNotify/AliRechargeNotify */ export async function aliRechargeNotify( // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) params: API.APIaliRechargeNotifyParams, options?: API.RequestConfig ) { return request<any>('/api/AliPayNotify/AliRechargeNotify', { method: 'GET', params: { ...params, }, ...(options || {}), }); } /** 支付宝充值回调通知 POST /api/AliPayNotify/AliRechargeNotify */ export async function aliRechargeNotify_2(options?: API.RequestConfig) { export async function aliRechargeNotify(options?: API.RequestConfig) { return request<any>('/api/AliPayNotify/AliRechargeNotify', { method: 'POST', ...(options || {}), @@ -47,3 +32,18 @@ ...(options || {}), }); } /** 此处后端没有提供注释 GET /api/AliPayNotify/TestAliRechargeNotify */ export async function testAliRechargeNotify( // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) params: API.APItestAliRechargeNotifyParams, options?: API.RequestConfig ) { return request<any>('/api/AliPayNotify/TestAliRechargeNotify', { method: 'GET', params: { ...params, }, ...(options || {}), }); } packages/services/api/typings.d.ts
@@ -917,12 +917,6 @@ id?: string; } interface APIaliRechargeNotifyParams { outTradeNo?: string; tradeNo?: string; success?: boolean; } interface APIapiDefinitionParams { includeTypes?: boolean; } @@ -1887,6 +1881,12 @@ interface APItencentUserEnableOrForbidParams { id?: string; } interface APItestAliRechargeNotifyParams { outTradeNo?: string; tradeNo?: string; success?: boolean; } interface APItestCallBackParams { @@ -5468,20 +5468,20 @@ interface ElectricParValueOutput { electricType?: string; areaName?: string; parValue?: string; parValue?: string[]; rate?: number; comments?: string; } interface ElectricParValueResponse { success?: string; success?: boolean; requestNo?: string; partnerId?: string; service?: string; version?: string; protocol?: string; context?: string; ext?: string; ext?: any; code?: string; message?: string; detail?: string; @@ -14917,21 +14917,21 @@ interface PhoneParValueOutput { ispCode?: string; ispName?: string; parValue?: string; parValue?: string[]; rate?: number; phoneSection?: string; comments?: string; } interface PhoneParValueResponse { success?: string; success?: boolean; requestNo?: string; partnerId?: string; service?: string; version?: string; protocol?: string; context?: string; ext?: string; ext?: any; code?: string; message?: string; detail?: string; pnpm-lock.yaml
@@ -1,9 +1,5 @@ lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false overrides: vue: 3.5.12 @@ -121,7 +117,7 @@ dependencies: '@bole-12333/chat-kit': specifier: latest version: 1.0.1(@tencentcloud/chat-uikit-engine@2.4.0)(lodash@4.17.21)(vue@3.5.12) version: 1.0.1(@tencentcloud/chat-uikit-engine@2.4.2)(lodash@4.17.21)(vue@3.5.12) '@bole-12333/customer-chat': specifier: latest version: 1.0.3(@bole-12333/chat-kit@1.0.1)(@tiptap/core@2.11.5)(@tiptap/extension-document@2.11.5)(@tiptap/extension-image@2.11.5)(@tiptap/extension-mention@2.11.5)(@tiptap/extension-paragraph@2.11.5)(@tiptap/extension-placeholder@2.11.5)(@tiptap/extension-text@2.11.5)(@tiptap/pm@2.11.5)(@tiptap/suggestion@2.11.5)(dayjs@1.11.6)(vue@3.5.12) @@ -498,6 +494,9 @@ '@life-payment/constants': specifier: workspace:^ version: link:../../packages/constants '@life-payment/core-vue': specifier: workspace:^ version: link:../../packages/core-vue '@life-payment/services': specifier: workspace:^ version: link:../../packages/services @@ -736,6 +735,9 @@ packages/components: devDependencies: '@life-payment/core-vue': specifier: workspace:^ version: link:../core-vue '@nutui/icons-vue-taro': specifier: 0.0.9 version: 0.0.9 @@ -747,6 +749,21 @@ version: 3.5.12(typescript@5.2.2) packages/constants: {} packages/core: devDependencies: axios: specifier: 1.4.0 version: 1.4.0 packages/core-vue: devDependencies: '@life-payment/core': specifier: workspace:^ version: link:../core vue: specifier: 3.5.12 version: 3.5.12(typescript@5.2.2) packages/services: {} @@ -4837,14 +4854,14 @@ '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 /@bole-12333/chat-kit@1.0.1(@tencentcloud/chat-uikit-engine@2.4.0)(lodash@4.17.21)(vue@3.5.12): /@bole-12333/chat-kit@1.0.1(@tencentcloud/chat-uikit-engine@2.4.2)(lodash@4.17.21)(vue@3.5.12): resolution: {integrity: sha512-yeSh4XLagaM+uNZRdcG49mhDJO3UbYEpIYZS4Lk303ROnTwxuZyuh5jkoflnCFwWN3Ib3AolfQy999oOqF012A==} peerDependencies: '@tencentcloud/chat-uikit-engine': '*' lodash: '*' vue: 3.5.12 vue: '*' dependencies: '@tencentcloud/chat-uikit-engine': 2.4.0(react-native@0.78.0)(react@19.0.0) '@tencentcloud/chat-uikit-engine': 2.4.2(react-native@0.78.0)(react@19.0.0) lodash: 4.17.21 vue: 3.5.12(typescript@4.6.4) dev: false @@ -4863,9 +4880,9 @@ '@tiptap/pm': ^2.0.0-beta.220 '@tiptap/suggestion': ^2.0.0-beta.220 dayjs: '*' vue: 3.5.12 vue: '*' dependencies: '@bole-12333/chat-kit': 1.0.1(@tencentcloud/chat-uikit-engine@2.4.0)(lodash@4.17.21)(vue@3.5.12) '@bole-12333/chat-kit': 1.0.1(@tencentcloud/chat-uikit-engine@2.4.2)(lodash@4.17.21)(vue@3.5.12) '@tiptap/core': 2.11.5(@tiptap/pm@2.11.5) '@tiptap/extension-document': 2.11.5(@tiptap/core@2.11.5) '@tiptap/extension-image': 2.11.5(@tiptap/core@2.11.5) @@ -4896,7 +4913,7 @@ senin-help: '*' senin-vue: '*' video.js: '*' vue: 3.5.12 vue: '*' vue-component-type-helpers: ^2.1.6 dependencies: '@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.4)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.3)(vue-router@4.4.5)(vue@3.5.12)(xlsx-style@0.8.13)(xlsx@0.18.5) @@ -4929,7 +4946,7 @@ jszip: '*' lodash: '*' senior-request: '*' vue: 3.5.12 vue: '*' vue-router: '*' xlsx: '*' xlsx-style: '*' @@ -4962,7 +4979,7 @@ path-browserify: '*' path-to-regexp: '*' pinia: '*' vue: 3.5.12 vue: '*' vue-router: '*' dependencies: '@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.4)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.3)(vue-router@4.4.5)(vue@3.5.12)(xlsx-style@0.8.13)(xlsx@0.18.5) @@ -5180,7 +5197,7 @@ resolution: {integrity: sha512-33Cfr0zjbc3Dd8d5b1IgzXRAgXH0c2Gv19VI4snS25V/x9Z41eg769tC+Us1x+vqgQQhgD5YUjLnkpkrQfeMSw==} peerDependencies: qrcode: ^1.5.0 vue: 3.5.12 vue: ^3.0.0 dependencies: qrcode: 1.5.4 vue: 3.5.12(typescript@4.6.4) @@ -5856,7 +5873,7 @@ /@element-plus/icons-vue@2.3.1(vue@3.5.12): resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} peerDependencies: vue: 3.5.12 vue: ^3.2.0 dependencies: vue: 3.5.12(typescript@4.6.4) dev: false @@ -6480,7 +6497,7 @@ /@iconify/vue@4.0.0(vue@3.5.12): resolution: {integrity: sha512-73z81Yf2HISfehu3qvN9GqL1OnUO7wEMKkiFwVGJ2pqAdGCR8FrVylhRhka+6U+gFLlng0ynnT20svk3jJYwow==} peerDependencies: vue: 3.5.12 vue: '>=3' dependencies: '@iconify/types': 2.0.0 vue: 3.5.12(typescript@4.6.4) @@ -7485,7 +7502,7 @@ resolution: {integrity: sha512-+n8vVZAu92MUX6VEf6gO73Iz3JThjksdb6aSarvciCSydlWWdlQqZwYIGMTG4zOwDfCoQ3HfLa36zVaIJLSn3g==} peerDependencies: unplugin-vue-components: '>=0.25.1' vue: 3.5.12 vue: ^3.0.0 peerDependenciesMeta: unplugin-vue-components: optional: true @@ -8300,7 +8317,7 @@ resolution: {integrity: sha512-QzCQ94g2oZQcEfI4nfqa6Qr3aFXtXiEH17Jho+QFl73c7epqsWNcyP3ovF1fgJz5jEOE5OYtwgkoaRKIRaSigg==} peerDependencies: '@vue/composition-api': ^1.1.2 vue: 3.5.12 vue: ^2.5.0 || ^3.0.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -8626,7 +8643,7 @@ /@tarojs/plugin-framework-vue3@3.6.20(postcss@8.4.19)(vue@3.5.12): resolution: {integrity: sha512-F3Cw3BIP/4rv0Whr6oYEiSzJKl2Xvx321FiSDFk/E+IOu2h4Q1mqBJSpQe3ZVdJjvBu/KLUyVm27mAz8hxftNw==} peerDependencies: vue: 3.5.12 vue: ^3.0.0 dependencies: '@tarojs/helper': 3.6.20 '@tarojs/runner-utils': 3.6.20 @@ -9268,8 +9285,8 @@ - react-native dev: false /@tencentcloud/chat-uikit-engine@2.4.0(react-native@0.78.0)(react@19.0.0): resolution: {integrity: sha512-zE+bygEROaqgeMXXO+X2+2x8JH55mnb9c1sYQVQ507FlFT0maHxEQPOq8/EZBWowUDDlYoWbHh1EBAXEAI3dgA==} /@tencentcloud/chat-uikit-engine@2.4.2(react-native@0.78.0)(react@19.0.0): resolution: {integrity: sha512-L5rr1mO98S1Uz5IndJ2QdGv++5zbSUTnGSz4x3rKx5lWXlcJzSo1RY9DxYcWTKQKos9bG2d4JIIeg4DlfGb+Pg==} dependencies: '@tencentcloud/chat': 3.5.2(react-native@0.78.0)(react@19.0.0) tim-profanity-filter-plugin: 1.1.0 @@ -9295,7 +9312,7 @@ '@tencentcloud/call-uikit-vue': 4.0.2(react-native@0.78.0)(react@19.0.0) '@tencentcloud/call-uikit-vue2': 4.0.2(react-native@0.78.0)(react@19.0.0) '@tencentcloud/call-uikit-vue2.6': 4.0.2(react-native@0.78.0)(react@19.0.0)(vue@3.5.12) '@tencentcloud/chat-uikit-engine': 2.4.0(react-native@0.78.0)(react@19.0.0) '@tencentcloud/chat-uikit-engine': 2.4.2(react-native@0.78.0)(react@19.0.0) '@tencentcloud/tui-core': 2.4.0(react-native@0.78.0)(react@19.0.0) '@tencentcloud/tui-customer-service-plugin': 2.2.6(@tencentcloud/tui-core@2.4.0)(vue@3.5.12) '@tiptap/core': 2.11.5(@tiptap/pm@2.11.5) @@ -9365,7 +9382,7 @@ peerDependencies: '@tencentcloud/tui-core': latest '@vue/composition-api': ^1.0.0-rc.1 vue: 3.5.12 vue: ^2.0.0 || >=3.0.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -10627,7 +10644,7 @@ /@vant/use@1.6.0(vue@3.5.12): resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==} peerDependencies: vue: 3.5.12 vue: ^3.0.0 dependencies: vue: 3.5.12(typescript@4.6.4) dev: false @@ -10641,7 +10658,7 @@ peerDependencies: '@types/video.js': 7.x video.js: 7.x vue: 3.5.12 vue: 3.x dependencies: '@types/video.js': 7.3.47 video.js: 7.20.3 @@ -10707,7 +10724,7 @@ engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: 3.5.12 vue: ^3.0.0 dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) @@ -10723,7 +10740,7 @@ engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: vite: ^5.0.0 vue: 3.5.12 vue: ^3.2.25 dependencies: vite: 5.4.8(@types/node@18.7.18)(sass@1.79.1)(terser@5.34.1) vue: 3.5.12(typescript@4.6.4) @@ -10919,7 +10936,7 @@ /@vue/composition-api@1.7.2(vue@3.5.12): resolution: {integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==} peerDependencies: vue: 3.5.12 vue: '>= 2.5 < 2.7' dependencies: vue: 3.5.12(typescript@4.6.4) dev: false @@ -11090,7 +11107,7 @@ resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==} peerDependencies: '@vue/composition-api': ^1.1.0 vue: 3.5.12 vue: ^2.6.0 || ^3.2.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -11131,7 +11148,7 @@ resolution: {integrity: sha512-cAZqXexLX6xo+H1N1Mv+wBSSqG4wB+BdjIuHQ50jwlelXCDxSi8gj0K/9nDS+aUZtWh6YMwS6UGCKg58jMVglA==} peerDependencies: '@vue/composition-api': ^1.4.1 vue: 3.5.12 vue: ^2.0.0 || >=3.0.0-rc.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -11165,7 +11182,7 @@ resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==} peerDependencies: '@vue/composition-api': ^1.1.0 vue: 3.5.12 vue: ^2.6.0 || ^3.2.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -11263,7 +11280,7 @@ resolution: {integrity: sha512-Xkrdo590AhLHvzyR+U246t6T89nIWHz1weAgMuo8jEA2HS5RiUnsA4U6+iUGaQ2E5c8mYQaeNqzHQXUp9Okbiw==} peerDependencies: '@wangeditor-next/editor': '>=5.1.0' vue: 3.5.12 vue: ^3.0.5 dependencies: '@wangeditor-next/editor': 5.3.14 vue: 3.5.12(typescript@4.6.4) @@ -12215,6 +12232,16 @@ resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} engines: {node: '>=4'} dev: false /axios@1.4.0: resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} dependencies: follow-redirects: 1.15.9 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug dev: true /axios@1.7.7: resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} @@ -15909,6 +15936,7 @@ domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 dev: true /dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} @@ -15949,6 +15977,7 @@ engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 dev: true /domutils@1.7.0: resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} @@ -15970,6 +15999,7 @@ dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 dev: true /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -16099,7 +16129,7 @@ /element-plus@2.8.4(vue@3.5.12): resolution: {integrity: sha512-ZlVAdUOoJliv4kW3ntWnnSHMT+u/Os7mXJjk2xzOlqNeHaI2/ozlF+R58ZCEak8ZnDi6+5A2viWEYRsq64IuiA==} peerDependencies: vue: 3.5.12 vue: ^3.2.0 dependencies: '@ctrl/tinycolor': 3.4.1 '@element-plus/icons-vue': 2.3.1(vue@3.5.12) @@ -19157,6 +19187,7 @@ domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 dev: true /http-cache-semantics@3.8.1: resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} @@ -20479,6 +20510,7 @@ /js-tokens@8.0.3: resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} dev: true /js-tokens@9.0.0: resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} @@ -23776,7 +23808,7 @@ peerDependencies: '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' vue: 3.5.12 vue: ^2.6.14 || ^3.3.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -23794,7 +23826,7 @@ peerDependencies: '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' vue: 3.5.12 vue: ^2.6.14 || ^3.3.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -24176,6 +24208,7 @@ js-tokens: 8.0.3 postcss: 8.4.47 postcss-safe-parser: 6.0.0(postcss@8.4.47) dev: true /postcss-image-set-function@7.0.0(postcss@8.4.19): resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==} @@ -24220,7 +24253,7 @@ dependencies: '@babel/core': 7.25.2 postcss: 7.0.39 postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.6)(postcss@8.4.19) postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39) transitivePeerDependencies: - supports-color dev: false @@ -24279,7 +24312,7 @@ postcss-syntax: '>=0.36.0' dependencies: postcss: 7.0.39 postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.6)(postcss@8.4.19) postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39) remark: 10.0.1 unist-util-find-all-after: 1.0.5 dev: false @@ -24714,6 +24747,7 @@ postcss: ^8.3.3 dependencies: postcss: 8.4.47 dev: true /postcss-sass@0.3.5: resolution: {integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==} @@ -24743,6 +24777,7 @@ postcss: ^8.4.19 dependencies: postcss: 8.4.19 dev: true /postcss-scss@4.0.6(postcss@8.4.47): resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} @@ -24849,32 +24884,6 @@ postcss-less: 3.1.4 postcss-markdown: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39) postcss-scss: 2.1.1 dev: false /postcss-syntax@0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.6)(postcss@8.4.19): resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} peerDependencies: postcss: '>=5.0.0' postcss-html: '*' postcss-jsx: '*' postcss-less: '*' postcss-markdown: '*' postcss-scss: '*' peerDependenciesMeta: postcss-html: optional: true postcss-jsx: optional: true postcss-less: optional: true postcss-markdown: optional: true postcss-scss: optional: true dependencies: postcss: 8.4.19 postcss-html: 1.5.0 postcss-scss: 4.0.6(postcss@8.4.19) dev: false /postcss-unique-selectors@5.1.1(postcss@8.4.47): @@ -26728,7 +26737,7 @@ file-saver: '*' lodash: '*' semver: '*' vue: 3.5.12 vue: '*' xlsx: '*' xlsx-style: '*' dependencies: @@ -26755,7 +26764,7 @@ axios: '*' dayjs: '*' lodash: '*' vue: 3.5.12 vue: '*' dependencies: '@nutui/icons-vue-taro': 0.0.9 '@nutui/nutui-taro': 4.3.13(patch_hash=lbmiuhnkw3qnhgejnhbuepf6iq)(unplugin-vue-components@0.27.4)(vue@3.5.12) @@ -26780,7 +26789,7 @@ mitt: '*' semver: '*' senin-help: '*' vue: 3.5.12 vue: '*' dependencies: '@tanstack/vue-query': 4.37.1(vue@3.5.12) axios: 1.7.7 @@ -28214,7 +28223,7 @@ postcss-sass: 0.3.5 postcss-scss: 2.1.1 postcss-selector-parser: 3.1.2 postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.6)(postcss@8.4.19) postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39) postcss-value-parser: 3.3.1 resolve-from: 4.0.0 signal-exit: 3.0.7 @@ -29439,7 +29448,7 @@ peerDependencies: '@babel/parser': ^7.15.8 '@nuxt/kit': ^3.2.2 vue: 3.5.12 vue: 2 || 3 peerDependenciesMeta: '@babel/parser': optional: true @@ -29715,7 +29724,7 @@ /vant@4.9.10(vue@3.5.12): resolution: {integrity: sha512-N+QwOuhDxrH2f6+kN05ot6DHBvaM0e1lcoXVvf12rad2KnlybPQ9gjm0d+R+Nz/zydZbe3Fz6bwTssHItri0sw==} peerDependencies: vue: 3.5.12 vue: ^3.0.0 dependencies: '@vant/popperjs': 1.3.0 '@vant/use': 1.6.0(vue@3.5.12) @@ -30065,7 +30074,7 @@ requiresBuild: true peerDependencies: '@vue/composition-api': ^1.0.0-rc.1 vue: 3.5.12 vue: ^3.0.0-0 || ^2.6.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -30080,7 +30089,7 @@ requiresBuild: true peerDependencies: '@vue/composition-api': ^1.0.0-rc.1 vue: 3.5.12 vue: ^3.0.0-0 || ^2.6.0 peerDependenciesMeta: '@vue/composition-api': optional: true @@ -30226,7 +30235,7 @@ /vue-router@4.4.5(vue@3.5.12): resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} peerDependencies: vue: 3.5.12 vue: ^3.2.0 dependencies: '@vue/devtools-api': 6.6.4 vue: 3.5.12(typescript@4.6.4) @@ -30259,7 +30268,7 @@ resolution: {integrity: sha512-3Wy6QcZl0VusCCHX3vYrWSILFlrOB2EQDoySnuYmASM5cUp1FivJGfkS5lp1CutDgyRb41g32r/1QCmiBj5i1Q==} engines: {node: '>=14.0.0'} peerDependencies: vue: 3.5.12 vue: ^2.0.0 || ^3.0.0 peerDependenciesMeta: vue: optional: true @@ -31055,3 +31064,7 @@ /zwitch@1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: false settings: autoInstallPeers: true excludeLinksFromLockfile: false