记录一下
微信小程序分页编辑,可增页删除当前页面。第一页为主图片和主句子。其他页面一致。
左滑右滑可切换页面。每页可增加0到1页。小黑点与页面一致。
/* pages/booktool/write/write.wxss */
page{
height:100%;
width:100%;
}
#swiper{
height:100%;
width:100%;
display:flex;
flex-direction:row;
}
.bgcontainer{
height:100%;
display:flex;
flex-direction:row;
justify-content: center;
align-items: center;
flex-wrap: nowrap;
}
.bg{
height:90%;
width:100vw;
}
#quote>.image{
height:50%;
width:100%;
background:rgb(245,245,245);
display:flex;
flex-direction:column;
justify-content: center;
align-items: center;
}
.image>image{
height:90%;
width:90%;
}
#quote>.quote{
width:100%;
display:flex;
flex-direction:column;
justify-content: center;
align-items: center;
}
.quote>textarea{
height:420rpx;
width:80%;
padding:20rpx;
color:rgb(66,66,66);
font-size:33rpx;
line-height:70rpx;
position:relative;
}
.count{
height:30rpx;
width:100rpx;
position:absolute;
bottom:0rpx;
right:0rpx;
line-height:30rpx;
font-size:22rpx;
text-align:right;
}
.quote>.editor{
width:80%;
height:50rpx;
text-align:right;
}
.editor>text{
margin-right:30rpx;
font-size:25rpx;
}
.icon{
height:65rpx;
display:flex;
flex-direction: row;
justify-content:flex-end;
align-items: center;
}
.icon>image{
height:45rpx;
width:45rpx;
margin-right:20rpx;
}
.bots>.bot{
background:gray;
height:15rpx;
width:15rpx;
border-radius:15rpx;
margin-left:8rpx;
margin-right:8rpx;
}
#swiper>.bots{
height:4%;
width:100%;
position:absolute;
bottom:0rpx;
display:flex;
flex-direction:row;
justify-content: center;
align-items: center;
}
#write{
height:100%;
width:100%;
position:relative;
}
#write>.icon{
position:absolute;
bottom:-28rpx;
right:0rpx;
}
.textarea{
padding-top:5%;
height:100%;
width:90%;
margin-left:5%;
overflow: hidden;
}
.textarea1{
height:70rpx;
width:100%;
line-height:70rpx;
}
.contentimg{
height:280rpx;
width:100%;
border-radius: 20rpx;
margin:0rpx;
}
.textarea2{
height:70rpx;
width:100%;
line-height:70rpx;
}
js页面,保存编辑数据
var util = require('../../../utils/util.js');
// pages/booktool/write/write.js
Page({
data: {
maxlength: 275,
length: 0,
content: [{
quote: {
img: '',
q: "",
date: '',
u: '胡图图'
} //quote页面
}],
bgleft: 0,
current: 0,
},
savequote: function(e) { //保存即时编辑的quote
var text = e.detail.value
var content = this.data.content
var quote = content[0].quote
quote.q = text
content[0].quote = quote
if(text){
this.setData({
length: text.length
})
}else{
this.setData({
length: 0
})
}
this.setData({
content: content,
})
},
choosequoteimg: function () {
var _this = this;
var quote = _this.data.quote
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
var imgsrc = res.tempFilePaths;
var content = _this.data.content
var quote = content[0].quote
quote.img=imgsrc
content[0].quote = quote
_this.setData({
content: content
})
}
})
},
add: function() { //加页,保存页面内容在编写时即时完成
var content = this.data.content
var current = this.data.current
var c = {
heightup: '',
contentup: '',
img: '',
contentdown: '',
heightdown: ''
}
var down = content.slice(this.data.current + 1) //获取后面的
var up = content.slice(0, this.data.current + 1)
up.push(c)
this.setData({
current: this.data.current + 1,
content: up.concat(down)
}) //加页
},
sub: function() { //减去当前页
var _this = this
wx.showModal({
title: '提示',
content: '是否删除当前页?',
success: function(res) {
if (res.confirm) {
console.log('用户点击确定') //删除当前页
var current = _this.data.current
var content = _this.data.content
content.splice(current,1)
_this.setData({
current: current - 1,
content: content
})
} else if (res.cancel) {
console.log('取消删除当前页')
}
}
})
},
nosub: function() {
wx.showModal({
content: '当前页面不可删除',
})
},
drawend: function(res) {
var enddata = [res.changedTouches[0].pageX, res.changedTouches[0].pageY]
var x = enddata[0] - this.data.startdata[0]
if (x * x > 50 * 50) {
if (x < 0) { //判定为右滑
if (this.data.current + 1 < this.data.content.length)
this.setData({
current: this.data.current + 1
})
} else { //判定为左滑
if (this.data.current - 1 >= 0) {
this.setData({
current: this.data.current - 1
})
}
}
}
},
drawstart: function(res) {
this.setData({
startdata: [res.changedTouches[0].pageX, res.changedTouches[0].pageY]
})
},
getdate: function() {
var time = util.formatTime(new Date());
var timestamp = Date.parse(time);
var date = new Date(timestamp);
var Y = date.getFullYear();
//获取月份
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
//获取当日日期
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
var type = D % 10
if (type == 1) D += 'st'
else if (type == 2) D += 'nd'
else if (type == 3) D += 'rd'
else D += 'th'
var mon = ['Jan', 'Feb', 'Mar', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
var d = mon[M - 1] + ' ' + D + ' ' + Y
return d
},
text1: function (e) {
var current=this.data.current
var content=this.data.content
var c=content[current]
c.contentup=e.detail.value
content[current]=c
this.setData({
content:content
})
},
text2: function (e) {
var current = this.data.current;
var text = e.detail.value
var content = this.data.content
content[current].contentdown = text
this.setData({
content: content,
downlength: text.length
})
},
/**
* 生命周期函数--监听页面加载
*/
addp: function () {
var _this = this;
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
var tempFilePaths = res.tempFilePaths;
var content = _this.data.content//获取当前content
var current = _this.data.current//当前下标
var c = content[current]//继承原有内容
c.img = tempFilePaths
content[current] = c
_this.setData({//更新quote中的img
content: content,
maxlength: _this.data.maxlength - 110
})
if (_this.data.content[_this.data.current].contentup.length <= 0) {//上方文字为空
_this.data.content[_this.data.current].heightup = 0
_this.setData({
content: _this.data.content,
})
}
}
})
},
line: function (e) {
var current = this.data.current;
var line = e.detail.lineCount;
var content = this.data.content
content[current].heightup = (line + 1) * 70
this.setData({
content: content
})
},
line0: function (e) {
var current = this.data.current;
var line = e.detail.lineCount;
var content = this.data.content
content[current].heightdown = (line + 1) * 70
this.setData({
content: content
})
},
lose: function () {
var current = this.data.current;
var heightup = this.data.content[current].heightup
this.data.content[current].heightup = heightup - 70
this.setData({
content: this.data.content
})
},
lose0: function () {
var current = this.data.current;
var heightdown = this.data.content[current].heightdown
this.data.content[current].heightdown = heightdown - 70
this.setData({
content: this.data.content
})
},
onLoad: function(options) {
var d = this.getdate() //页面日期获取
var content = this.data.content
var quote = content[0].quote
quote.date = d
content[0].quote = quote
this.setData({
content: content
})
},
complete:function(){
wx.showActionSheet({
itemList: ['立即发布','存为草稿'],
success(res) {
console.log(res.tapIndex);
if (res.tapIndex === 0) {
console.log("发布")
console.log(this.data.content)
}
if (res.tapIndex === 1) {
console.log(this.data.content)
}
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function() { }, /**
* 生命周期函数--监听页面显示
*/
onShow: function() { }, /**
* 生命周期函数--监听页面隐藏
*/
onHide: function() { }, /**
* 生命周期函数--监听页面卸载
*/
onUnload: function() { }, /**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function() { }, /**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function() { }, /**
* 用户点击右上角分享
*/
onShareAppMessage: function() { }
})
wxml代码
<!--pages/booktool/compose/compose.wxml-->
<view id="swiper">
<block wx:for="{{content}}" wx:key="key" wx:for-item="c" wx:for-index="i">
<view class="bgcontainer" style="transform:translateX({{-current*100}}vw);">
<block wx:if="{{i==0}}">
<view class="bg" id="quote" bindtouchstart="drawstart" bindtouchend="drawend" >
<view class="image">
<image wx:if="{{c.quote.img}}" bindtap="choosequoteimg" src="{{c.quote.img}}"></image>
<image wx:else bindtap="choosequoteimg" style="height:100rpx;width:120rpx;" src="img/pic.png"></image>
</view>
<view class="quote">
<textarea class="input" bindinput="savequote" placeholder="在此编辑......" maxlength='100' value="{{c.quote.q}}">
<text class="count">{{length}}/100</text>
</textarea>
<view class="editor">
<text class="date">{{c.quote.date}}</text>
<text class="editor">{{c.quote.u}}</text>
</view>
</view>
<view class="icon">
<image src="img/save.png" bindtap="complete"></image>
<image src="img/sub.png" bindtap="nosub"></image>
<image src="img/add.png" bindtap="add"></image>
</view>
</view>
</block>
<block wx:if="{{i!=0}}">
<view bindtouchstart="drawstart" bindtouchend="drawend" class="bg">
<view id="write">
<view class="textarea">
<textarea class="textarea1" wx:if="{{content[i].contentup||!content[i].img}}" style="height:{{content[i].heightup}}rpx;" placeholder="在此编辑......" bindinput="text1" focus="true" bindlinechange="line" auto-height='{{false}}' maxlength="-1" value="{{content[i].img}}" bindblur="lose" value="{{content[i].contentup}}"
></textarea>
<image class="contentimg" bindtap="addp" wx:if="{{content[i].img}}"src="{{content[i].img}}"></image>
<textarea wx:if="{{content[i].img}}" bindlinechange="line0" style="height:{{content[i].heightdown}}rpx;" placeholder="在此编辑......" bindinput='text2' bindblur="lose0" class="textarea2" maxlength="-1" value="{{content[i].contentdown}}" ></textarea>
</view>
<view class="icon">
<image src="img/save.png" bindtap="complete"></image>
<image src="img/addp.png" bindtap="addp"></image>
<image src="img/sub.png" bindtap="sub"></image>
<image src="img/add.png" bindtap="add"></image>
</view>
</view>
</view>
</block>
</view>
</block>
<view class="bots">
<block wx:for="{{content}}" wx:key="this" wx:for-index="i">
<view class="bot" style="background:{{i==current?'rgb(66,66,66)':''}};"></view>
</block>
</view> </view>