first commit
393
app.js
Normal file
@ -0,0 +1,393 @@
|
||||
// 引入封装加密包
|
||||
const aes = require('./utils/aes')
|
||||
App({
|
||||
|
||||
onLaunch: function(e) {
|
||||
var t = this;
|
||||
const query = e.query
|
||||
const inviter_nickname = query.uuid || ''
|
||||
console.log("邀请人id", inviter_nickname)
|
||||
wx.setStorageSync('inviter_nickname', inviter_nickname);
|
||||
this.globalData.launchOptions = e,
|
||||
this.getUserInfo().then(function() {
|
||||
console.log(e)
|
||||
}).catch(function(e) {
|
||||
console.error("获取用户信息失败:", e);
|
||||
});
|
||||
},
|
||||
getCurrentTabbar(selected, that) {
|
||||
if (typeof that.getTabBar === 'function' &&
|
||||
that.getTabBar()) {
|
||||
that.getTabBar().setData({
|
||||
selected: selected
|
||||
})
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
console.log('执行app.jsonShow')
|
||||
console.log(1)
|
||||
},
|
||||
getPopupConfig() {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.apiRequest({
|
||||
url: '/popup-config/', // 后端接口地址
|
||||
method: 'POST',
|
||||
success: res => {
|
||||
console.log(res)
|
||||
if (res.data) {
|
||||
const { is_enabled, popup_type, content } = res.data.data;
|
||||
|
||||
// 存储到本地缓存
|
||||
wx.setStorageSync('popupEnabled', is_enabled);
|
||||
wx.setStorageSync('popupType', popup_type);
|
||||
wx.setStorageSync('popupContent', content);
|
||||
|
||||
console.log('弹窗配置已成功获取');
|
||||
resolve(res.data.data); // 返回获取到的数据
|
||||
} else {
|
||||
console.warn('弹窗数据获取失败');
|
||||
reject(new Error('弹窗数据获取失败'));
|
||||
}
|
||||
},
|
||||
fail: error => {
|
||||
console.error('请求失败:', error);
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
广告(){
|
||||
wx.navigateTo({
|
||||
url: "/pages/details/details",
|
||||
success() {
|
||||
console.log('跳转成功');
|
||||
},
|
||||
fail(err) {
|
||||
console.error('跳转失败:', err);
|
||||
}
|
||||
});
|
||||
},
|
||||
checkUpdateVersion() {
|
||||
console.log('检查微信版本是否支持更新机制');
|
||||
if (wx.canIUse('getUpdateManager')) {
|
||||
const updateManager = wx.getUpdateManager();
|
||||
updateManager.onCheckForUpdate(function (res) {
|
||||
console.log('检查新版本', res);
|
||||
if (res.hasUpdate) {
|
||||
updateManager.onUpdateReady(function () {
|
||||
console.log('新版本下载完成');
|
||||
wx.showModal({
|
||||
title: '更新提示',
|
||||
content: '新版本已准备好,是否重启应用?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
console.log('用户确认更新');
|
||||
updateManager.applyUpdate();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
updateManager.onUpdateFailed(function () {
|
||||
console.log('新版本下载失败');
|
||||
wx.showModal({
|
||||
title: '已经有新版本了~',
|
||||
content: '新版本下载失败,请检查网络设置后重试。',
|
||||
showCancel: false,
|
||||
});
|
||||
});
|
||||
} else {
|
||||
console.log('当前是最新版本');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
wx.showModal({
|
||||
title: '温馨提示',
|
||||
content: '当前微信版本过低,无法使用自动更新功能,请升级到最新微信版本后重试。',
|
||||
showCancel: false,
|
||||
});
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 登陆并获取用户信息、token
|
||||
* @param {*} callback
|
||||
*/
|
||||
getUserInfo: async function () {
|
||||
wx.showLoading({
|
||||
title: '正在加载...'
|
||||
});
|
||||
try {
|
||||
let openid = wx.getStorageSync('openid');
|
||||
if (!openid) {
|
||||
const loginRes = await this.login();
|
||||
openid = loginRes.data.userInfo.openid;
|
||||
wx.setStorageSync('openid', openid);
|
||||
this.globalData.hasUserInfo = true;
|
||||
}
|
||||
await this.getinfo(); // 调用 getinfo 方法获取用户信息
|
||||
wx.hideLoading();
|
||||
} catch (error) {
|
||||
console.error('操作失败:', error);
|
||||
wx.hideLoading();
|
||||
throw error; // 将错误向上抛出,让调用者可以捕获
|
||||
}
|
||||
},
|
||||
|
||||
login: function () {
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.login({
|
||||
success: res => {
|
||||
const code = res.code;
|
||||
this.apiRequest({
|
||||
url: '/myapp/login/',
|
||||
method: 'POST',
|
||||
data: {
|
||||
code,
|
||||
data: res.encryptedData,
|
||||
iv: res.iv,
|
||||
Options: this.globalData.launchOptions
|
||||
},
|
||||
success: res => resolve(res),
|
||||
fail: error => reject(error)
|
||||
});
|
||||
},
|
||||
fail: error => reject(error)
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
getinfo: function () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.apiRequest({
|
||||
url: '/myapp/userinfo/',
|
||||
method: 'POST',
|
||||
data: {
|
||||
'openid': wx.getStorageSync('openid'),
|
||||
},
|
||||
success: res => {
|
||||
console.log('获取信息成功', res);
|
||||
this.processUserInfo(res.data.userInfo, res.data.membershipTypeList);
|
||||
resolve();
|
||||
},
|
||||
fail: error => {
|
||||
console.error('获取信息失败:', error);
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
processUserInfo: function (userInfo, membershipTypeList) {
|
||||
// 更新用户信息到本地存储
|
||||
wx.setStorageSync('userId', userInfo.nickname);
|
||||
|
||||
|
||||
wx.setStorageSync('uuid', userInfo.nickname);
|
||||
wx.setStorageSync('openid', userInfo.openid);
|
||||
wx.setStorageSync('token', userInfo.token);
|
||||
wx.setStorageSync('dailyVideoQuota', userInfo.daily_video_quota);
|
||||
wx.setStorageSync('totalParseNum', userInfo.usage_count);
|
||||
wx.setStorageSync('defaultDailyFreeParseNum', userInfo.coins);
|
||||
wx.setStorageSync('isMember', userInfo.is_member);
|
||||
wx.setStorageSync('startTime', userInfo.member_start_time);
|
||||
wx.setStorageSync('endTime', userInfo.member_end_time);
|
||||
wx.setStorageSync('cards', membershipTypeList);
|
||||
wx.setStorageSync('invitees_count', userInfo.invitees_count);
|
||||
wx.setStorageSync('balance', userInfo.balance);
|
||||
// 检查会员状态
|
||||
this.checkMembershipExpiration(userInfo.member_end_time, userInfo.is_member);
|
||||
},
|
||||
|
||||
checkMembershipExpiration: function (endTimeStr, isMember) {
|
||||
if (endTimeStr && isMember) {
|
||||
const currentTimeStamp = Date.now(); // 当前时间戳(毫秒)
|
||||
|
||||
// 判断 endTimeStr 是时间戳还是日期字符串
|
||||
const endTime = typeof endTimeStr === "number"
|
||||
? endTimeStr * 1000 // 如果是秒时间戳,转换为毫秒
|
||||
: new Date(endTimeStr).getTime(); // 如果是字符串,解析为毫秒
|
||||
|
||||
// 验证时间是否有效
|
||||
if (isNaN(endTime)) {
|
||||
console.error("无效的时间格式:", endTimeStr);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("当前时间戳(毫秒):", currentTimeStamp);
|
||||
console.log("会员到期时间戳(毫秒):", endTime);
|
||||
|
||||
// 检查会员是否过期
|
||||
if (currentTimeStamp > endTime) {
|
||||
wx.setStorageSync('isMember', false);
|
||||
console.log('会员已过期,更新会员状态');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
check_status: function() {
|
||||
var e = this;
|
||||
return new Promise(function(t, n) {
|
||||
e.apiRequest({
|
||||
url: "/api/check_status/?param=0",
|
||||
method: "GET",
|
||||
success: function(e) {
|
||||
t(e);
|
||||
},
|
||||
fail: function(e) {
|
||||
n(e);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
globalData: {
|
||||
selected: 0,
|
||||
userInfo: null,
|
||||
hasUserInfo: false,
|
||||
// chatApiDomain: "https://chat.guimiaokeji.com",
|
||||
chatApiDomain: "https://chat.guimiaokeji.com",
|
||||
apiDomain: 'https://kuaiying.bytefunction.com', //生产
|
||||
downloadPrefix: 'https://kuaiying.bytefunction.com/proxy?url=', // 通过代理服务器中转(微信限制资源域名,不同平台cdn域名千变万化)
|
||||
defaultDailyFreeParseNum: 0, //免费次数
|
||||
totalParseNum: 0, //总次数
|
||||
uuid: null,
|
||||
isMember: true, // 假设默认为会员
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
launchOptions:null //页面参数
|
||||
},
|
||||
//chat服务统一调用接口的方法
|
||||
chatApiRequest: function (options) {
|
||||
const timestamp = Date.now();
|
||||
let t = timestamp
|
||||
let x = aes.Encrypt(String(timestamp))
|
||||
return wx.request({
|
||||
url: this.globalData.chatApiDomain + options.url,
|
||||
method: options.method ? options.method : 'GET',
|
||||
enableChunked: options.enableChunked?options.enableChunked:false,
|
||||
header: {
|
||||
'Authorization': 'Bearer ' + wx.getStorageSync('token'),
|
||||
'Accept': 'application/json',
|
||||
'x': x,
|
||||
't': t
|
||||
},
|
||||
dataType: 'json',
|
||||
data: options.data,
|
||||
success: res => {
|
||||
switch (res.statusCode) {
|
||||
case 200:
|
||||
options.success(res);
|
||||
break;
|
||||
case 401:
|
||||
this.toLogin();
|
||||
break;
|
||||
case 422:
|
||||
break;
|
||||
case 404:
|
||||
wx.showToast({
|
||||
title: '请求地址不存在',
|
||||
icon: 'none'
|
||||
})
|
||||
break;
|
||||
default:
|
||||
wx.showToast({
|
||||
title: res.data.error,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
},
|
||||
fail: res => {
|
||||
if (options.fail) {
|
||||
options.fail(res);
|
||||
}
|
||||
},
|
||||
complete: res => {
|
||||
if (options.complete) {
|
||||
options.complete(res);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
//全局统一调用接口的方法
|
||||
apiRequest: function (options) {
|
||||
const timestamp = Date.now();
|
||||
let t = timestamp
|
||||
let x = aes.Encrypt(String(timestamp))
|
||||
wx.request({
|
||||
url: this.globalData.apiDomain + options.url,
|
||||
method: options.method ? options.method : 'GET',
|
||||
header: {
|
||||
'Authorization': 'Bearer ' + wx.getStorageSync('token'),
|
||||
'Accept': 'application/json',
|
||||
'x': x,
|
||||
't': t
|
||||
},
|
||||
dataType: 'json',
|
||||
data: options.data,
|
||||
success: res => {
|
||||
switch (res.statusCode) {
|
||||
case 200:
|
||||
options.success(res);
|
||||
break;
|
||||
case 401:
|
||||
this.toLogin();
|
||||
break;
|
||||
case 422:
|
||||
break;
|
||||
case 404:
|
||||
wx.showToast({
|
||||
title: '请求地址不存在',
|
||||
icon: 'none'
|
||||
})
|
||||
break;
|
||||
default:
|
||||
wx.showToast({
|
||||
title: res.data.message,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
},
|
||||
fail: res => {
|
||||
if (options.fail) {
|
||||
options.fail(res);
|
||||
}
|
||||
},
|
||||
complete: res => {
|
||||
if (options.complete) {
|
||||
options.complete(res);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 上传图片
|
||||
uploadFile: function (filePath) {
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.uploadFile({
|
||||
url: this.globalData.apiDomain + "/myapp/upload_image/", // 上传的服务器接口地址
|
||||
filePath: filePath,
|
||||
name: 'image_file',
|
||||
success: (res) => {
|
||||
if (res.statusCode === 200) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject(res)
|
||||
}
|
||||
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('Upload failed:', err);
|
||||
wx.showToast({
|
||||
title: '上传错误',
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 生成视频额度是否为0
|
||||
noQuota: function(){
|
||||
let dailyVideoQuota = wx.getStorageSync('dailyVideoQuota')
|
||||
return dailyVideoQuota < 1
|
||||
}
|
||||
});
|
60
app.json
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"pages": [
|
||||
"pages/index/index",
|
||||
"pages/mine/mine",
|
||||
"pages/video/video",
|
||||
"pages/extract/extract",
|
||||
"pages/users/users",
|
||||
"pages/agent/agent",
|
||||
"pages/invite/invite",
|
||||
"pages/faq/faq",
|
||||
"pages/vip_recharge/vip_recharge",
|
||||
"pages/business_cooperation/business_cooperation",
|
||||
"pages/invite_incentive/invite_incentive",
|
||||
"pages/video_list/video_list",
|
||||
"pages/aitools/aitools",
|
||||
"pages/details/details",
|
||||
"pages/bot-list/bot-list"
|
||||
|
||||
],
|
||||
"window": {
|
||||
"backgroundTextStyle": "light",
|
||||
"navigationBarBackgroundColor": "#fff",
|
||||
"navigationBarTitleText": "WeChat",
|
||||
"navigationBarTextStyle": "black"
|
||||
},
|
||||
"tabBar": {
|
||||
"custom": true,
|
||||
"color": "#bfbfbf",
|
||||
"selectedColor": "#337AFF",
|
||||
"borderStyle": "black",
|
||||
"backgroundColor": "#ffffff",
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "首页",
|
||||
"iconPath": "images/主页.png",
|
||||
"selectedIconPath": "images/主页点击.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/aitools/aitools",
|
||||
"text": "写文案",
|
||||
"iconPath": "images/AI分析.png",
|
||||
"selectedIconPath": "images/AI分析点击.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/video_list/video_list",
|
||||
"text": "违规检测",
|
||||
"iconPath": "images/文案库.png",
|
||||
"selectedIconPath": "images/文案库点击.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/mine/mine",
|
||||
"text": "我的",
|
||||
"iconPath": "images/我的.png",
|
||||
"selectedIconPath": "images/我的点击.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sitemapLocation": "sitemap.json"
|
||||
}
|
10
app.wxss
Normal file
@ -0,0 +1,10 @@
|
||||
/**app.wxss**/
|
||||
.container {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 200rpx 0;
|
||||
box-sizing: border-box;
|
||||
}
|
44
custom-tab-bar/index.js
Normal file
@ -0,0 +1,44 @@
|
||||
Component({
|
||||
data: {
|
||||
selected: 0,
|
||||
color: "#bfbfbf",
|
||||
selectedColor: "#337AFF",
|
||||
list: [
|
||||
{
|
||||
pagePath: "/pages/index/index",
|
||||
iconPath: "/images/主页.png",
|
||||
selectedIconPath: "/images/主页点击.png",
|
||||
text: "首页"
|
||||
},
|
||||
{
|
||||
pagePath: "/pages/aitools/aitools",
|
||||
iconPath: "/images/AI分析.png",
|
||||
selectedIconPath: "/images/AI分析.png",
|
||||
text: "写文案"
|
||||
},
|
||||
{
|
||||
pagePath: "/pages/video_list/video_list",
|
||||
iconPath: "/images/文案库.png",
|
||||
selectedIconPath: "/images/文案库点击.png",
|
||||
text: "违规检测"
|
||||
},
|
||||
{
|
||||
pagePath: "/pages/mine/mine",
|
||||
iconPath: "/images/my.png",
|
||||
selectedIconPath: "/images/我的点击.png",
|
||||
text: "我的"
|
||||
}
|
||||
]
|
||||
},
|
||||
attached() {},
|
||||
methods: {
|
||||
switchTab(e) {
|
||||
const data = e.currentTarget.dataset
|
||||
const url = data.path
|
||||
console.log(data)
|
||||
wx.switchTab({
|
||||
url
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
3
custom-tab-bar/index.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"component": true
|
||||
}
|
8
custom-tab-bar/index.wxml
Normal file
@ -0,0 +1,8 @@
|
||||
<view class="tab-bar">
|
||||
<block wx:for="{{list}}" wx:key="index">
|
||||
<view class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
|
||||
<image class="tab-bar-icon" src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></image>
|
||||
<text class="tab-bar-text" style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</text>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
35
custom-tab-bar/index.wxss
Normal file
@ -0,0 +1,35 @@
|
||||
.tab-bar {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
background-color: #222238;
|
||||
border-top:solid 1px rgba(233, 213, 213,0.5);
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
z-index: 9999; /* 确保 z-index 足够高 */
|
||||
}
|
||||
|
||||
.tab-bar-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex: 1;
|
||||
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
|
||||
.tab-bar-icon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.tab-bar-text {
|
||||
margin-bottom: 10px;
|
||||
font-size: 12px;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
BIN
icons/back.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
icons/file.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
icons/folder.png
Normal file
After Width: | Height: | Size: 868 B |
BIN
icons/lw.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
images/1.jpg
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
images/1.png
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
images/2.jpg
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
images/2.png
Normal file
After Width: | Height: | Size: 199 KiB |
BIN
images/3.jpg
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
images/4.jpg
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
images/64dcf0661ce0234eaf713af1ebfecf1.jpg
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
images/AI分析.png
Normal file
After Width: | Height: | Size: 920 B |
BIN
images/AI分析点击.png
Normal file
After Width: | Height: | Size: 949 B |
BIN
images/ChatGPT-copy.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
images/Likee.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
images/Runwayml.png
Normal file
After Width: | Height: | Size: 896 B |
BIN
images/Twitter.jpg
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
images/VIP.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
images/YouTube.jpg
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
images/aws.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
images/butterfly-icon.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
images/delete.png
Normal file
After Width: | Height: | Size: 1022 B |
BIN
images/dianshu.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
images/f.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/header.jpg
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
images/huiyuan.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
images/icon-clear-active.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
images/icon-clear.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
images/icon-faq.png
Normal file
After Width: | Height: | Size: 680 B |
BIN
images/icon-home-selected.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
images/icon-home.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
images/icon-lock.png
Normal file
After Width: | Height: | Size: 832 B |
BIN
images/icon-me-selected.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
images/icon-me.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
images/icon-more.png
Normal file
After Width: | Height: | Size: 564 B |
BIN
images/icon-set.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
images/icon-upload.png
Normal file
After Width: | Height: | Size: 853 B |
BIN
images/index.jpg
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
images/index.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
images/indexs.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
images/instagram.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
images/link_icon.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/loading.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
images/logo-365yg.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
images/logo-douyin.png
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
images/logo-gitShow.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
images/logo-meipai.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
images/logo-miaopai.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
images/logo-microview.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
images/me-bg.jpg
Normal file
After Width: | Height: | Size: 38 KiB |
BIN
images/my.png
Normal file
After Width: | Height: | Size: 8.0 KiB |
BIN
images/mys.png
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
images/radar.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
images/share.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
images/submit_success.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
images/t.jpg
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/t.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
images/tiktok-logo.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
images/tiktok.png
Normal file
After Width: | Height: | Size: 851 B |
BIN
images/timg.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
images/upload.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
images/upload_icon.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
images/y.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
images/youtube.png
Normal file
After Width: | Height: | Size: 577 B |
BIN
images/主页.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
images/主页点击.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
images/二维码.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
images/人工智能机器人.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
images/人民币.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
images/代理商.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
images/任务进程.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
images/会员、vip.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
images/兑换码.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
images/公众号二维码.jpg
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
images/关闭.png
Normal file
After Width: | Height: | Size: 588 B |
BIN
images/写作.png
Normal file
After Width: | Height: | Size: 957 B |
BIN
images/分享.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
images/分享2.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
images/分支.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
images/分类.png
Normal file
After Width: | Height: | Size: 502 B |
BIN
images/切换角色.png
Normal file
After Width: | Height: | Size: 794 B |
BIN
images/多素材.png
Normal file
After Width: | Height: | Size: 841 B |
BIN
images/客服.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
images/客服二维码.jpg
Normal file
After Width: | Height: | Size: 175 KiB |
BIN
images/客服优先.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
images/帮助.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
images/帮助2.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
images/平台.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
images/我的.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
images/我的点击.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
images/手.png
Normal file
After Width: | Height: | Size: 917 B |
BIN
images/接口配置.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
images/搜索.png
Normal file
After Width: | Height: | Size: 1.1 KiB |