This commit is contained in:
王鹏
2025-08-14 14:52:01 +08:00
commit 0c2edb6036
1551 changed files with 41152 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
import tool from "../../../utils/tool"
Page({
/**
* 页面的初始数据
*/
data: {
clientLogo: null,
version: null,
title: null,
introduce: null
},
goback(){
wx.navigateBack(1)
},
onLoad(){
const clientConfig = tool.data.get('CLIENT_CONFIG')
let introduce = clientConfig.CLIENT_ABOUTUS
let version = clientConfig.CLIENT_VERSION
let clientLogo = clientConfig.CLIENT_LOGO
let title = clientConfig.CLIENT_TITLE
this.setData({introduce,version,clientLogo,title})
}
})

View File

@@ -0,0 +1,7 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-sticky": "@vant/weapp/sticky/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,18 @@
<van-sticky>
<van-nav-bar
title="关于我们"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="about">
<image class="about_logo" src="{{clientLogo}}" />
<text class="client_title">{{title}}</text>
<text class="about_version">{{version}}</text>
</view>
<view class="card-blank">
<rich-text nodes="{{introduce}}" />
</view>

View File

@@ -0,0 +1,30 @@
page{
background-color: #fff;
}
.about{
display: flex;
flex-direction: column;
align-items: center;
color: #444;
}
.about_logo{
margin: 50px 0 20px 0;
width: 70px;
height: 70px;
border-radius: 4px;
}
.about_version{
margin-bottom: 50px;
margin-top: 10px;
}
.about_introduce{
text-indent: 2em;
}
.client_title{
font-size: 24px;
}

View File

@@ -0,0 +1,24 @@
import kamiApi from "../../../api/kamiApi"
import tool from "../../../utils/tool"
Page({
data: {
code: null,
logoImg: null,
},
goback(){
wx.navigateBack(1)
},
handleJiHuo(){
let code = this.data.code
kamiApi.active({code}).then(res=>{
})
},
onLoad(){
const clientConfig = tool.data.get('CLIENT_CONFIG')
this.setData({logoImg: clientConfig.CLIENT_LOGO})
}
})

View File

@@ -0,0 +1,7 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-sticky": "@vant/weapp/sticky/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,18 @@
<van-sticky>
<van-nav-bar
title="卡密激活"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="activation">
<image class="logoImg" src="{{logoImg}}" />
<input type="text" model:value="{{code}}" placeholder="请输入卡密"/>
<van-button type="info" block bindtap="handleJiHuo">激活</van-button>
<text class="explain">说明:卡密只能使用一次,激活后卡密将无效</text>
</view>

View File

@@ -0,0 +1,31 @@
page{
background-color: #fff;
}
.activation{
padding: 30px;
box-sizing: border-box;
text-align: center;
}
.activation image{
width: 100px;
height: 100px;
}
.activation input{
background-color: #F7F7F7;
padding: 10px;
border-radius: 4px;
margin: 60px 0 40px 0 ;
}
.explain{
color: #666;
font-size: 12px;
display: block;
position: fixed;
bottom: 30px;
}

View File

@@ -0,0 +1,162 @@
import articleApi from "../../../api/articleApi"
import userArticleApi from '../../../api/userArticleApi'
import Dialog from '@vant/weapp/dialog/dialog';
import clientConfig from "../../../config/index"
import tool from "../../../utils/tool"
let rewardedVideoAd = null
Page({
previewImage(e) {
const url = e.currentTarget.dataset.url;
wx.previewImage({
current: url,
urls: [url]
});
},
data: {
article: {},
downloaded: false,
collectioned: false
},
goback() {
const pages = getCurrentPages();
if (pages.length > 1) {
wx.navigateBack(1)
} else {
wx.switchTab({
url: '/pages/tabpages/index/index'
})
}
},
handleCollection() {
let param = {
id: this.data.article.id
}
userArticleApi.addUserArticleCollection(param).then(res => {
if (res.code === 200) {
this.setData({
collectioned: !this.data.collectioned
})
wx.showToast({
title: res.msg,
icon: 'none'
})
}
})
},
handleDownloadNoAd() {
// 复制到剪贴板
wx.setClipboardData({
data: this.data.article.attachmentUrl,
success: function (res) {
wx.showToast({
title: '已复制到剪贴板',
icon: 'none'
})
}
})
},
handleDownloadHasAd() {
let _this = this;
wx.showModal({
title: '温馨提示',
content: '为了持续维护小程序,为大家更新更多优质项目源码。领取免费资料时需要看小广告,即可获取。',
confirmText: '可以理解', // 自定义确认按钮文本
cancelText: '残忍拒绝', // 自定义取消按钮文本
success: function (res) {
if (res.confirm) {
console.log('用户点击确定执行');
_this.openVideoAd();
} else if (res.cancel) {
console.log('用户点击取消操作');
}
}
});
},
onShareAppMessage() {
var that = this;
return {
title: that.article.title,
path: `pages/subpages/articledetail/articledetail?id=${that.article.id}`,
imageUrl: that.article.cover
}
},
openVideoAd() {
if (rewardedVideoAd) {
rewardedVideoAd.show().then(() => {}).catch(() => {
// 失败重试
rewardedVideoAd.load().then(() => rewardedVideoAd.show()).catch(err => {
console.log('激励视频 广告显示失败')
})
})
}
},
onLoad(options) {
// const userId = tool.data.get('USER_INFO').id
let id = options.id
articleApi.detail({
id
}).then(res => {
// res.data.tags = JSON.parse(res.data.tags)
res.data.cover = res.data.fileList[0].fileUrl
this.setData({
article: res.data
})
// if (res.data.downloadUserIds) {
// const downloadUserIds = res.data.downloadUserIds.split(',')
// if (downloadUserIds.includes(userId)) {
// this.setData({downloaded: true})
// // 获取下载链接
// articleApi.getDownLoadLink({id: this.data.article.id}).then(res=>{
// this.setData({
// 'article.link': res.data
// })
// })
// }
// }
if (res.data.collectionUserIds) {
const collectionUserIds = res.data.collectionUserIds.split(',')
if (collectionUserIds.includes(userId)) {
this.setData({
collectioned: true
})
}
}
if(wx.createRewardedVideoAd){
rewardedVideoAd = wx.createRewardedVideoAd({ adUnitId: 'adunit-448866eb135432e9' })
rewardedVideoAd.onLoad(() => {
console.log('onLoad event emit')
})
rewardedVideoAd.onError((err) => {
console.log('onError event emit', err)
})
rewardedVideoAd.onClose((res) => {
if (res && res.isEnded || res === undefined) {
// 复制到剪贴板
wx.setClipboardData({
data: this.data.article.attachmentUrl,
success: function (res) {
wx.showToast({
title: '已复制到剪贴板',
icon: 'none'
})
}
})
} else {
//不下发奖励
}
})
}
})
}
})

