hookehuyr

✨ feat: 配置pinia和处理多平台网络请求问题

/*
* @Date: 2023-03-23 11:17:54
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 15:55:13
* @FilePath: /custom_form/babel.config.js
* @Description: 文件描述
*/
// babel-preset-taro 更多选项和默认值:
// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md
module.exports = {
presets: [
['taro', {
framework: 'vue3',
ts: false
}]
]
[
'taro',
{
framework: 'vue3',
ts: false,
'dynamic-import-node': true,
},
],
],
}
......
......@@ -7,7 +7,6 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
NutButton: typeof import('@nutui/nutui-taro')['Button']
NutCol: typeof import('@nutui/nutui-taro')['Col']
NutRow: typeof import('@nutui/nutui-taro')['Row']
RouterLink: typeof import('vue-router')['RouterLink']
......
import { createProxy } from './proxy'
import { DEV_PROXY_TARGET, PROXY_PREFIX } from './env'
module.exports = {
env: {
NODE_ENV: '"development"'
},
defineConstants: {
NODE_ENV: '"development"',
},
defineConstants: {},
mini: {},
h5: {}
h5: {
target: 'web',
// 配置代理,解决跨域问题
devServer: {
port: '10086', // 设置端口号
// https: true, //是否使用https协议
open: false, //启动后,使用默认浏览器打开网页
hot: true, //是否启用模块的热替换功能,devServer的默认行为是在发现源代码被变更后,通过自动刷新整个页面来做到事实预览,开启hot后,将在不刷新整个页面的情况下通过新模块替换老模块来做到实时预览。
proxy: createProxy(PROXY_PREFIX, DEV_PROXY_TARGET),
},
},
}
......
/*
* @Date: 2023-03-23 17:51:33
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 17:51:46
* @FilePath: /custom_form/config/config.js
* @Description: 文件描述
*/
// 反向代理服务器地址
export const DEV_PROXY_TARGET = 'http://oa-dev.onwall.cn'
export const PROD_PROXY_TARGET = 'https://oa.onwall.cn'
// API请求前缀
export const PROXY_PREFIX = '/srv/'
// 项目前缀
export const PROGRAM_PREFIX = 'custom_form'
/*
* @Date: 2023-03-23 11:17:54
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 17:55:06
* @FilePath: /custom_form/config/index.js
* @Description: 文件描述
*/
const path = require('path')
import ComponentsPlugin from 'unplugin-vue-components/webpack'
......@@ -20,6 +27,7 @@ const config = {
},
alias: {
// 配置目录别名
'@': path.resolve(__dirname, '../src'),
'@/utils': path.resolve(__dirname, '../src/utils'),
'@/components': path.resolve(__dirname, '../src/components'),
'@/images': path.resolve(__dirname, '../src/assets/images'),
......@@ -31,7 +39,17 @@ const config = {
},
sourceRoot: 'src',
outputRoot: `dist/${process.env.TARO_ENV}`,
plugins: ['@tarojs/plugin-html'],
plugins: [
'@tarojs/plugin-html',
[
'@tarojs/plugin-http',
{
disabledFormData: false,
disabledBlob: false,
enableCookie: true,
},
],
],
defineConstants: {},
copy: {
patterns: [],
......@@ -77,7 +95,7 @@ const config = {
},
},
},
enableSourceMap: false
enableSourceMap: false,
},
h5: {
webpackChain(chain) {
......@@ -102,7 +120,7 @@ const config = {
generateScopedName: '[name]__[local]___[hash:base64:5]',
},
},
},
}
},
}
......
import { createProxy } from './proxy'
import { PROD_PROXY_TARGET, PROXY_PREFIX } from './env'
module.exports = {
env: {
NODE_ENV: '"production"'
},
defineConstants: {
NODE_ENV: '"production"',
},
defineConstants: {},
mini: {},
h5: {
/**
......@@ -33,5 +35,14 @@ module.exports = {
// postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') })
// }))
// }
}
target: 'web',
// 配置代理,解决跨域问题
devServer: {
port: '10086', // 设置端口号
// https: true, //是否使用https协议
open: false, //启动后,使用默认浏览器打开网页
hot: true, //是否启用模块的热替换功能,devServer的默认行为是在发现源代码被变更后,通过自动刷新整个页面来做到事实预览,开启hot后,将在不刷新整个页面的情况下通过新模块替换老模块来做到实时预览。
proxy: createProxy(PROXY_PREFIX, PROD_PROXY_TARGET),
},
},
}
......
export function createProxy(prefix, target) {
const ret = {};
ret[prefix] = {
target,
changeOrigin: true,
ws: true,
// rewrite: (path) => path.replace(/^\/api/, '')
// rewrite: (path) => path.replace(new RegExp(`^${prefix}`), ''),
}
return ret
}
......@@ -43,6 +43,7 @@
"@tarojs/helper": "3.6.2",
"@tarojs/plugin-framework-vue3": "3.6.2",
"@tarojs/plugin-html": "3.6.2",
"@tarojs/plugin-http": "^3.6.2",
"@tarojs/plugin-platform-alipay": "3.6.2",
"@tarojs/plugin-platform-h5": "3.6.2",
"@tarojs/plugin-platform-jd": "3.6.2",
......@@ -53,9 +54,11 @@
"@tarojs/runtime": "3.6.2",
"@tarojs/shared": "3.6.2",
"@tarojs/taro": "3.6.2",
"axios-miniprogram": "^2.0.0-rc-2",
"dayjs": "^1.11.7",
"pinia": "^2.0.33",
"vue": "^3.0.0"
"vue": "^3.0.0",
"weixin-js-sdk": "^1.6.0"
},
"devDependencies": {
"@babel/core": "^7.8.0",
......
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-12-01 16:26:27
* @FilePath: /data-table/src/api/common.js
* @Description: 通用接口
*/
import { fn, fetch, uploadFn } from '@/api/fn';
const Api = {
SMS: '/srv/?a=sms',
TOKEN: '/srv/?a=upload',
SAVE_FILE: '/srv/?a=upload&t=save_file',
}
/**
* @description: 发送验证码
* @param {*} phone 手机号码
* @returns
*/
export const smsAPI = (params) => fn(fetch.post(Api.SMS, params));
/**
* @description: 获取七牛token
* @returns
*/
export const qiniuTokenAPI = (params) => fn(fetch.stringifyPost(Api.TOKEN, params));
/**
* @description: 上传七牛
* @param {*}
* @returns
*/
export const qiniuUploadAPI = (url, data, config) => uploadFn(fetch.basePost(url, data, config));
/**
* @description: 保存图片
* @param {*} format
* @param {*} hash
* @param {*} height
* @param {*} width
* @param {*} filekey
* @returns
*/
export const saveFileAPI = (params) => fn(fetch.stringifyPost(Api.SAVE_FILE, params));
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-11-17 16:00:04
* @FilePath: /data-table/src/api/component.js
* @Description: 组件接口
*/
import { fn, fetch } from '@/api/fn';
const Api = {
QUERY_COMPONENT: '/srv/?a=query_component',
}
/**
* @description: 查询组件
* @param: group_code 分组标识
* @param: component_code 组件标识
* @param: name 组件名称;条件:模糊查询;
*/
export const getComponentAPI = (params) => fn(fetch.get(Api.QUERY_COMPONENT, params));
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-11-17 13:49:35
* @FilePath: /data-table/src/api/data.js
* @Description: 表单数据接口
*/
import { fn, fetch } from '@/api/fn';
const Api = {
ADD_FORM_DATA: '/srv/?a=add_formdata',
}
/**
* @description: 添加表单数据
* @param: form_code 表单唯一标识
* @param: data 待添加的数据,json对象结构;键值对记录变更的字段和值;
*/
export const addFormDataAPI = (params) => fn(fetch.post(Api.ADD_FORM_DATA, params));
/*
* @Date: 2022-05-18 22:56:08
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 14:47:14
* @FilePath: /custom_form/src/api/fn.js
* @Description: 文件描述
*/
import axios from '@/utils/request'
import qs from 'Qs'
import Taro from '@tarojs/taro'
/**
* 网络请求功能函数
* @param {*} api 请求axios接口
* @returns 请求成功后,获取数据
*/
export const fn = (api) => {
return api
.then(res => {
if (res.data.code === 1) {
return res.data || true;
} else {
// tslint:disable-next-line: no-console
// if (!res.data.show) return false;
Taro.showToast({
title: res.data.msg,
icon: 'none',
duration: 2000
});
return false;
}
})
.catch(err => {
// tslint:disable-next-line: no-console
console.error(err);
return false;
})
.finally(() => { // 最终执行
})
}
/**
* 七牛返回格式
* @param {*} api
* @returns
*/
export const uploadFn = (api) => {
return api
.then(res => {
if (res.status === 200) {
return res.data || true;
} else {
// tslint:disable-next-line: no-console
console.warn(res);
if (!res.data.show) return false;
Taro.showToast({
title: res.data.msg,
icon: 'close',
duration: 2000,
})
return false;
}
})
.catch(err => {
// tslint:disable-next-line: no-console
console.error(err);
return false;
})
}
/**
* 统一 GET/POST 不同传参形式
*/
export const fetch = {
get: function (api, params) {
return axios.get(api, { params })
},
post: function (api, params) {
return axios.post(api, params)
},
stringifyPost: function (api, params) {
return axios.post(api, qs.stringify(params))
},
basePost: function (url, data, config) {
return axios.post(url, data, config)
}
}
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-02-07 13:23:19
* @FilePath: /data-table/src/api/form.js
* @Description: 表单接口
*/
import { fn, fetch } from '@/api/fn';
const Api = {
FORM_ADD: '/srv/?a=add_form',
FORM_QUERY: '/srv/?a=query_form_all_field',
ADD_FORM_FIELD: '/srv/?a=add_form_field',
ADD_FORM_SETTING: '/srv/?a=add_form_setting',
QUERY_FORM_SETTING: '/srv/?a=query_form_setting',
VERIFY_PASSWORD: '/srv/?a=verify_password',
};
/**
* @description: 新增表单
* @param: client_id 主体客户id
* @param: name 表单名称
* @param: note 表单描述
*/
export const addFormAPI = (params) => fn(fetch.post(Api.FORM_ADD, params));
/**
* @description: 查询表单
* @param: client_id 主体客户id
* @param: form_code 表单唯一标识
* @param: name 表单名称,模糊查询
*/
export const queryFormAPI = (params) => fn(fetch.get(Api.FORM_QUERY, params));
/**
* @description: 添加表单字段
* @param: form_code 表单唯一标识
* @param: component_code 组件标识
*/
export const addFormFieldAPI = (params) => fn(fetch.post(Api.ADD_FORM_FIELD, params));
/**
* @description: 添加或修改表单字段属性设置
* @param: form_code 表单唯一标识
* @param: field_name 表单字段名。如果设置表单级(非字段级)的属性,可为空。
* @param: component_code 组件标识
* @param: property_code 属性标识
* @param: setting_value 待设置的属性值。json数组,内部必须双引号。如果属性值是单值,数组只有一个元素。
*/
export const addFormSettingAPI = (params) => fn(fetch.post(Api.ADD_FORM_SETTING, params));
/**
* @description: 查询表单的设置类组件的属性值
* @param: form_code 表单唯一标识
* @returns: enable 开启/停止表单 0=停止表单,1=开启表单
* @returns: is_time_range 是否设定开启/停止时间 0=不设定,1=设定
* @returns: is_count_down 是否显示停止倒计时 0=不显示,1-显示
* @returns: begin_time 开启时间
* @returns: end_time 停止时间
*/
export const getFormSettingAPI = (params) => fn(fetch.get(Api.QUERY_FORM_SETTING, params));
/**
* @description: 验证便当密码
* @param: form_code 表单唯一标识
* @param: mmtx_password 用户输入的密码
* @returns:
*/
export const postVerifyPasswordAPI = (params) => fn(fetch.post(Api.VERIFY_PASSWORD, params));
/*
* @Date: 2022-06-17 14:54:29
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-11-17 13:46:01
* @FilePath: /data-table/src/api/index.js
* @Description: 首页接口
*/
import { fn, fetch } from '@/api/fn';
const Api = {
INDEX: '/srv/?a=home_page',
}
/**
* @description: 首页接口
* @returns HOMEBANNER 轮播区
* @returns HOMEZIXUN 观宗资讯
* @returns HOMEVIDEO 视频展示
* @returns HOMEKAISHI 本源法师开示
* @returns spec_list 专题报告
*/
export const indexAPI = (params) => fn(fetch.get(Api.INDEX, params));
/*
* @Author: hookehuyr hookehuyr@gmail.com
* @Date: 2022-06-09 13:32:44
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-02-23 18:42:57
* @FilePath: /data-table/src/api/wx/config.js
* @Description:
*/
import { fn, fetch } from '@/api/fn';
const Api = {
WX_JSAPI: '/srv/?a=wx_share',
}
/**
* @description 获取微信CONFIG配置文件
* @param {*} url
* @returns {*} cfg
*/
export const wxJsAPI = (params) => fn(fetch.get(Api.WX_JSAPI, params));
/*
* @Date: 2022-06-13 14:18:57
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-06-13 14:27:21
* @FilePath: /tswj/src/api/wx/jsApiList.js
* @Description: 文件描述
*/
export const apiList = [
// "updateAppMessageShareData",
// "updateTimelineShareData",
"onMenuShareTimeline",
"onMenuShareAppMessage",
"onMenuShareQQ",
"onMenuShareWeibo",
"onMenuShareQZone",
"startRecord",
"stopRecord",
"onVoiceRecordEnd",
"playVoice",
"pauseVoice",
"stopVoice",
"onVoicePlayEnd",
"uploadVoice",
"downloadVoice",
"chooseImage",
"previewImage",
"uploadImage",
"downloadImage",
"translateVoice",
"getNetworkType",
"openLocation",
"getLocation",
"hideOptionMenu",
"showOptionMenu",
"hideMenuItems",
"showMenuItems",
"hideAllNonBaseMenuItem",
"showAllNonBaseMenuItem",
"closeWindow",
"scanQRCode",
"chooseWXPay",
"openProductSpecificView",
"addCard",
"chooseCard",
"openCard"
]
/*
* @Author: hookehuyr hookehuyr@gmail.com
* @Date: 2022-06-09 13:32:44
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-06-09 13:42:06
* @FilePath: /tswj/src/api/wx/config.js
* @Description:
*/
import { fn, fetch } from '@/api/fn';
const Api = {
WX_PAY: 'c/bill_paymentForBill.do',
}
/**
* @description 微信支付接口
* @param {*}
* @returns {*}
*/
export const wxPayAPI = (params) => fn(fetch.get(Api.WX_PAY, params));
/*
* @Date: 2022-07-18 10:22:22
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 17:45:36
* @FilePath: /custom_form/src/constant.js
* @Description: 文件描述
*/
// 颜色变量
export const styleColor = {
baseColor: '#C2915F',
backgroundColor: '#FFF9EF',
}
......@@ -9,10 +9,18 @@
</template>
<script setup>
import { computed, watchEffect, onMounted } from "vue";
import { useDidShow } from '@tarojs/taro'
import request from '@/utils/request';
import { storeToRefs } from 'pinia'
import { mainStore } from '@/stores'
import { wxInfo, getUrlParams } from "@/utils/tools";
import { computed, watchEffect, onMounted } from "vue";
// 初始化WX环境
import wx from 'weixin-js-sdk'
import { wxJsAPI } from '@/api/wx/config'
import { apiList } from '@/api/wx/jsApiList.js'
import { styleColor } from "@/constant.js";
import { getFormSettingAPI } from "@/api/form.js";
// web端判断
const is_pc = computed(() => process.env.TARO_ENV === 'h5' && wxInfo().isPC);
......@@ -22,6 +30,83 @@ const { formInfo } = storeToRefs(store);
console.warn(is_pc.value);
onMounted(async () => {
const code = getUrlParams(location.href) ? getUrlParams(location.href).code : '';
const model = getUrlParams(location.href) ? getUrlParams(location.href).model : '';
const raw_url = encodeURIComponent(location.pathname + location.hash);
// 数据收集设置
const { data } = await getFormSettingAPI({ form_code: code });
const form_setting = {};
if (data.length) {
Object.assign(form_setting, data[0]['property_list'], data[0]['extend']);
}
// 缓存表单设置
store.changeFormSetting(form_setting);
// 没有授权判断
const no_auth_info = form_setting.wxzq_enable && !form_setting.x_field_weixin_openid;
const no_preview_model = model !== 'preview';
// 需要网页授权-必须要域名相同,需要上传到线上测试
/**
* 微信公众号授权模式
* 空字符串=不授权,snsapi_base=静默授权,snsapi_userinfo=显式授权
*/
// 非测试环境,没有授权信息,需要授权
if (process.env.NODE_ENV !== 'development' && no_auth_info && form_setting.wxzq_scope) {
// 预览模式不开启
if (no_preview_model) {
$router.replace({
path: '/auth',
query: {
href: location.hash,
code
}
});
}
} else {
// 判断跳转页面
if (form_setting.sjsj_enable === 0 && !form_setting.sjsj_enable) {
// 表单已结束 -
$router.push("/stop?status=disable");
}
// 开启后有开始和结束时间,不在时间范围的显示表单还未开始或者已经结束
if (form_setting.sjsj_is_time_range && form_setting.sjsj_is_time_range) {
// 未开始
if (form_setting.server_time < form_setting.sjsj_begin_time) {
$router.push("/stop?status=apply");
}
// 已结束
if (form_setting.server_time > form_setting.sjsj_end_time) {
$router.push("/stop?status=finish");
}
}
// 启用分享功能,非预览模式
if (form_setting.wxzq_is_share && no_preview_model) {
const wxJs = await wxJsAPI({ form_code: code, url: raw_url });
wxJs.data.jsApiList = apiList;
wx.config(wxJs.data);
wx.ready(() => {
wx.showAllNonBaseMenuItem();
});
wx.error((err) => {
console.warn(err);
});
}
// 当数据量达到限额时,该表单将不能继续提交数据。
if (form_setting.is_reach_sjsj_max_count) {
showDialog({
title: '温馨提示',
message: '表单收集量已达到限额,无法再提交数据。',
theme: 'round-button',
confirmButtonColor: styleColor.baseColor
});
}
// 设定填写次数
if (form_setting.wxzq_scope && no_preview_model) {
}
}
});
</script>
<style lang="less">
......
/*
* @Date: 2022-10-28 14:34:22
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2022-11-01 13:27:09
* @FilePath: /swx/src/stores/router.js
* @Description: 缓存路由信息
*/
import { defineStore } from 'pinia'
export const routerStore = defineStore('router', {
state: () => {
return {
url: '',
}
},
actions: {
add (path) {
this.url = path
},
remove () {
this.url = ''
},
},
})
/*
* @Date: 2022-09-19 14:11:06
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2023-03-23 17:56:29
* @FilePath: /custom_form/src/utils/request.js
* @Description: 简单axios封装,后续按实际处理
*/
// var axios = '';
// if (process.env.TARO_ENV === 'weapp') {
// console.warn(0);
// // axios = require("axios-miniprogram");
// axios = import("axios-miniprogram");
// console.warn(axios);
// } else if (process.env.TARO_ENV === 'h5') {
// // axios = require('axios')
// console.warn(1);
// }
// console.warn(await axios);
// import axios from 'axios'
// axios = await import('axios-miniprogram')
// import axios from 'axios-miniprogram';
import axios from 'axios'
import Taro from '@tarojs/taro'
import { routerStore } from '@/stores/router'
import { DEV_PROXY_TARGET, PROD_PROXY_TARGET, PROGRAM_PREFIX } from '../../config/env'
// import { ProgressStart, ProgressEnd } from '@/components/axios-progress/progress';
// import store from '@/store'
// import { getToken } from '@/utils/auth'
// import BASE_URL from './config';
let BASE_URL = ''
if (process.env.NODE_ENV !== 'development') {
BASE_URL = DEV_PROXY_TARGET // 测试服务器
} else {
BASE_URL = PROD_PROXY_TARGET // 正式服务器
}
// create an axios instance
const service = axios.create({
// 小程序跨域需要定义域名前缀,H5跨域有配置不需要
baseURL: process.env.TARO_ENV === 'weapp' ? BASE_URL : '', // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout: 5000, // request timeout
})
service.defaults.params = {
f: PROGRAM_PREFIX,
}
// request interceptor
service.interceptors.request.use(
config => {
// console.warn(config)
// console.warn(store)
/**
* POST PHP需要修改数据格式
* 序列化POST请求时需要屏蔽上传相关接口,上传相关接口序列化后报错
*/
// config.data = config.method === 'post' && !strExist(['a=upload', 'upload.qiniup.com'], config.url) ? qs.stringify(config.data) : config.data;
return config
},
error => {
// do something with request error
console.error(error, 'err') // for debug
return Promise.reject(error)
}
)
// response interceptor
service.interceptors.response.use(
/**
* If you want to get http information such as headers or status
* Please return response => response
*/
/**
* Determine the request status by custom code
* Here is just an example
* You can also judge the status by HTTP Status Code
*/
response => {
// wx.hideLoading();
// const res = response.data
// // Toast.clear();
// // if the custom code is not 20000, it is judged as an error.
// if (res.code !== 100000) {
// // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
// if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
// // to re-login
// // Toast.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
// // confirmButtonText: 'Re-Login',
// // cancelButtonText: 'Cancel',
// // type: 'warning'
// // }).then(() => {
// // // store.dispatch('user/resetToken').then(() => {
// // // location.reload()
// // // })
// // })
// } else {
// // Toast.fail({
// // message: res.message,
// // duration: 1.5 * 1000
// // })
// // Tips.error(res.message, false)
// }
// return Promise.reject(new Error(res.message || 'Error'))
// } else {
// return res
// }
if (response.data.code === 401) {
/**
* 未授权跳转登录页
* 授权完成后 返回当前页面
*/
setTimeout(() => {
Taro.navigateTo({
url: '../../pages/auth/index?url=' + routerStore().url
});
}, 1000);
}
return response
},
error => {
// Toast.clear();
console.error('err' + error) // for debug
// Toast.fail({
// message: error.message,
// duration: 1.5 * 1000
// })
return Promise.reject(error)
}
)
export default service
......@@ -1684,6 +1684,15 @@
"@tarojs/service" "3.6.2"
"@tarojs/shared" "3.6.2"
"@tarojs/plugin-http@^3.6.2":
version "3.6.2"
resolved "https://mirrors.cloud.tencent.com/npm/@tarojs/plugin-http/-/plugin-http-3.6.2.tgz#e3133a70626f42a3cf9f36c3d330aab7a0cd31ee"
integrity sha512-RzVqgtGzg5RDQN57zN7IjJqNR7yzRLYN799aaEAA/WL9mEImcmv5SjnnmcLjW8+D3M0hXOGrA6f+kHFhFoCNDg==
dependencies:
"@tarojs/runtime" "3.6.2"
"@tarojs/service" "3.6.2"
"@tarojs/shared" "3.6.2"
"@tarojs/plugin-platform-alipay@3.6.2":
version "3.6.2"
resolved "https://mirrors.cloud.tencent.com/npm/@tarojs/plugin-platform-alipay/-/plugin-platform-alipay-3.6.2.tgz#6e9ae8d801699addbc23ca3e858c3d9845d4c1d8"
......@@ -2930,6 +2939,11 @@ aws4@^1.8.0:
resolved "https://mirrors.cloud.tencent.com/npm/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3"
integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==
axios-miniprogram@^2.0.0-rc-2:
version "2.0.0-rc-2"
resolved "https://mirrors.cloud.tencent.com/npm/axios-miniprogram/-/axios-miniprogram-2.0.0-rc-2.tgz#2431d61d4cd8813b420843907feb35ae254dccc1"
integrity sha512-GL1yDds9P/evGPqJFXIU/2VD9/9rUL7I4WnvExuocGWAfEO9oYV7DUt6Vjd5a6F1jkltVCwxtpMPQO9ZWGRZhQ==
babel-code-frame@^6.26.0, babel-code-frame@^6.8.0:
version "6.26.0"
resolved "https://mirrors.cloud.tencent.com/npm/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
......@@ -13023,6 +13037,11 @@ websocket-extensions@>=0.1.1:
resolved "https://mirrors.cloud.tencent.com/npm/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
weixin-js-sdk@^1.6.0:
version "1.6.0"
resolved "https://mirrors.cloud.tencent.com/npm/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz#ff50484d8118ce1208f11248cf4a1c0831577514"
integrity sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ==
weui@^1.1.2:
version "1.1.3"
resolved "https://mirrors.cloud.tencent.com/npm/weui/-/weui-1.1.3.tgz#0f0899bb61bb2ec603b2648367a8139298f81514"
......