Compare commits
22 Commits
814c59cba4
...
e7f7853feb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7f7853feb | ||
|
|
fd29fc9b20 | ||
|
|
c642678502 | ||
|
|
e44cf88635 | ||
|
|
ad7d404482 | ||
|
|
c68243f95e | ||
|
|
a732eab59f | ||
|
|
3c87af65de | ||
|
|
4d6e41ed1c | ||
|
|
9bffd147ba | ||
|
|
8d7e59c095 | ||
|
|
a8168c6db1 | ||
|
|
80d6fb8cc9 | ||
|
|
210a3bec81 | ||
|
|
8d8df19256 | ||
|
|
2b6b43afdd | ||
|
|
d322370e44 | ||
|
|
bac043f2ba | ||
|
|
6625889aee | ||
|
|
9e260a1bb8 | ||
|
|
6e28dc148e | ||
|
|
d2f6efbd3f |
@ -8,4 +8,5 @@ export const apiArr = {
|
||||
changeGoodsList: "/api/v2/wechat/commodity/after-sales/change-goods-list", //商品售后换货商品列表
|
||||
updateApply: "/api/v2/wechat/commodity/after-sales/update-apply", //商品订单售后修改申请
|
||||
createReview: "/api/v2/wechat/commodity/review/create", //创建订单评价
|
||||
orderRefund: "/api/v2/wechat/commodity/order/refund", //商品订单退款
|
||||
};
|
||||
|
||||
@ -20,4 +20,5 @@ export const apiArr = {
|
||||
mergePreorder: '/api/v2/wechat/commodity/order/preorder', // 商品订单合并预下单
|
||||
|
||||
goodsSearch: '/api/v2/wechat/commodity/search', // 商品搜索
|
||||
cancelPay: '/api/v2/wechat/commodity/order/cancel_pay', // 用户取消支付
|
||||
}
|
||||
282
components/cu-keyboard/cu-keyboard.vue
Normal file
282
components/cu-keyboard/cu-keyboard.vue
Normal file
@ -0,0 +1,282 @@
|
||||
<template>
|
||||
<view class="key-container" @click="hide" v-show="showMask">
|
||||
<uni-transition :modeClass="['slide-bottom']" :show="show"
|
||||
:styles="{height:'100vh'}"
|
||||
:duration="duration">
|
||||
<view class="key-content" @click.stop>
|
||||
<slot></slot>
|
||||
<view class="key-box block flex">
|
||||
<view class="key-left">
|
||||
<view class="key-top flex flex-wrap">
|
||||
<view class="btn-box" v-for="(item,index) in numArr" :key="index">
|
||||
<button hover-class="active" class="cu-btn key-btn text-black text-xl" @click.stop="keydown(item)">{{item}}</button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="key-bottom">
|
||||
<view class="btn-zero">
|
||||
<button hover-class="active" class="cu-btn key-btn text-black text-xl" @click.stop="keydown('0')">0</button>
|
||||
</view>
|
||||
<view class="btn-point">
|
||||
<button hover-class="active" class="cu-btn key-btn text-black text-xl" @click.stop="keydown('.')">.</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="key-right">
|
||||
<view class="del">
|
||||
<button hover-class="active" class="cu-btn key-btn text-black text-xl" @click.stop="del">
|
||||
<text class="zm iconbackspace text-xl"></text>
|
||||
</button>
|
||||
</view>
|
||||
<view class="confirm">
|
||||
<button hover-class="active" :style="[confirmStyle]" class="cu-btn" @click.stop="confirm">
|
||||
<text class="confirm-text">{{confirmText}}</text>
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-transition>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
/**
|
||||
* 付款组件
|
||||
* @property {Number} duration - 弹出动画时长,默认为300
|
||||
* @event {Function} change - 数字改变触发,参数为数字
|
||||
* @event {Function} confirm - 付款时触发,参数为数字
|
||||
* @event {Function} hide - 关闭键盘触发,参数为空
|
||||
*/
|
||||
// 使用方法,查看同级目录exmple
|
||||
import uniTransition from '../uni-transition/uni-transition.vue'
|
||||
export default{
|
||||
components:{
|
||||
uniTransition
|
||||
},
|
||||
props:{
|
||||
duration:{
|
||||
type:Number,//弹出动画时常
|
||||
default:300
|
||||
},
|
||||
confirmText:{
|
||||
type:String,
|
||||
default:'付款'
|
||||
},
|
||||
confirmStyle:{
|
||||
type:Object,
|
||||
default:()=>{
|
||||
return{
|
||||
backgroundColor:'#57BE6D'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
value:'',//输出的值
|
||||
show:false,//显示键盘
|
||||
showMask:false,//遮罩层
|
||||
numArr:[1,2,3,4,5,6,7,8,9]
|
||||
}
|
||||
},
|
||||
|
||||
watch:{
|
||||
value(newval,oldval){
|
||||
this.$emit("change",newval);
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
close(){
|
||||
this.show = false;
|
||||
setTimeout(()=>{
|
||||
this.showMask = false;
|
||||
},this.duration)
|
||||
},
|
||||
open(){
|
||||
this.value = '';
|
||||
this.show = true;
|
||||
this.showMask = true;
|
||||
},
|
||||
del(){
|
||||
if(this.value.length){
|
||||
this.value = this.value.slice(0,this.value.length-1);
|
||||
}
|
||||
},
|
||||
keydown(e){
|
||||
switch(e){
|
||||
case '.':
|
||||
// 当输入为点的时候,如果第一次输入点,则补零
|
||||
if(!this.value.length){
|
||||
this.value = '0.';
|
||||
}else{
|
||||
if(this.value.indexOf('.')>-1){
|
||||
// 如果已经有点,则无效
|
||||
}else{
|
||||
this.value = this.value+''+e;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '0':
|
||||
if(this.value.length === 0){
|
||||
this.value = this.value+''+e;
|
||||
}
|
||||
if(Number(this.value) === 0 && this.value.indexOf('.')== -1){
|
||||
// 当输入为零的时候,如果value转换成数字为零,且没有点则无效
|
||||
}else{
|
||||
this.value = this.value+''+e;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
this.value = this.value+''+e;
|
||||
break;
|
||||
}
|
||||
},
|
||||
hide(){
|
||||
this.$emit('hide');
|
||||
this.close();
|
||||
},
|
||||
confirm(){
|
||||
this.$emit('confirm',this.value);
|
||||
this.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@font-face {
|
||||
font-family: 'zm'; /* project id 2442084 */
|
||||
src: url('https://at.alicdn.com/t/font_2442084_o72ps3802ih.eot');
|
||||
src: url('https://at.alicdn.com/t/font_2442084_o72ps3802ih.eot?#iefix') format('embedded-opentype'),
|
||||
url('https://at.alicdn.com/t/font_2442084_o72ps3802ih.woff2') format('woff2'),
|
||||
url('https://at.alicdn.com/t/font_2442084_o72ps3802ih.woff') format('woff'),
|
||||
url('https://at.alicdn.com/t/font_2442084_o72ps3802ih.ttf') format('truetype'),
|
||||
url('https://at.alicdn.com/t/font_2442084_o72ps3802ih.svg#zm') format('svg');
|
||||
}
|
||||
|
||||
.zm {
|
||||
font-family: "zm" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.iconbackspace:before {
|
||||
content: "\ef11";
|
||||
}
|
||||
|
||||
.flex{
|
||||
display: flex;
|
||||
}
|
||||
.flex-wrap{
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.cu-btn {
|
||||
position: relative;
|
||||
border: 0rpx;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
padding: 0 30rpx;
|
||||
font-size: 28rpx;
|
||||
height: 64rpx;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
overflow: visible;
|
||||
margin-left: initial;
|
||||
transform: translate(0rpx, 0rpx);
|
||||
margin-right: initial;
|
||||
}
|
||||
|
||||
.cu-btn::after {
|
||||
display: none;
|
||||
}
|
||||
.text-xl{
|
||||
font-size:36rpx;
|
||||
font-weight: bold;
|
||||
font-family: 'microsoft-yahei';
|
||||
}
|
||||
.text-black{
|
||||
color:#333;
|
||||
}
|
||||
.active{
|
||||
background-color: #ddd !important;
|
||||
transform: translate(2rpx,2rpx);
|
||||
}
|
||||
.key-container{
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
top:0;
|
||||
left:0;
|
||||
right:0;
|
||||
.key-content{
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100vw;
|
||||
background-color: #F7F7F7;
|
||||
}
|
||||
}
|
||||
.key-box{
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding:10rpx 10rpx 0;
|
||||
.key-left{
|
||||
width: 75%;
|
||||
}
|
||||
.key-right{
|
||||
width: 25%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.key-bottom{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
.del{
|
||||
width: 100%;
|
||||
}
|
||||
.btn-box{
|
||||
width: 33.33%;
|
||||
padding:0 10rpx 10rpx 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.btn-zero{
|
||||
width: 66.66%;
|
||||
padding:0 10rpx 10rpx 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.btn-point{
|
||||
width: 33.33%;
|
||||
padding:0 10rpx 10rpx 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.key-right{
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.key-btn{
|
||||
background-color: #fff;
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
}
|
||||
|
||||
.confirm{
|
||||
width: 100%;
|
||||
flex:1;
|
||||
padding: 10rpx 0 10rpx 0;
|
||||
box-sizing: border-box;
|
||||
button{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.confirm-text{
|
||||
color:#fff;
|
||||
display: block;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
41
components/cu-keyboard/exmple.vue
Normal file
41
components/cu-keyboard/exmple.vue
Normal file
@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<button type="default" @click="open">打开键盘</button>
|
||||
{{value}}
|
||||
<cu-keyboard ref="cukeyboard" @change="change" @confirm="confirm" @hide="hide"></cu-keyboard>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
value:''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
change(e){
|
||||
this.value = e;
|
||||
console.log("数字改变",e);
|
||||
},
|
||||
open(){
|
||||
console.log("打开键盘");
|
||||
this.$refs.cukeyboard.open();
|
||||
},
|
||||
confirm(e){
|
||||
console.log("付款",e);
|
||||
},
|
||||
hide(){
|
||||
console.log("关闭键盘")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@ -67,7 +67,7 @@ export default {
|
||||
photoAc:
|
||||
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_facilityAc.png",
|
||||
nav_name: "智能设备",
|
||||
url: "",
|
||||
url: "/packages/smartDevice/index/index",
|
||||
},
|
||||
{
|
||||
photo:
|
||||
@ -161,6 +161,25 @@ export default {
|
||||
|
||||
jump(e) {
|
||||
const url = e.currentTarget.dataset.url;
|
||||
const index = e.currentTarget.dataset.idx;
|
||||
const item = this.navList[index];
|
||||
|
||||
// 检查是否为扫码功能
|
||||
if (item.isScan) {
|
||||
// 调用uni-app的扫码API
|
||||
uni.scanCode({
|
||||
success: (res) => {
|
||||
// 扫码成功后的处理逻辑
|
||||
console.log('扫码结果:', res.result);
|
||||
// 可以根据实际需求对扫码结果进行处理
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log('扫码失败:', err);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查url是否存在且不为空
|
||||
if (!url || url.trim() === '') {
|
||||
this.NotOpen();
|
||||
|
||||
279
components/uni-transition/uni-transition.vue
Normal file
279
components/uni-transition/uni-transition.vue
Normal file
@ -0,0 +1,279 @@
|
||||
<template>
|
||||
<view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject"
|
||||
@click="change">
|
||||
<slot></slot>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// #ifdef APP-NVUE
|
||||
const animation = uni.requireNativePlugin('animation');
|
||||
// #endif
|
||||
/**
|
||||
* Transition 过渡动画
|
||||
* @description 简单过渡动画组件
|
||||
* @tutorial https://ext.dcloud.net.cn/plugin?id=985
|
||||
* @property {Boolean} show = [false|true] 控制组件显示或隐藏
|
||||
* @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
|
||||
* @value fade 渐隐渐出过渡
|
||||
* @value slide-top 由上至下过渡
|
||||
* @value slide-right 由右至左过渡
|
||||
* @value slide-bottom 由下至上过渡
|
||||
* @value slide-left 由左至右过渡
|
||||
* @value zoom-in 由小到大过渡
|
||||
* @value zoom-out 由大到小过渡
|
||||
* @property {Number} duration 过渡动画持续时间
|
||||
* @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
|
||||
*/
|
||||
export default {
|
||||
name: 'uniTransition',
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
modeClass: {
|
||||
type: Array,
|
||||
default () {
|
||||
return []
|
||||
}
|
||||
},
|
||||
duration: {
|
||||
type: Number,
|
||||
default: 300
|
||||
},
|
||||
styles: {
|
||||
type: Object,
|
||||
default () {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShow: false,
|
||||
transform: '',
|
||||
ani: { in: '',
|
||||
active: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
show: {
|
||||
handler(newVal) {
|
||||
if (newVal) {
|
||||
this.open()
|
||||
} else {
|
||||
this.close()
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
stylesObject() {
|
||||
let styles = {
|
||||
...this.styles,
|
||||
'transition-duration': this.duration / 1000 + 's'
|
||||
}
|
||||
let transfrom = ''
|
||||
for (let i in styles) {
|
||||
let line = this.toLine(i)
|
||||
transfrom += line + ':' + styles[i] + ';'
|
||||
}
|
||||
return transfrom
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// this.timer = null
|
||||
// this.nextTick = (time = 50) => new Promise(resolve => {
|
||||
// clearTimeout(this.timer)
|
||||
// this.timer = setTimeout(resolve, time)
|
||||
// return this.timer
|
||||
// });
|
||||
},
|
||||
methods: {
|
||||
change() {
|
||||
this.$emit('click', {
|
||||
detail: this.isShow
|
||||
})
|
||||
},
|
||||
open() {
|
||||
clearTimeout(this.timer)
|
||||
this.isShow = true
|
||||
this.transform = ''
|
||||
this.ani.in = ''
|
||||
for (let i in this.getTranfrom(false)) {
|
||||
if (i === 'opacity') {
|
||||
this.ani.in = 'fade-in'
|
||||
} else {
|
||||
this.transform += `${this.getTranfrom(false)[i]} `
|
||||
}
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
setTimeout(() => {
|
||||
this._animation(true)
|
||||
}, 50)
|
||||
})
|
||||
|
||||
},
|
||||
close(type) {
|
||||
clearTimeout(this.timer)
|
||||
this._animation(false)
|
||||
},
|
||||
_animation(type) {
|
||||
let styles = this.getTranfrom(type)
|
||||
// #ifdef APP-NVUE
|
||||
if(!this.$refs['ani']) return
|
||||
animation.transition(this.$refs['ani'].ref, {
|
||||
styles,
|
||||
duration: this.duration, //ms
|
||||
timingFunction: 'ease',
|
||||
needLayout: false,
|
||||
delay: 0 //ms
|
||||
}, () => {
|
||||
if (!type) {
|
||||
this.isShow = false
|
||||
}
|
||||
this.$emit('change', {
|
||||
detail: this.isShow
|
||||
})
|
||||
})
|
||||
// #endif
|
||||
// #ifndef APP-NVUE
|
||||
this.transform = ''
|
||||
for (let i in styles) {
|
||||
if (i === 'opacity') {
|
||||
this.ani.in = `fade-${type?'out':'in'}`
|
||||
} else {
|
||||
this.transform += `${styles[i]} `
|
||||
}
|
||||
}
|
||||
this.timer = setTimeout(() => {
|
||||
if (!type) {
|
||||
this.isShow = false
|
||||
}
|
||||
this.$emit('change', {
|
||||
detail: this.isShow
|
||||
})
|
||||
|
||||
}, this.duration)
|
||||
// #endif
|
||||
|
||||
},
|
||||
getTranfrom(type) {
|
||||
let styles = {
|
||||
transform: ''
|
||||
}
|
||||
this.modeClass.forEach((mode) => {
|
||||
switch (mode) {
|
||||
case 'fade':
|
||||
styles.opacity = type ? 1 : 0
|
||||
break;
|
||||
case 'slide-top':
|
||||
styles.transform += `translateY(${type?'0':'-100%'}) `
|
||||
break;
|
||||
case 'slide-right':
|
||||
styles.transform += `translateX(${type?'0':'100%'}) `
|
||||
break;
|
||||
case 'slide-bottom':
|
||||
styles.transform += `translateY(${type?'0':'100%'}) `
|
||||
break;
|
||||
case 'slide-left':
|
||||
styles.transform += `translateX(${type?'0':'-100%'}) `
|
||||
break;
|
||||
case 'zoom-in':
|
||||
styles.transform += `scale(${type?1:0.8}) `
|
||||
break;
|
||||
case 'zoom-out':
|
||||
styles.transform += `scale(${type?1:1.2}) `
|
||||
break;
|
||||
}
|
||||
})
|
||||
return styles
|
||||
},
|
||||
_modeClassArr(type) {
|
||||
let mode = this.modeClass
|
||||
if (typeof(mode) !== "string") {
|
||||
let modestr = ''
|
||||
mode.forEach((item) => {
|
||||
modestr += (item + '-' + type + ',')
|
||||
})
|
||||
return modestr.substr(0, modestr.length - 1)
|
||||
} else {
|
||||
return mode + '-' + type
|
||||
}
|
||||
},
|
||||
// getEl(el) {
|
||||
// console.log(el || el.ref || null);
|
||||
// return el || el.ref || null
|
||||
// },
|
||||
toLine(name) {
|
||||
return name.replace(/([A-Z])/g, "-$1").toLowerCase();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.uni-transition {
|
||||
transition-timing-function: ease;
|
||||
transition-duration: 0.3s;
|
||||
transition-property: transform, opacity;
|
||||
}
|
||||
|
||||
.fade-in {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.fade-active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.slide-top-in {
|
||||
/* transition-property: transform, opacity; */
|
||||
transform: translateY(-100%);
|
||||
}
|
||||
|
||||
.slide-top-active {
|
||||
transform: translateY(0);
|
||||
/* opacity: 1; */
|
||||
}
|
||||
|
||||
.slide-right-in {
|
||||
transform: translateX(100%);
|
||||
}
|
||||
|
||||
.slide-right-active {
|
||||
transform: translateX(0);
|
||||
}
|
||||
|
||||
.slide-bottom-in {
|
||||
transform: translateY(100%);
|
||||
}
|
||||
|
||||
.slide-bottom-active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.slide-left-in {
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
|
||||
.slide-left-active {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.zoom-in-in {
|
||||
transform: scale(0.8);
|
||||
}
|
||||
|
||||
.zoom-out-active {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
.zoom-out-in {
|
||||
transform: scale(1.2);
|
||||
}
|
||||
</style>
|
||||
290
package-lock.json
generated
290
package-lock.json
generated
@ -6,7 +6,9 @@
|
||||
"": {
|
||||
"dependencies": {
|
||||
"sass": "^1.89.2",
|
||||
"uview-ui": "^2.0.38"
|
||||
"uview-ui": "^2.0.38",
|
||||
"vanilla-text-mask": "^5.1.1",
|
||||
"vuex": "^4.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"sass-loader": "^10.5.2"
|
||||
@ -27,16 +29,54 @@
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
|
||||
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.27.1",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
|
||||
"integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.28.4"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.28.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
|
||||
"integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.27.1",
|
||||
"@babel/helper-validator-identifier": "^7.27.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@gar/promisify": {
|
||||
"version": "1.1.3",
|
||||
"dev": true,
|
||||
@ -80,7 +120,6 @@
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@jridgewell/trace-mapping": {
|
||||
@ -487,6 +526,121 @@
|
||||
"optional": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.21.tgz",
|
||||
"integrity": "sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.28.3",
|
||||
"@vue/shared": "3.5.21",
|
||||
"entities": "^4.5.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.21.tgz",
|
||||
"integrity": "sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.5.21",
|
||||
"@vue/shared": "3.5.21"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz",
|
||||
"integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.28.3",
|
||||
"@vue/compiler-core": "3.5.21",
|
||||
"@vue/compiler-dom": "3.5.21",
|
||||
"@vue/compiler-ssr": "3.5.21",
|
||||
"@vue/shared": "3.5.21",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.18",
|
||||
"postcss": "^8.5.6",
|
||||
"source-map-js": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.21.tgz",
|
||||
"integrity": "sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.21",
|
||||
"@vue/shared": "3.5.21"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/devtools-api": {
|
||||
"version": "6.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
|
||||
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.21.tgz",
|
||||
"integrity": "sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.5.21"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.21.tgz",
|
||||
"integrity": "sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.21",
|
||||
"@vue/shared": "3.5.21"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.21.tgz",
|
||||
"integrity": "sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.5.21",
|
||||
"@vue/runtime-core": "3.5.21",
|
||||
"@vue/shared": "3.5.21",
|
||||
"csstype": "^3.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.21.tgz",
|
||||
"integrity": "sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.5.21",
|
||||
"@vue/shared": "3.5.21"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.5.21"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.21.tgz",
|
||||
"integrity": "sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@webassemblyjs/ast": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz",
|
||||
@ -1302,6 +1456,13 @@
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/csstype": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.4.1",
|
||||
"dev": true,
|
||||
@ -1414,6 +1575,19 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/entities": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
||||
"license": "BSD-2-Clause",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/env-paths": {
|
||||
"version": "2.2.1",
|
||||
"dev": true,
|
||||
@ -1504,6 +1678,13 @@
|
||||
"node": ">=4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/events": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
|
||||
@ -2181,6 +2362,16 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.30.19",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
|
||||
"integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.5.5"
|
||||
}
|
||||
},
|
||||
"node_modules/make-fetch-happen": {
|
||||
"version": "10.2.1",
|
||||
"dev": true,
|
||||
@ -2475,6 +2666,25 @@
|
||||
"optional": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.11",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
||||
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "0.6.4",
|
||||
"dev": true,
|
||||
@ -2893,7 +3103,6 @@
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.1.1",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true
|
||||
},
|
||||
@ -2910,6 +3119,35 @@
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.5.6",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
|
||||
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.11",
|
||||
"picocolors": "^1.1.1",
|
||||
"source-map-js": "^1.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
"dev": true,
|
||||
@ -3281,6 +3519,8 @@
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.7.2",
|
||||
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz",
|
||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
@ -3852,6 +4092,46 @@
|
||||
"spdx-expression-parse": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vanilla-text-mask": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/vanilla-text-mask/-/vanilla-text-mask-5.1.1.tgz",
|
||||
"integrity": "sha512-JhjoMbCx3DG4GN/M/j06n1bVLeJPsZ7XelyCx8q87M9d5k3jwuWaY+a+09XBq1uOGQAW8QaWska66hOzXNKiQg==",
|
||||
"license": "Unlicense"
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.21.tgz",
|
||||
"integrity": "sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.5.21",
|
||||
"@vue/compiler-sfc": "3.5.21",
|
||||
"@vue/runtime-dom": "3.5.21",
|
||||
"@vue/server-renderer": "3.5.21",
|
||||
"@vue/shared": "3.5.21"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/vuex": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
|
||||
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@vue/devtools-api": "^6.0.0-beta.11"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.4.tgz",
|
||||
|
||||
27
package.json
27
package.json
@ -1,10 +1,19 @@
|
||||
{
|
||||
"devDependencies": {
|
||||
"sass-loader": "^10.5.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"sass": "^1.89.2",
|
||||
"uview-ui": "^2.0.38",
|
||||
"vuex": "^4.1.0"
|
||||
}
|
||||
}
|
||||
"id": "cu-keyboard",
|
||||
"name": "支付键盘、数字键盘、付款键盘、密码键盘",
|
||||
"displayName": "支付键盘、数字键盘、付款键盘、密码键盘",
|
||||
"version": "1.0.1",
|
||||
"description": "仿微信支付付款键盘,多端通用,简易方便",
|
||||
"keywords": [
|
||||
"数字键盘",
|
||||
"支付键盘",
|
||||
"付款键盘",
|
||||
"密码键盘"
|
||||
],
|
||||
"dcloudext": {
|
||||
"category": [
|
||||
"前端组件",
|
||||
"通用组件"
|
||||
]
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,9 @@
|
||||
<view class="community-item-box" v-for="(item, index) in communityList" :key="index">
|
||||
<view class="community-item">
|
||||
<view class="community-image" @tap="enterCommunity(item)">
|
||||
<image :src="item.pic" mode="aspectFill"></image>
|
||||
<!-- 使用默认图片作为 fallback -->
|
||||
<image :src="item.pic || defaultCommunityImage" mode="aspectFill"
|
||||
@error="handleImageError(item)"></image>
|
||||
</view>
|
||||
<view class="community-info">
|
||||
<view class="community-name" @tap="enterCommunity(item)">{{ item.name }}</view>
|
||||
@ -15,12 +17,12 @@
|
||||
<uni-icons type="paperplane-filled" size="18"></uni-icons>
|
||||
<text class="btn-text">导航</text>
|
||||
</view>
|
||||
<view class="community-action-btn" @tap="callPhone(item)">
|
||||
<view class="community-action-btn" @tap="callPhone(item)" v-if="item.property_server_phone">
|
||||
<uni-icons type="phone-filled" size="18"></uni-icons>
|
||||
<view class="btn-text">电话</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="enter-btn" @tap="enterCommunity(item)">进入小区</view>
|
||||
<view v-if="item.is_me" class="enter-btn" @tap="enterCommunity(item)">进入小区</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="community-address">
|
||||
@ -42,6 +44,7 @@ import {
|
||||
uniqueByField,
|
||||
menuButtonInfo,
|
||||
NavgateTo,
|
||||
calculateDistance
|
||||
} from "../../../utils";
|
||||
import { apiArr } from "../../../api/community";
|
||||
|
||||
@ -54,7 +57,9 @@ export default {
|
||||
currentPage: 1,
|
||||
pageSize: 16,
|
||||
hasMoreData: true,
|
||||
isLoading: false
|
||||
isLoading: false,
|
||||
tencentMapKey: '55NBZ-MUQYW-EAJRL-YIWPA-ZXCR6-4NBPP', // 腾讯地图API Key
|
||||
defaultCommunityImage: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community_no_image3.png' // 默认小区图片
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
@ -72,12 +77,23 @@ export default {
|
||||
this.isLoading = true;
|
||||
|
||||
try {
|
||||
// 获取用户当前位置
|
||||
const locationData = await this.getUserLocation();
|
||||
if (!locationData) {
|
||||
throw new Error('无法获取用户位置');
|
||||
}
|
||||
|
||||
const userLat = parseFloat(locationData.lat);
|
||||
const userLng = parseFloat(locationData.lng);
|
||||
|
||||
// 获取现有小区列表
|
||||
const res = await request(apiArr.getAllList, "POST", {
|
||||
page_num: 1,
|
||||
page_size: 9999
|
||||
});
|
||||
|
||||
if (res && res.rows) {
|
||||
// 处理现有数据,只保留距离1km以内的小区
|
||||
let processedList = res.rows.map(item => {
|
||||
// 处理图片路径
|
||||
if (item.pic) {
|
||||
@ -85,51 +101,80 @@ export default {
|
||||
}
|
||||
|
||||
try {
|
||||
let locationData = uni.getStorageSync('location');
|
||||
if (locationData) {
|
||||
// 确保locationData是对象而不是字符串
|
||||
const location = typeof locationData === 'string' ? JSON.parse(locationData) : locationData;
|
||||
const userLat = parseFloat(location.lat) || 0;
|
||||
const userLng = parseFloat(location.lng) || 0;
|
||||
const parkLat = parseFloat(item.lat) || 0;
|
||||
const parkLng = parseFloat(item.lng) || 0;
|
||||
// 只有当经纬度都有效时才计算距离
|
||||
if (userLat && userLng && item.lat && item.lng) {
|
||||
const parkLat = parseFloat(item.lat);
|
||||
const parkLng = parseFloat(item.lng);
|
||||
|
||||
// 只有当经纬度都有效时才计算距离
|
||||
if (userLat && userLng && parkLat && parkLng) {
|
||||
// 使用Haversine公式计算距离(单位:千米)
|
||||
const R = 6371; // 地球半径(千米)
|
||||
const dLat = (parkLat - userLat) * Math.PI / 180;
|
||||
const dLng = (parkLng - userLng) * Math.PI / 180;
|
||||
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
||||
Math.cos(userLat * Math.PI / 180) * Math.cos(parkLat * Math.PI / 180) *
|
||||
Math.sin(dLng / 2) * Math.sin(dLng / 2);
|
||||
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
||||
const distance = (R * c).toFixed(2);
|
||||
item.distance = distance + 'km';
|
||||
}
|
||||
// 使用Haversine公式计算距离(单位:千米)
|
||||
const distance = calculateDistance(userLat, userLng, parkLat, parkLng);
|
||||
item.distance = distance.toFixed(2) + 'km';
|
||||
item.distanceValue = distance; // 保存数值型距离用于排序
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('计算距离失败:', error);
|
||||
item.distanceValue = Infinity;
|
||||
}
|
||||
|
||||
return item;
|
||||
});
|
||||
|
||||
// 过滤出距离1km以内的数据
|
||||
processedList = processedList.filter(item =>
|
||||
item.distanceValue && item.distanceValue <= 1
|
||||
);
|
||||
|
||||
// 调用腾讯地图API获取附近1km的小区(包含图片信息)
|
||||
const nearbyCommunities = await this.getNearbyCommunities(userLat, userLng);
|
||||
|
||||
// 合并现有数据和腾讯地图API返回的数据
|
||||
let mergedList = [...processedList];
|
||||
|
||||
if (nearbyCommunities && nearbyCommunities.length > 0) {
|
||||
// 处理腾讯地图返回的数据,提取图片信息
|
||||
const tencentCommunities = nearbyCommunities.map(item => {
|
||||
// 计算距离
|
||||
const distance = calculateDistance(userLat, userLng, item.lat, item.lng);
|
||||
|
||||
// 提取图片(腾讯地图POI可能包含多张图片)
|
||||
let communityImage = '';
|
||||
if (item.photos && item.photos.length > 0) {
|
||||
// 取第一张图片
|
||||
communityImage = item.photos[0].url;
|
||||
}
|
||||
|
||||
return {
|
||||
name: item.title,
|
||||
addr: item.address,
|
||||
lat: item.lat,
|
||||
lng: item.lng,
|
||||
distance: distance.toFixed(2) + 'km',
|
||||
distanceValue: distance,
|
||||
// 补充其他必要字段
|
||||
pic: communityImage || this.defaultCommunityImage, // 使用腾讯地图图片或默认图片
|
||||
property: item.extension && item.extension.property_company ? item.extension.property_company : '-',
|
||||
property_server_phone: item.tel || '',
|
||||
community_id: `tencent_${item.id}` // 为腾讯地图数据设置唯一ID
|
||||
};
|
||||
});
|
||||
|
||||
// 合并数据
|
||||
mergedList = [...processedList, ...tencentCommunities];
|
||||
|
||||
// 根据community_id去重
|
||||
mergedList = uniqueByField(mergedList, 'community_id');
|
||||
}
|
||||
|
||||
// 根据距离排序
|
||||
processedList.sort((a, b) => {
|
||||
const distanceA = parseFloat(String(a.distance).trim());
|
||||
const distanceB = parseFloat(String(b.distance).trim());
|
||||
mergedList.sort((a, b) => {
|
||||
const distanceA = a.distanceValue || Infinity;
|
||||
const distanceB = b.distanceValue || Infinity;
|
||||
|
||||
// 如果是 NaN,则视为 Infinity
|
||||
const valueA = isNaN(distanceA) ? Infinity : distanceA;
|
||||
const valueB = isNaN(distanceB) ? Infinity : distanceB;
|
||||
|
||||
return valueA - valueB;
|
||||
return distanceA - distanceB;
|
||||
});
|
||||
|
||||
|
||||
// 保存所有数据到allCommunityList
|
||||
this.allCommunityList = processedList;
|
||||
this.allCommunityList = mergedList;
|
||||
|
||||
this.currentPage = 1;
|
||||
this.updateDisplayList();
|
||||
@ -148,6 +193,100 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
// 获取用户当前位置
|
||||
getUserLocation() {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
let locationData = uni.getStorageSync('location');
|
||||
if (locationData) {
|
||||
// 确保locationData是对象而不是字符串
|
||||
const location = typeof locationData === 'string' ? JSON.parse(locationData) : locationData;
|
||||
if (location.lat && location.lng) {
|
||||
resolve(location);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('从缓存获取位置失败:', error);
|
||||
}
|
||||
|
||||
// 如果缓存中没有有效位置,则请求新的位置
|
||||
uni.getLocation({
|
||||
type: 'gcj02',
|
||||
altitude: true,
|
||||
success: (res) => {
|
||||
const location = {
|
||||
lat: res.latitude,
|
||||
lng: res.longitude
|
||||
};
|
||||
// 保存到缓存
|
||||
uni.setStorageSync('location', location);
|
||||
resolve(location);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取位置失败:', err);
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// 调用腾讯地图API获取附近1km的小区(包含图片信息)
|
||||
async getNearbyCommunities(lat, lng) {
|
||||
try {
|
||||
const keyword = '小区';
|
||||
const radius = 1000; // 1km范围
|
||||
const pageSize = 20;
|
||||
|
||||
// 使用uni.request调用腾讯地图API,增加extensions=all参数获取更多信息
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: 'https://apis.map.qq.com/ws/place/v1/search',
|
||||
method: 'GET',
|
||||
data: {
|
||||
keyword: keyword,
|
||||
boundary: `nearby(${lat},${lng},${radius})`,
|
||||
key: this.tencentMapKey,
|
||||
page_size: pageSize,
|
||||
extensions: 'all' // 获取详细信息,包括图片
|
||||
},
|
||||
success: (res) => {
|
||||
if (res.statusCode === 200 && res.data.status === 0) {
|
||||
// 提取需要的数据,包括图片信息
|
||||
const results = res.data.data.map(item => ({
|
||||
id: item.id,
|
||||
title: item.title,
|
||||
address: item.address,
|
||||
lat: item.location.lat,
|
||||
lng: item.location.lng,
|
||||
tel: item.tel || '',
|
||||
photos: item.photos || [], // 提取图片数组
|
||||
extension: item.extension || {}, // 提取扩展信息,可能包含物业公司
|
||||
is_me: false
|
||||
}));
|
||||
resolve(results);
|
||||
} else {
|
||||
console.error('腾讯地图API请求失败:', res.data);
|
||||
resolve([]);
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('腾讯地图API请求错误:', err);
|
||||
resolve([]);
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('获取附近小区失败:', error);
|
||||
return [];
|
||||
}
|
||||
},
|
||||
|
||||
// 图片加载失败时使用默认图片
|
||||
handleImageError(item) {
|
||||
item.pic = this.defaultCommunityImage;
|
||||
},
|
||||
|
||||
// 更新显示的列表数据
|
||||
updateDisplayList() {
|
||||
const startIndex = 0;
|
||||
@ -198,7 +337,6 @@ export default {
|
||||
success: () => {
|
||||
},
|
||||
fail: (error) => {
|
||||
console.error('拨打电话失败:', error);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@ -223,13 +361,6 @@ export default {
|
||||
if (this.hasMoreData && !this.isLoading) {
|
||||
this.currentPage += 1;
|
||||
this.updateDisplayList();
|
||||
// if (!this.hasMoreData) {
|
||||
// uni.showToast({
|
||||
// title: '没有更多了',
|
||||
// icon: 'none',
|
||||
// duration: 1500
|
||||
// });
|
||||
// }
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -253,4 +384,4 @@ export default {
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
|
||||
<!-- <view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
|
||||
<view class="searchBox_add">
|
||||
<view class="searchBox_left">
|
||||
<u-icon bold color="#000" size="40" name="arrow-left" @click="back"></u-icon>
|
||||
@ -8,7 +8,7 @@
|
||||
<view class="searchBox_mid">我的房产</view>
|
||||
<view class="searchBox_right"></view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="empty" v-if="communityList.length == 0">
|
||||
<view class="emptyTitle">绑定房源</view>
|
||||
<view class="emptyMsg">请绑定房源信息 以便使用其他功能</view>
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class="header" :style="{ paddingTop: top + 'px', height: localHeight + 'px' }">
|
||||
<view class="container">
|
||||
<view class="header" :style="{ paddingTop: top + 'px', height: localHeight + 'px' }">
|
||||
<u-icon bold color="#000" size="40" name="arrow-left" @click="back"></u-icon>
|
||||
</div>
|
||||
</view>
|
||||
|
||||
<swiper class="swiper" autoplay>
|
||||
<swiper-item v-for="(item, pageIndex) in info.bigImg" :key="pageIndex">
|
||||
@ -10,76 +10,77 @@
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
|
||||
<div class="swiper_boxshadow"></div>
|
||||
<view class="swiper_boxshadow"></view>
|
||||
|
||||
<div class="Tit">
|
||||
<view class="Tit">
|
||||
向 <span>{{ info.merchant_name }}</span> 付款
|
||||
</div>
|
||||
</view>
|
||||
|
||||
<div class="Msg">
|
||||
<div class="payMony">
|
||||
¥<input type="number" v-model="Money" placeholder="付款金额" placeholder-style="font-size: 50rpx;"
|
||||
@blur="handleMoneyInput" step="0.01" min="0.01"> </div>
|
||||
<div class="payRemark">
|
||||
<view class="Msg">
|
||||
<view class="payMony">
|
||||
¥<input type="number" v-model="Money" placeholder="付款金额" placeholder-style="font-size: 50rpx;" @blur="handleMoneyInput" @focus="showKeyboard" step="0.01" min="0.01">
|
||||
<cu-keyboard ref="cukeyboard" @change="change" @confirm="keyboardConfirm" @hide="hide"></cu-keyboard>
|
||||
</view>
|
||||
<view class="payRemark">
|
||||
<input type="text" v-model="remarks" placeholder="付款备注">
|
||||
</div>
|
||||
</div>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<div class="Msg2">
|
||||
<div class="Msg2_tit">
|
||||
<div class="Msg2_tit_left">获得物业公积金</div>
|
||||
<div class="Msg2_tit_right" @click="choseComminty">
|
||||
<view class="Msg2">
|
||||
<view class="Msg2_tit">
|
||||
<view class="Msg2_tit_left">获得物业公积金</view>
|
||||
<view class="Msg2_tit_right" @click="choseComminty">
|
||||
绑定房源
|
||||
<u-icon name="arrow-right" color="#999999" size="28"></u-icon>
|
||||
</div>
|
||||
</div>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<div class="Msg2_con">
|
||||
<div class="Msg2_con_left">
|
||||
<view class="Msg2_con">
|
||||
<view class="Msg2_con_left">
|
||||
¥ <span>
|
||||
{{ homeMoney }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="Msg2_con_right">
|
||||
</view>
|
||||
<view class="Msg2_con_right">
|
||||
{{ room_name }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<div class="Msg3">
|
||||
<div class="Msg3_tit">获得积分</div>
|
||||
<div class="Msg3_con">
|
||||
<view class="Msg3">
|
||||
<view class="Msg3_tit">获得积分</view>
|
||||
<view class="Msg3_con">
|
||||
{{ integral }}
|
||||
</div>
|
||||
</div>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<div class="btn" @click="pay">确认支付</div>
|
||||
<view class="btn" @click="pay">确认支付</view>
|
||||
|
||||
<div class="btnList">
|
||||
<div class="btnItem" @click="payList">付款记录</div>
|
||||
<div class="line"></div>
|
||||
<div class="btnItem" @click="homeMoneList">物业费公积金</div>
|
||||
<div class="line"></div>
|
||||
<div class="btnItem" @click="home">首页</div>
|
||||
<div class="btnItem2" @click="changeBoxshadow">
|
||||
<view class="btnList">
|
||||
<view class="btnItem" @click="payList">付款记录</view>
|
||||
<view class="line"></view>
|
||||
<view class="btnItem" @click="homeMoneList">物业费公积金</view>
|
||||
<view class="line"></view>
|
||||
<view class="btnItem" @click="home">首页</view>
|
||||
<view class="btnItem2" @click="changeBoxshadow">
|
||||
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_qrcode.png"
|
||||
mode="aspectFill"></image>
|
||||
本页二维码
|
||||
</div>
|
||||
</div>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
<u-picker :show="show" :columns="[commintyList]" keyName="label" @confirm='confirm' @close='onClose'
|
||||
@cancel='onClose' closeOnClickOverlay></u-picker>
|
||||
|
||||
<div class="boxshadow" @click="changeBoxshadow2" v-if="boxShow">
|
||||
<div class="boxshadow_con">
|
||||
<view class="boxshadow" @click="changeBoxshadow2" v-if="boxShow">
|
||||
<view class="boxshadow_con">
|
||||
<image :src="myCode" mode="aspectFill"></image>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</div>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -136,6 +137,48 @@ export default {
|
||||
|
||||
|
||||
methods: {
|
||||
showKeyboard() {
|
||||
this.$refs.cukeyboard.open();
|
||||
},
|
||||
// 键盘输入内容变化时触发
|
||||
change(value) {
|
||||
// 先进行基本的输入格式化
|
||||
let formattedValue = value.toString().replace(/[^\d.]/g, '');
|
||||
|
||||
// 如果第一个数字是0且后面还有其他数字,则删除这个0
|
||||
if (formattedValue.length >= 2 && formattedValue[0] === '0' && formattedValue[1] !== '.') {
|
||||
formattedValue = formattedValue.substring(1);
|
||||
}
|
||||
|
||||
// 限制只能有一个小数点
|
||||
formattedValue = formattedValue.replace(/\.{2,}/g, '.');
|
||||
|
||||
// 确保小数点后最多两位
|
||||
const parts = formattedValue.split('.');
|
||||
if (parts.length > 1) {
|
||||
formattedValue = parts[0] + '.' + parts[1].substring(0, 2);
|
||||
}
|
||||
|
||||
// 处理开头是小数点的情况
|
||||
if (formattedValue.startsWith('.')) {
|
||||
formattedValue = '0' + formattedValue;
|
||||
}
|
||||
|
||||
this.Money = formattedValue;
|
||||
},
|
||||
// 点击键盘确认按钮时触发
|
||||
keyboardConfirm(value) {
|
||||
// 如果最后一位是小数点,则删除小数点
|
||||
if (value && value.endsWith('.')) {
|
||||
value = value.slice(0, -1);
|
||||
}
|
||||
this.Money = value;
|
||||
this.$refs.cukeyboard.close();
|
||||
},
|
||||
// 键盘隐藏时触发
|
||||
hide() {
|
||||
// 可以在这里添加键盘隐藏后的处理逻辑
|
||||
},
|
||||
handleMoneyInput() {
|
||||
// 清除非数字和非小数点的字符
|
||||
let value = this.Money.toString().replace(/[^\d.]/g, '');
|
||||
|
||||
@ -41,6 +41,7 @@
|
||||
}
|
||||
|
||||
.company-name {
|
||||
width: 550rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
<!-- 头部信息 -->
|
||||
<view class="header">
|
||||
<view class="company-info">
|
||||
<text class="company-name">{{ item.commodity_order_item[0].goods_name }}</text>
|
||||
<view class="company-name">{{ item.commodity_order_item[0].goods_name }}</view>
|
||||
<text class="after-sale-no">{{ item.after_sales_type === 1 ? '退款' : (item.after_sales_type === 2
|
||||
? '退货瑞款' : '换货') }}</text>
|
||||
? '退货退款' : '换货') }}</text>
|
||||
</view>
|
||||
<text class="order-time">提交订单:{{ formatDate(item.create_time) }}</text>
|
||||
</view>
|
||||
@ -31,7 +31,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 退款状态 -->
|
||||
<view class="status-container">
|
||||
<view class="status-container" v-if="showStatus">
|
||||
<view class="status-item" @click="pendingPage(item)">
|
||||
<text class="status-label">{{ getStatusText(item) }}</text>
|
||||
<text class="status-desc">商家将在<text style="color: #e73b05;">{{
|
||||
@ -41,7 +41,7 @@
|
||||
</view>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<view class="action-buttons">
|
||||
<view class="action-buttons" v-if="showStatus">
|
||||
<button class="modify-btn" @click="modifyApplication(item)">修改申请</button>
|
||||
<button class="cancel-btn" @click="cancelApplication(item)">撤销申请</button>
|
||||
</view>
|
||||
@ -66,11 +66,16 @@ export default {
|
||||
afterSaleList: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
order_cate: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentAfterSale: this.afterSaleList,
|
||||
showStatus: true,
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
@ -85,6 +90,7 @@ export default {
|
||||
getList() {
|
||||
const params = {
|
||||
user_id: uni.getStorageSync('userId'),
|
||||
order_cate: this.order_cate,
|
||||
}
|
||||
request(apiArr.afterSalesList, "POST", params).then((res) => {
|
||||
res.after_sales_list.forEach(item => {
|
||||
@ -100,6 +106,7 @@ export default {
|
||||
return '已撤销';
|
||||
}
|
||||
if (item.process_status === 2) {
|
||||
this.showStatus = false;
|
||||
return '已完成';
|
||||
} else if (item.process_status === 3) {
|
||||
return '已取消';
|
||||
|
||||
594
packages/myOrders/groupOrders/index.css
Normal file
594
packages/myOrders/groupOrders/index.css
Normal file
@ -0,0 +1,594 @@
|
||||
page {
|
||||
background-color: #f6f7fb;
|
||||
padding-bottom: 50rpx;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: #ffffff;
|
||||
height: 100rpx;
|
||||
padding: 0 20rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
overflow-x: auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tabItem {
|
||||
font-size: 25rpx;
|
||||
color: #222222;
|
||||
margin-right: 60rpx;
|
||||
height: 42rpx;
|
||||
}
|
||||
|
||||
.active2 {
|
||||
font-size: 25rpx;
|
||||
font-weight: 700;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.active2::after {
|
||||
content: '';
|
||||
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png) no-repeat;
|
||||
background-size: 100% 100%;
|
||||
width: 52rpx;
|
||||
height: 22rpx;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: -16rpx;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.contentList {
|
||||
margin: 20rpx;
|
||||
min-height: 250rpx;
|
||||
background-color: #ffffff;
|
||||
border-radius: 20rpx;
|
||||
padding: 10rpx;
|
||||
}
|
||||
|
||||
.order-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20rpx;
|
||||
font-size: 24rpx;
|
||||
color: #a3a3a3;
|
||||
border-bottom: 1rpx solid #eee;
|
||||
}
|
||||
|
||||
.orderTitle {
|
||||
width: 100%;
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.orderTitleSupplier {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.status {
|
||||
color: #ff5252;
|
||||
font-weight: bold;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.status2 {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
border: 1rpx solid #f83d19;
|
||||
display: flex;
|
||||
padding: 10rpx;
|
||||
border-radius: 10rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.status2 img {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.status3 {
|
||||
color: #949494;
|
||||
font-weight: bold;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.order_status{
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.goods-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 15rpx;
|
||||
gap: 15rpx;
|
||||
}
|
||||
|
||||
.goods-item {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
}
|
||||
|
||||
.goods-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
|
||||
.order-footer {
|
||||
padding: 15rpx;
|
||||
margin-top: 20rpx;
|
||||
border-top: 1rpx solid #eee;
|
||||
}
|
||||
|
||||
.order-footer-text {
|
||||
font-size: 24rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.order-footer-text text {
|
||||
color: #ff3710;
|
||||
margin-left: 10rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.cancel-btn {
|
||||
width: 160rpx;
|
||||
height: 60rpx;
|
||||
background: #d9d9d9;
|
||||
color: black;
|
||||
border: 1rpx solid #ddd;
|
||||
border-radius: 30rpx;
|
||||
font-size: 24rpx;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.afterSaleNum {
|
||||
font-size: 26rpx;
|
||||
color: #ff3710;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
position: relative;
|
||||
right: 230rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.yfd-btn {
|
||||
width: 160rpx;
|
||||
height: 60rpx;
|
||||
background: #ffebcb;
|
||||
color: #802002;
|
||||
border: none;
|
||||
border-radius: 30rpx;
|
||||
font-size: 24rpx;
|
||||
margin: 0 20rpx;
|
||||
}
|
||||
|
||||
.pay-btn {
|
||||
width: 160rpx;
|
||||
height: 60rpx;
|
||||
background: #ff5252;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 30rpx;
|
||||
font-size: 24rpx;
|
||||
margin: 0;
|
||||
margin-left: 15rpx;
|
||||
}
|
||||
|
||||
.required{
|
||||
color: red;
|
||||
}
|
||||
|
||||
.cancel-reason-container {
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
border-radius: 16rpx;
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
max-height: 80vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.asType {
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.asType text {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
display: block;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.asTabs {
|
||||
display: flex;
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.asTab {
|
||||
padding: 15rpx 20rpx;
|
||||
border-radius: 10rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.asTab.active {
|
||||
border: 1rpx solid #ff5252;
|
||||
color: #ff5252;
|
||||
}
|
||||
|
||||
.asTabs2 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.asTab2 {
|
||||
width: 50%;
|
||||
padding: 15rpx 20rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.asTab2.active {
|
||||
border-bottom: 1rpx solid #ff5252;
|
||||
color: #ff5252;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.asGoodsInfo {
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.asGoodInfo {
|
||||
display: flex;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.asGoodRadio{
|
||||
margin-top: 60rpx;
|
||||
}
|
||||
|
||||
.asGoodImg {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
border-radius: 20rpx;
|
||||
margin-right: 20rpx;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.asGoodDetail {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.asGoodTitle {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 40rpx;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.asGoodTag {
|
||||
background-color: #ff7d00;
|
||||
color: white;
|
||||
font-size: 22rpx;
|
||||
padding: 5rpx 10rpx;
|
||||
border-radius: 20rpx 0 20rpx 20rpx;
|
||||
}
|
||||
|
||||
.asGoodTag1 {
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
|
||||
.tag-img {
|
||||
position: absolute;
|
||||
top: 145rpx;
|
||||
left: 130rpx;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.asGoodDesc {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.asGoodPrice {
|
||||
font-size: 28rpx;
|
||||
color: #ff5252;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.asGoodNum {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
align-self: flex-start;
|
||||
margin-top: 120rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin-bottom: 30rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.reason-list {
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.reason-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
}
|
||||
|
||||
.radio {
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
border-radius: 50%;
|
||||
border: 2rpx solid #999;
|
||||
margin-right: 20rpx;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.radio.active {
|
||||
border-color: #e60012;
|
||||
}
|
||||
|
||||
.radio.active::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 14rpx;
|
||||
height: 14rpx;
|
||||
background-color: #e60012;
|
||||
border-radius: 50%;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.reason-item text {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.confirm-btn {
|
||||
width: 100%;
|
||||
height: 88rpx;
|
||||
background-color: #ff451b;
|
||||
color: #fff;
|
||||
font-size: 32rpx;
|
||||
border-radius: 44rpx;
|
||||
line-height: 88rpx;
|
||||
text-align: center;
|
||||
margin-top: 20rpx;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.noSalePopup {
|
||||
padding: 50rpx 50rpx 0 50rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.noSalePopup-btn {
|
||||
width: 250rpx;
|
||||
height: 70rpx;
|
||||
background-color: #e60012;
|
||||
color: #fff;
|
||||
font-size: 32rpx;
|
||||
border-radius: 44rpx;
|
||||
line-height: 70rpx;
|
||||
text-align: center;
|
||||
margin-top: 40rpx;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* 确认退款信息弹窗样式 */
|
||||
.refund-info-container {
|
||||
background-color: #ffffff;
|
||||
border-radius: 10rpx;
|
||||
padding: 30rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.refund-title {
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.refund-item {
|
||||
display: flex;
|
||||
margin-bottom: 26rpx;
|
||||
padding-bottom: 26rpx;
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
}
|
||||
|
||||
.hr{
|
||||
position: relative;
|
||||
left: -30rpx;
|
||||
right: -30rpx;
|
||||
width: 120%;
|
||||
height: 20rpx;
|
||||
background-color: #f0f2f5;
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.refund-item2 {
|
||||
margin-bottom: 26rpx;
|
||||
border-bottom: 1rpx solid #f0f0f0;
|
||||
}
|
||||
|
||||
.refund-item:last-child {
|
||||
border-bottom: none;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.refund-label {
|
||||
width: 200rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.refund-value {
|
||||
flex: 1;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
text-align: right;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.price {
|
||||
color: #ff4d4f;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.modify-btn {
|
||||
color: #989898;
|
||||
font-size: 26rpx;
|
||||
margin-left: 15rpx;
|
||||
}
|
||||
|
||||
.refund-hint {
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
text-align: right;
|
||||
position: absolute;
|
||||
top: 45rpx;
|
||||
}
|
||||
|
||||
.refund-description {
|
||||
width: 100%;
|
||||
height: 160rpx;
|
||||
border: 1rpx solid #e8e8e8;
|
||||
border-radius: 8rpx;
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
font-size: 26rpx;
|
||||
color: #333333;
|
||||
resize: none;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.refund-attachment {
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
.upload-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
color: #1989fa;
|
||||
}
|
||||
|
||||
.upload-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.contact-info {
|
||||
font-size: 26rpx;
|
||||
color: #666666;
|
||||
margin-top: 10rpx;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.submit-btn {
|
||||
width: 100%;
|
||||
height: 90rpx;
|
||||
background-color: #ff4d4f;
|
||||
color: #ffffff;
|
||||
font-size: 32rpx;
|
||||
border-radius: 45rpx;
|
||||
margin-top: 30rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.arrow-right {
|
||||
display: inline-block;
|
||||
width: 14rpx;
|
||||
height: 14rpx;
|
||||
border-top: 2rpx solid #999999;
|
||||
border-right: 2rpx solid #999999;
|
||||
transform: rotate(45deg);
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
|
||||
/* 图片上传 */
|
||||
.imgCon {
|
||||
font-size: 18rpx;
|
||||
color: #222222;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
background: #F6F7FB;
|
||||
border: 1rpx solid #D1D1D1;
|
||||
border-radius: 10rpx 10rpx 10rpx 10rpx;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.imgCon image {
|
||||
width: 34rpx;
|
||||
height: 34rpx;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
.u-upload__wrap__preview {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
border-radius: 10rpx 0rpx 10rpx 10rpx !important;
|
||||
margin-top: 20rpx !important;
|
||||
}
|
||||
|
||||
.u-upload__wrap__preview__image {
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
object-fit: cover;
|
||||
}
|
||||
418
packages/myOrders/groupOrders/index.vue
Normal file
418
packages/myOrders/groupOrders/index.vue
Normal file
@ -0,0 +1,418 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="tabs">
|
||||
<view v-for="(item, index) in categoryList" :key="index"
|
||||
:class="['tabItem', selectedTab === index ? 'active2' : '']" @click="selectTab(index, item)">
|
||||
{{ item.category_name }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="content">
|
||||
<view v-if="selectedTab === 6">
|
||||
<awaitRated :orderData="orderData" />
|
||||
</view>
|
||||
<view v-else-if="selectedTab === 7">
|
||||
<rated :orderData="orderData" />
|
||||
</view>
|
||||
<view v-else-if="selectedTab === 8">
|
||||
<afterSale :afterSaleList="afterSaleList" @revokeApply="revokeApply" />
|
||||
</view>
|
||||
<view v-else>
|
||||
<view v-for="(item, index) in orderData" :key="index">
|
||||
<view class="contentList">
|
||||
<!-- 订单头部信息 -->
|
||||
<view class="order-header" @click="toDetails(item)">
|
||||
<view class="orderTitle">
|
||||
<view class="orderTitleSupplier">{{ item.supplier_name }}
|
||||
<view v-if="item.order_status == 6 || item.order_status == 5" class="status3">{{
|
||||
getOrderStatus(item.order_status) }}</view>
|
||||
<view v-else-if="item.order_status == 7" class="status2">
|
||||
<img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/refund.png" />
|
||||
{{ getOrderStatus(item.order_status) }}
|
||||
</view>
|
||||
<view v-else class="order_status">{{
|
||||
getOrderStatus(item.order_status)
|
||||
}}</view>
|
||||
</view>
|
||||
<text>提交订单:{{ item.order_time }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 商品列表 -->
|
||||
<view class="goods-list" @click="toDetails(item)">
|
||||
<view v-for="(goods, goodsIndex) in item.commodity_order_item_list" :key="goodsIndex" class="goods-item">
|
||||
<image :src="goods.commodity_pic" class="goods-img"></image>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 订单底部信息 -->
|
||||
<view class="order-footer">
|
||||
<view class="order-footer-text" @click="toDetails(item)">共{{ item.total_count }}件商品,共计
|
||||
<text> {{ item.total_amount }}</text>
|
||||
</view>
|
||||
<view>
|
||||
<view class="btn-group" v-if="item.order_status === 1">
|
||||
<button class="cancel-btn" @click="cancelOrder(item)">
|
||||
取消订单
|
||||
</button>
|
||||
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
|
||||
<button class="pay-btn" @click="goToPay(item)">立即支付</button>
|
||||
</view>
|
||||
<view class="btn-group" v-if="item.order_status === 3">
|
||||
<button class="cancel-btn" @click="applyRefund(item)">申请退款</button>
|
||||
</view>
|
||||
<view class="btn-group" v-if="item.order_status === 4">
|
||||
<button class="cancel-btn" @click="viewLogistics(item)">查看物流</button>
|
||||
<button class="pay-btn" @click="confirmReceiving(item)">确认收货</button>
|
||||
</view>
|
||||
<view class="btn-group" v-if="item.order_status === 5">
|
||||
<text class="afterSaleNum">{{ item.commodity_order_item_list.length }}笔售后</text>
|
||||
<button class="cancel-btn" @click="afterSale(item)">退换/售后</button>
|
||||
<button class="pay-btn" @click="orderEvaluate(item)" :disabled="item.evauate_status === 1">评价</button>
|
||||
</view>
|
||||
<view class="btn-group" v-if="item.order_status === 6">
|
||||
<!-- <button class="cancel-btn" @click="orderEvaluate">
|
||||
服务评价
|
||||
</button>
|
||||
<button class="yfd-btn" @click="cancelOrder">运费单</button> -->
|
||||
<!-- <button class="pay-btn" @click="goToPay(item)">再来一单</button> -->
|
||||
</view>
|
||||
<view class="btn-group" v-if="item.order_status === 7">
|
||||
<!-- <button class="pay-btn" @click="goToPay(item)">再来一单</button> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!------------------ 以下为popup ------------------>
|
||||
<!-- 取消订单 -->
|
||||
<cancel-order-popup :showPopup.sync="showPopup" @orderCancelled="handleOrderCancelled" />
|
||||
|
||||
<!-- 申请退款 -->
|
||||
<refund-popup :showPopup.sync="showTkPopup" @refundConfirmed="handleRefundConfirmed" />
|
||||
|
||||
<!-- 退换 售后 - 选择退款原因 -->
|
||||
<!-- 售后弹窗组件 -->
|
||||
<after-sale-popup :afterSaleGoods.sync="afterSaleGoods" :orderItem="afterSaleOrderItem" ref="afterSalePopupRef"
|
||||
@refundSubmitted="handleRefundSubmitted" :order_cate="2" />
|
||||
|
||||
<!-- 无售后商品 -->
|
||||
<view>
|
||||
<u-popup ref="popup" mode="center" :show="noSalePopup" :round="15" :mask-close-able="false">
|
||||
<view class="noSalePopup">
|
||||
<view>抱歉该订单已无可申请售后的商品</view>
|
||||
<button class="noSalePopup-btn" @click="noSalePopup = false">我知道了</button>
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
isPhone,
|
||||
picUrl,
|
||||
request,
|
||||
upload,
|
||||
NavgateTo
|
||||
} from '../../../utils';
|
||||
import { apiArr as afterSaleApi } from "../../../api/afterSale";
|
||||
import Rated from "../rated/rated.vue";
|
||||
import AwaitRated from "../awaitRated/awaitRated.vue";
|
||||
import AfterSale from "../afterSale/index.vue";
|
||||
import cancelOrderPopup from '../index/popup/cancelOrder/cancelOrder.vue';
|
||||
import refundPopup from '../index/popup/refund/refund.vue';
|
||||
import afterSalePopup from '../index/popup/afterSale/index.vue';
|
||||
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Rated,
|
||||
AwaitRated,
|
||||
AfterSale,
|
||||
cancelOrderPopup,
|
||||
refundPopup,
|
||||
afterSalePopup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
categoryList: [
|
||||
{ category_name: "全部" },
|
||||
{ category_name: "待付款" },
|
||||
{ category_name: "备货中" },
|
||||
{ category_name: "待自提" },
|
||||
{ category_name: "已完成" },
|
||||
{ category_name: "已取消" },
|
||||
{ category_name: "待评价" },
|
||||
{ category_name: "已评价" },
|
||||
{ category_name: "售后" },
|
||||
],
|
||||
selectedTab: 0,
|
||||
// orderData: orderMockData,
|
||||
orderData: [],
|
||||
|
||||
showPopup: false,//取消订单
|
||||
afterSaleGoods: [],//售后商品列表
|
||||
afterSaleOrderItem: {},//售后订单对象
|
||||
noSalePopup: false,//无售后商品
|
||||
showTkPopup: false,//申请退款
|
||||
afterSaleItem: '',//操作对象
|
||||
afterSaleList: [],//售后列表
|
||||
selectStatus: '',//选中的status
|
||||
evaluateStatus: '',//评价状态
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
selectTab(index, item) {
|
||||
console.log("🚀 ~ selectTab ~ index:", index)
|
||||
console.log("🚀 ~ selectTab ~ item:", item)
|
||||
this.selectedTab = index;
|
||||
if (index == 6) {
|
||||
this.evaluateStatus = 2;
|
||||
this.selectStatus = ''
|
||||
} else if (index == 7) {
|
||||
this.evaluateStatus = 1;
|
||||
this.selectStatus = ''
|
||||
} else if (index == 2) {
|
||||
this.selectStatus = 3;
|
||||
this.evaluateStatus = ''
|
||||
} else {
|
||||
this.selectStatus = index > 2 ? index + 1 : index;
|
||||
this.evaluateStatus = ''
|
||||
}
|
||||
this.getOrderList();
|
||||
},
|
||||
// 取消订单
|
||||
cancelOrder(item) {
|
||||
this.afterSaleItem = item;
|
||||
this.showPopup = true
|
||||
},
|
||||
|
||||
// 处理订单取消事件
|
||||
handleOrderCancelled(data) {
|
||||
const params = {
|
||||
order_id: this.afterSaleItem.id,
|
||||
method: 1,
|
||||
cancel_reason: data.reason,
|
||||
}
|
||||
request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => {
|
||||
this.getOrderList();
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
// 售后按钮
|
||||
afterSale(item) {
|
||||
this.afterSaleGoods = item.commodity_order_item_list;
|
||||
// 保存完整的订单对象
|
||||
this.afterSaleOrderItem = item;
|
||||
this.$refs.afterSalePopupRef.openAfterSalePopup();
|
||||
console.log(item.id);
|
||||
|
||||
// 根据条件判断是否可以售后
|
||||
// request(afterSaleApi.isAllow, "POST", {
|
||||
// order_id: item.id,
|
||||
// }).then((res) => {
|
||||
// if (res.data.is_allow_after_sales) {
|
||||
// this.afterSaleGoods = res.data.allow_items;
|
||||
// // this.selectedAsGood = item.commodity_order_item_list[0].id;
|
||||
// this.$refs.afterSalePopupRef.openAfterSalePopup();
|
||||
// } else {
|
||||
// this.noSalePopup = true
|
||||
// }
|
||||
// });
|
||||
},
|
||||
|
||||
// 处理退款提交事件
|
||||
handleRefundSubmitted(data) {
|
||||
const params = {
|
||||
nick_name: uni.getStorageSync("nickName"),
|
||||
order_id: this.afterSaleOrderItem.id,
|
||||
goods_ids: this.afterSaleOrderItem.commodity_order_item_list.map(item => item.goods_id),
|
||||
after_sales_type: data.afterSalesType,
|
||||
after_sales_reason: data.refundReason,
|
||||
refund_amount: this.afterSaleOrderItem.total_amount,
|
||||
application_description: data.refundDescription,
|
||||
// 将图片对象数组转换为字符串数组,多个URL用逗号分隔
|
||||
application_images: data.imgList && data.imgList.length > 0 ?
|
||||
data.imgList.map(img => img.url).join(',') : '',
|
||||
order_status: 5,
|
||||
receiving_address: data.merchantAddress,
|
||||
change_goods_id: data.changeServiceId
|
||||
}
|
||||
request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
|
||||
this.getOrderList();
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
// 申请退款
|
||||
applyRefund(item) {
|
||||
this.afterSaleItem = item;
|
||||
this.showTkPopup = true
|
||||
},
|
||||
|
||||
// 查看物流
|
||||
viewLogistics(item) {
|
||||
|
||||
},
|
||||
|
||||
// 处理退款确认事件
|
||||
handleRefundConfirmed(data) {
|
||||
const params = {
|
||||
order_id: this.afterSaleItem.id,
|
||||
}
|
||||
request(afterSaleApi.orderRefund, "POST", params).then((res) => {
|
||||
uni.showToast({ title: "退款成功", icon: "none" });
|
||||
this.getOrderList();
|
||||
});
|
||||
},
|
||||
|
||||
// 确认收货
|
||||
confirmReceiving(item) {
|
||||
uni.showModal({
|
||||
title: "确认收货",
|
||||
content: "确认收货后订单状态将变为【已完成】,如有售后需求可正常申请退款/售后,确定要确认收货吗?",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
const params = {
|
||||
order_id: item.id,
|
||||
method: 2,
|
||||
}
|
||||
request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => {
|
||||
this.getOrderList();
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
goToPay(item) {
|
||||
// 创建转换后的商品数组
|
||||
const transformedItems = item.commodity_order_item_list.map(goods => ({
|
||||
isafterSale: true,
|
||||
orderId: item.id,
|
||||
commodity_goods_info: {
|
||||
commodity_brief: "",
|
||||
commodity_id: goods.commodity_id,
|
||||
commodity_pic: goods.commodity_pic,
|
||||
goods_alias: goods.goods_name,
|
||||
goods_carousel: "",
|
||||
goods_detail_pic: "",
|
||||
goods_intro: goods.goods_name,
|
||||
goods_name: goods.goods_name,
|
||||
goods_no: "",
|
||||
goods_spec: goods.goods_spec,
|
||||
goods_status: 1,
|
||||
goods_unit: goods.goods_unit,
|
||||
goods_video: "",
|
||||
group_buy_activity_info: null,
|
||||
id: goods.id,
|
||||
is_same_day: goods.is_same_day || false,
|
||||
is_support_same_day: goods.is_support_same_day || 2,
|
||||
market_price: goods.sales_price,
|
||||
sales_price: goods.sales_price,
|
||||
stock_quantity: goods.stock_quantity
|
||||
},
|
||||
commodity_id: goods.commodity_id,
|
||||
count: goods.count,
|
||||
create_time: item.create_time,
|
||||
goods_id: goods.goods_id,
|
||||
group_buy_id: 0,
|
||||
id: goods.id,
|
||||
supplier_id: item.supplier_id,
|
||||
supplier_name: item.supplier_name,
|
||||
update_time: item.update_time,
|
||||
user_id: item.user_id
|
||||
}));
|
||||
|
||||
NavgateTo(`/packages/shop/groupPurchaseSubmit/index?shopCarList=${JSON.stringify(transformedItems)}`)
|
||||
},
|
||||
toDetails(item) {
|
||||
NavgateTo(
|
||||
`/packages/myOrders/orderDetails/index?item=${JSON.stringify(item)}`
|
||||
);
|
||||
},
|
||||
|
||||
checkLogistics() {
|
||||
NavgateTo(`/packages/myOrders/logistics/index`);
|
||||
},
|
||||
|
||||
orderEvaluate(item) {
|
||||
NavgateTo(`/packages/myOrders/orderEvaluate/index?item=${JSON.stringify(item)}`);
|
||||
},
|
||||
|
||||
getOrderStatus(order_status) {
|
||||
switch (order_status) {
|
||||
case 1:
|
||||
return "待付款";
|
||||
case 2:
|
||||
return "支付中";
|
||||
case 3:
|
||||
return "备货中";
|
||||
case 4:
|
||||
return "待自提";
|
||||
case 5:
|
||||
return "已完成";
|
||||
case 6:
|
||||
return "已取消";
|
||||
case 7:
|
||||
return "退款中";
|
||||
case 8:
|
||||
return "已退款";
|
||||
}
|
||||
},
|
||||
|
||||
getOrderList() {
|
||||
this.orderData = []
|
||||
request(afterSaleApi.orderList, "POST", {
|
||||
order_status: this.selectStatus,
|
||||
evaluate_status: this.evaluateStatus,
|
||||
user_id: uni.getStorageSync("userId"),
|
||||
}).then((res) => {
|
||||
res.order_list?.forEach(item => {
|
||||
item.commodity_order_item_list?.forEach(good => {
|
||||
good.commodity_pic = picUrl + good.commodity_pic;
|
||||
})
|
||||
})
|
||||
|
||||
this.orderData = res.order_list.filter(item => item.order_cate === 2);
|
||||
this.getAfterSaleList();
|
||||
});
|
||||
},
|
||||
getAfterSaleList() {
|
||||
const params = {
|
||||
user_id: uni.getStorageSync('userId'),
|
||||
order_cate: 2,
|
||||
}
|
||||
request(afterSaleApi.afterSalesList, "POST", params).then((res) => {
|
||||
res.after_sales_list?.forEach(item => {
|
||||
item.commodity_order_item?.forEach(good => {
|
||||
good.commodity_pic = picUrl + good.commodity_pic;
|
||||
})
|
||||
})
|
||||
this.afterSaleList = res.after_sales_list;
|
||||
});
|
||||
},
|
||||
|
||||
// 处理订单撤销成功事件
|
||||
revokeApply() {
|
||||
this.getOrderList();
|
||||
}
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
this.getOrderList();
|
||||
},
|
||||
onShow() {
|
||||
this.getOrderList();
|
||||
uni.removeStorageSync('afterSaleItem')
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
@ -76,10 +76,10 @@
|
||||
服务评价
|
||||
</button>
|
||||
<button class="yfd-btn" @click="cancelOrder">运费单</button> -->
|
||||
<button class="pay-btn" @click="goToPay(item)">再来一单</button>
|
||||
<!-- <button class="pay-btn" @click="goToPay(item)">再来一单</button> -->
|
||||
</view>
|
||||
<view class="btn-group" v-if="item.order_status === 7">
|
||||
<button class="pay-btn" @click="goToPay(item)">再来一单</button>
|
||||
<!-- <button class="pay-btn" @click="goToPay(item)">再来一单</button> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -98,7 +98,7 @@
|
||||
<!-- 退换 售后 - 选择退款原因 -->
|
||||
<!-- 售后弹窗组件 -->
|
||||
<after-sale-popup :afterSaleGoods.sync="afterSaleGoods" :orderItem="afterSaleOrderItem" ref="afterSalePopupRef"
|
||||
@refundSubmitted="handleRefundSubmitted" />
|
||||
@refundSubmitted="handleRefundSubmitted" :order_cate="1" />
|
||||
|
||||
<!-- 无售后商品 -->
|
||||
<view>
|
||||
@ -144,10 +144,10 @@ export default {
|
||||
categoryList: [
|
||||
{ category_name: "全部" },
|
||||
{ category_name: "待付款" },
|
||||
{ category_name: "已取消" },
|
||||
{ category_name: "待发货" },
|
||||
{ category_name: "配送中" },
|
||||
{ category_name: "已完成" },
|
||||
{ category_name: "已取消" },
|
||||
{ category_name: "待评价" },
|
||||
{ category_name: "已评价" },
|
||||
{ category_name: "售后" },
|
||||
@ -177,10 +177,10 @@ export default {
|
||||
this.evaluateStatus = 1;
|
||||
this.selectStatus = ''
|
||||
} else if (index == 2) {
|
||||
this.selectStatus = 6;
|
||||
this.selectStatus = 3;
|
||||
this.evaluateStatus = ''
|
||||
} else {
|
||||
this.selectStatus = index;
|
||||
this.selectStatus = index > 2 ? index + 1 : index;
|
||||
this.evaluateStatus = ''
|
||||
}
|
||||
this.getOrderList();
|
||||
@ -262,16 +262,11 @@ export default {
|
||||
|
||||
// 处理退款确认事件
|
||||
handleRefundConfirmed(data) {
|
||||
const params = {
|
||||
nick_name: uni.getStorageSync("nickName"),
|
||||
const params = {
|
||||
order_id: this.afterSaleItem.id,
|
||||
goods_ids: this.afterSaleItem.commodity_order_item_list.map(item => item.goods_id),
|
||||
after_sales_type: 1,
|
||||
after_sales_reason: data.reason,
|
||||
refund_amount: this.afterSaleItem.total_amount,
|
||||
order_status: 3
|
||||
}
|
||||
request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
|
||||
request(afterSaleApi.orderRefund, "POST", params).then((res) => {
|
||||
uni.showToast({ title: "退款成功", icon: "none" });
|
||||
this.getOrderList();
|
||||
});
|
||||
},
|
||||
@ -297,10 +292,11 @@ export default {
|
||||
goToPay(item) {
|
||||
// 创建转换后的商品数组
|
||||
const transformedItems = item.commodity_order_item_list.map(goods => ({
|
||||
checked: true,
|
||||
isafterSale: true,
|
||||
orderId: item.id,
|
||||
commodity_goods_info: {
|
||||
commodity_brief: "",
|
||||
commodity_id: goods.goods_id,
|
||||
commodity_id: goods.commodity_id,
|
||||
commodity_pic: goods.commodity_pic,
|
||||
goods_alias: goods.goods_name,
|
||||
goods_carousel: "",
|
||||
@ -320,10 +316,10 @@ export default {
|
||||
sales_price: goods.sales_price,
|
||||
stock_quantity: goods.stock_quantity
|
||||
},
|
||||
commodity_id: goods.goods_id,
|
||||
commodity_id: goods.commodity_id,
|
||||
count: goods.count,
|
||||
create_time: item.create_time,
|
||||
goods_id: goods.id,
|
||||
goods_id: goods.goods_id,
|
||||
group_buy_id: 0,
|
||||
id: goods.id,
|
||||
supplier_id: item.supplier_id,
|
||||
@ -381,13 +377,14 @@ export default {
|
||||
good.commodity_pic = picUrl + good.commodity_pic;
|
||||
})
|
||||
})
|
||||
this.orderData = res.order_list;
|
||||
this.orderData = res.order_list.filter(item => item.order_cate == 1);
|
||||
this.getAfterSaleList();
|
||||
});
|
||||
},
|
||||
getAfterSaleList() {
|
||||
const params = {
|
||||
user_id: uni.getStorageSync('userId'),
|
||||
order_cate: 1,
|
||||
}
|
||||
request(afterSaleApi.afterSalesList, "POST", params).then((res) => {
|
||||
res.after_sales_list?.forEach(item => {
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
<view class="status-bar" v-if="status === '6'">
|
||||
<view class="status">已取消</view>
|
||||
<view class="countdown">订单已取消</view>
|
||||
<view class="tips">您的订单已取消,再来一单吧</view>
|
||||
<!-- <view class="tips">您的订单已取消,再来一单吧</view> -->
|
||||
</view>
|
||||
<!-- <view class="status-bar" v-if="status === '退款中'">
|
||||
<view class="status">已完成</view>
|
||||
@ -150,7 +150,7 @@
|
||||
<view class="bottom-buttons" v-if="status === '6'">
|
||||
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
|
||||
<!-- <button class="cancel-btn" @click="cancelOrder">服务评价</button> -->
|
||||
<button class="pay-btn" @click="gotoPayment">再来一单</button>
|
||||
<!-- <button class="pay-btn" @click="gotoPayment">再来一单</button> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -226,16 +226,10 @@ export default {
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
const params = {
|
||||
nick_name: uni.getStorageSync("nickName"),
|
||||
order_id: this.orderInfo.id,
|
||||
goods_ids: this.orderInfo.commodity_order_item_list.map(item => item.goods_id),
|
||||
after_sales_type: 1,
|
||||
after_sales_reason: '用户申请退款',
|
||||
refund_amount: this.orderInfo.total_amount,
|
||||
order_status: 3
|
||||
}
|
||||
request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
|
||||
uni.showToast({ title: "退款申请已提交", icon: "none" });
|
||||
request(afterSaleApi.orderRefund, "POST", params).then((res) => {
|
||||
uni.showToast({ title: "退款成功", icon: "none" });
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1500);
|
||||
@ -269,7 +263,8 @@ export default {
|
||||
gotoPayment() {
|
||||
// 创建转换后的商品数组
|
||||
const transformedItems = this.orderInfo.commodity_order_item_list.map(goods => ({
|
||||
checked: true,
|
||||
isafterSale: true,
|
||||
orderId: item.id,
|
||||
commodity_goods_info: {
|
||||
commodity_brief: "",
|
||||
commodity_id: goods.goods_id,
|
||||
|
||||
@ -118,8 +118,8 @@ export default {
|
||||
handlePay() {
|
||||
if (this.isFormValid) {
|
||||
uni.showToast({
|
||||
title: '缴费成功',
|
||||
icon: 'success'
|
||||
title: '该功能暂未实现',
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
<view class="group-price">
|
||||
<view>¥{{ item.commodity_goods_info.sales_price }}/{{
|
||||
item.commodity_goods_info.goods_unit
|
||||
}}</view>
|
||||
}}</view>
|
||||
<!-- 运费 -->
|
||||
<view class="goods-desc" style="margin-top: 10rpx;">运费 ¥{{
|
||||
item.commodity_goods_info.freight }}</view>
|
||||
@ -233,7 +233,7 @@
|
||||
已支付成功
|
||||
</view>
|
||||
<view class="boxshadow_img">
|
||||
<view style="margin-bottom: 15rpx;">{{verifyCode}}</view>
|
||||
<view style="margin-bottom: 15rpx;">{{ verifyCode }}</view>
|
||||
<image
|
||||
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png">
|
||||
</image>
|
||||
@ -428,7 +428,7 @@ export default {
|
||||
const currentTime = new Date().getTime();
|
||||
const startTime = new Date(item.commodity_goods_info.group_buy_activity_info?.start_time).getTime();
|
||||
const endTime = new Date(item.commodity_goods_info.group_buy_activity_info?.end_time).getTime();
|
||||
|
||||
|
||||
if (item.count >= item.commodity_goods_info.stock_quantity) {
|
||||
uni.showToast({
|
||||
title: '库存不足',
|
||||
@ -436,7 +436,7 @@ export default {
|
||||
});
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if (currentTime >= startTime && currentTime <= endTime) {
|
||||
if (item.count == 0) {
|
||||
item.count += item.commodity_goods_info.min_order_quantity
|
||||
@ -540,7 +540,7 @@ export default {
|
||||
// 团购活动时间判断
|
||||
const currentTime = new Date().getTime();
|
||||
let isGroupBuyValid = true;
|
||||
|
||||
|
||||
// 检查所有商品是否在团购活动时间内
|
||||
for (let supplierId in this.supplierGroups) {
|
||||
const group = this.supplierGroups[supplierId];
|
||||
@ -551,7 +551,7 @@ export default {
|
||||
isGroupBuyValid = false;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
const startTime = new Date(activityInfo.start_time).getTime();
|
||||
const endTime = new Date(activityInfo.end_time).getTime();
|
||||
if (!(currentTime >= startTime && currentTime <= endTime)) {
|
||||
@ -562,109 +562,134 @@ export default {
|
||||
if (!isGroupBuyValid) break;
|
||||
}
|
||||
|
||||
const params = {
|
||||
user_id: uni.getStorageSync('userId'),
|
||||
is_group_buy: isGroupBuyValid,
|
||||
goods_list: Object.keys(this.supplierGroups).map(supplierId => {
|
||||
const group = this.supplierGroups[supplierId];
|
||||
const firstItem = group[0];
|
||||
// 检查是否存在isafterSale属性且值为true
|
||||
const hasAfterSaleItem = this.carList.some(item => item.isafterSale === true);
|
||||
const orderIdFromAfterSale = hasAfterSaleItem ? this.carList.find(item => item.isafterSale === true)?.orderId : null;
|
||||
|
||||
// 团购活动id
|
||||
this.group_buy_activity_id = firstItem.commodity_goods_info.group_buy_activity_id;
|
||||
// 根据平台设置不同的trans_type值
|
||||
// 小程序: 71, App: 51
|
||||
const systemInfo = uni.getSystemInfoSync();
|
||||
let trans_type = 51; // 默认App环境
|
||||
|
||||
// 根据供应商id获取自提点信息
|
||||
const ztAddress = this.defZTAddress.find(adItem => adItem.id == supplierId) || {};
|
||||
|
||||
return {
|
||||
supplier_id: firstItem.supplier_id,
|
||||
supplier_name: firstItem.supplier_name || '',
|
||||
is_same_day: firstItem.commodity_goods_info.is_same_day,
|
||||
receiving_name: ztAddress.name || '',
|
||||
receiving_phone: ztAddress.phone || '',
|
||||
receiving_address: ztAddress.address || '',
|
||||
group_buy_activity_id: firstItem.commodity_goods_info.group_buy_activity_id,
|
||||
goods_and_count: group.map(item => {
|
||||
const activityInfo = item.commodity_goods_info.group_buy_activity_info;
|
||||
const isGroupBuy = activityInfo &&
|
||||
currentTime >= new Date(activityInfo.start_time).getTime() &&
|
||||
currentTime <= new Date(activityInfo.end_time).getTime();
|
||||
return {
|
||||
goods_id: item.goods_id,
|
||||
count: item.count,
|
||||
price: isGroupBuy ? item.commodity_goods_info.group_buy_price : item.commodity_goods_info.sales_price,
|
||||
freight: item.commodity_goods_info.freight,
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
// 运行时判断是否为小程序环境
|
||||
if (systemInfo.platform === 'devtools' || systemInfo.platform === 'unknown') {
|
||||
trans_type = 71; // 开发工具或未知环境默认为小程序
|
||||
}
|
||||
|
||||
// 条件编译:针对不同平台设置不同值
|
||||
// #ifdef MP
|
||||
trans_type = 71; // 所有小程序平台
|
||||
// #endif
|
||||
|
||||
request(apiArr.createOrder, "POST", params).then(resVal => {
|
||||
// 根据平台设置不同的trans_type值
|
||||
// 小程序: 71, App: 51
|
||||
const systemInfo = uni.getSystemInfoSync();
|
||||
let trans_type = 51; // 默认App环境
|
||||
|
||||
// 运行时判断是否为小程序环境
|
||||
if (systemInfo.platform === 'devtools' || systemInfo.platform === 'unknown') {
|
||||
trans_type = 71; // 开发工具或未知环境默认为小程序
|
||||
}
|
||||
|
||||
// 条件编译:针对不同平台设置不同值
|
||||
// #ifdef MP
|
||||
trans_type = 71; // 所有小程序平台
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
trans_type = 51; // App平台
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
trans_type = 51; // App平台
|
||||
// #endif
|
||||
|
||||
// 如果存在isafterSale属性且为true,则跳过createOrder接口调用
|
||||
if (hasAfterSaleItem && orderIdFromAfterSale) {
|
||||
const param = {
|
||||
order_id: resVal.order_id,
|
||||
order_id: orderIdFromAfterSale,
|
||||
user_id: uni.getStorageSync('userId'),
|
||||
trans_type: trans_type
|
||||
}
|
||||
request(apiArr.mergePreorder, "POST", param).then(res => {
|
||||
this.handleMergePreorderResponse(res, orderIdFromAfterSale);
|
||||
})
|
||||
} else {
|
||||
// 原始逻辑:创建订单后再进行支付
|
||||
const params = {
|
||||
user_id: uni.getStorageSync('userId'),
|
||||
is_group_buy: isGroupBuyValid,
|
||||
goods_list: Object.keys(this.supplierGroups).map(supplierId => {
|
||||
const group = this.supplierGroups[supplierId];
|
||||
const firstItem = group[0];
|
||||
|
||||
if (res && res.timeStamp && res.nonceStr && res.package && res.signType && res.paySign) {
|
||||
// 调用微信支付
|
||||
uni.requestPayment({
|
||||
timeStamp: res.timeStamp,
|
||||
nonceStr: res.nonceStr,
|
||||
package: res.package,
|
||||
signType: res.signType,
|
||||
paySign: res.paySign,
|
||||
success: (payRes) => {
|
||||
const params = {
|
||||
order_id: resVal.order_id,
|
||||
from: 2,
|
||||
group_buy_activity_id: this.group_buy_activity_id,
|
||||
// 团购活动id
|
||||
this.group_buy_activity_id = firstItem.commodity_goods_info.group_buy_activity_id;
|
||||
|
||||
// 根据供应商id获取自提点信息
|
||||
const ztAddress = this.defZTAddress.find(adItem => adItem.id == supplierId) || {};
|
||||
|
||||
return {
|
||||
supplier_id: firstItem.supplier_id,
|
||||
supplier_name: firstItem.supplier_name || '',
|
||||
is_same_day: firstItem.commodity_goods_info.is_same_day,
|
||||
receiving_name: ztAddress.name || '',
|
||||
receiving_phone: ztAddress.phone || '',
|
||||
receiving_address: ztAddress.address || '',
|
||||
group_buy_activity_id: firstItem.commodity_goods_info.group_buy_activity_id,
|
||||
goods_and_count: group.map(item => {
|
||||
const activityInfo = item.commodity_goods_info.group_buy_activity_info;
|
||||
const isGroupBuy = activityInfo &&
|
||||
currentTime >= new Date(activityInfo.start_time).getTime() &&
|
||||
currentTime <= new Date(activityInfo.end_time).getTime();
|
||||
return {
|
||||
goods_id: item.goods_id,
|
||||
count: item.count,
|
||||
price: isGroupBuy ? item.commodity_goods_info.group_buy_price : item.commodity_goods_info.sales_price,
|
||||
freight: item.commodity_goods_info.freight,
|
||||
}
|
||||
request(apiArr.queryOrder, "POST", params).then(res => {
|
||||
this.verifyCode = res.verification_code
|
||||
this.boxshadow1 = true
|
||||
})
|
||||
},
|
||||
fail: (payErr) => {
|
||||
uni.showToast({
|
||||
title: payErr.errMsg == 'requestPayment:fail cancel' ? '用户取消支付' : '支付失败',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
complete: () => {
|
||||
// 支付完成后的回调,无论成功失败都会执行
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
request(apiArr.createOrder, "POST", params).then(resVal => {
|
||||
const param = {
|
||||
order_id: resVal.order_id,
|
||||
user_id: uni.getStorageSync('userId'),
|
||||
trans_type: trans_type
|
||||
}
|
||||
request(apiArr.mergePreorder, "POST", param).then(res => {
|
||||
this.handleMergePreorderResponse(res, resVal.order_id);
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 处理mergePreorder接口的响应
|
||||
handleMergePreorderResponse(res, orderId) {
|
||||
if (res && res.timeStamp && res.nonceStr && res.package && res.signType && res.paySign) {
|
||||
// 调用微信支付
|
||||
uni.requestPayment({
|
||||
timeStamp: res.timeStamp,
|
||||
nonceStr: res.nonceStr,
|
||||
package: res.package,
|
||||
signType: res.signType,
|
||||
paySign: res.paySign,
|
||||
success: (payRes) => {
|
||||
const params = {
|
||||
order_id: orderId,
|
||||
from: 2,
|
||||
group_buy_activity_id: this.group_buy_activity_id,
|
||||
}
|
||||
request(apiArr.queryOrder, "POST", params).then(res => {
|
||||
this.verifyCode = res.verification_code
|
||||
this.boxshadow1 = true
|
||||
})
|
||||
} else {
|
||||
console.error("获取支付参数失败,缺少必要参数")
|
||||
},
|
||||
fail: (payErr) => {
|
||||
uni.showToast({
|
||||
title: '获取支付信息失败',
|
||||
title: payErr.errMsg == 'requestPayment:fail cancel' ? '已取消支付' : '支付失败',
|
||||
icon: 'none'
|
||||
})
|
||||
const params = {
|
||||
order_ids: orderId,
|
||||
}
|
||||
request(apiArr.cancelPay, "POST", params).then(res => {
|
||||
})
|
||||
},
|
||||
complete: () => {
|
||||
// 支付完成后的回调,无论成功失败都会执行
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
console.error("获取支付参数失败,缺少必要参数")
|
||||
uni.showToast({
|
||||
title: '获取支付信息失败',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
},
|
||||
// 复制收货地址
|
||||
copyAddress() {
|
||||
|
||||
61
packages/smartDevice/index/index.css
Normal file
61
packages/smartDevice/index/index.css
Normal file
@ -0,0 +1,61 @@
|
||||
/* 页面容器样式 */
|
||||
page {
|
||||
background-color: #f6f7fb;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.container {
|
||||
height: 90vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* 按钮包装器样式 */
|
||||
.buttons-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 30rpx;
|
||||
padding: 40rpx;
|
||||
}
|
||||
|
||||
/* 按钮基础样式 */
|
||||
.button {
|
||||
width: 400rpx;
|
||||
height: 90rpx;
|
||||
background: #ff7252;
|
||||
color: white;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 45rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
box-shadow: 0 6rpx 20rpx rgba(102, 126, 234, 0.3);
|
||||
transition: all 0.3s ease;
|
||||
letter-spacing: 5rpx;
|
||||
margin: 10rpx 0;
|
||||
}
|
||||
|
||||
/* 按钮点击效果 */
|
||||
.button:active {
|
||||
transform: scale(0.98);
|
||||
box-shadow: 0 3rpx 10rpx rgba(102, 126, 234, 0.2);
|
||||
}
|
||||
|
||||
/* 按钮1特有样式 */
|
||||
.button:nth-child(1) {
|
||||
/* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); */
|
||||
}
|
||||
|
||||
/* 按钮2特有样式 */
|
||||
.button:nth-child(2) {
|
||||
/* background: linear-gradient(135deg, #ee9ca7 0%, #ffdde1 100%); */
|
||||
}
|
||||
|
||||
/* 按钮3特有样式 */
|
||||
.button:nth-child(3) {
|
||||
/* background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%); */
|
||||
}
|
||||
45
packages/smartDevice/index/index.vue
Normal file
45
packages/smartDevice/index/index.vue
Normal file
@ -0,0 +1,45 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<view class="buttons-wrapper">
|
||||
<view class="button" @click="handleButtonClick('1')">
|
||||
临停缴费
|
||||
</view>
|
||||
<view class="button" @click="handleButtonClick('2')">
|
||||
停车订单
|
||||
</view>
|
||||
<view class="button" @click="handleButtonClick('3')">
|
||||
车辆管理
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<nav-footer :current="1" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
isPhone,
|
||||
picUrl,
|
||||
request,
|
||||
upload,
|
||||
NavgateTo
|
||||
} from '../../../utils';
|
||||
|
||||
export default {
|
||||
methods: {
|
||||
handleButtonClick(val) {
|
||||
if(val == 1){
|
||||
NavgateTo(`/packages/park/temporaryOrder/index`);
|
||||
}else if(val == 2){
|
||||
NavgateTo(`/packages/park/parkOrder/index`);
|
||||
}else if(val == 3){
|
||||
NavgateTo(`/packages/park/index/index`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import url("./index.css");
|
||||
</style>
|
||||
@ -10,7 +10,7 @@
|
||||
</view>
|
||||
<!-- 背景图片区域 -->
|
||||
<view class="bg-image-container">
|
||||
<image class="bg-image" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png" mode="aspectFill"></image>
|
||||
<image class="bg-image" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/workOrderDashboardImg.png" mode=""></image>
|
||||
</view>
|
||||
<view class="work-order-section">
|
||||
<view v-for="(item, index) in 9" :key="index">
|
||||
|
||||
25
pages.json
25
pages.json
@ -160,8 +160,8 @@
|
||||
{
|
||||
"path": "myCommunity/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
"navigationBarTitleText": "我的房产",
|
||||
"navigationBarBackgroundColor": "#FFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -781,6 +781,12 @@
|
||||
"navigationBarTitleText": "我的订单"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "groupOrders/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "团购订单"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "freightBill/index",
|
||||
"style": {
|
||||
@ -939,6 +945,21 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"root": "packages/smartDevice",
|
||||
"pages": [
|
||||
{
|
||||
"path": "index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "智能设备",
|
||||
"navigationBarBackgroundColor": "#ffffff",
|
||||
"usingComponents": {
|
||||
"nav-footer": "/components/nav/nav"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
page{
|
||||
page {
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ page{
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.mainBox{
|
||||
.mainBox {
|
||||
height: 80.5vh;
|
||||
margin-top: 10rpx;
|
||||
overflow-y: auto;
|
||||
@ -230,7 +230,7 @@ page {
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
|
||||
.tabList text{
|
||||
.tabList text {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
@ -273,14 +273,14 @@ page {
|
||||
|
||||
.serverList1_left {
|
||||
display: block;
|
||||
width: 330rpx;
|
||||
height: 450rpx;
|
||||
margin-right: 17rpx;
|
||||
width: 350rpx;
|
||||
height: 454rpx;
|
||||
margin-right: 2rpx;
|
||||
}
|
||||
|
||||
.serverList1_left image {
|
||||
height: 450rpx;
|
||||
width: 330rpx;
|
||||
width: 350rpx;
|
||||
height: 454rpx;
|
||||
object-fit: cover;
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
@ -291,8 +291,8 @@ page {
|
||||
}
|
||||
|
||||
.serverItemRight1 {
|
||||
width: 365rpx;
|
||||
height: 220rpx;
|
||||
width: 350rpx;
|
||||
height: 222rpx;
|
||||
}
|
||||
|
||||
.serverItemRight1 image {
|
||||
@ -300,8 +300,8 @@ page {
|
||||
}
|
||||
|
||||
.serverItemRight2 {
|
||||
width: 365rpx;
|
||||
height: 220rpx;
|
||||
width: 350rpx;
|
||||
height: 222rpx;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
@ -356,7 +356,6 @@ page {
|
||||
font-size: 26rpx;
|
||||
color: #222222;
|
||||
position: relative;
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.serverList_left {
|
||||
@ -370,6 +369,10 @@ page {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.serverList_left_img {
|
||||
border-radius: 20rpx;
|
||||
}
|
||||
|
||||
.serverList_right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
@ -388,10 +391,12 @@ page {
|
||||
.serverItem1 {
|
||||
background: linear-gradient(139deg, #FEF4F4 0%, #FEDCD2 100%);
|
||||
margin-right: 12rpx;
|
||||
margin-bottom: 14rpx;
|
||||
}
|
||||
|
||||
.serverItem2 {
|
||||
background: #FFF4E5;
|
||||
margin-bottom: 14rpx;
|
||||
}
|
||||
|
||||
.serverItem3 {
|
||||
@ -401,11 +406,13 @@ page {
|
||||
|
||||
.serverItem4 {
|
||||
background: #F0FDFF;
|
||||
margin-bottom: 14rpx;
|
||||
}
|
||||
|
||||
.serverItem5 {
|
||||
background: #EFF7FF;
|
||||
margin-right: 12rpx;
|
||||
margin-bottom: 14rpx;
|
||||
}
|
||||
|
||||
.serverItem6 {
|
||||
@ -414,50 +421,50 @@ page {
|
||||
|
||||
.serverItem1 image {
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
right: 13rpx;
|
||||
bottom: 0rpx;
|
||||
width: 120rpx;
|
||||
height: 70rpx;
|
||||
width: 91rpx;
|
||||
height: 95rpx;
|
||||
}
|
||||
|
||||
.serverItem2 image {
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
width: 120rpx;
|
||||
height: 70rpx;
|
||||
right: 4rpx;
|
||||
bottom: 1rpx;
|
||||
width: 110rpx;
|
||||
height: 78rpx;
|
||||
}
|
||||
|
||||
.serverItem3 image {
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
width: 120rpx;
|
||||
height: 70rpx;
|
||||
right: 18rpx;
|
||||
bottom: 10rpx;
|
||||
width: 97rpx;
|
||||
height: 57rpx;
|
||||
}
|
||||
|
||||
.serverItem4 image {
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
width: 120rpx;
|
||||
height: 70rpx;
|
||||
right: 21rpx;
|
||||
bottom: 10rpx;
|
||||
width: 87rpx;
|
||||
height: 89rpx;
|
||||
}
|
||||
|
||||
.serverItem5 image {
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
width: 120rpx;
|
||||
right: 9rpx;
|
||||
bottom: 4rpx;
|
||||
width: 109rpx;
|
||||
height: 70rpx;
|
||||
}
|
||||
|
||||
.serverItem6 image {
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
bottom: 0rpx;
|
||||
height: 70rpx;
|
||||
width: 120rpx;
|
||||
right: 25rpx;
|
||||
bottom: 14rpx;
|
||||
height: 68rpx;
|
||||
width: 72rpx;
|
||||
}
|
||||
|
||||
.merchant {
|
||||
@ -536,7 +543,7 @@ page {
|
||||
.tab-item {
|
||||
padding: 0 20rpx;
|
||||
margin-right: 20rpx;
|
||||
font-size: 24rpx;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
background-color: #ededed;
|
||||
height: 50rpx;
|
||||
@ -760,10 +767,9 @@ page {
|
||||
|
||||
.merchantItem {
|
||||
display: flex;
|
||||
padding-top: 30px;
|
||||
padding-bottom: 30rpx;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 1rpx solid #EBEBEB;
|
||||
;
|
||||
}
|
||||
|
||||
.merchantItem_left {
|
||||
@ -792,6 +798,7 @@ page {
|
||||
.merchantItem_right_tit_left {
|
||||
font-size: 30rpx;
|
||||
color: #222222;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.merchantItem_right_tit_right {
|
||||
|
||||
@ -161,8 +161,8 @@ export default {
|
||||
},
|
||||
{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/page_user_Group_1567.png",
|
||||
name: "我的拼团",
|
||||
url: "",
|
||||
name: "团购订单",
|
||||
url: "/packages/myOrders/groupOrders/index",
|
||||
},
|
||||
{
|
||||
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/page_user_Group_1565.png",
|
||||
|
||||
6
uni_modules/c-number-pad/CHANGELOG.md
Normal file
6
uni_modules/c-number-pad/CHANGELOG.md
Normal file
@ -0,0 +1,6 @@
|
||||
## 1.0.3(2025-04-17)
|
||||
优化代码
|
||||
## 1.0.1(2025-04-16)
|
||||
完善README.md文档
|
||||
## 1.0.0(2025-04-15)
|
||||
初次发布
|
||||
77
uni_modules/c-number-pad/README.md
Normal file
77
uni_modules/c-number-pad/README.md
Normal file
@ -0,0 +1,77 @@
|
||||
npm下载量:
|
||||
# 欢迎使用 c-number-pad
|
||||
|
||||
## 安装
|
||||
```javascript
|
||||
// npm安装方式,插件市场导入无需执行此命令。插件市场导入地址:https://ext.dcloud.net.cn/plugin?id=23049
|
||||
npm install c-number-pad
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
```javascript
|
||||
<template>
|
||||
<view class="box">
|
||||
当前键盘输入的值:{{ numberVal }}
|
||||
<c-number-pad
|
||||
v-model="numberVal"
|
||||
:show="show"
|
||||
@confirm="onConfirm"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// 以下导入方式按照安装方式导入,二选一
|
||||
// 插件市场导入方法:无需引入,可直接使用
|
||||
import cNumberPad from "c-number-pad/components/c-number-pad/c-number-pad.vue"; // npm导入方法
|
||||
export default {
|
||||
// npm导入需要添加components,插件市场导入不需要
|
||||
components: {
|
||||
cNumberPad
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show: true,
|
||||
numberVal: ""
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onConfirm(e) {
|
||||
console.log("点击键盘确认键");
|
||||
console.log("当前键盘输入的值:", e);
|
||||
console.log("当前键盘输入的值:", this.numberVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
```
|
||||
|
||||
## API
|
||||
### Props
|
||||
|参数|说明|类型|默认值|可选值|
|
||||
|--|--|--|--|--|
|
||||
|v-model|输入的值|String|-|-|
|
||||
|show|是否显示键盘|Boolean|false|true|
|
||||
|safeAreaInsetBottom|是否开启底部安全区适配|Boolean|true|false|
|
||||
|showPoint|是否显示小数点|Boolean|true|false|
|
||||
|decimalPlaces|限制小数位数,-1则无限长度|Number|2|-|
|
||||
|maxlength|输入的长度,0则无限长度|Number|0|-|
|
||||
|zIndex|键盘层级|Number|800|-|
|
||||
|fontSize|整体的字体大小,单位:rpx|String\|Number|32|-|
|
||||
|boxBgColor|整个键盘的背景色|String|#f4f4f4|-|
|
||||
|boxStyle|盒子样式|Object|{}|-|
|
||||
|confirmText|确认键文字|String|确认|-|
|
||||
|confirmColor|确认键文字颜色|String|#fff|-|
|
||||
|confirmBg|确认键背景|String|linear-gradient(to bottom, #ff7979, #ff0000)|-|
|
||||
|confirmStyle|确认键样式|Object|{}|-|
|
||||
|keyBg|按键背景色,0-9和小数点的背景色|String|#fff|-|
|
||||
|delBg|删除键的背景色|String|#fff|-|
|
||||
|delColor|删除图标的颜色|String|#000|-|
|
||||
|delSize|删除图标的大小,单位:rpx|String\|Number|60|-|
|
||||
|
||||
### Events
|
||||
|事件名|说明|回调参数|
|
||||
|--|--|--|
|
||||
|key|按键点击事件|e|
|
||||
|del|删除按钮事件|-|
|
||||
|confirm|右下角确认按钮事件|e|
|
||||
@ -0,0 +1,83 @@
|
||||
.c-number-pad {
|
||||
.box {
|
||||
position: fixed;
|
||||
left: var(--window-left);
|
||||
right: var(--window-right);
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
padding: 10rpx;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
.safeBottomBox {
|
||||
padding-bottom: calc(10rpx + constant(safe-area-inset-bottom));
|
||||
padding-bottom: calc(10rpx + env(safe-area-inset-bottom));
|
||||
}
|
||||
.left {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
width: 75%;
|
||||
font-weight: bold;
|
||||
line-height: 90rpx;
|
||||
.key-box {
|
||||
width: calc(100% / 3);
|
||||
padding: 0 10rpx 10rpx 0;
|
||||
box-sizing: border-box;
|
||||
.key {
|
||||
background-color: #fff;
|
||||
border-radius: 12rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.bottom {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
padding-right: 10rpx;
|
||||
.zero + .point {
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
.zero {
|
||||
flex: 2;
|
||||
background-color: #fff;
|
||||
border-radius: 12rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.point {
|
||||
flex: 1;
|
||||
background-color: #fff;
|
||||
border-radius: 12rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
.right {
|
||||
flex-shrink: 0;
|
||||
width: 25%;
|
||||
.del {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 90rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 12rpx;
|
||||
}
|
||||
.sure {
|
||||
height: calc(100% - 100rpx);
|
||||
margin-top: 10rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 12rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(to bottom, #ff7979, #ff0000);
|
||||
}
|
||||
}
|
||||
.active {
|
||||
background: #ddd;
|
||||
transform: translate(2rpx, 2rpx);
|
||||
}
|
||||
.sure-active {
|
||||
background: #ddd;
|
||||
color: #333;
|
||||
transform: translate(2rpx, 2rpx);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,182 @@
|
||||
<template>
|
||||
<view class="c-number-pad">
|
||||
<view
|
||||
class="box"
|
||||
v-if="show"
|
||||
:style="[finalBoxStyle]"
|
||||
:class="{'safeBottomBox' : safeAreaInsetBottom}"
|
||||
>
|
||||
<view class="left">
|
||||
<view
|
||||
class="key-box"
|
||||
v-for="(item, index) in keys"
|
||||
:key="index"
|
||||
>
|
||||
<button
|
||||
class="key"
|
||||
hover-class="active"
|
||||
:style="{background: `${keyBg}`}"
|
||||
@touchend.prevent="tapKey(item)"
|
||||
@mouseup.prevent="tapKey(item)"
|
||||
>
|
||||
{{ item }}
|
||||
</button>
|
||||
</view>
|
||||
<view class="bottom">
|
||||
<button
|
||||
class="zero"
|
||||
hover-class="active"
|
||||
:style="{background: `${keyBg}`}"
|
||||
@touchend.prevent="tapKey('0')"
|
||||
@mouseup.prevent="tapKey('0')"
|
||||
>
|
||||
0
|
||||
</button>
|
||||
<button
|
||||
class="point"
|
||||
hover-class="active"
|
||||
v-if="showPoint"
|
||||
:style="{background: `${keyBg}`}"
|
||||
@touchend.prevent="tapKey('.')"
|
||||
@mouseup.prevent="tapKey('.')"
|
||||
>
|
||||
.
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<button
|
||||
class="del"
|
||||
hover-class="active"
|
||||
:style="{background: `${delBg}`}"
|
||||
@touchend.prevent="del"
|
||||
@mouseup.prevent="del"
|
||||
>
|
||||
<image
|
||||
class="del-icon"
|
||||
:style="{width: `${delSize}rpx`, height: `${delSize}rpx`}"
|
||||
:src="delIcon"
|
||||
></image>
|
||||
</button>
|
||||
<button
|
||||
class="sure"
|
||||
hover-class="sure-active"
|
||||
:style="[finalConfirmStyle]"
|
||||
@touchend.prevent="confirm"
|
||||
@mouseup.prevent="confirm"
|
||||
>
|
||||
{{ confirmText }}
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
/**
|
||||
* @author cai
|
||||
* @time 2025-04-14
|
||||
* @description 数字键盘,密码键盘,带删除、小数点、确认键盘
|
||||
* @prop {String} value 键盘输入的值,v-model双向绑定
|
||||
* @prop {Boolean} show 是否显示键盘,默认false
|
||||
* @prop {Boolean} safeAreaInsetBottom 是否开启底部安全区适配,默认true
|
||||
* @prop {Boolean} showPoint 是否显示小数点,默认true
|
||||
* @prop {Number} decimalPlaces 限制小数位数,-1则无限长度,默认2
|
||||
* @prop {Number} maxlength 输入的长度,0则无限长度,默认0
|
||||
* @prop {Number} zIndex 键盘层级
|
||||
* @prop {String} fontSize 整体的字体大小,单位:rpx,默认32
|
||||
* @prop {String} boxBgColor 整个键盘的背景色,默认#f4f4f4
|
||||
* @prop {Object} boxStyle 盒子样式
|
||||
* @prop {String} confirmText 确认键文字,默认确认
|
||||
* @prop {String} confirmColor 确认键文字颜色,默认#fff
|
||||
* @prop {String} confirmBg 确认键背景,默认linear-gradient(to bottom, #ff7979, #ff0000)
|
||||
* @prop {Object} confirmStyle 确认键样式
|
||||
* @prop {String} keyBg 按键背景色,0-9和小数点的背景色,默认#fff
|
||||
* @prop {String} delBg 删除键的背景色,默认#fff
|
||||
* @prop {String} delColor 删除图标的颜色,默认#000
|
||||
* @prop {String|Number} delSize 删除图标的大小,单位:rpx,默认60
|
||||
* @emits key 按键点击事件,携带当前点击的值
|
||||
* @emits del 删除按钮事件
|
||||
* @emits confirm 右下角确认按钮事件,携带键盘输入的值
|
||||
*/
|
||||
import props from "./props";
|
||||
import delSvg from "./delSvg.js";
|
||||
export default {
|
||||
name: "c-number-pad",
|
||||
props,
|
||||
data() {
|
||||
return {
|
||||
tapValue: "", // 点击的值
|
||||
keys: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 盒子样式
|
||||
finalBoxStyle() {
|
||||
return {
|
||||
zIndex: this.zIndex,
|
||||
background: this.boxBgColor,
|
||||
fontSize: `${this.fontSize}rpx`,
|
||||
...this.boxStyle
|
||||
}
|
||||
},
|
||||
// 确认按钮样式
|
||||
finalConfirmStyle() {
|
||||
return {
|
||||
color: this.confirmColor,
|
||||
background: this.confirmBg,
|
||||
...this.confirmStyle
|
||||
}
|
||||
},
|
||||
// 删除图标
|
||||
delIcon() {
|
||||
const newSvg = delSvg.replace(/(fill=\"#000000\")/g, `fill="${this.delColor}"`);
|
||||
return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(newSvg)}`;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value(val) {
|
||||
this.tapValue = val;
|
||||
},
|
||||
tapValue(val) {
|
||||
this.$emit("input", val);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击数字键或者小数点键
|
||||
tapKey(item) {
|
||||
this.$emit("key", item);
|
||||
// 限制输入的长度
|
||||
if (this.maxlength > 0 && this.maxlength === this.tapValue.length) return;
|
||||
// 限制小数显示0位,则不能输入小数点
|
||||
if (this.decimalPlaces === 0 && item === ".") return;
|
||||
// 已经有小数点,则不能再输入小数点
|
||||
if (item === "." && this.tapValue.includes(".")) return;
|
||||
// 限制小数位数
|
||||
const decimal = this.tapValue.includes(".") ? this.tapValue.split(".")[1] : "";
|
||||
if (this.decimalPlaces > 0 && decimal.length === this.decimalPlaces) return;
|
||||
// 如果点击小数点按键,同时输入的值长度为0
|
||||
if (item === "." && this.tapValue.length === 0) {
|
||||
item = "0.";
|
||||
}
|
||||
// 正常情况添加
|
||||
this.tapValue += item;
|
||||
},
|
||||
// 点击删除按钮
|
||||
del() {
|
||||
this.$emit("del");
|
||||
if (this.tapValue.length > 0) {
|
||||
this.tapValue = this.tapValue.slice(0, this.tapValue.length - 1);
|
||||
}
|
||||
},
|
||||
// 点击确定按钮
|
||||
confirm() {
|
||||
this.$emit("confirm", this.tapValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "./c-number-pad.scss";
|
||||
</style>
|
||||
@ -0,0 +1 @@
|
||||
export default `<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1744701596132" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="18947" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M469.391 637.46c4.735 4.734 11.836 7.1 16.57 7.1s11.836-2.366 16.57-7.1l99.42-99.421 99.421 99.42c4.735 4.735 11.836 7.102 16.57 7.102s11.836-2.367 16.57-7.102c9.47-9.468 9.47-23.671 0-33.14l-99.42-99.42 99.42-99.421c9.47-9.469 9.47-23.672 0-33.14s-23.67-9.469-33.14 0l-99.42 99.42-99.42-99.42c-9.47-9.469-23.672-9.469-33.14 0s-9.47 23.671 0 33.14l99.42 99.42-99.42 99.421c-7.102 9.469-7.102 23.672 0 33.14z" p-id="18948" fill="#000000"></path><path d="M341.565 814.996h591.789c26.038 0 47.343-21.304 47.343-47.343V239.777c0-26.039-21.305-47.343-47.343-47.343h-591.79c-11.835 0-23.67 0-310.097 298.262-9.468 9.468-9.468 23.671 0 33.14 288.793 291.16 298.262 291.16 310.098 291.16z m7.101-575.219h584.688v527.876H348.666C320.26 746.348 197.168 623.256 83.545 504.899 197.168 386.54 322.628 261.08 348.666 239.777z" p-id="18949" fill="#000000"></path></svg>`
|
||||
96
uni_modules/c-number-pad/components/c-number-pad/props.js
Normal file
96
uni_modules/c-number-pad/components/c-number-pad/props.js
Normal file
@ -0,0 +1,96 @@
|
||||
export default {
|
||||
// 输入的值
|
||||
value: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
// 是否显示键盘
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否开启底部安全区适配
|
||||
safeAreaInsetBottom: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
// 是否显示小数点
|
||||
showPoint: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
// 限制小数位数,-1则无限长度,默认2
|
||||
decimalPlaces: {
|
||||
type: Number,
|
||||
default: 2
|
||||
},
|
||||
// 输入的长度,0则无限长度
|
||||
maxlength: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
// 键盘层级
|
||||
zIndex: {
|
||||
type: Number,
|
||||
default: 800
|
||||
},
|
||||
// 整体的字体大小
|
||||
fontSize: {
|
||||
type: [Number, String],
|
||||
default: 32
|
||||
},
|
||||
// 整个键盘的背景色
|
||||
boxBgColor: {
|
||||
type: String,
|
||||
default: "#f4f4f4"
|
||||
},
|
||||
// 盒子样式
|
||||
boxStyle: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
// 确认键文字
|
||||
confirmText: {
|
||||
type: String,
|
||||
default: "确认"
|
||||
},
|
||||
// 确认键字体颜色
|
||||
confirmColor: {
|
||||
type: String,
|
||||
default: "#fff"
|
||||
},
|
||||
// 确认键背景
|
||||
confirmBg: {
|
||||
type: String,
|
||||
default: "linear-gradient(to bottom, #ff7979, #ff0000)"
|
||||
},
|
||||
// 确认键样式
|
||||
confirmStyle: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
// 按键背景色,0-9和小数点的背景色
|
||||
keyBg: {
|
||||
type: String,
|
||||
default: "#fff"
|
||||
},
|
||||
// 删除键的背景色
|
||||
delBg: {
|
||||
type: String,
|
||||
default: "#fff"
|
||||
},
|
||||
// 删除图标的颜色
|
||||
delColor: {
|
||||
type: String,
|
||||
default: "#000"
|
||||
},
|
||||
// 删除图标的大小
|
||||
delSize: {
|
||||
type: [Number, String],
|
||||
default: 60
|
||||
}
|
||||
}
|
||||
88
uni_modules/c-number-pad/package.json
Normal file
88
uni_modules/c-number-pad/package.json
Normal file
@ -0,0 +1,88 @@
|
||||
{
|
||||
"id": "c-number-pad",
|
||||
"name": "c-number-pad",
|
||||
"author": "cai",
|
||||
"displayName": "uniapp项目,数字键盘,密码键盘,带删除、小数点、确认键盘",
|
||||
"description": "uniapp项目,数字键盘,密码键盘,带删除、小数点、确认键盘",
|
||||
"version": "1.0.3",
|
||||
"keywords": [
|
||||
"数字键盘",
|
||||
"密码键盘",
|
||||
"键盘",
|
||||
"小数"
|
||||
],
|
||||
"repository": "",
|
||||
"engines": {
|
||||
"HBuilderX": "^3.1.0"
|
||||
},
|
||||
"dcloudext": {
|
||||
"type": "component-vue",
|
||||
"sale": {
|
||||
"regular": {
|
||||
"price": "0.00"
|
||||
},
|
||||
"sourcecode": {
|
||||
"price": "0.00"
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"qq": "1814963581"
|
||||
},
|
||||
"declaration": {
|
||||
"ads": "无",
|
||||
"data": "无",
|
||||
"permissions": "无"
|
||||
},
|
||||
"npmurl": "https://www.npmjs.com/package/c-number-pad"
|
||||
},
|
||||
"uni_modules": {
|
||||
"dependencies": [],
|
||||
"encrypt": [],
|
||||
"platforms": {
|
||||
"cloud": {
|
||||
"tcb": "y",
|
||||
"aliyun": "y",
|
||||
"alipay": "y"
|
||||
},
|
||||
"client": {
|
||||
"Vue": {
|
||||
"vue2": "y",
|
||||
"vue3": "u"
|
||||
},
|
||||
"App": {
|
||||
"app-vue": "y",
|
||||
"app-nvue": "u",
|
||||
"app-uvue": "u"
|
||||
},
|
||||
"H5-mobile": {
|
||||
"Safari": "y",
|
||||
"Android Browser": "y",
|
||||
"微信浏览器(Android)": "y",
|
||||
"QQ浏览器(Android)": "y"
|
||||
},
|
||||
"H5-pc": {
|
||||
"Chrome": "y",
|
||||
"IE": "u",
|
||||
"Edge": "y",
|
||||
"Firefox": "u",
|
||||
"Safari": "u"
|
||||
},
|
||||
"小程序": {
|
||||
"微信": "y",
|
||||
"阿里": "u",
|
||||
"百度": "u",
|
||||
"字节跳动": "u",
|
||||
"QQ": "u",
|
||||
"钉钉": "u",
|
||||
"快手": "u",
|
||||
"飞书": "u",
|
||||
"京东": "u"
|
||||
},
|
||||
"快应用": {
|
||||
"华为": "u",
|
||||
"联盟": "u"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
749
yarn.lock
749
yarn.lock
@ -2,69 +2,66 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@parcel/watcher-android-arm64@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
|
||||
integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==
|
||||
"@babel/helper-string-parser@^7.27.1":
|
||||
version "7.27.1"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz"
|
||||
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
|
||||
|
||||
"@parcel/watcher-darwin-arm64@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67"
|
||||
integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
|
||||
"@babel/helper-validator-identifier@^7.27.1":
|
||||
version "7.27.1"
|
||||
|
||||
"@parcel/watcher-darwin-x64@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz"
|
||||
integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==
|
||||
"@babel/parser@^7.28.3":
|
||||
version "7.28.4"
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz"
|
||||
integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.28.4"
|
||||
|
||||
"@parcel/watcher-freebsd-x64@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b"
|
||||
integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==
|
||||
"@babel/types@^7.28.4":
|
||||
version "7.28.4"
|
||||
resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz"
|
||||
integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==
|
||||
dependencies:
|
||||
"@babel/helper-string-parser" "^7.27.1"
|
||||
"@babel/helper-validator-identifier" "^7.27.1"
|
||||
|
||||
"@parcel/watcher-linux-arm-glibc@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1"
|
||||
integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==
|
||||
"@jridgewell/gen-mapping@^0.3.5":
|
||||
version "0.3.13"
|
||||
resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz"
|
||||
integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.5.0"
|
||||
"@jridgewell/trace-mapping" "^0.3.24"
|
||||
|
||||
"@parcel/watcher-linux-arm-musl@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e"
|
||||
integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==
|
||||
"@jridgewell/resolve-uri@^3.1.0":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
|
||||
integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
|
||||
|
||||
"@parcel/watcher-linux-arm64-glibc@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30"
|
||||
integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==
|
||||
"@jridgewell/source-map@^0.3.3":
|
||||
version "0.3.11"
|
||||
resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.11.tgz"
|
||||
integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
"@jridgewell/trace-mapping" "^0.3.25"
|
||||
|
||||
"@parcel/watcher-linux-arm64-musl@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2"
|
||||
integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==
|
||||
"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5":
|
||||
version "1.5.5"
|
||||
resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz"
|
||||
integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
|
||||
|
||||
"@parcel/watcher-linux-x64-glibc@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e"
|
||||
integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==
|
||||
|
||||
"@parcel/watcher-linux-x64-musl@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee"
|
||||
integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==
|
||||
|
||||
"@parcel/watcher-win32-arm64@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243"
|
||||
integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==
|
||||
|
||||
"@parcel/watcher-win32-ia32@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6"
|
||||
integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==
|
||||
"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
|
||||
version "0.3.30"
|
||||
resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz"
|
||||
integrity sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri" "^3.1.0"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.14"
|
||||
|
||||
"@parcel/watcher-win32-x64@2.5.1":
|
||||
version "2.5.1"
|
||||
resolved "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947"
|
||||
resolved "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz"
|
||||
integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==
|
||||
|
||||
"@parcel/watcher@^2.4.1":
|
||||
@ -91,22 +88,285 @@
|
||||
"@parcel/watcher-win32-ia32" "2.5.1"
|
||||
"@parcel/watcher-win32-x64" "2.5.1"
|
||||
|
||||
"@types/json-schema@^7.0.8":
|
||||
"@types/eslint-scope@^3.7.7":
|
||||
version "3.7.7"
|
||||
resolved "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz"
|
||||
integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==
|
||||
dependencies:
|
||||
"@types/eslint" "*"
|
||||
"@types/estree" "*"
|
||||
|
||||
"@types/eslint@*":
|
||||
version "9.6.1"
|
||||
resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-9.6.1.tgz"
|
||||
integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==
|
||||
dependencies:
|
||||
"@types/estree" "*"
|
||||
"@types/json-schema" "*"
|
||||
|
||||
"@types/estree@*", "@types/estree@^1.0.8":
|
||||
version "1.0.8"
|
||||
resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz"
|
||||
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
|
||||
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
|
||||
version "7.0.15"
|
||||
resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz"
|
||||
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
|
||||
|
||||
"@types/node@*":
|
||||
version "24.3.0"
|
||||
resolved "https://registry.npmmirror.com/@types/node/-/node-24.3.0.tgz"
|
||||
integrity sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==
|
||||
dependencies:
|
||||
undici-types "~7.10.0"
|
||||
|
||||
"@vue/compiler-core@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.21.tgz"
|
||||
integrity sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.28.3"
|
||||
"@vue/shared" "3.5.21"
|
||||
entities "^4.5.0"
|
||||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.2.1"
|
||||
|
||||
"@vue/compiler-dom@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.21.tgz"
|
||||
integrity sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.5.21"
|
||||
"@vue/shared" "3.5.21"
|
||||
|
||||
"@vue/compiler-sfc@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz"
|
||||
integrity sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.28.3"
|
||||
"@vue/compiler-core" "3.5.21"
|
||||
"@vue/compiler-dom" "3.5.21"
|
||||
"@vue/compiler-ssr" "3.5.21"
|
||||
"@vue/shared" "3.5.21"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.30.18"
|
||||
postcss "^8.5.6"
|
||||
source-map-js "^1.2.1"
|
||||
|
||||
"@vue/compiler-ssr@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.21.tgz"
|
||||
integrity sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.5.21"
|
||||
"@vue/shared" "3.5.21"
|
||||
|
||||
"@vue/devtools-api@^6.0.0-beta.11":
|
||||
version "6.6.4"
|
||||
resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
|
||||
resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz"
|
||||
integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
|
||||
|
||||
"@vue/reactivity@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.21.tgz"
|
||||
integrity sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==
|
||||
dependencies:
|
||||
"@vue/shared" "3.5.21"
|
||||
|
||||
"@vue/runtime-core@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.21.tgz"
|
||||
integrity sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.5.21"
|
||||
"@vue/shared" "3.5.21"
|
||||
|
||||
"@vue/runtime-dom@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.21.tgz"
|
||||
integrity sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.5.21"
|
||||
"@vue/runtime-core" "3.5.21"
|
||||
"@vue/shared" "3.5.21"
|
||||
csstype "^3.1.3"
|
||||
|
||||
"@vue/server-renderer@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.21.tgz"
|
||||
integrity sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==
|
||||
dependencies:
|
||||
"@vue/compiler-ssr" "3.5.21"
|
||||
"@vue/shared" "3.5.21"
|
||||
|
||||
"@vue/shared@3.5.21":
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.21.tgz"
|
||||
integrity sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==
|
||||
|
||||
"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.14.1.tgz"
|
||||
integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==
|
||||
dependencies:
|
||||
"@webassemblyjs/helper-numbers" "1.13.2"
|
||||
"@webassemblyjs/helper-wasm-bytecode" "1.13.2"
|
||||
|
||||
"@webassemblyjs/floating-point-hex-parser@1.13.2":
|
||||
version "1.13.2"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz"
|
||||
integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==
|
||||
|
||||
"@webassemblyjs/helper-api-error@1.13.2":
|
||||
version "1.13.2"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz"
|
||||
integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==
|
||||
|
||||
"@webassemblyjs/helper-buffer@1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz"
|
||||
integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==
|
||||
|
||||
"@webassemblyjs/helper-numbers@1.13.2":
|
||||
version "1.13.2"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz"
|
||||
integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==
|
||||
dependencies:
|
||||
"@webassemblyjs/floating-point-hex-parser" "1.13.2"
|
||||
"@webassemblyjs/helper-api-error" "1.13.2"
|
||||
"@xtuc/long" "4.2.2"
|
||||
|
||||
"@webassemblyjs/helper-wasm-bytecode@1.13.2":
|
||||
version "1.13.2"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz"
|
||||
integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==
|
||||
|
||||
"@webassemblyjs/helper-wasm-section@1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz"
|
||||
integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.14.1"
|
||||
"@webassemblyjs/helper-buffer" "1.14.1"
|
||||
"@webassemblyjs/helper-wasm-bytecode" "1.13.2"
|
||||
"@webassemblyjs/wasm-gen" "1.14.1"
|
||||
|
||||
"@webassemblyjs/ieee754@1.13.2":
|
||||
version "1.13.2"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz"
|
||||
integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==
|
||||
dependencies:
|
||||
"@xtuc/ieee754" "^1.2.0"
|
||||
|
||||
"@webassemblyjs/leb128@1.13.2":
|
||||
version "1.13.2"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz"
|
||||
integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==
|
||||
dependencies:
|
||||
"@xtuc/long" "4.2.2"
|
||||
|
||||
"@webassemblyjs/utf8@1.13.2":
|
||||
version "1.13.2"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz"
|
||||
integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==
|
||||
|
||||
"@webassemblyjs/wasm-edit@^1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz"
|
||||
integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.14.1"
|
||||
"@webassemblyjs/helper-buffer" "1.14.1"
|
||||
"@webassemblyjs/helper-wasm-bytecode" "1.13.2"
|
||||
"@webassemblyjs/helper-wasm-section" "1.14.1"
|
||||
"@webassemblyjs/wasm-gen" "1.14.1"
|
||||
"@webassemblyjs/wasm-opt" "1.14.1"
|
||||
"@webassemblyjs/wasm-parser" "1.14.1"
|
||||
"@webassemblyjs/wast-printer" "1.14.1"
|
||||
|
||||
"@webassemblyjs/wasm-gen@1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz"
|
||||
integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.14.1"
|
||||
"@webassemblyjs/helper-wasm-bytecode" "1.13.2"
|
||||
"@webassemblyjs/ieee754" "1.13.2"
|
||||
"@webassemblyjs/leb128" "1.13.2"
|
||||
"@webassemblyjs/utf8" "1.13.2"
|
||||
|
||||
"@webassemblyjs/wasm-opt@1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz"
|
||||
integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.14.1"
|
||||
"@webassemblyjs/helper-buffer" "1.14.1"
|
||||
"@webassemblyjs/wasm-gen" "1.14.1"
|
||||
"@webassemblyjs/wasm-parser" "1.14.1"
|
||||
|
||||
"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz"
|
||||
integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.14.1"
|
||||
"@webassemblyjs/helper-api-error" "1.13.2"
|
||||
"@webassemblyjs/helper-wasm-bytecode" "1.13.2"
|
||||
"@webassemblyjs/ieee754" "1.13.2"
|
||||
"@webassemblyjs/leb128" "1.13.2"
|
||||
"@webassemblyjs/utf8" "1.13.2"
|
||||
|
||||
"@webassemblyjs/wast-printer@1.14.1":
|
||||
version "1.14.1"
|
||||
resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz"
|
||||
integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.14.1"
|
||||
"@xtuc/long" "4.2.2"
|
||||
|
||||
"@xtuc/ieee754@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
|
||||
integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
|
||||
|
||||
"@xtuc/long@4.2.2":
|
||||
version "4.2.2"
|
||||
resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz"
|
||||
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
|
||||
|
||||
acorn-import-phases@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmmirror.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz"
|
||||
integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==
|
||||
|
||||
acorn@^8.14.0, acorn@^8.15.0:
|
||||
version "8.15.0"
|
||||
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz"
|
||||
integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
|
||||
|
||||
ajv-formats@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz"
|
||||
integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
|
||||
dependencies:
|
||||
ajv "^8.0.0"
|
||||
|
||||
ajv-keywords@^3.5.2:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
|
||||
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
|
||||
|
||||
ajv@^6.12.5:
|
||||
ajv-keywords@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz"
|
||||
integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.3"
|
||||
|
||||
ajv@^6.12.5, ajv@^6.9.1:
|
||||
version "6.12.6"
|
||||
resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz"
|
||||
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
|
||||
@ -116,6 +376,26 @@ ajv@^6.12.5:
|
||||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ajv@^8.0.0:
|
||||
version "8.17.1"
|
||||
resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz"
|
||||
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.3"
|
||||
fast-uri "^3.0.1"
|
||||
json-schema-traverse "^1.0.0"
|
||||
require-from-string "^2.0.2"
|
||||
|
||||
ajv@^8.8.2, ajv@^8.9.0:
|
||||
version "8.17.1"
|
||||
resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz"
|
||||
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.3"
|
||||
fast-uri "^3.0.1"
|
||||
json-schema-traverse "^1.0.0"
|
||||
require-from-string "^2.0.2"
|
||||
|
||||
big.js@^5.2.2:
|
||||
version "5.2.2"
|
||||
resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz"
|
||||
@ -128,6 +408,26 @@ braces@^3.0.3:
|
||||
dependencies:
|
||||
fill-range "^7.1.1"
|
||||
|
||||
browserslist@^4.24.0, "browserslist@>= 4.21.0":
|
||||
version "4.25.3"
|
||||
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.25.3.tgz"
|
||||
integrity sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001735"
|
||||
electron-to-chromium "^1.5.204"
|
||||
node-releases "^2.0.19"
|
||||
update-browserslist-db "^1.1.3"
|
||||
|
||||
buffer-from@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz"
|
||||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
||||
|
||||
caniuse-lite@^1.0.30001735:
|
||||
version "1.0.30001735"
|
||||
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz"
|
||||
integrity sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==
|
||||
|
||||
chokidar@^4.0.0:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz"
|
||||
@ -135,17 +435,93 @@ chokidar@^4.0.0:
|
||||
dependencies:
|
||||
readdirp "^4.0.1"
|
||||
|
||||
chrome-trace-event@^1.0.2:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz"
|
||||
integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
|
||||
|
||||
commander@^2.20.0:
|
||||
version "2.20.3"
|
||||
resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
|
||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||
|
||||
csstype@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
|
||||
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
|
||||
|
||||
detect-libc@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz"
|
||||
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
|
||||
|
||||
electron-to-chromium@^1.5.204:
|
||||
version "1.5.205"
|
||||
resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.205.tgz"
|
||||
integrity sha512-gBtbT7IgOHu7CwdtIiXwbNRD1l6oG6GAyanmwMCLVqaoGy92Jfe1dSHLiSj8xUEZNxOTIVlXuaAalMMD+S4y0w==
|
||||
|
||||
emojis-list@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz"
|
||||
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
enhanced-resolve@^5.17.3:
|
||||
version "5.18.3"
|
||||
resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz"
|
||||
integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
|
||||
entities@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
|
||||
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
|
||||
|
||||
es-module-lexer@^1.2.1:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz"
|
||||
integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==
|
||||
|
||||
escalade@^3.2.0:
|
||||
version "3.2.0"
|
||||
|
||||
eslint-scope@5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
|
||||
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
|
||||
dependencies:
|
||||
esrecurse "^4.3.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
esrecurse@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz"
|
||||
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
|
||||
dependencies:
|
||||
estraverse "^5.2.0"
|
||||
|
||||
estraverse@^4.1.1:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz"
|
||||
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
|
||||
|
||||
estraverse@^5.2.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
|
||||
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
||||
|
||||
estree-walker@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
|
||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||
|
||||
events@^3.2.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz"
|
||||
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
||||
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
@ -155,6 +531,11 @@ fast-json-stable-stringify@^2.0.0:
|
||||
resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
|
||||
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
|
||||
|
||||
fast-uri@^3.0.1:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.6.tgz"
|
||||
integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
|
||||
|
||||
fill-range@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
|
||||
@ -162,6 +543,22 @@ fill-range@^7.1.1:
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
glob-to-regexp@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
|
||||
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
|
||||
|
||||
graceful-fs@^4.1.2, graceful-fs@^4.2.11, graceful-fs@^4.2.4:
|
||||
version "4.2.11"
|
||||
|
||||
has-flag@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
||||
iconv-lite@^0.6.2:
|
||||
version "0.6.3"
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||
|
||||
immutable@^5.0.2:
|
||||
version "5.1.3"
|
||||
resolved "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz"
|
||||
@ -184,11 +581,28 @@ is-number@^7.0.0:
|
||||
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
|
||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||
|
||||
jest-worker@^27.4.5:
|
||||
version "27.5.1"
|
||||
resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz"
|
||||
integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
merge-stream "^2.0.0"
|
||||
supports-color "^8.0.0"
|
||||
|
||||
json-parse-even-better-errors@^2.3.1:
|
||||
version "2.3.1"
|
||||
|
||||
json-schema-traverse@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
|
||||
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
|
||||
|
||||
json-schema-traverse@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"
|
||||
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
|
||||
|
||||
json5@^2.1.2:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz"
|
||||
@ -199,6 +613,11 @@ klona@^2.0.4:
|
||||
resolved "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz"
|
||||
integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
|
||||
|
||||
loader-runner@^4.2.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz"
|
||||
integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
|
||||
|
||||
loader-utils@^2.0.0:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz"
|
||||
@ -208,6 +627,18 @@ loader-utils@^2.0.0:
|
||||
emojis-list "^3.0.0"
|
||||
json5 "^2.1.2"
|
||||
|
||||
magic-string@^0.30.18:
|
||||
version "0.30.19"
|
||||
resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz"
|
||||
integrity sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.5.5"
|
||||
|
||||
merge-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz"
|
||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
||||
|
||||
micromatch@^4.0.5:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
|
||||
@ -216,6 +647,23 @@ micromatch@^4.0.5:
|
||||
braces "^3.0.3"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
mime-db@1.52.0:
|
||||
version "1.52.0"
|
||||
resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
|
||||
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
||||
|
||||
mime-types@^2.1.27:
|
||||
version "2.1.35"
|
||||
resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz"
|
||||
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||
dependencies:
|
||||
mime-db "1.52.0"
|
||||
|
||||
nanoid@^3.3.11:
|
||||
version "3.3.11"
|
||||
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz"
|
||||
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
|
||||
|
||||
neo-async@^2.6.2:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
|
||||
@ -226,21 +674,56 @@ node-addon-api@^7.0.0:
|
||||
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz"
|
||||
integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
|
||||
|
||||
node-releases@^2.0.19:
|
||||
version "2.0.19"
|
||||
resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz"
|
||||
integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
|
||||
|
||||
picocolors@^1.1.1:
|
||||
version "1.1.1"
|
||||
|
||||
picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
postcss@^8.5.6:
|
||||
version "8.5.6"
|
||||
resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz"
|
||||
integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
|
||||
dependencies:
|
||||
nanoid "^3.3.11"
|
||||
picocolors "^1.1.1"
|
||||
source-map-js "^1.2.1"
|
||||
|
||||
punycode@^2.1.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz"
|
||||
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
|
||||
|
||||
randombytes@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz"
|
||||
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
|
||||
dependencies:
|
||||
safe-buffer "^5.1.0"
|
||||
|
||||
readdirp@^4.0.1:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz"
|
||||
integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
|
||||
|
||||
require-from-string@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz"
|
||||
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
|
||||
|
||||
safe-buffer@^5.1.0:
|
||||
version "5.1.2"
|
||||
|
||||
"safer-buffer@>= 2.1.2 < 3.0.0":
|
||||
version "2.1.2"
|
||||
|
||||
sass-loader@^10.5.2:
|
||||
version "10.5.2"
|
||||
resolved "https://registry.npmmirror.com/sass-loader/-/sass-loader-10.5.2.tgz"
|
||||
@ -252,7 +735,7 @@ sass-loader@^10.5.2:
|
||||
schema-utils "^3.0.0"
|
||||
semver "^7.3.2"
|
||||
|
||||
sass@^1.89.2:
|
||||
sass@^1.3.0, sass@^1.89.2:
|
||||
version "1.89.2"
|
||||
resolved "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz"
|
||||
integrity sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==
|
||||
@ -272,16 +755,89 @@ schema-utils@^3.0.0:
|
||||
ajv "^6.12.5"
|
||||
ajv-keywords "^3.5.2"
|
||||
|
||||
schema-utils@^4.3.0:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz"
|
||||
integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.9"
|
||||
ajv "^8.9.0"
|
||||
ajv-formats "^2.1.1"
|
||||
ajv-keywords "^5.1.0"
|
||||
|
||||
schema-utils@^4.3.2:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz"
|
||||
integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.9"
|
||||
ajv "^8.9.0"
|
||||
ajv-formats "^2.1.1"
|
||||
ajv-keywords "^5.1.0"
|
||||
|
||||
semver@^7.3.2:
|
||||
version "7.7.2"
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz"
|
||||
integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
|
||||
|
||||
"source-map-js@>=0.6.2 <2.0.0":
|
||||
serialize-javascript@^6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
|
||||
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
|
||||
dependencies:
|
||||
randombytes "^2.1.0"
|
||||
|
||||
source-map-js@^1.2.1, "source-map-js@>=0.6.2 <2.0.0":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
|
||||
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
||||
|
||||
source-map-support@~0.5.20:
|
||||
version "0.5.21"
|
||||
resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz"
|
||||
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
|
||||
dependencies:
|
||||
buffer-from "^1.0.0"
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map@^0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
supports-color@^8.0.0:
|
||||
version "8.1.1"
|
||||
resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz"
|
||||
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
tapable@^2.1.1, tapable@^2.2.0:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.npmmirror.com/tapable/-/tapable-2.2.2.tgz"
|
||||
integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==
|
||||
|
||||
terser-webpack-plugin@^5.3.11:
|
||||
version "5.3.14"
|
||||
resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz"
|
||||
integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping" "^0.3.25"
|
||||
jest-worker "^27.4.5"
|
||||
schema-utils "^4.3.0"
|
||||
serialize-javascript "^6.0.2"
|
||||
terser "^5.31.1"
|
||||
|
||||
terser@^5.31.1:
|
||||
version "5.43.1"
|
||||
resolved "https://registry.npmmirror.com/terser/-/terser-5.43.1.tgz"
|
||||
integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==
|
||||
dependencies:
|
||||
"@jridgewell/source-map" "^0.3.3"
|
||||
acorn "^8.14.0"
|
||||
commander "^2.20.0"
|
||||
source-map-support "~0.5.20"
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
|
||||
@ -289,6 +845,19 @@ to-regex-range@^5.0.1:
|
||||
dependencies:
|
||||
is-number "^7.0.0"
|
||||
|
||||
undici-types@~7.10.0:
|
||||
version "7.10.0"
|
||||
resolved "https://registry.npmmirror.com/undici-types/-/undici-types-7.10.0.tgz"
|
||||
integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==
|
||||
|
||||
update-browserslist-db@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz"
|
||||
integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
|
||||
dependencies:
|
||||
escalade "^3.2.0"
|
||||
picocolors "^1.1.1"
|
||||
|
||||
uri-js@^4.2.2:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz"
|
||||
@ -301,9 +870,69 @@ uview-ui@^2.0.38:
|
||||
resolved "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.38.tgz"
|
||||
integrity sha512-6egHDf9lXHKpG3hEjRE0vMx4+VWwKk/ReTf5x18KrIKqdvdPRqO3+B8Unh7vYYwrIxzAWIlmhZ9RJpKI/4UqPQ==
|
||||
|
||||
vanilla-text-mask@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.npmjs.org/vanilla-text-mask/-/vanilla-text-mask-5.1.1.tgz"
|
||||
integrity sha512-JhjoMbCx3DG4GN/M/j06n1bVLeJPsZ7XelyCx8q87M9d5k3jwuWaY+a+09XBq1uOGQAW8QaWska66hOzXNKiQg==
|
||||
|
||||
vue@^3.2.0, vue@3.5.21:
|
||||
version "3.5.21"
|
||||
resolved "https://registry.npmjs.org/vue/-/vue-3.5.21.tgz"
|
||||
integrity sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.5.21"
|
||||
"@vue/compiler-sfc" "3.5.21"
|
||||
"@vue/runtime-dom" "3.5.21"
|
||||
"@vue/server-renderer" "3.5.21"
|
||||
"@vue/shared" "3.5.21"
|
||||
|
||||
vuex@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c"
|
||||
resolved "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz"
|
||||
integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==
|
||||
dependencies:
|
||||
"@vue/devtools-api" "^6.0.0-beta.11"
|
||||
|
||||
watchpack@^2.4.1:
|
||||
version "2.4.4"
|
||||
resolved "https://registry.npmmirror.com/watchpack/-/watchpack-2.4.4.tgz"
|
||||
integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==
|
||||
dependencies:
|
||||
glob-to-regexp "^0.4.1"
|
||||
graceful-fs "^4.1.2"
|
||||
|
||||
webpack-sources@^3.3.3:
|
||||
version "3.3.3"
|
||||
resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.3.3.tgz"
|
||||
integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==
|
||||
|
||||
"webpack@^4.36.0 || ^5.0.0", webpack@^5.1.0:
|
||||
version "5.101.3"
|
||||
resolved "https://registry.npmmirror.com/webpack/-/webpack-5.101.3.tgz"
|
||||
integrity sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==
|
||||
dependencies:
|
||||
"@types/eslint-scope" "^3.7.7"
|
||||
"@types/estree" "^1.0.8"
|
||||
"@types/json-schema" "^7.0.15"
|
||||
"@webassemblyjs/ast" "^1.14.1"
|
||||
"@webassemblyjs/wasm-edit" "^1.14.1"
|
||||
"@webassemblyjs/wasm-parser" "^1.14.1"
|
||||
acorn "^8.15.0"
|
||||
acorn-import-phases "^1.0.3"
|
||||
browserslist "^4.24.0"
|
||||
chrome-trace-event "^1.0.2"
|
||||
enhanced-resolve "^5.17.3"
|
||||
es-module-lexer "^1.2.1"
|
||||
eslint-scope "5.1.1"
|
||||
events "^3.2.0"
|
||||
glob-to-regexp "^0.4.1"
|
||||
graceful-fs "^4.2.11"
|
||||
json-parse-even-better-errors "^2.3.1"
|
||||
loader-runner "^4.2.0"
|
||||
mime-types "^2.1.27"
|
||||
neo-async "^2.6.2"
|
||||
schema-utils "^4.3.2"
|
||||
tapable "^2.1.1"
|
||||
terser-webpack-plugin "^5.3.11"
|
||||
watchpack "^2.4.1"
|
||||
webpack-sources "^3.3.3"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user