View File

@@ -0,0 +1,10 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-tag": "@vant/weapp/tag/index",
"van-divider": "@vant/weapp/divider/index",
"van-dialog": "@vant/weapp/dialog/index",
"van-sticky": "@vant/weapp/sticky/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,69 @@
<van-sticky>
<van-nav-bar
title="资源详情"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="card-blank content">
<!-- <view class="shopcard_content_auth">
<text wx:if="{{article.category == 2}}" style="color: #07C160;">免费
</text>
<text wx:if="{{article.category == 1}}" style="color: #d40909;">付费
</text>
<text wx:else style="color: #E7406B;">{{ data.needScore }} 积分</text>
</view> -->
<image class="cover-image" mode="widthFix" style="width: 100%; height: 200rpx; margin: 10px 0;" src="{{article.cover}}"/>
<!-- 标签区域注释块需要正确闭合 -->
<!-- <view class="tags">
<text>适用:</text>
<van-tag plain type="primary" wx:for="{{ article.tags }}" wx:key="index">
{{ item }}
</van-tag>
</view> -->
<view class="title">{{article.title}}</view>
<van-divider />
<text wx:if="{{article.link}}" class="downloadLink" user-select>链接:{{article.link}}</text>
<van-divider wx:if="{{article.link}}" />
<video wx:if="{{article.video}}" id="myVideo" src='{{article.video}}' controls></video>
<van-divider wx:if="{{article.video}}" />
<!-- 富文本 -->
<rich-text style="line-height: 23px;" nodes="{{article.content}}" />
<view wx:if="{{article.fileList}}" class="screenshot-container">
<view class="screenshot-title">### 项目截图</view>
<view wx:for="{{article.fileList}}" wx:key="index" class="file-item">
<text class="file-index">{{index + 1}}. </text>
<text class="file-name" style="font-size: 12px; ">{{item.fileName}}</text>
<image class="file-image" src="{{item.fileUrl}}" mode="widthFix" style="width: 100%; height: 200rpx; margin: 10px 0;" bindtap="previewImage" data-url="{{item.fileUrl}}"/>
</view>
</view>
<van-divider />
<text class="note">项目价格¥99包含源码 + 远程部署 + 项目问题答疑等服务</text>
<text class="node1">购买源码或者代码定制需求请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view wx:if="{{!downloaded}}" class="article-action">
<!-- <view class="collection" bindtap="handleCollection">
<van-icon color="{{collectioned?'#FFD252':''}}" name="{{collectioned?'star':'star-o'}}" />
<text>收藏</text>
</view> -->
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button >
<!-- <view wx:if="{{article.category == 2}}" class="download" bindtap="handleDownloadHasAd">
<van-button type="primary" round size="small">立即获取</van-button>
</view>
<view wx:if="{{article.category == 1}}" class="download" bindtap="handleDownloadNoAd">
<van-button type="primary" round size="small">立即获取</van-button>
</view> -->
</view>
<van-dialog id="van-dialog" />

View File

