commit 85b89ccea7aac057cb3365ddee62638b2e4fbe67
Author: PC-202306242200\Administrator <1648263436@qq.com>
Date: Sat Mar 28 23:27:25 2026 +0800
first commit
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..ee5be77
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,20 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version": "0.0",
+ "configurations": [{
+ "app-plus" :
+ {
+ "launchtype" : "local"
+ },
+ "default" :
+ {
+ "launchtype" : "local"
+ },
+ "mp-weixin" :
+ {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ }
+ ]
+}
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..d52be02
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,340 @@
+
+
+
+
\ No newline at end of file
diff --git a/MP_verify_KRAkB8iVY3O33KRZ.txt b/MP_verify_KRAkB8iVY3O33KRZ.txt
new file mode 100644
index 0000000..dd6e138
--- /dev/null
+++ b/MP_verify_KRAkB8iVY3O33KRZ.txt
@@ -0,0 +1 @@
+KRAkB8iVY3O33KRZ
\ No newline at end of file
diff --git a/com/auth.js b/com/auth.js
new file mode 100644
index 0000000..f4dda9b
--- /dev/null
+++ b/com/auth.js
@@ -0,0 +1,36 @@
+export const getUserProfile() {
+ uni.getUserProfile({
+ desc: '完善个人信息',
+ async success({
+ userInfo
+ }) {
+ const {
+ code
+ } = await getUserLoginCode();
+
+ const {
+ data,
+ status,
+ message
+ } = await login(code, userInfo);
+
+ } else {
+
+ }
+ }
+ });
+}
+
+// 获取用户登录code值
+export const getUserLoginCode = () => {
+ return new Promise((resolve, reject) => {
+ uni.login({
+ success(code) {
+ resolve(code);
+ },
+ fail(err) {
+ reject(err);
+ }
+ })
+ })
+}
diff --git a/com/http.js b/com/http.js
new file mode 100644
index 0000000..d83cb72
--- /dev/null
+++ b/com/http.js
@@ -0,0 +1,127 @@
+import store from '../store'
+let authStatus = 0;
+
+import {
+ API_URL,
+ STATIC_URL
+} from '@/env'
+
+const request = (options = {}) => {
+ const token = store.state.auth.token;
+ const location = store.state.location.current;
+ // 在这里可以对请求头进行一些设置
+ // 例如:
+ options.header = {
+ "Content-Type": "application/x-www-form-urlencoded",
+ "Accept": "application/json",
+ "Authorization": token.token_type + ' ' + token.access_token,
+ }
+
+ return new Promise((resolve, reject) => {
+ if (authStatus == 401) {
+ authStatus = 0
+ }
+ // uni.showLoading({
+ // title: '',
+ // mask: true
+ // });
+ let url = options.url;
+
+ if (options.url.indexOf('https://') == -1) {
+ url = API_URL + options.url;
+ }
+
+ uni.request({
+ url: url || '',
+ method: options.type || 'GET',
+ data: {
+ ...options.data
+ } || {},
+ timeout: 50000,
+ header: options.header || {},
+ success: (res) => {
+
+ if (res != undefined && res.statusCode == 401) {
+ if (authStatus == 0) {
+ // uni.navigateTo({
+ // url: '/pages/me/login'
+ // })
+
+ store.commit('auth/resetUser');
+ store.commit('auth/resetToken');
+ uni.clearStorageSync();
+ uni.showModal({
+ title: '提示',
+ content: '为提供更好的服务,请登录后继续',
+ //showCancel:false,
+ confirmText: '立即登录',
+ cancelText: '随便逛逛',
+ success: function(res) {
+ if (res.confirm) {
+
+ uni.navigateTo({
+ url: '/pages/me/login'
+ });
+ } else if (res.cancel) {
+ console.log('用户点击取消');
+ }
+ }
+ });
+ }
+ authStatus = 401
+ }
+ if (res != undefined && res.statusCode == 429) {
+ uni.showToast({
+ icon: 'none',
+ title: res.data.msg,
+ duration: 3000
+ });
+ }
+ if (res != undefined && res.statusCode == 200 && !res.data.success) {
+ uni.showToast({
+ icon: 'none',
+ title: res.data.msg,
+ duration: 3000
+ });
+ }
+ if (res.statusCode == 200 && res.data.success && res.data.show == 1) {
+ uni.showToast({
+ icon: 'none',
+ title: res.data.msg,
+ duration: 3000
+ });
+ }
+ //uni.hideLoading();
+ resolve(res.data);
+ },
+ fail: (err) => {
+ uni.showToast({
+ title: err.errMsg,
+ icon: 'error'
+ })
+ //uni.hideLoading();
+ reject(err);
+ }
+ })
+ });
+}
+
+const get = (url, data, options = {}) => {
+ options.type = 'GET';
+ options.data = data;
+ options.url = url;
+ return request(options)
+}
+
+const post = (url, data, options = {}) => {
+ options.type = 'POST';
+ options.data = data;
+ options.url = url;
+ return request(options)
+}
+
+export default {
+ request,
+ get,
+ post
+}
\ No newline at end of file
diff --git a/com/index.scss b/com/index.scss
new file mode 100644
index 0000000..1be5c71
--- /dev/null
+++ b/com/index.scss
@@ -0,0 +1,314 @@
+view {
+ box-sizing: border-box;
+ color: #333;
+}
+
+// button {
+// all: unset;
+// }
+
+button::after {
+ border: none;
+ all: unset;
+}
+
+page {
+ background-color: #f5f5f5;
+}
+
+.p-30 {
+ padding: 0 30rpx;
+}
+
+.p-t20 {
+ padding: 20rpx 0rpx;
+}
+
+.bgf {
+ background-color: #fff;
+}
+
+.br10 {
+ border-radius: 10rpx;
+}
+
+.br20 {
+ border-radius: 20rpx;
+}
+
+.mt30 {
+ margin-top: 30rpx;
+}
+.flex {
+ display: flex;
+}
+
+.flex-ac {
+ display: flex;
+ align-items: center;
+}
+
+.fs28 {
+ font-size: 28rpx;
+}
+
+.top-backgroup {
+ height: 450rpx;
+ z-index: -1;
+}
+.backgroud-image {
+ width: 100%;
+ height: 450rpx;
+ z-index: -1;
+}
+
+/* 页面阴影 start*/
+.wallpaper-shadow {
+ border-radius: 15rpx;
+ box-shadow: 0rpx 0rpx 50rpx 0rpx rgba(0, 0, 0, 0.07);
+ background-color: #fff;
+ margin-top: 30rpx;
+ padding: 20rpx 0;
+}
+
+.xkl-com-bg{
+ padding: 0 30rpx;
+}
+
+.shadow_img {
+ // box-shadow: 0rpx 0rpx 50rpx 0rpx rgba(0, 0, 0, 0.1);
+}
+
+// flex布局
+.u-flex,
+.u-flex-row,
+.u-flex-x {
+ display: flex;
+ flex-direction: row;
+}
+
+.u-flex-y,
+.u-flex-column {
+ display: flex;
+ flex-direction: column;
+}
+
+.u-flex-x-center {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+}
+
+.u-flex-xy-center {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+}
+
+.u-flex-y-center {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+.u-flex-x-left {
+ display: flex;
+ flex-direction: row;
+}
+
+.u-flex-x-reverse,
+.u-flex-row-reverse {
+ flex-direction: row-reverse;
+}
+
+.u-flex-y-reverse,
+.u-flex-column-reverse {
+ flex-direction: column-reverse;
+}
+
+/* #ifndef APP-NVUE */
+// 此处为vue版本的简写,因为nvue不支持同时作用于两个类名的样式写法
+// nvue下只能写成class="u-flex-x u-flex-x-reverse的形式"
+.u-flex.u-flex-reverse,
+.u-flex-row.u-flex-reverse,
+.u-flex-x.u-flex-reverse {
+ flex-direction: row-reverse;
+}
+
+.u-flex-column.u-flex-reverse,
+.u-flex-y.u-flex-reverse {
+ flex-direction: column-reverse;
+}
+
+// 自动伸缩
+.u-flex-fill {
+ flex: 1 1 auto;
+}
+
+// 边界自动伸缩
+.u-margin-top-auto,
+.u-m-t-auto {
+ margin-top: auto !important;
+}
+
+.u-margin-right-auto,
+.u-m-r-auto {
+ margin-right: auto !important;
+}
+
+.u-margin-bottom-auto,
+.u-m-b-auto {
+ margin-bottom: auto !important;
+}
+
+.u-margin-left-auto,
+.u-m-l-auto {
+ margin-left: auto !important;
+}
+
+.u-margin-center-auto,
+.u-m-c-auto {
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+
+.u-margin-middle-auto,
+.u-m-m-auto {
+ margin-top: auto !important;
+ margin-bottom: auto !important;
+}
+
+/* #endif */
+
+// 换行
+.u-flex-wrap {
+ flex-wrap: wrap;
+}
+
+// 反向换行
+.u-flex-wrap-reverse {
+ flex-wrap: wrap-reverse;
+}
+
+// 主轴起点对齐
+.u-flex-start {
+ justify-content: flex-start;
+}
+
+// 主轴中间对齐
+.u-flex-center {
+ justify-content: center;
+}
+
+// 主轴终点对齐
+.u-flex-end {
+ justify-content: flex-end;
+}
+
+// 主轴等比间距
+.u-flex-between {
+ justify-content: space-between;
+}
+
+// 主轴均分间距
+.u-flex-around {
+ justify-content: space-around;
+}
+
+// 交叉轴起点对齐
+.u-flex-items-start {
+ align-items: flex-start;
+}
+
+// 交叉轴中间对齐
+.u-flex-items-center {
+ align-items: center;
+}
+
+// 交叉轴终点对齐
+.u-flex-items-end {
+ align-items: flex-end;
+}
+
+// 交叉轴第一行文字基线对齐
+.u-flex-items-baseline {
+ align-items: baseline;
+}
+
+// 交叉轴方向拉伸对齐
+.u-flex-items-stretch {
+ align-items: stretch;
+}
+
+// 以下属于项目(子元素)的类
+
+// 子元素交叉轴起点对齐
+.u-flex-self-start {
+ align-self: flex-start;
+}
+
+// 子元素交叉轴居中对齐
+.u-flex-self-center {
+ align-self: center;
+}
+
+// 子元素交叉轴终点对齐
+.u-flex-self-end {
+ align-self: flex-end;
+}
+
+// 子元素交叉轴第一行文字基线对齐
+.u-flex-self-baseline {
+ align-self: baseline;
+}
+
+// 子元素交叉轴方向拉伸对齐
+.u-flex-self-stretch {
+ align-self: stretch;
+}
+
+// 多轴交叉时的对齐方式
+
+// 起点对齐
+.u-flex-content-start {
+ align-content: flex-start;
+}
+
+// 居中对齐
+.u-flex-content-center {
+ align-content: center;
+}
+
+// 终点对齐
+.u-flex-content-end {
+ align-content: flex-end;
+}
+
+// 两端对齐
+.u-flex-content-between {
+ align-content: space-between;
+}
+
+// 均分间距
+.u-flex-content-around {
+ align-content: space-around;
+}
+
+// 全部居中对齐
+.u-flex-middle {
+ justify-content: center;
+ align-items: center;
+ align-self: center;
+ align-content: center;
+}
+
+// 是否可以放大
+.u-flex-grow {
+ flex-grow: 1;
+}
+
+// 是否可以缩小
+.u-flex-shrink {
+ flex-shrink: 1;
+}
diff --git a/com/jssdk.js b/com/jssdk.js
new file mode 100644
index 0000000..987dfe8
--- /dev/null
+++ b/com/jssdk.js
@@ -0,0 +1,140 @@
+import wx from 'weixin-js-sdk';
+import request from "./http.js";
+
+export default {
+ /* 判断是否在微信中 */
+ isWechat: function() {
+ var ua = window.navigator.userAgent.toLowerCase();
+
+ if (ua.match(/micromessenger/i) == 'micromessenger') {
+ //console.log('是微信客户端')
+ return true;
+ } else {
+ //console.log('不是微信客户端')
+ //以下是我项目中所需要的操作其他,可以自定义
+ uni.showModal({
+ title: '提示',
+ content: '请在微信浏览器中打开',
+ showCancel: false,
+ confirmColor: '#00875a',
+ success: function(res) {
+ if (res.confirm) {
+ // console.log('用户点击确定');
+ } else if (res.cancel) {
+ // console.log('用户点击取消');
+ }
+ }
+ });
+ return false;
+ }
+ },
+ /* 获取sdk初始化配置 */
+ initJssdk: async function(callback) {
+ //获取当前url然后传递给后台获取授权和签名信息
+ var url = encodeURIComponent(window.location.href.split('#')[0]); //当前网页的URL,不包含#及其后面部分
+ console.log(window.location.href.split('#')[0]);
+ //这里调用的是后端的接口,后端去获取签名以及config里面所需的信息
+ const {
+ data
+ } = await request.get('/com/wechat/jssdk', {
+ url: ''
+ })
+ //返回需要的参数appId,timestamp,noncestr,signature等
+ //注入config权限配置
+ const {
+ appId,
+ timestamp,
+ nonceStr,
+ signature,
+ debug,
+ jsApiList
+ } = data;
+ wx.config({
+ debug: debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+ // beta: true, // 文档没有这个参数,这个参数需设为true,才能调用那些微信还没有正式开放的新接口比如wx.invoke
+ appId: appId, // 必填,公众号的唯一标识
+ timestamp: timestamp, // 必填,生成签名的时间戳
+ nonceStr: nonceStr, // 必填,生成签名的随机串
+ signature: signature, // 必填,签名
+ jsApiList: jsApiList
+ });
+ // 本地环境测试使用,里面信息是测试号的appid和签名
+ // jWeixin.config({
+ // debug: true,
+ // appId: 'wx451eff21c6c0d938',
+ // timestamp: 1659065946,
+ // nonceStr: 'dzklsf',
+ // signature: 'd2ada1c92409e14c9e720ed58056dcd3800ab0a7',
+ // jsApiList: ['scanQRCode']
+ // })
+ // 本地环境测试结束
+
+ if (callback) {
+ callback(data);
+ }
+ },
+ //选择图片
+ chooseImage: function(callback) {
+ if (!this.isWechat()) {
+ //console.log('不是微信客户端')
+ return;
+ }
+ //console.log(data);
+ this.initJssdk(function(res) {
+ wx.ready(function() {
+ wx.chooseImage({
+ count: 1,
+ sizeType: ['compressed'],
+ sourceType: ['album'],
+ success: function(rs) {
+ callback(rs)
+ }
+ })
+ });
+ });
+ },
+ //微信支付
+ wxpay: function(data, callback) {
+ if (!this.isWechat()) {
+ //console.log('不是微信客户端')
+ return;
+ }
+ this.initJssdk(function(res) {
+ WeixinJSBridge.invoke(
+ 'getBrandWCPayRequest', {
+ appId: 'wxcf948c7b5a0863b1',
+ timeStamp: data.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
+ nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位
+ package: data.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
+ signType: data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
+ paySign: data.paySign, // 支付签名
+ },
+ function(res) {
+ callback(res)
+ }
+ );
+
+ // wx.ready(function() {
+
+
+ // wx.chooseWXPay({
+ // timeStamp: data
+ // .timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
+ // nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位
+ // package: data
+ // .package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
+ // signType: data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
+ // paySign: data.paySign, // 支付签名
+ // success: function(res) {
+ // // console.log(res);
+ // callback(res)
+ // },
+ // fail: function(res) {
+ // callback(res)
+ // },
+ // });
+ // });
+ });
+ },
+
+}
\ No newline at end of file
diff --git a/com/share.js b/com/share.js
new file mode 100644
index 0000000..07e6b75
--- /dev/null
+++ b/com/share.js
@@ -0,0 +1,33 @@
+module.exports = {
+ onLoad(options) {
+ if (options && options.invite_code) {
+ uni.setStorageSync('invite_code', options.invite_code);
+ }
+
+ //设置默认的转发参数
+ uni.$u.mpShare = {
+ title: '羿充电', // 默认为小程序名称
+ path: '', // 默认为当前页面路径
+ imageUrl: '' // 默认为当前页面的截图
+ }
+ },
+ // #ifdef MP-WEIXIN
+ onShareAppMessage() {
+ let user = uni.getStorageSync('user');
+
+ let invite_code = user ? user.invite_code : '';
+ uni.$u.mpShare.path = uni.$u.page() + '?invite_code=' + invite_code; // 默认为当前页面路径
+
+ return uni.$u.mpShare
+ },
+ // #endif
+ // #ifdef MP-WEIXIN
+ onShareTimeline() {
+ let user = uni.getStorageSync('user');
+ let invite_code = user ? user.invite_code : '';
+ uni.$u.mpShare.path = uni.$u.page() + '?invite_code=' + invite_code; // 默认为当前页面路径
+
+ return uni.$u.mpShare
+ }
+ // #endif
+}
\ No newline at end of file
diff --git a/com/storage/auth.js b/com/storage/auth.js
new file mode 100644
index 0000000..806ae21
--- /dev/null
+++ b/com/storage/auth.js
@@ -0,0 +1,34 @@
+const token = 'token';
+const user = 'user';
+
+export function getAuth() {
+ return {
+ token: uni.getStorageSync(token),
+ user: uni.getStorageSync(user),
+ };
+}
+export function getToken() {
+ return uni.getStorageSync(token);
+}
+export function getUser() {
+ return uni.getStorageSync(user);
+}
+// 设置value
+export function setAuth(value) {
+ uni.setStorageSync(token, value.token);
+ uni.setStorageSync(user, value.user);
+}
+// 设置value
+export function setUser(value) {
+ uni.setStorageSync(user, value);
+}
+
+export function setToken(value) {
+ uni.setStorageSync(token, value);
+}
+
+// 清除WxUserInfo
+export function removeAuth() {
+ uni.removeStorageSync(token);
+ uni.removeStorageSync(user);
+}
diff --git a/components/share/share.vue b/components/share/share.vue
new file mode 100644
index 0000000..d93606d
--- /dev/null
+++ b/components/share/share.vue
@@ -0,0 +1,107 @@
+
+
+
+
+ 保存海报
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/tabbar.vue b/components/tabbar.vue
new file mode 100644
index 0000000..27657b3
--- /dev/null
+++ b/components/tabbar.vue
@@ -0,0 +1,96 @@
+
+
+
+
+ 我的
+
+
+
+ 首页
+
+
+
+ 公告
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/userinfo-popup/userinfo-popup.vue b/components/userinfo-popup/userinfo-popup.vue
new file mode 100644
index 0000000..1751de6
--- /dev/null
+++ b/components/userinfo-popup/userinfo-popup.vue
@@ -0,0 +1,142 @@
+
+
+
+ 设置头像昵称
+
+
+ 头像
+
+
+
+
+
+ 昵称
+
+
+
+
+
+
+ 确认
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/env.js b/env.js
new file mode 100644
index 0000000..86edc94
--- /dev/null
+++ b/env.js
@@ -0,0 +1,20 @@
+// .env.js 文件
+// 不同环境访问不同的路径
+
+const ENV_API_URL = {
+ development: 'http://192.168.0.13:9502', //开发环境
+ production: 'https://shopapi.houyi2023.cn', //生产环境
+}
+const ENV_WS_URL = {
+ // development: 'ws://127.0.0.1:9501/ws', //开发环境
+
+ // production: 'wss://shopapi.jitucdz.com/ws', //生产环境
+}
+const ENV_STATIC_URL = {
+ // development: 'https://shopapi.jitucdz.com', //开发环境
+ // production: 'https://shopapi.jitucdz.com', //生产环境
+}
+
+export const API_URL = ENV_API_URL[process.env.NODE_ENV || 'development'];
+export const WS_URL = ENV_WS_URL[process.env.NODE_ENV || 'development'];
+export const STATIC_URL = ENV_STATIC_URL[process.env.NODE_ENV || 'development'];
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..bd29f4d
--- /dev/null
+++ b/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..8d5972b
--- /dev/null
+++ b/main.js
@@ -0,0 +1,44 @@
+import App from './App'
+
+import uView from "uview-ui";
+Vue.use(uView);
+
+//分享配置
+import share from "./com/share.js";
+Vue.mixin(share)
+
+//网络配置
+import request from "./com/http.js";
+Vue.prototype.$http = request;
+
+import utils from './utils/index'
+Vue.prototype.$utils = utils
+
+import store from './store';
+Vue.prototype.$store = store;
+
+import jssdk from '@/com/jssdk.js';
+Vue.prototype.$jssdk = jssdk;
+
+// #ifndef VUE3
+import Vue from 'vue'
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+ ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import {
+ createSSRApp
+} from 'vue'
+export function createApp() {
+ const app = createSSRApp(App)
+ return {
+ app
+ }
+}
+// #endif
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..4f0ee18
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,79 @@
+{
+ "name" : "羿充电",
+ "appid" : "__UNI__7D80022",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ /* ios打包配置 */
+ "ios" : {},
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "wxc7ff18cb9b2f4257",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true,
+ "permission" : {}
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "2",
+ "h5" : {
+ "router" : {
+ "mode" : "history"
+ },
+ "title" : "羿充电"
+ }
+}
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 0000000..4fd9c53
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,20 @@
+{
+ "name": "xdshop",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/uview-ui": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-2.0.36.tgz",
+ "integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA==",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ }
+ },
+ "node_modules/weixin-js-sdk": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.5.tgz",
+ "integrity": "sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ=="
+ }
+ }
+}
diff --git a/node_modules/uview-ui/LICENSE b/node_modules/uview-ui/LICENSE
new file mode 100644
index 0000000..4db40ef
--- /dev/null
+++ b/node_modules/uview-ui/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 www.uviewui.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/uview-ui/README.md b/node_modules/uview-ui/README.md
new file mode 100644
index 0000000..c78ff47
--- /dev/null
+++ b/node_modules/uview-ui/README.md
@@ -0,0 +1,66 @@
+
+
+
+uView 2.0
+多平台快速开发的UI框架
+
+[](https://github.com/umicro/uView2.0)
+[](https://github.com/umicro/uView2.0)
+[](https://github.com/umicro/uView2.0/issues)
+[](https://uviewui.com)
+[](https://gitee.com/umicro/uView2.0/releases)
+[](https://en.wikipedia.org/wiki/MIT_License)
+
+## 说明
+
+uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
+
+## [官方文档:https://uviewui.com](https://uviewui.com)
+
+
+## 预览
+
+您可以通过**微信**扫码,查看最佳的演示效果。
+
+
+
+
+
+## 链接
+
+- [官方文档](https://www.uviewui.com/)
+- [更新日志](https://www.uviewui.com/components/changelog.html)
+- [升级指南](https://www.uviewui.com/components/changeGuide.html)
+- [关于我们](https://www.uviewui.com/cooperation/about.html)
+
+## 交流反馈
+
+欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html)
+
+## 关于PR
+
+> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。
+> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢!
+
+## 安装
+
+#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593)
+
+请通过[官网安装文档](https://www.uviewui.com/components/install.html)了解更详细的内容
+
+## 快速上手
+
+请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容
+
+## 使用方法
+配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
+
+```html
+
+
+
+```
+
+## 版权信息
+uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。
+
diff --git a/node_modules/uview-ui/changelog.md b/node_modules/uview-ui/changelog.md
new file mode 100644
index 0000000..f2bae72
--- /dev/null
+++ b/node_modules/uview-ui/changelog.md
@@ -0,0 +1,362 @@
+## 2.0.36(2023-03-27)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 重构`deepClone` & `deepMerge`方法
+2. 其他优化
+## 2.0.34(2022-09-24)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. `u-input`、`u-textarea`增加`ignoreCompositionEvent`属性
+2. 修复`route`方法调用可能报错的问题
+3. 修复`u-no-network`组件`z-index`无效的问题
+4. 修复`textarea`组件在h5上confirmType=""报错的问题
+5. `u-rate`适配`nvue`
+6. 优化验证手机号码的正则表达式(根据工信部发布的《电信网编号计划(2017年版)》进行修改。)
+7. `form-item`添加`labelPosition`属性
+8. `u-calendar`修复`maxDate`设置为当前日期,并且当前时间大于08:00时无法显示日期列表的问题 (#724)
+9. `u-radio`增加一个默认插槽用于自定义修改label内容 (#680)
+10. 修复`timeFormat`函数在safari重的兼容性问题 (#664)
+## 2.0.33(2022-06-17)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复`loadmore`组件`lineColor`类型错误问题
+2. 修复`u-parse`组件`imgtap`、`linktap`不生效问题
+## 2.0.32(2022-06-16)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+1. `u-loadmore`新增自定义颜色、虚/实线
+2. 修复`u-swiper-action`组件部分平台不能上下滑动的问题
+3. 修复`u-list`回弹问题
+4. 修复`notice-bar`组件动画在低端安卓机可能会抖动的问题
+5. `u-loading-page`添加控制图标大小的属性`iconSize`
+6. 修复`u-tooltip`组件`color`参数不生效的问题
+7. 修复`u--input`组件使用`blur`事件输出为`undefined`的bug
+8. `u-code-input`组件新增键盘弹起时,是否自动上推页面参数`adjustPosition`
+9. 修复`image`组件`load`事件无回调对象问题
+10. 修复`button`组件`loadingSize`设置无效问题
+10. 其他修复
+## 2.0.31(2022-04-19)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复`upload`在`vue`页面上传成功后没有成功标志的问题
+2. 解决演示项目中微信小程序模拟上传图片一直出于上传中问题
+3. 修复`u-code-input`组件在`nvue`页面编译到`app`平台上光标异常问题(`app`去除此功能)
+4. 修复`actionSheet`组件标题关闭按钮点击事件名称错误的问题
+5. 其他修复
+## 2.0.30(2022-04-04)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. `u-rate`增加`readonly`属性
+2. `tabs`滑块支持设置背景图片
+3. 修复`u-subsection` `mode`为`subsection`时,滑块样式不正确的问题
+4. `u-code-input`添加光标效果动画
+5. 修复`popup`的`open`事件不触发
+6. 修复`u-flex-column`无效的问题
+7. 修复`u-datetime-picker`索引在特定场合异常问题
+8. 修复`u-datetime-picker`最小时间字符串模板错误问题
+9. `u-swiper`添加`m3u8`验证
+10. `u-swiper`修改判断image和video逻辑
+11. 修复`swiper`无法使用本地图片问题,增加`type`参数
+12. 修复`u-row-notice`格式错误问题
+13. 修复`u-switch`组件当`unit`为`rpx`时,`nodeStyle`消失的问题
+14. 修复`datetime-picker`组件`showToolbar`与`visibleItemCount`属性无效的问题
+15. 修复`upload`组件条件编译位置判断错误,导致`previewImage`属性设置为`false`时,整个组件都会被隐藏的问题
+16. 修复`u-checkbox-group`设置`shape`属性无效的问题
+17. 修复`u-upload`的`capture`传入字符串的时候不生效的问题
+18. 修复`u-action-sheet`组件,关闭事件逻辑错误的问题
+19. 修复`u-list`触顶事件的触发错误的问题
+20. 修复`u-text`只有手机号可拨打的问题
+21. 修复`u-textarea`不能换行的问题
+22. 其他修复
+## 2.0.29(2022-03-13)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复`u--text`组件设置`decoration`属性未生效的问题
+2. 修复`u-datetime-picker`使用`formatter`后返回值不正确
+3. 修复`u-datetime-picker` `intercept` 可能为undefined
+4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度
+5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效
+6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug
+7. 修复`u-datetime-picker`使用`formatter`后返回值不正确
+8. 修复`u-image`组件`loading`无效果的问题
+9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题
+10. 修复`u-datetime-picker`组件`itemHeight`无效问题
+11. 其他修复
+## 2.0.28(2022-02-22)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. search组件新增searchIconSize属性
+2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56
+3. 修复text value.js 判断日期出format错误问题
+4. priceFormat格式化金额出现精度错误
+5. priceFormat在部分情况下出现精度损失问题
+6. 优化表单rules提示
+7. 修复avatar组件src为空时,展示状态不对
+8. 其他修复
+## 2.0.27(2022-01-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1.样式修复
+## 2.0.26(2022-01-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1.样式修复
+## 2.0.25(2022-01-27)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复text组件mode=price时,可能会导致精度错误的问题
+2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE)
+3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题
+4. 修复$u.addUnit()对配置默认单位可能无效的问题
+## 2.0.24(2022-01-25)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复swiper在current指定非0时缩放有误
+2. 修复u-icon添加stop属性的时候报错
+3. 优化遗留的通过正则判断rpx单位的问题
+4. 优化Layout布局 vue使用gutter时,会超出固定区域
+5. 优化search组件高度单位问题(rpx -> px)
+6. 修复u-image slot 加载和错误的图片失去了高度
+7. 修复u-index-list中footer插槽与header插槽存在性判断错误
+8. 修复部分机型下u-popup关闭时会闪烁
+9. 修复u-image在nvue-app下失去宽高
+10. 修复u-popup运行报错
+11. 修复u-tooltip报错
+12. 修复box-sizing在app下的警告
+13. 修复u-navbar在小程序中报运行时错误
+14. 其他修复
+## 2.0.23(2022-01-24)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题
+2. 修复col组件gutter参数带rpx单位处理不正确的问题
+3. 修复text组件单行时无法显示省略号的问题
+4. navbar添加titleStyle参数
+5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题
+## 2.0.22(2022-01-19)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. $u.page()方法优化,避免在特殊场景可能报错的问题
+2. picker组件添加immediateChange参数
+3. 新增$u.pages()方法
+## 2.0.21(2022-01-19)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化:form组件在用户设置rules的时候提示用户model必传
+2. 优化遗留的通过正则判断rpx单位的问题
+3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确
+4. 修复swiper在current指定非0时缩放有误
+5. 修复u-icon添加stop属性的时候报错
+6. 修复upload组件在accept=all的时候没有作用
+7. 修复在text组件mode为phone时call属性无效的问题
+8. 处理u-form clearValidate方法
+9. 其他修复
+## 2.0.20(2022-01-14)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题
+2. 修复Slider缺少disabled props 还有注释
+3. 修复u-notice-bar点击事件无法拿到index索引值的问题
+4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题
+5. 优化头像为空时显示默认头像
+6. 修复图片地址赋值后判断加载状态为完成问题
+7. 修复日历滚动到默认日期月份区域
+8. search组件暴露点击左边icon事件
+9. 修复u-form clearValidate方法不生效
+10. upload h5端增加返回文件参数(文件的name参数)
+11. 处理upload选择文件后url为blob类型无法预览的问题
+12. u-code-input 修复输入框没有往左移出一半屏幕
+13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误
+14. 临时处理ios app下grid点击坍塌问题
+15. 其他修复
+## 2.0.19(2021-12-29)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码”
+2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题
+3. navbar添加autoBack参数
+4. 允许avatar组件的事件冒泡
+5. 修复cell组件报错问题
+6. 其他修复
+## 2.0.18(2021-12-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复app端编译报错问题
+2. 重新处理微信小程序端setData过大的性能问题
+3. 修复边框问题
+4. 修复最大最小月份不大于0则没有数据出现的问题
+5. 修复SwipeAction微信小程序端无法上下滑动问题
+6. 修复input的placeholder在小程序端默认显示为true问题
+7. 修复divider组件click事件无效问题
+8. 修复u-code-input maxlength 属性值为 String 类型时显示异常
+9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题
+10. 处理form-item的label为top时,取消错误提示的左边距
+11. 其他修复
+## 2.0.17(2021-12-26)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决HBuilderX3.3.3.20211225版本导致的样式问题
+2. calendar日历添加monthNum参数
+3. navbar添加center slot
+## 2.0.16(2021-12-25)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决微信小程序setData性能问题
+2. 修复count-down组件change事件不触发问题
+## 2.0.15(2021-12-21)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复Cell单元格titleWidth无效
+2. 修复cheakbox组件ischecked不更新
+3. 修复keyboard是否显示"."按键默认值问题
+4. 修复number-keyboard是否显示键盘的"."符号问题
+5. 修复Input输入框 readonly无效
+6. 修复u-avatar 导致打包app、H5时候报错问题
+7. 修复Upload上传deletable无效
+8. 修复upload当设置maxSize时无效的问题
+9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题
+10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星
+## 2.0.13(2021-12-14)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题
+## 2.0.12(2021-12-14)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复tabs组件在vue环境下划线消失的问题
+2. 修复upload组件在安卓小程序无法选择视频的问题
+3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE)
+4. 修复textarea组件在没绑定v-model时,字符统计不生效问题
+5. 修复nvue下控制是否出现滚动条失效问题
+## 2.0.11(2021-12-13)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. text组件align参数无效的问题
+2. subsection组件添加keyName参数
+3. upload组件无法判断[Object file]类型的问题
+4. 处理notify层级过低问题
+5. codeInput组件添加disabledDot参数
+6. 处理actionSheet组件round参数无效的问题
+7. calendar组件添加round参数用于控制圆角值
+8. 处理swipeAction组件在vue环境下默认被打开的问题
+9. button组件的throttleTime节流参数无效的问题
+10. 解决u-notify手动关闭方法close()无效的问题
+11. input组件readonly不生效问题
+12. tag组件type参数为info不生效问题
+## 2.0.10(2021-12-08)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复button sendMessagePath属性不生效
+2. 修复DatetimePicker选择器title无效
+3. 修复u-toast设置loading=true不生效
+4. 修复u-text金额模式传0报错
+5. 修复u-toast组件的icon属性配置不生效
+6. button的icon在特殊场景下的颜色优化
+7. IndexList优化,增加#
+## 2.0.9(2021-12-01)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题
+2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题
+3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效
+4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题
+## 2.0.8(2021-12-01)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复toast的position参数无效问题
+2. 处理input在ios nvue上无法获得焦点的问题
+3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制
+4. tabs组件添加keyName参数用于配置从对象中读取的键名
+5. 处理text组件名字脱敏默认配置无效的问题
+6. 处理picker组件item文本太长换行问题
+## 2.0.7(2021-11-30)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复radio和checkbox动态改变v-model无效的问题。
+2. 优化form规则validator在微信小程序用法
+3. 修复backtop组件mode参数在微信小程序无效的问题
+4. 处理Album的previewFullImage属性无效的问题
+5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题
+## 2.0.6(2021-11-27)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 处理tag组件在vue下边框无效的问题。
+2. 处理popup组件圆角参数可能无效的问题。
+3. 处理tabs组件lineColor参数可能无效的问题。
+4. propgress组件在值很小时,显示异常的问题。
+## 2.0.5(2021-11-25)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. calendar在vue下显示异常问题。
+2. form组件labelPosition和errorType参数无效的问题
+3. input组件inputAlign无效的问题
+4. 其他一些修复
+## 2.0.4(2021-11-23)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+0. input组件缺失@confirm事件,以及subfix和prefix无效问题
+1. component.scss文件样式在vue下干扰全局布局问题
+2. 修复subsection在vue环境下表现异常的问题
+3. tag组件的bgColor等参数无效的问题
+4. upload组件不换行的问题
+5. 其他的一些修复处理
+## 2.0.3(2021-11-16)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 处理modal的confirm回调事件拼写错误问题
+6. 处理input组件@input事件参数错误问题
+7. 其他一些修复
+## 2.0.2(2021-11-16)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 修复input组件formatter参数缺失问题
+6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss
+## 2.0.0(2020-11-15)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 修复input组件formatter参数缺失问题
+
+
diff --git a/node_modules/uview-ui/components/u--form/u--form.vue b/node_modules/uview-ui/components/u--form/u--form.vue
new file mode 100644
index 0000000..fdfc212
--- /dev/null
+++ b/node_modules/uview-ui/components/u--form/u--form.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
diff --git a/node_modules/uview-ui/components/u--image/u--image.vue b/node_modules/uview-ui/components/u--image/u--image.vue
new file mode 100644
index 0000000..21b7ab1
--- /dev/null
+++ b/node_modules/uview-ui/components/u--image/u--image.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/uview-ui/components/u--input/u--input.vue b/node_modules/uview-ui/components/u--input/u--input.vue
new file mode 100644
index 0000000..1e58b01
--- /dev/null
+++ b/node_modules/uview-ui/components/u--input/u--input.vue
@@ -0,0 +1,73 @@
+
+ $emit('blur', e)"
+ @keyboardheightchange="$emit('keyboardheightchange')"
+ @change="e => $emit('change', e)"
+ @input="e => $emit('input', e)"
+ @confirm="e => $emit('confirm', e)"
+ @clear="$emit('clear')"
+ @click="$emit('click')"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/uview-ui/components/u--text/u--text.vue b/node_modules/uview-ui/components/u--text/u--text.vue
new file mode 100644
index 0000000..44ee52a
--- /dev/null
+++ b/node_modules/uview-ui/components/u--text/u--text.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
diff --git a/node_modules/uview-ui/components/u--textarea/u--textarea.vue b/node_modules/uview-ui/components/u--textarea/u--textarea.vue
new file mode 100644
index 0000000..f4df0b9
--- /dev/null
+++ b/node_modules/uview-ui/components/u--textarea/u--textarea.vue
@@ -0,0 +1,48 @@
+
+ $emit('focus')"
+ @blur="e => $emit('blur')"
+ @linechange="e => $emit('linechange', e)"
+ @confirm="e => $emit('confirm')"
+ @input="e => $emit('input', e)"
+ @keyboardheightchange="e => $emit('keyboardheightchange')"
+ >
+
+
+
diff --git a/node_modules/uview-ui/components/u-action-sheet/props.js b/node_modules/uview-ui/components/u-action-sheet/props.js
new file mode 100644
index 0000000..e96e04f
--- /dev/null
+++ b/node_modules/uview-ui/components/u-action-sheet/props.js
@@ -0,0 +1,54 @@
+export default {
+ props: {
+ // 操作菜单是否展示 (默认false)
+ show: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.show
+ },
+ // 标题
+ title: {
+ type: String,
+ default: uni.$u.props.actionSheet.title
+ },
+ // 选项上方的描述信息
+ description: {
+ type: String,
+ default: uni.$u.props.actionSheet.description
+ },
+ // 数据
+ actions: {
+ type: Array,
+ default: uni.$u.props.actionSheet.actions
+ },
+ // 取消按钮的文字,不为空时显示按钮
+ cancelText: {
+ type: String,
+ default: uni.$u.props.actionSheet.cancelText
+ },
+ // 点击某个菜单项时是否关闭弹窗
+ closeOnClickAction: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.closeOnClickAction
+ },
+ // 处理底部安全区(默认true)
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.safeAreaInsetBottom
+ },
+ // 小程序的打开方式
+ openType: {
+ type: String,
+ default: uni.$u.props.actionSheet.openType
+ },
+ // 点击遮罩是否允许关闭 (默认true)
+ closeOnClickOverlay: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.closeOnClickOverlay
+ },
+ // 圆角值
+ round: {
+ type: [Boolean, String, Number],
+ default: uni.$u.props.actionSheet.round
+ }
+ }
+}
diff --git a/node_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/node_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
new file mode 100644
index 0000000..26d5d8d
--- /dev/null
+++ b/node_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
@@ -0,0 +1,278 @@
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{cancelText}}
+
+
+
+
+
+
+
+
diff --git a/node_modules/uview-ui/components/u-album/props.js b/node_modules/uview-ui/components/u-album/props.js
new file mode 100644
index 0000000..75cdb37
--- /dev/null
+++ b/node_modules/uview-ui/components/u-album/props.js
@@ -0,0 +1,59 @@
+export default {
+ props: {
+ // 图片地址,Array|Array