diff --git a/app.json b/app.json index e291028..af9a018 100644 --- a/app.json +++ b/app.json @@ -1,6 +1,5 @@ { "pages": [ - "pages/homapage/homepage", "pages/login/login", "pages/forgetmima/forgetmima", @@ -56,7 +55,8 @@ "pages/homeblock/bofangexample/bofangexample", "pages/myblock/jiudan/jiudan", "pages/myblock/yonghufankui/yonghufankui", - "pages/myblock/xiugaimima/xiugaimima" + "pages/myblock/xiugaimima/xiugaimima", + "pages/yonghuxieyi/yonghuxieyi" ], "window": { "backgroundTextStyle": "light", diff --git a/component/zyslider.js b/component/zyslider.js new file mode 100644 index 0000000..546df1c --- /dev/null +++ b/component/zyslider.js @@ -0,0 +1,216 @@ +// component/zyslider/zyslider.js +var util = require('../utils/util') +const app=getApp() +Component({ + /** + * 组件的属性列表 + */ + properties: { + /** slider 最小值 */ + min: { + type: Number + }, + /** slider 最大值 */ + max: { + type: Number + }, + /** 步进 (没做,有时间再说,项目里没用到撒) */ + step: { + type: Number + }, + /** 预选选择的小值*/ + minValue: { + type: Number + }, + /** 预选选择的大值 */ + maxValue: { + type: Number + }, + /** 滑块颜色 */ + blockColor:{ + type: String + }, + /** 未选择进度条颜色 */ + backgroundColor:{ + type: String + }, + /** 已选择进度条颜色 */ + selectedColor:{ + type: String + } + }, + + + /** + * 组件的初始数据 + */ + data: { + min: 0, + max: 100, + leftValue: 0, + rightValue: 100, + ppvalue:100, + ppleft:0, + totalLength: 0, + bigLength: 0, + ratio: 0.5, + sliderLength: 20, + containerLeft: 0, //标识整个组件,距离屏幕左边的距离 + hideOption: '', //初始状态为显示组件 + + }, + + /** + * 组件的方法列表 + */ + methods: { + + /** + * 设置左边滑块的值 + */ + _propertyLeftValueChange: function () { + console.log(this.data.minValue); + console.log(this.data.max); + console.log(this.data.bigLength) + + let minValue = this.data.minValue / this.data.max * this.data.bigLength; + console.log(minValue) + let min = this.data.min / this.data.max * this.data.bigLength; + console.log(min) + this.setData({ + leftValue: minValue - min, + ppleft: minValue - min + }) + + console.log(this.data.leftValue) + }, + + /** + * 设置右边滑块的值 + */ + _propertyRightValueChange: function () { + let right = this.data.maxValue / this.data.max * this.data.bigLength + this.data.sliderLength + this.setData({ + rightValue: right, + ppvalue:right + }) + + console.log(this.data.rightValue) + }, + + /** + * 左边滑块滑动 + */ + _minMove: function (e) { + let pagex = e.changedTouches[0].pageX / this.data.ratio - this.data.containerLeft - this.data.sliderLength / 2 + + if (pagex + this.data.sliderLength >= this.data.rightValue) { + pagex = this.data.rightValue - this.data.sliderLength + } else if (pagex <= 0) { + pagex = 0 + } + + this.setData({ + leftValue: pagex + }) + + let lowValue = parseInt(pagex / this.data.bigLength * parseInt(this.data.max - this.data.min) + this.data.min) + var myEventDetail = { lowValue: lowValue } + this.triggerEvent('lowValueChange', myEventDetail) + }, + + /** + * 右边滑块滑动 + */ + _maxMove: function (e) { + + let pagex = e.changedTouches[0].pageX / this.data.ratio - this.data.containerLeft - this.data.sliderLength / 2 + if (pagex <= this.data.leftValue + this.data.sliderLength) { + pagex = this.data.leftValue + this.data.sliderLength + } else if (pagex >= this.data.totalLength) { + pagex = this.data.totalLength + } + + this.setData({ + rightValue: pagex + }) + + pagex = pagex - this.data.sliderLength + let heighValue = parseInt(pagex / this.data.bigLength * (this.data.max - this.data.min) + this.data.min) + + var myEventDetail = { heighValue: heighValue } + this.triggerEvent('heighValueChange', myEventDetail) + }, + + /** + * 隐藏组件 + */ + hide: function () { + this.setData({ + hideOption: 'hide', + }) + }, + /** + * 显示组件 + */ + show: function () { + this.setData({ + hideOption: '', + }) + }, + /** + * 重置 + */ + reset: function () { + this.setData({ + rightValue: this.data.totalLength, + leftValue: 0, + }) + }, + + + + + + }, + + ready: function () { + let that = this; + const getSystemInfo = util.wxPromisify(wx.getSystemInfo) + const queryContainer = util.wxPromisify(wx.createSelectorQuery().in(this).select(".container").boundingClientRect) + util.wxPromisify(wx.getSystemInfo)() + .then(res => { + let ratio = res.windowWidth / 750 + that.setData({ + ratio: ratio, + }) + }) + .then(() => { + var query = wx.createSelectorQuery().in(this) + query.select(".container").boundingClientRect(function (res) { + that.setData({ + totalLength: res.width / that.data.ratio - that.data.sliderLength, + bigLength: res.width / that.data.ratio - that.data.sliderLength * 2, + rightValue: res.width / that.data.ratio - that.data.sliderLength, + containerLeft: res.left / that.data.ratio, + }) + + + /** + * 设置初始滑块位置 + */ + + setTimeout(function(){ + that._propertyLeftValueChange() + that._propertyRightValueChange() + + },350) + + }).exec() + }) + }, + + + + +}) diff --git a/component/zyslider.json b/component/zyslider.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/component/zyslider.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/component/zyslider.wxml b/component/zyslider.wxml new file mode 100644 index 0000000..e5d5b46 --- /dev/null +++ b/component/zyslider.wxml @@ -0,0 +1,30 @@ +<!--component/zyslider.wxml--> + +<view class="container {{hideOption}}"> + <!-- <view class="slider-item min" style="left:{{leftValue}}rpx;background-color:#E81825;" catchtouchmove="_minMove"> + +</view> --> + <view class="slider-item min" style="left:{{leftValue}}rpx;" catchtouchmove="_minMove"> + <image src="/img/aicon_17.png"></image> + </view> + <!-- <view class="slider-item max" style="left:{{rightValue}}rpx;background-color:#E81825;" catchtouchmove="_maxMove"></view> --> + <view class="slider-item max" style="left:{{rightValue}}rpx;" catchtouchmove="_maxMove"> + <image src="/img/aicon_17.png"></image> + </view> + <view class="slider-body left" style="left:{{sliderLength}}rpx; width:{{leftValue}}rpx;"></view> + + <view class="slider-body body" style="left:{{leftValue}}rpx; width:{{rightValue-leftValue}}rpx;background-color:{{selectedColor}};"> + + + </view> + + + <view class="slider-body right" style="left:{{rightValue}}rpx; width:{{totalLength - rightValue}}rpx;"></view> + <!-- <view class="pp" style="left:{{ppleft}}rpx; width:{{ppvalue-ppleft}}rpx"> + <view class="item"></view> + <view class="item"></view> + <view class="item"></view> + <view class="item"></view> + </view> --> + <slot></slot> +</view> \ No newline at end of file diff --git a/component/zyslider.wxss b/component/zyslider.wxss new file mode 100644 index 0000000..938eb83 --- /dev/null +++ b/component/zyslider.wxss @@ -0,0 +1,73 @@ +/* component/zyslider.wxss */ +.container { + /*height: 100%;*/ + width: 100%; + position: relative; + +} + +.slider-body { + height: 2rpx; + background-color: #ddd; + position: relative; +} + +.body { + bottom: 28rpx; + background-color: #19896f; + z-index: 0.3; + +} + +.left { + bottom: 26rpx; + z-index: 0.1; +} + +.right { + z-index: 0.2; + bottom: 30rpx; +} + +.slider-item { + border-radius: 50%; + width: 35rpx; + height: 35rpx; + /* background-color: #E81825; */ + font-size: 0; + z-index: 2; +} + +.min { + position: relative; + top: 27rpx; + /*left: 100rpx;*/ +} + +.max { + position: relative; + bottom:9rpx; + /*left: 600rpx;*/ +} + +.hide{ + display: none; +} +.item{ + height:20rpx; + width:2rpx; + background: #E81825; + margin-left:20rpx; +} +.pp{ + display:flex; + justify-content: space-around; + align-items: center; + margin:0 auto; +} +.item{ + width:2rpx; + height:20rpx; + background: #E81825; + +} \ No newline at end of file diff --git a/project.config.json b/project.config.json index 6e03833..4f6ee01 100644 --- a/project.config.json +++ b/project.config.json @@ -49,7 +49,7 @@ "list": [] }, "miniprogram": { - "current": 46, + "current": 47, "list": [ { "id": -1, @@ -377,6 +377,13 @@ "id": -1, "name": "账号与安全", "pathName": "pages/myblock/zhanghaoyuanquan/zhanghaoyuanquan", + "query": "", + "scene": null + }, + { + "id": -1, + "name": "用户协议", + "pathName": "pages/yonghuxieyi/yonghuxieyi", "scene": null } ]