@@ -0,0 +1,123 @@
page{
background-color: #fff;
position: relative;
}
.card-blank{
padding: 12px;
}
.title{
font-size: 20px;
font-weight: bold;
margin-bottom: 16px;
display: block;
width: 100%;
height: auto;
margin: 0 auto;
}
.tags{
font-size: 12px;
color: #888;
display: flex;
gap: 6px;
}
.totalPoint{
color: red;
}
.totalPoint text{
font-size: 20px;
}
.van-goods-action{
width: 300px;
margin: auto;
}
.content{
padding-bottom: 23%;
}
.article-action{
padding: 10px 0 15px 0;
width: 100%;
position: fixed;
background-color: #fff;
bottom: 0;
display: flex;
align-items: flex-end;
font-size: 10px;
color: #707070;
justify-content: space-around;
}
.article-action>view{
display: flex;
flex-direction: column;
}
.article-action van-icon{
font-size: 22px;
}
button.share-btn {
border: none;
/* 可以添加其他样式,如背景色、字体大小等 */
background-color: none;
font-size: 17px;
}
.download .van-button{
width: 140px;
height: 36px;
font-size: 16px;
right: 30px;
}
.needScore{
font-size: 14px;
flex-direction: row!important;
align-items: flex-end;
}
.needScore .score{
font-weight: bold;
line-height: 23px;
color: red;
margin-left: 10px;
font-size: 22px;
}
.downloadLink{
display: block;
padding: 10px;
background-color:#F0F0F0;
border-radius: 4px;
}
.note{
display: block;
font-size: 12px;
color: rgb(6, 80, 240);
}
.node1{
margin-top: 15px;
font-size: 12px;
color: rgb(252, 7, 7);
display: block;
text-align: center;
}
.qrcode{
margin: 10px auto 0 auto;
height: 150px;
width: 150px;
display: flex;
justify-content: center;
}
#myVideo{
display: block;
width: 100%;
height: 190px;
}
.screenshot-title {
font-weight: 1000;
margin-top: 5px;
margin-bottom: 5px;
}

View File

@@ -0,0 +1,24 @@
import userArticleApi from "../../../api/userArticleApi"
Page({
data: {
articles: []
},
goback(){
wx.navigateBack(1)
},
onLoad(){
userArticleApi.getUserCollectionArticleList().then(res=>{
if (res.data.length>0) {
res.data.forEach(item=>{
item.tags = JSON.parse(item.tags)
})
}
this.setData({
articles: res.data
})
})
}
})

View File

@@ -0,0 +1,10 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-tag": "@vant/weapp/tag/index",
"article-card": "/components/articlecard/articlecard",
"van-sticky": "@vant/weapp/sticky/index",
"van-empty": "@vant/weapp/empty/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,14 @@
<van-sticky>
<van-nav-bar
title="收藏记录"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="card" wx:for="{{articles}}" wx:key="index">
<article-card data="{{item}}" />
</view>
<van-empty wx:if="{{articles.length==0}}" description="暂时没有收藏记录~" />

View File

@@ -0,0 +1 @@
/* pages/collectrecords/collectrecords.wxss */

View File

@@ -0,0 +1,25 @@
import userArticleApi from "../../../api/userArticleApi"
Page({
data: {
articles: []
},
goback(){
wx.navigateBack(1)
},
onLoad(){
userArticleApi.getUserDownloadArticleList().then(res=>{
if (res.data.length>0) {
res.data.forEach(item=>{
item.tags = JSON.parse(item.tags)
})
}
this.setData({
articles: res.data
})
})
}
})

View File

@@ -0,0 +1,10 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-tag": "@vant/weapp/tag/index",
"article-card": "/components/articlecard/articlecard",
"van-sticky": "@vant/weapp/sticky/index",
"van-empty": "@vant/weapp/empty/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,13 @@
<van-sticky>
<van-nav-bar
title="下载记录"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="card" wx:for="{{articles}}" wx:key="index">
<article-card data="{{item}}" />
</view>
<van-empty wx:if="{{articles.length==0}}" description="暂时没有下载记录~" />

View File

@@ -0,0 +1,17 @@
const app = getApp()
Page({
data: {
instruct: null
},
goback(){
wx.navigateBack(1)
},
onLoad(){
let instruct = app.globalData.clientConfig.CLIENT_INSTRUCT
this.setData({instruct})
}
})

View File

@@ -0,0 +1,7 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-sticky": "@vant/weapp/sticky/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,11 @@
<van-sticky>
<van-nav-bar
title="使用说明"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="card-blank">
<rich-text nodes="{{instruct}}" />
</view>

View File

@@ -0,0 +1,3 @@
page{
background-color: #fff;
}

View File

@@ -0,0 +1,52 @@
import memberApi from "../../../api/memberApi"
import tool from '../../../utils/tool'
Page({
data: {
current: 0,
userInfo: {},
vipLevel: [],
vipTypeList: [],
userMemberInfo: {}
},
goback(){
wx.navigateBack(1)
},
switchActive(e){
this.setData({
current: e.currentTarget.dataset.index
})
},
add(e){
let vipId = this.data.vipTypeList[this.data.current].id
memberApi.add({vipId}).then(res=>{
if (res.code===200) {
wx.showToast({
title: '兑换成功~',
icon: 'none'
})
this.onLoad()
}
})
},
jihuo(){
wx.navigateTo({
url: '/pages/subpages/activation/activation',
})
},
onLoad(){
const userInfo = tool.data.get('USER_INFO')
const clientConfig = tool.data.get('CLIENT_CONFIG')
const userMemberInfo = tool.data.get('USER_MEMBER_INFO')
let vipTypeList = JSON.parse(clientConfig.CLIENT_MEMBER_CATEGORY)
this.setData({
vipTypeList,
userInfo,
userMemberInfo
})
},
})

View File

@@ -0,0 +1,8 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-tag": "@vant/weapp/tag/index",
"van-sticky": "@vant/weapp/sticky/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,42 @@
<van-sticky>
<van-nav-bar
title="兑换会员"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="vip_info">
<text class="nick">{{ userInfo.nickname }}</text>
<van-tag wx:if="{{userMemberInfo}}" color="#F7DB50" text-color="#ad0000">{{userMemberInfo.level}}</van-tag>
<view wx:if="{{userMemberInfo}}" class="member_datetime">
<text class="startTime">{{userMemberInfo.startTime}}</text>
<text>-</text>
<text class="endTime">{{userMemberInfo.endTime}}</text>
</view>
<text wx:else>您目前还不是会员哦~</text>
</view>
<view class="vip_list">
<text>成为会员,全站资源免费下</text>
<view class="{{current===index?'vip_item active':'vip_item'}}" wx:for="{{ vipTypeList }}" wx:key="index"
bindtap="switchActive" data-index="{{index}}">
<text class="vip_duration">{{item.name}}</text>
<view class="vip_score">
所需积分<text class="vip_duration_value"> {{item.needScore}}</text>
</view>
</view>
<van-button type="info" block bindtap="add">确认兑换</van-button>
<van-button type="info" block bindtap="jihuo">激活卡密</van-button>
<view class="vip_explain">
<text>会员服务声明:</text>
<view class="vip_explain_content">
<text>1.在会员有效期内,用户可以免费学习本站所有内容和课程。</text>
<text>2.重复兑换会员服务,会员有效期将在原有基础上顺延。</text>
</view>
</view>
</view>

View File

@@ -0,0 +1,66 @@
page{
background-color: #FFF;
}
.vip_info{
background-color: #1989FA;
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
padding: 24px;
font-size: 12px;
}
.vip_info .nick{
font-size: 26px;
margin: 18px 0;
}
.vip_list{
padding: 20px;
color: #888;
}
.vip_item{
font-size: 12px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px;
border: 1px solid#F4F4FB;
border-radius: 4px;
margin-top: 10px;
}
.vip_list .active{
border: 1px solid #1989FA;
}
.vip_duration,
.vip_duration_value{
font-size: 20px;
font-weight: bold;
color: #1989FA;
}
.vip_list .van-button{
margin-top: 20px;
}
.vip_explain{
font-size: 12px;
margin-top: 30px;
}
.vip_explain_content{
display: flex;
flex-direction: column;
}
.member_datetime{
display: flex;
margin-top: 10px;
gap: 4px;
}

View File

@@ -0,0 +1,47 @@
import scoreLogApi from "../../../api/scoreLogApi"
import scoreApi from '../../../api/scoreApi'
Page({
data: {
residueScore:0,
INScore:0,
OUTScore:0,
scoreLogList:[],
categorys: {
'SIGNIN': '打卡',
'ACTIVEKAMI': '卡密',
'DOWNLOAD': '下载',
'EXCHANGEMEMBER': '兑换会员',
'RECHARGE': '充值'
}
},
goback(){
wx.navigateBack(1)
},
onLoad(){
let page = {
current: 1,
size: 20
}
scoreLogApi.page(page).then(res=>{
this.setData({scoreLogList: res.data.records})
res.data.records.forEach(item=>{
if (item.inOut=="IN") {
this.setData({INScore:this.data.INScore+item.score})
}
if (item.inOut=="OUT") {
this.setData({OUTScore:this.data.OUTScore+item.score})
}
})
})
scoreApi.getUserScore().then(res=>{
this.setData({
residueScore: res.data
})
})
}
})

View File

@@ -0,0 +1,8 @@
{
"usingComponents": {
"van-nav-bar": "@vant/weapp/nav-bar/index",
"van-sticky": "@vant/weapp/sticky/index",
"van-empty": "@vant/weapp/empty/index"
},
"navigationStyle": "custom"
}

View File

@@ -0,0 +1,37 @@
<van-sticky>
<van-nav-bar
title="积分详情"
left-text="返回"
left-arrow
bind:click-left="goback"
/>
</van-sticky>
<view class="card integral_total">
<view class="integral_total_item">
<text class="integral_total_value">{{OUTScore}}</text>
<text class="integral_total_category">出账积分</text>
</view>
<view class="integral_total_item">
<text class="integral_total_value totalPoint">{{residueScore}}</text>
<text class="integral_total_category">剩余积分</text>
</view>
<view class="integral_total_item">
<text class="integral_total_value">{{INScore}}</text>
<text class="integral_total_category">入账积分</text>
</view>
</view>
<view class="card-blank">
<text style="color: #777;">历史积分</text>
</view>
<view class="card integral_detail" wx:for="{{scoreLogList}}" wx:key="index">
<view class="integral_detail_content">
<text class="integral_detail_title">{{categorys[item.category]}}</text>
<text class="integral_detail_date">{{item.createTime}}</text>
</view>
<text class="integral_detail_value">{{item.inOut=="IN"?"+":'-'}}{{item.score}}</text>
</view>
<van-empty wx:if="{{scoreLogList.length==0}}" description="暂时没有积分记录~" />

View File

@@ -0,0 +1,58 @@
.integral_total{
display: flex;
align-items: center;
justify-content: space-around;
}
.integral_total_item{
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.integral_total_value{
font-weight: bold;
font-size: 28px;
color: #FFCE46;
margin-bottom: 8px;
}
.integral_total_category{
color: #777;
font-size: 12px;
}
.integral_detail{
display: flex;
align-items: center;
justify-content: space-between;
}
.integral_detail_content{
display: flex;
flex-direction: column;
}
.integral_detail_title{
font-weight: bold;
margin-bottom: 10px;
}
.integral_detail_date{
font-size: 12px;
color: #777;
}
.integral_detail_value{
font-weight: bold;
color: #FFCE46;
font-size: 16px;
}
.totalPoint{
font-size: 34px;
color: #CDDC39;
}

View File

@@ -0,0 +1,47 @@
Page({
data: {
// 页面数据
},
onLoad() {
// 页面加载时的逻辑
},
contactService() {
wx.showModal({
title: '联系客服',
content: '请添加客服微信XXXXX替换为实际客服微信号',
showCancel: false,
success(res) {
if (res.confirm) {
// 可以在这里添加复制微信号到剪贴板的功能
wx.setClipboardData({
data: 'XXXXX',
success(res) {
wx.showToast({
title: '微信号已复制',
icon: 'success'
});
}
});
}
}
});
},
onShareAppMessage() {
return {
title: '代码讲解服务 - 专业的代码解析与讲解',
path: '/pages/subpages/services/code/code',
imageUrl: '' // 微信会自动使用页面截图
};
},
onShareTimeline() {
return {
title: '代码讲解服务 - 专业的代码解析与讲解',
query: '',
imageUrl: '' // 微信会自动使用页面截图
};
}
});

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,36 @@
<view class="container">
<view class="content">
<text class="title">代码讲解服务</text>
<text class="description">
<text>一、服务内容</text>
我们提供专业的代码讲解服务,帮助您深入理解项目代码的实现原理和最佳实践。通过详细的代码解析和实例讲解,让您掌握核心开发技能。
<text>二、服务项目</text>
1. 代码结构解析:深入分析项目架构和代码组织
2. 核心功能讲解:详细讲解关键功能的实现原理
3. 疑难问题解答:解答您在开发过程中遇到的问题
4. 代码优化建议:提供专业的代码优化方案
<text>三、服务流程</text>
1. 需求沟通:了解您的具体需求和关注点
2. 代码分析:对项目代码进行全面分析
3. 讲解实施:根据分析结果进行针对性讲解
4. 答疑解惑:解答您在理解过程中的疑问
<text>四、服务优势</text>
1. 专业的技术团队:拥有多年开发经验的技术专家
2. 深入浅出的讲解:用通俗易懂的方式讲解技术难点
3. 实战经验分享:分享实际项目中的最佳实践
4. 持续的技术支持:提供长期的技术咨询和指导
<text>五、服务承诺</text>
我们承诺提供专业、耐心、细致的代码讲解服务,确保您能够真正理解代码的实现原理,掌握开发技能。
</text>
<text class="note">服务费用¥200/小时</text>
<text class="node1">购买代码讲解服务请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,37 @@
Page({
data: {
title: '项目定制服务',
description: '提供专业的项目定制开发服务,包括需求分析、开发实现、环境部署和售后服务的一站式解决方案。'
},
onShareAppMessage() {
return new Promise((resolve) => {
wx.showLoading({
title: '生成分享图片...'
});
// 获取页面截图
wx.createSelectorQuery()
.select('.content')
.fields({
size: true,
scrollOffset: true
})
.exec((res) => {
wx.hideLoading();
resolve({
title: this.data.title,
path: '/pages/subpages/services/custom/custom',
imageUrl: '' // 微信会自动使用页面截图
});
});
});
},
onShareTimeline() {
return {
title: this.data.title,
query: '',
imageUrl: '' // 微信会自动使用页面截图
}
}
})

View File

@@ -0,0 +1,6 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index"
}
}

View File

@@ -0,0 +1,31 @@
<view class="container">
<view class="content">
<text class="title">项目定制服务</text>
<text class="description">
<text>一、需求方面</text>
请提供你的需求文档,如果没有文档的话,请提供项目名称和具体功能要求,我来帮你规划程序的详细内容。
<text>二、价格方面</text>
我们会先确定好你的需求,根据需求来定价。开工后如果双方约定好的需求需要修改,需要根据实际改动幅度额外收费。
<text>三、交付时间</text>
一般是2周左右的时间可加急保证我们交付程序的质量
<text>四、交付内容</text>
包括 源码 + SQL + 软件环境安装 + 项目在你电脑上成功运行
<text>五、交易流程</text>
双方确认好需求后先支付订金,订金是系统价格的一半,系统做完之后会联系你演示给你看(截图或者视频演示),确认没问题之后支付尾款,支付完之后,我们会把源代码发给你,并且在你的电脑上安装。
<text>六、售后服务</text>
我们交付后保证提供给你的原始程序可以正常运行(排除你自己修改的情况),保证注释规范到位,可以对系统运行的小问题进行答疑。如果系统遇到 BUG 无法启动,我们会远程修复保证系统正常运行。
<text>七、我们的承诺</text>
所有代码都是我们自己完全手撸完成,不会使用任何开源的代码二次修改,代码质量有保障。
</text>
<text class="note">服务费用¥800 - ¥1200</text>
<text class="node1">购买项目定制服务请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,37 @@
Page({
data: {
title: '代码部署服务',
description: '提供专业的项目环境安装和源码部署服务包括IDEA、MySQL、JDK等软件安装和项目的完整部署。'
},
onShareAppMessage() {
return new Promise((resolve) => {
wx.showLoading({
title: '生成分享图片...'
});
// 获取页面截图
wx.createSelectorQuery()
.select('.content')
.fields({
size: true,
scrollOffset: true
})
.exec((res) => {
wx.hideLoading();
resolve({
title: this.data.title,
path: '/pages/subpages/services/deploy/deploy',
imageUrl: '' // 微信会自动使用页面截图
});
});
});
},
onShareTimeline() {
return {
title: this.data.title,
query: '',
imageUrl: '' // 微信会自动使用页面截图
}
}
})

View File

@@ -0,0 +1,6 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index"
}
}

View File

@@ -0,0 +1,33 @@
<view class="container">
<view class="content">
<text class="title">代码部署服务</text>
<text class="description">
<text>一、项目环境安装</text>
项目运行需要的安装包如下:
IDEA、MySQL、JDK、Node、Navicat
购买后:
1.您需要下载todeskhttps://www.todesk.com远程工具方便我们远程协助您
2.我们提供所有项目运行必备的软件安装包
3.我们会安排专门人员一对一为您提供安装服务
4.安装完成后,会帮您测试软件功能是否正常
5.软件安装正常后,需要您做确认,运行环境安装环节结束
<text>二、项目源码部署</text>
1.限定本平台内提供的项目源码
2.远程在您电脑上部署调试好源码,正常运行并确认后,部署环节结束
<text>三、说明</text>
1.后续如果您电脑重装系统或者其他人为因素造成软件无法正常运行,与本次服务无关
2.后续您对代码或者数据库进行二次修改,造成代码运行出错,与本次服务无关
3.本服务属于一次性服务,服务完请您当时确认服务完成,过期无效
</text>
<text class="note">服务费用¥50</text>
<text class="node1">购买代码部署请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,18 @@
Page({
data: {
title: '二次开发服务'
},
onShareAppMessage: function () {
return {
title: this.data.title,
path: '/pages/subpages/services/develop/develop'
}
},
onShareTimeline: function () {
return {
title: this.data.title
}
}
})

View File

@@ -0,0 +1,5 @@
{
"usingComponents": {
"van-icon": "@vant/weapp/icon/index"
}
}

View File

@@ -0,0 +1,31 @@
<view class="container">
<view class="content">
<text class="title">二次开发服务</text>
<text class="description">
<text>一、需求方面</text>
请提供你的二次开发需求,包括需要修改的功能点、新增的功能模块等。我们会根据你的需求,在原有项目基础上进行功能扩展和优化。
<text>二、价格方面</text>
我们会先评估你的二次开发需求根据需求的工作量来定价。一般二次开发的价格在项目定制价格的30%-70%之间,具体取决于修改的幅度和复杂度。
<text>三、交付时间</text>
一般是1-2周左右的时间具体取决于修改的内容和复杂度。我们会保证二次开发的质量确保新功能与原有系统完美融合。
<text>四、交付内容</text>
包括 修改后的源码 + SQL + 软件环境安装 + 项目在你电脑上成功运行
<text>五、交易流程</text>
双方确认好需求后先支付订金,订金是二次开发价格的一半,开发完成后会联系你演示给你看(截图或者视频演示),确认没问题之后支付尾款,支付完之后,我们会把修改后的源码发给你,并协助你完成部署。
<text>六、售后服务</text>
我们交付后保证提供给你的修改后的程序可以正常运行,保证代码注释规范到位,可以对系统运行的小问题进行答疑。如果系统遇到 BUG 无法启动,我们会远程修复保证系统正常运行。
<text>七、我们的承诺</text>
所有二次开发的代码都是我们自己完全手撸完成,不会使用任何开源的代码二次修改,代码质量有保障。我们会确保新功能与原有系统的完美融合,保证系统的稳定性和可维护性。
</text>
<text class="note">服务费用¥300 - ¥600</text>
<text class="node1">购买二次开发服务请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,47 @@
Page({
data: {
// 页面数据
},
onLoad() {
// 页面加载时的逻辑
},
contactService() {
wx.showModal({
title: '联系客服',
content: '请添加客服微信XXXXX替换为实际客服微信号',
showCancel: false,
success(res) {
if (res.confirm) {
// 可以在这里添加复制微信号到剪贴板的功能
wx.setClipboardData({
data: 'XXXXX',
success(res) {
wx.showToast({
title: '微信号已复制',
icon: 'success'
});
}
});
}
}
});
},
onShareAppMessage() {
return {
title: '文档服务',
path: '/pages/subpages/services/document/document',
imageUrl: '' // 微信会自动使用页面截图
};
},
onShareTimeline() {
return {
title: '文档服务',
query: '',
imageUrl: '' // 微信会自动使用页面截图
};
}
});

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,61 @@
<view class="container">
<view class="content">
<text class="title">文档服务</text>
<text class="description">
<text>一、服务内容</text>
我们提供专业的项目文档服务包括论文初稿、开题报告、任务书、答辩PPT等各类文档的编写服务。根据您的具体需求提供不同查重率要求的文档服务。
<text>二、服务项目</text>
1. 根据我们的模板编写:
1.1 万方查重初稿
- 使用我们的文章模板
- 字数约1.2万字
- 详细介绍项目功能
- 万方查重率20%以下
- 包含答辩PPT
- 价格200元/篇
1.2 维普查重初稿
- 使用我们的文章模板
- 字数约1.2万字
- 详细介绍项目功能
- 维普查重率25%以下
- 包含答辩PPT
- 价格300元/篇
1.3 其他文档服务
- 开题报告
- 任务书
- 答辩PPT
- 价格100元/份
2. 根据学生要求的模板编写:
- 按照客户提供的论文要求
- 保证主流查重率如维普35%以下)
- 不包含答辩PPT
- 价格500元/篇
<text>三、服务流程</text>
1. 需求沟通:了解您的具体文档需求和查重要求
2. 模板确认:确认使用我们的模板还是您的模板
3. 文档编写:按照要求编写相应文档
4. 查重确认:提供查重报告供您确认
5. 文档交付:交付最终文档和相关材料
<text>四、服务优势</text>
1. 专业团队:拥有多年论文写作经验
2. 质量保证:确保文档质量和查重率要求
3. 快速交付一般3-5个工作日完成
4. 售后保障:提供修改和答疑服务
<text>五、服务承诺</text>
我们承诺提供专业、规范的文档服务,确保文档内容符合要求,查重率达标,并按时交付。如有任何问题,我们将及时响应和处理。
</text>
<text class="note">服务费用100元 - 500元</text>
<text class="node1">购买文档服务请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,37 @@
Page({
data: {
title: '环境安装服务',
description: '提供专业的环境安装服务包括IDEA、MySQL、JDK、Node、Navicat等软件的一对一远程安装服务。'
},
onShareAppMessage() {
return new Promise((resolve) => {
wx.showLoading({
title: '生成分享图片...'
});
// 获取页面截图
wx.createSelectorQuery()
.select('.content')
.fields({
size: true,
scrollOffset: true
})
.exec((res) => {
wx.hideLoading();
resolve({
title: this.data.title,
path: '/pages/subpages/services/environment/environment',
imageUrl: '' // 微信会自动使用页面截图
});
});
});
},
onShareTimeline() {
return {
title: this.data.title,
query: '',
imageUrl: '' // 微信会自动使用页面截图
}
}
})

View File

@@ -0,0 +1,6 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index"
}
}

View File

@@ -0,0 +1,26 @@
<view class="container">
<view class="content">
<text class="title">环境安装服务</text>
<text class="description">项目运行需要的安装包如下:
IDEA、MySQL、JDK、Node、Navicat
购买后:
1.您需要下载todeskhttps://www.todesk.com远程工具方便我们远程协助您
2.我们提供所有项目运行必备的软件安装包
3.我们会安排专门人员一对一为您提供安装服务
4.安装完成后,会帮您测试软件功能是否正常
5.软件安装正常后,需要您做确认,若确认无误,本次服务结束
6.后续如果您电脑重装系统或者其他人为因素造成软件无法正常运行,与本次服务无关
7.本服务属于一次性服务,服务完请您当时确认服务完成,过期无效
</text>
<text class="note">服务费用¥40</text>
<text class="node1">购买环境安装服务请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,37 @@
Page({
data: {
title: '部署上线服务',
description: '提供专业的服务器环境安装和项目部署服务包括JDK、MySQL、Nginx等软件安装以及源码部署。'
},
onShareAppMessage() {
return new Promise((resolve) => {
wx.showLoading({
title: '生成分享图片...'
});
// 获取页面截图
wx.createSelectorQuery()
.select('.content')
.fields({
size: true,
scrollOffset: true
})
.exec((res) => {
wx.hideLoading();
resolve({
title: this.data.title,
path: '/pages/subpages/services/online/online',
imageUrl: '' // 微信会自动使用页面截图
});
});
});
},
onShareTimeline() {
return {
title: this.data.title,
query: '',
imageUrl: '' // 微信会自动使用页面截图
}
}
})

View File

@@ -0,0 +1,6 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index"
}
}

View File

@@ -0,0 +1,33 @@
<view class="container">
<view class="content">
<text class="title">部署上线服务</text>
<text class="description">
<text>一、项目环境安装</text>
项目运行需要的安装包如下:
Jdk、Mysql、Nginx
购买后:
1.您需要下载todeskhttps://www.todesk.com远程工具方便我们远程协助您
2.我们提供所有项目运行必备的软件安装包
3.我们会安排专门人员一对一为您提供安装服务
4.安装完成后,会帮您在服务器测试软件功能是否正常
5.软件安装正常后,需要您做确认,运行环境安装环节结束
<text>二、项目源码部署</text>
1.需要本平台内购买的项目源码
2.远程在您提供的服务器需CentOS操作系统上部署调试好源码正常运行并确认后部署环节结束
<text>三、说明</text>
1.后续如果您服务器重装系统或者其他人为因素造成软件无法正常运行,与本次服务无关
2.后续您对代码或者数据库进行二次修改,造成代码运行出错,与本次服务无关
3.本服务属于一次性服务,服务完请您当时确认服务完成,过期无效
</text>
<text class="note">服务费用¥200</text>
<text class="node1">购买部署上线服务请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,37 @@
Page({
data: {
title: '问题解决服务',
description: '提供专业的1对1远程技术支持帮您解决项目中遇到的BUG和运行错误。'
},
onShareAppMessage() {
return new Promise((resolve) => {
wx.showLoading({
title: '生成分享图片...'
});
// 获取页面截图
wx.createSelectorQuery()
.select('.content')
.fields({
size: true,
scrollOffset: true
})
.exec((res) => {
wx.hideLoading();
resolve({
title: this.data.title,
path: '/pages/subpages/services/problem/problem',
imageUrl: '' // 微信会自动使用页面截图
});
});
});
},
onShareTimeline() {
return {
title: this.data.title,
query: '',
imageUrl: '' // 微信会自动使用页面截图
}
}
})

View File

@@ -0,0 +1,6 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index"
}
}

View File

@@ -0,0 +1,23 @@
<view class="container">
<view class="content">
<text class="title">问题解决服务</text>
<text class="description">
<text>服务介绍</text>
1.购买本服务后可以联系我们指派专人远程1对1为你解决学习项目过程中遇到的BUG或运行错误
2.本服务为一次性服务,问题解决完之后服务终止
3.购买本服务一次只能解决一个问题,不支持多个问题累加
4.项目问题限定本平台内购买的教程或源码,不支持站外代码问题解决
5.请事先下载好远程工具 Todeskhttps://www.todesk.com方便我们远程连接你
</text>
<text class="note">服务费用¥50</text>
<text class="node1">购买解决问题请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}

View File

@@ -0,0 +1,37 @@
Page({
data: {
title: '项目加急服务',
description: '提供专业的项目定制开发服务,包括需求分析、开发实现、环境部署和售后服务的一站式解决方案。'
},
onShareAppMessage() {
return new Promise((resolve) => {
wx.showLoading({
title: '生成分享图片...'
});
// 获取页面截图
wx.createSelectorQuery()
.select('.content')
.fields({
size: true,
scrollOffset: true
})
.exec((res) => {
wx.hideLoading();
resolve({
title: this.data.title,
path: '/pages/subpages/services/custom/custom',
imageUrl: '' // 微信会自动使用页面截图
});
});
});
},
onShareTimeline() {
return {
title: this.data.title,
query: '',
imageUrl: '' // 微信会自动使用页面截图
}
}
})

View File

@@ -0,0 +1,6 @@
{
"usingComponents": {
"van-button": "@vant/weapp/button/index",
"van-icon": "@vant/weapp/icon/index"
}
}

View File

@@ -0,0 +1,21 @@
<view class="container">
<view class="content">
<text class="title">项目加急服务</text>
<text class="description">
<text>服务介绍</text>
1.本服务适用于项目定制和二次开发购买后可将交付时间缩短至3-5天
2.本服务为一次性服务,仅针对单个项目有效
3.加急服务期限至交付演示视频为止,后续修改不在加急服务范围内
</text>
<text class="note">服务费用¥100</text>
<text class="node1">购买项目加急服务请长按二维码添加微信forfeastcoding备注小程序</text>
<image class="qrcode" src="../../../../static/tabbar/qrcode.jpg" show-menu-by-longpress="true"></image>
</view>
<view class="article-action">
<button class="share-btn" size="mini" open-type="share" plain="true">
<van-icon name="guide-o" />
<text>分享</text>
</button>
</view>
</view>

View File

@@ -0,0 +1,99 @@
.container {
min-height: 100vh;
background-color: #fff;
padding: 30rpx;
display: flex;
flex-direction: column;
}
.content {
flex: 1;
padding-bottom: 140rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 40rpx;
text-align: center;
}
.description {
font-size: 28rpx;
color: #666;
line-height: 2;
white-space: pre-wrap;
margin-bottom: 30rpx;
padding: 0 20rpx;
}
.description text {
font-weight: bold;
display: block;
margin-top: -30rpx;
margin-bottom: -30rpx;
}
.article-action {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 100rpx;
background: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 30rpx;
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05);
}
.share-btn {
display: flex !important;
align-items: center;
justify-content: center;
padding: 0 30rpx !important;
font-size: 17px !important;
color: #666 !important;
border: none !important;
}
.share-btn van-icon {
font-size: 22px;
}
.share-btn text {
margin-left: 4rpx;
}
.note {
display: block;
font-size: 28rpx;
color: rgb(6, 80, 240);
margin: 20rpx 0;
padding: 20rpx;
background: rgba(6, 80, 240, 0.05);
border-radius: 12rpx;
text-align: center;
font-weight: bold;
}
.node1 {
margin-top: 30rpx;
font-size: 26rpx;
color: rgb(252, 7, 7);
display: block;
text-align: center;
line-height: 1.6;
}
.qrcode {
margin: 20rpx auto;
height: 300rpx;
width: 300rpx;
display: block;
border-radius: 12rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}