Commit 1fca1469 authored by 谢卓城's avatar 谢卓城

first commit

parents
Pipeline #128 failed with stages
File added
//app.js
App({
onLaunch: function () {
// 展示本地存储能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
}
})
// 获取用户信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
},
globalData: {
userInfo: null
}
})
\ No newline at end of file
{
"pages":[
"pages/Home/index",
"pages/Cart/index",
"pages/index/index",
"pages/logs/logs"
],
"entryPagePath": "pages/Cart/index",
"tabBar": {
"list": [{
"pagePath": "pages/Home/index",
"iconPath": "@iconPathComponent",
"selectedIconPath": "@selectedIconPathComponent",
"text": "首页"
}, {
"pagePath": "pages/Cart/index",
"iconPath": "@iconPathAPI",
"selectedIconPath": "@selectedIconPathAPI",
"text": "购物车"
}]
},
"networkTimeout": {
"request": 10000,
"downloadFile": 10000
},
"window":{
"backgroundTextStyle":"dark",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "Weixin",
"navigationBarTextStyle":"black"
},
"useExtendedLib": {
"weui": true
},
"themeLocation": "theme.json",
"style": "v2",
"sitemapLocation": "sitemap.json"
}
/**app.wxss**/
.container {
padding: 0;
}
<template name="foot">
<navigator class="page-foot" openType="switchTab" url="/page/component/index" hover-class="none">
<image class="icon-foot" src="../image/green_tri.png"></image>
</navigator>
</template>
\ No newline at end of file
<template name="head">
<view class="page-head">
<view class="page-head-title">{{title}}</view>
<view class="page-head-line"></view>
<view wx:if="{{desc}}" class="page-head-desc">{{desc}}</view>
</view>
</template>
\ No newline at end of file
<svg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'> <path fill-opacity='.9' fill-rule='evenodd' d='M6.21 5.867l.744 12.51c.023.387.344.69.732.69h6.628a.733.733 0 0 0 .732-.69l.745-12.51H6.209zm10.683 0l-.749 12.575a1.833 1.833 0 0 1-1.83 1.725H7.686c-.97 0-1.773-.756-1.83-1.725L5.107 5.867H3.208v-.642c0-.253.206-.458.459-.458h14.666c.253 0 .459.205.459.458v.642h-1.9zm-4.06-3.117c.253 0 .459.205.459.458v.642H8.708v-.642c0-.253.206-.458.459-.458h3.666zm-4.125 5.5h1.1l.459 8.25h-1.1l-.459-8.25zm3.484 0h1.1l-.459 8.25h-1.1l.459-8.25z'/></svg>
\ No newline at end of file
<svg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'> <path fill-opacity='.9' fill-rule='evenodd' d='M17.678 11.591a3.483 3.483 0 0 0-4.964-4.887c-.177.176-.4.391-.672.648l-.754.71-.755-.71a32.337 32.337 0 0 1-.671-.648 3.483 3.483 0 0 0-4.927 0 3.481 3.481 0 0 0-.05 4.876l6.403 6.402 6.39-6.39zM4.158 5.926a4.583 4.583 0 0 1 6.481 0c.168.167.384.376.649.625.264-.25.48-.458.648-.625a4.583 4.583 0 0 1 6.531 6.431l-6.531 6.532a.917.917 0 0 1-1.297 0l-6.531-6.531a4.584 4.584 0 0 1 .05-6.432z'/></svg>
\ No newline at end of file
<svg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'> <path fill-opacity='.9' fill-rule='evenodd' d='M14.613 13.09l3.613-3.521-4.993-.726L11 4.32 8.767 8.843l-4.993.726 3.613 3.522-.853 4.972L11 15.716l4.466 2.347-.853-4.972zM11 16.959L6.717 19.21a.917.917 0 0 1-1.33-.966l.818-4.77-3.465-3.377a.917.917 0 0 1 .508-1.563l4.789-.696 2.141-4.34a.917.917 0 0 1 1.644 0l2.141 4.34 4.789.696a.917.917 0 0 1 .508 1.563l-3.465 3.378.818 4.769a.917.917 0 0 1-1.33.966L11 16.958z'/></svg>
\ No newline at end of file
// pages/Cart/index.js
Page({
/**
* 页面的初始数据
*/
data: {
goods:[],
imageUrl:'../../image/640.jpeg',
imageIcon:'../../image/group_portrait.png',
totalPrice:100,
slideButtons: [{
type: 'warn',
text: '删除',
extClass: 'test',
src: 'icon_del.svg', // icon的路径
}],
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
let goods = [];
for (let index = 0; index < 20; index++) {
goods.push({
isSelect:(index % 2),
goodsPrice:(199 % 3)+index,
goodsCount:index,
goodsUrl:(index % 2)?'../../image/plus_dark.png':'../../image/640.jpeg',
goodsName:'90分户外休闲中长厚款鹅绒羽绒服' + index,
goodsSpec:'XL;黑色 2' + index
})
}
this.setData({
goods:goods
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
slideButtonTap(e) {
console.log('slide button tap', e.detail)
}
})
\ No newline at end of file
{
"usingComponents": {
"mp-cells": "weui-miniprogram/cells/cells",
"mp-cell": "weui-miniprogram/cell/cell",
"mp-slideview": "weui-miniprogram/slideview/slideview"
}
}
\ No newline at end of file
<!--pages/Cart/index.wxml-->
<view class="container" hover-class="none" hover-stop-propagation="false">
<mp-cells ext-class="table-view">
<block wx:for="{{goods}}" wx:key="itme" wx:for-item="good">
<mp-slideview show="{{false}}" buttons="{{slideButtons}}" bindbuttontap="slideButtonTap">
<mp-cell hover>
<view class="goods-view">
<image class="goods-select-icon" src="{{good.isSelect?'../../image/check_f.png':'../../image/check_t.png'}}" lazy-load="false" binderror="" bindload=""/>
<image class="goods-icon" src="{{imageIcon}}" mode="aspectFill" lazy-load="false" binderror="" bindload=""/>
</view>
<view slot="footer">说明文字</view>
</mp-cell>
</mp-slideview>
</block>
</mp-cells>
<view class="shopping-cart-counter-view" hover-class="none" hover-stop-propagation="false">
<view class="all-select-view" hover-class="none" hover-stop-propagation="false">
<image class="select-button" src="../../image/check_f.png" />
<text class="" selectable="false" space="false" decode="false">已选择</text>
</view>
<view class="left-price">
<view class="total" hidden="{{noSelect}}">合计:¥ {{totalPrice}}</view>
</view>
<view class="to-pay-btn">
<navigator url="">去结算</navigator>
</view>
</view>
</view>
\ No newline at end of file
/* pages/Cart/index.wxss */
.container {
/* position: relative; */
}
.cell-view {
/* height: 100px; */
}
.goods-view {
display: flex;
align-items: center;
}
.goods-select-icon {
width: 18px;
height: 18px;
}
.goods-icon {
margin-left: 5px;
width: 75px;
height: 75px;
}
.shopping-cart-counter-view {
background-color: rebeccapurple;
display: flex;
justify-content: space-between;
width: 100%;
height: 100rpx;
position: fixed;
bottom: 0;
left: 0;
border-bottom: 1px solid #eee;
border-top: 1px solid #eee;
background-color: #fff;
z-index: 999;
}
.shopping-cart-counter-view .all-select-view {
display: flex;
align-items: center;
margin-left: 15px;
width: 200px;
height: 100%;
}
.shopping-cart-counter-view .all-select-view .select-button {
margin-right: 5px;
width: 18px;
height: 18px;
}
.shopping-cart-counter-view .left-price {
display: flex;
width: 510rpx;
justify-content: flex-endsss;
line-height: 100rpx;
font-size: 28rpx;
box-sizing: border-box;
}
.shopping-cart-counter-view .total {
color: #e64340;
padding-right: 30rpx;
}
.shopping-cart-counter-view .to-pay-btn {
width: 240rpx;
text-align: center;
line-height: 100rpx;
background-color: #e64340;
font-size: 32rpx;
color: #fff;
}
\ No newline at end of file
// pages/Home/index.js
const windowHeight = wx.getSystemInfoSync().windowHeight
const windowWidth = wx.getSystemInfoSync().windowWidth
const colorLight = 'rgba(0, 0, 0, .9)'
const colorDark = 'rgba(255, 255, 255, .8)'
Page({
/**
* 页面的初始数据
*/
data: {
windowHeight: windowHeight,
windowWidth: windowWidth,
inputShowed: false,
inputVal: "",
i: 0,
indicatorDots: true,
vertical: false,
autoplay: false,
interval: 2000,
duration: 500,
imageUrl:'../../image/640.jpeg',
imageIcon:'../../image/group_portrait.png',
bannerList:['../../image/640.jpeg','../../image/640.jpeg'],
classifications:["居家","鞋包配饰","服装", "电器","婴童","饮食", "特色区","洗护","餐厨","文体"],
activityList:[{
icon: '../../image/640.jpeg',
text: "新品热销榜",
subText: "热销爆款不容错过",
id: 1
},{
icon: '../../image/640.jpeg',
text: "新品热销榜",
subText: "热销爆款不容错过",
id: 2
},{
icon: '../../image/640.jpeg',
text: "新品热销榜",
subText: "热销爆款不容错过",
id: 3
},{
icon: '../../image/640.jpeg',
text: "新品热销榜",
subText: "热销爆款不容错过",
id: 4
},],
iconList:[]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// this.setData({
// search: this.search.bind(this)
// })
this.loadNewData()
},
search: function (value) {
return new Promise((resolve, reject) => {
if (this.data.i % 2 === 0) {
setTimeout(() => {
resolve([{text: '搜索结果', value: 1}, {text: '搜索结果2', value: 2}])
}, 200)
} else {
setTimeout(() => {
resolve([])
}, 200)
}
this.setData({
i: this.data.i + 1
})
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
loadNewData: function() {
this.data.iconList = []
this.loadMoreData()
},
loadMoreData: function() {
let list = this.data.iconList;
for (let index = 0; index < 20; index++) {
list.push({
icon: (index % 2)?'../../image/plus_dark.png':'../../image/640.jpeg',
text: "琴岛智能除螨电热毯 安全定时 智能控温" + index,
price: (171 + index)
})
}
this.setData({
iconList: list,
});
},
/**
* 用户搜索
*/
selectAction: function (e) {
this.showToastText('搜索成功!!')
console.log('select result', e)
},
cellAction:function (e) {
this.showToastText('点击了'+e.currentTarget.dataset['index'])
console.log('cellAction result', e.currentTarget.dataset['index'])
},
classificationAction: function(e) {
this.showToastText('点击了'+e.currentTarget.dataset['index'])
console.log('classificationAction result', e.currentTarget.dataset['index'])
},
onPullDownRefresh: function(e) {
this.loadNewData()
console.log('onPullDownRefresh result', this.data.iconList)
},
onReachBottom: function(e) {
this.loadMoreData()
console.log('onReachBottom result',this.data.iconList)
},
showToastText: function(text) {
wx.showToast({
title: text,
icon: 'success',
duration: 2000
})
}
})
\ No newline at end of file
{
"usingComponents": {
"mp-searchbar": "weui-miniprogram/searchbar/searchbar",
"mp-icon": "weui-miniprogram/icon/icon"
},
"enablePullDownRefresh": true
}
\ No newline at end of file
<!--pages/Home/index.wxml-->
<view class="container">
<!-- <scroll-view
scroll-y="true"
style="height: {{windowHeight}}px;"> -->
<view class='search-container' bindtap="selectAction">
<view class='search-view'>
<view class='search-v'>
<image src='../../image/search.png' class="search-icon"></image>
<text class="search-text"> 搜索商品,发现好物</text>
</view>
</view>
</view>
<view class="swiper-view">
<swiper class="swiper" indicator-dots="true" autoplay="true" interval="5000" duration="1000">
<block wx:for="{{bannerList}}" wx:key="itme" wx:for-item="url">
<swiper-item>
<image src="{{url}}" class="slide-image" mode="aspectFill"/>
</swiper-item>
</block>
</swiper>
</view>
<view class="classification-view">
<view class="classification-container" hover-class="none" hover-stop-propagation="false">
<block wx:for="{{classifications}}" wx:key="itme" wx:for-item="text">
<view class="itme-view" hover-class="none" hover-stop-propagation="false" bindtap="classificationAction" data-index="{{text}}">
<image class="itme-icon" src="../../image/group_portrait.png" mode="aspectFill" />
<text class="itme-text">{{text}}</text>
</view>
</block>
</view>
</view>
<view class="recommend-view">
<image class="recommend-image" src="{{imageUrl}}" mode="aspectFill"/>
</view>
<view class="activity-view">
<block wx:for="{{activityList}}" wx:key="itme" wx:for-item="obj">
<view class="activity-container">
<image class="activity-image" src="{{imageUrl}}" mode="aspectFill"/>
<text class="activity-text" selectable="false" decode="false">{{obj.text}}</text>
<text class="activity-text" selectable="false" space="false" decode="false">{{obj.subText}}</text>
</view>
</block>
</view>
<view class="title-view">
<text class="title">每日精选</text>
</view>
<view class="list-grids">
<block wx:for="{{iconList}}" wx:key="itme" wx:for-item="obj">
<view class="cell-container" bindtap="cellAction" data-index="{{obj.text}}">
<image src="{{obj.icon}}" class="icon-view" mode="aspectFill"/>
<view class="icon-view-text">
<text>{{obj.text}}</text>
</view>
<view class="price-text">
<text>¥{{obj.price}}</text>
</view>
</view>
</block>
</view>
<!-- </scroll-view> -->
</view>
\ No newline at end of file
/* pages/Home/index.wxss */
.swiper-view {
width: 100%;
height: 170px;
}
.swiper {
height: 100%;
}
.slide-image {
width: 100%;
}
.search-container {
width: 100%;
height: 44px;
display:flex ;
align-items:center;
justify-content:center ;
/* background-color: rebeccapurple; */
background-color: rgba(240, 241, 242, 0.5);
}
.search-view {
border-radius: 25px;
width: calc(100% - 40px);
height: 30px;
background-color: rgb(243, 243, 243);
}
.search-v {
display:flex ;
align-items:center;
justify-content:center;
margin-top: 5px;
}
.search-icon {
width: 16px;
height: 16px;
margin-right: 5px;
}
.search-text {
font-size: 12px;
color: rgb(193, 193, 193);
}
.swiper-view {
height: 170px;
background-color: royalblue;
}
.classification-view {
height: 231px;
position: relative;
/* background-color: lawngreen; */
}
.classification-container {
position: absolute;
display: flex;
flex-wrap: wrap;
justify-content: center;
width: calc( 100% - 40px);
height: calc( 100% - 40px);
left: 20px;
top: 30px;
}
.itme-view {
margin-right: 7.5px;
margin-left: 7.5px;
width: calc( (100% - 100px) / 5);
height: calc( (100% - 29px) / 2);
text-align: center;
color: rgb(102, 102,102);
}
.itme-icon {
width: 45px;
height: 45px;
}
.itme-text {
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-size: 13px;
}
.recommend-view {
height: 104px;
}
.recommend-image {
width: calc(100% - 15px);
height: 100%;
margin-left: 7.5px;
}
.activity-view {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
align-content:space-between;
height: 275px;
margin-top: 27px;
width: 100%;
}
.activity-container {
width: calc( (100% - 15px ) / 2);
height: calc( (100% - 5px ) / 2);
background-color: rosybrown;
position: relative;
}
.activity-image {
width: 100%;
height: 100%;
position: absolute;
}
.activity-text {
position: relative;
display: block;
margin-left: 15px;
color: rebeccapurple;
}
.title-view {
margin-top: 42px;
border-top: solid;
border-color: rgba(197, 197, 197, 0.2);
}
.title {
margin-left: 19px;
margin-top: 15px;
}
.list-grids {
width: 100%;
margin-top: 16px;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
background-color: rgba(197, 197, 197, 0.2);
}
.cell-container {
margin-top: 2px;
background-color:white;
width: calc( (100% - 6px) / 2 );
height: 254px;
}
.icon-view {
margin-top: 15px;
margin-left: 15px;
background-color: seagreen;
width: calc( 100% - 30px);
height: 157px;
}
.icon-view-text{
margin-left: 15px;
width: calc( 100% - 30px);
overflow: hidden;
text-overflow: ellipsis;
word-wrap: break-word;
white-space: normal !important;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.price-text {
margin-left: 15px;
color: lightgray;
}
\ No newline at end of file
// pages/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<!--pages/index/index.wxml-->
<text>pages/index/index.wxml</text>
/* pages/index/index.wxss */
\ No newline at end of file
// pages/logs/logs.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"usingComponents": {}
}
\ No newline at end of file
<!--pages/logs/logs.wxml-->
<text>pages/logs/logs.wxml</text>
/* pages/logs/logs.wxss */
\ No newline at end of file
{
"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html",
"rules": [{
"action": "allow",
"page": "*"
}]
}
\ No newline at end of file
{
"light": {
"navigationBarTextStyle": "black",
"navigationBarBackgroundColor": "#F7F7F7",
"backgroundColor": "#F7F7F7",
"tabBarColor": "#7A7E83",
"tabBarSelectedColor": "#3cc51f",
"tabBarBorderStyle": "black",
"tabBarBackgroundColor": "#F7F7F7",
"iconPathComponent": "image/icon_component.png",
"selectedIconPathComponent": "image/icon_component_HL.png",
"iconPathAPI": "image/icon_API.png",
"selectedIconPathAPI": "image/icon_API_HL.png",
"iconPathCloud": "image/icon_cloud.png",
"selectedIconPathCloud": "image/icon_cloud_HL.png",
"backgroundTextStyle": "dark"
},
"dark": {
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#1F1F1F",
"backgroundColor": "#1F1F1F",
"tabBarColor": "#FFFFFFCC",
"tabBarSelectedColor": "#51A937",
"tabBarBorderStyle": "white",
"tabBarBackgroundColor": "#1F1F1F",
"iconPathComponent": "image/icon_component_dark.png",
"selectedIconPathComponent": "image/icon_component_HL.png",
"iconPathAPI": "image/icon_API_dark.png",
"selectedIconPathAPI": "image/icon_API_HL.png",
"iconPathCloud": "image/icon_cloud_dark.png",
"selectedIconPathCloud": "image/icon_cloud_HL.png",
"backgroundTextStyle": "light"
}
}
\ No newline at end of file
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
module.exports = {
formatTime: formatTime
}
/**app.wxss**/
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 0;
box-sizing: border-box;
}
{
"description": "项目配置文件",
"miniprogramRoot": "CJPremiumMember/",
"packOptions": {
"ignore": []
},
"setting": {
"urlCheck": true,
"scopeDataCheck": false,
"coverView": true,
"es6": true,
"postcss": true,
"compileHotReLoad": false,
"preloadBackgroundData": false,
"minified": true,
"autoAudits": false,
"newFeature": false,
"uglifyFileName": false,
"uploadWithSourceMap": true,
"useIsolateContext": true,
"nodeModules": false,
"enhance": false,
"useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"useMultiFrameRuntime": false,
"useApiHook": true,
"showShadowRootInWxmlPanel": true,
"packNpmManually": false,
"packNpmRelationList": [],
"minifyWXSS": true,
"bundle": false
},
"compileType": "miniprogram",
"libVersion": "2.14.1",
"appid": "wx8b5f30d2d4a5a6e0",
"projectname": "ChengjingPremiumMember",
"debugOptions": {
"hidedInDevtools": []
},
"scripts": {},
"isGameTourist": false,
"simulatorType": "wechat",
"simulatorPluginLibVersion": {},
"condition": {
"search": {
"list": []
},
"conversation": {
"list": []
},
"game": {
"list": []
},
"plugin": {
"list": []
},
"gamePlugin": {
"list": []
},
"miniprogram": {
"list": []
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment