// components/star.js Component({ /** * 组件的属性列表 */ properties: { //接收自定义的高度 setSize: Number, }, data: { stars: [ { flag1: 2, flag2: 2, bgImgL: "/assets/images/searchResult/Lstar.png", bgfImgL: "/assets/images/searchResult/Lstar.active.png", bgImgR: "/assets/images/searchResult/Rstar.png", bgfImgR: "/assets/images/searchResult/Rstar.active.png", }, { flag1: 1, flag2: 1, bgImgL: "/assets/images/searchResult/Lstar.png", bgfImgL: "/assets/images/searchResult/Lstar.active.png", bgImgR: "/assets/images/searchResult/Rstar.png", bgfImgR: "/assets/images/searchResult/Rstar.active.png", }, { flag1: 1, flag2: 1, bgImgL: "/assets/images/searchResult/Lstar.png", bgfImgL: "/assets/images/searchResult/Lstar.active.png", bgImgR: "/assets/images/searchResult/Rstar.png", bgfImgR: "/assets/images/searchResult/Rstar.active.png", }, { flag1: 1, flag2: 1, bgImgL: "/assets/images/searchResult/Lstar.png", bgfImgL: "/assets/images/searchResult/Lstar.active.png", bgImgR: "/assets/images/searchResult/Rstar.png", bgfImgR: "/assets/images/searchResult/Rstar.active.png", }, { flag1: 1, flag2: 1, bgImgL: "/assets/images/searchResult/Lstar.png", bgfImgL: "/assets/images/searchResult/Lstar.active.png", bgImgR: "/assets/images/searchResult/Rstar.png", bgfImgR: "/assets/images/searchResult/Rstar.active.png", }, ], star_num: 1, // 默认1分 最低0.5分 Lindex: 0, //左下标 Rindex: 0, //右下标 oldScore: '', //旧分数 newScore: ''//新分数 }, /** * 组件的方法列表 */ methods: { //点击左边 scoreL: function (e) { var _this = this; this.setData({ oldScore: this.data.star_num }) // console.log("旧分数",this.data.oldScore) var index = e.currentTarget.dataset.index; //改变分数 _this.setData({ star_num: index + 0.5 // 评分 }) this.setData({ newScore: this.data.star_num }) // console.log("新分数",this.data.newScore) this.judgeNum() //重新渲染星星 }, //点击右边 scoreR: function (e) { this.setData({ oldScore: this.data.star_num }) var _this = this; var index = e.currentTarget.dataset.index; // 评分 _this.setData({ star_num: index + 1 // 评分 }) this.setData({ newScore: this.data.star_num }) this.judgeNum() }, changeL(param) { //左移 1代表减 2代表加 var that = this; // console.log("LL左下标",that.data.Lindex) // console.log("LL右下标",that.data.Rindex) var item = 'stars[' + that.data.Lindex + '].flag1' if (param === 1) { //左移动 // console.log("锚点1") const middle = that.data.Lindex var item = 'stars[' + middle + '].flag1' that.setData({ [item]: 1, Lindex: that.data.Lindex - 1 }) } if (param === 2) { // console.log("锚点2") const middle = that.data.Lindex + 1 var item = 'stars[' + middle + '].flag1' that.setData({ [item]: 2, Lindex: that.data.Lindex + 1 }) } }, changeR(param) { //右移 1代表减 2代表加 const that = this var item = 'stars[' + that.data.Lindex + '].flag2' if (param === 1) { //左移动 // console.log("锚点3") that.setData({ [item]: 1, Rindex: this.data.Rindex - 1 }) } if (param === 2) { // console.log("锚点4") const middle = that.data.Rindex + 1 var item = 'stars[' + middle + '].flag2' that.setData({ [item]: 2, Rindex: this.data.Rindex + 1 }) } }, judgeNum: function () { const isPoint = (this.data.oldScore) % 1 == 0 ? false : true const flag = this.data.newScore - this.data.oldScore //分差 if (flag < 0) {//分差小于0 扣分 if (isPoint) { //是小数(左) const LorR = { toL: true, toR: false, } const count = Math.abs(flag) * 2 //变化的次数 LRLR for (var i = 0; i < count; i++) { if (LorR.toL) { this.changeL(1) } if (LorR.toR) { this.changeR(1) } LorR.toL = !LorR.toL LorR.toR = !LorR.toR } }//是整数(右) else { const LorR = { toL: false, toR: true, } const count = Math.abs(flag) * 2 //变化的次数 LRLR for (var i = 0; i < count; i++) { if (LorR.toL) { this.changeL(1) } if (LorR.toR) { this.changeR(1) } LorR.toL = !LorR.toL LorR.toR = !LorR.toR } } } //分差大于0 加分 else { if (isPoint) {//是小数 const LorR = { toL: false, toR: true, } const count = Math.abs(flag) * 2 //变化的次数 LRLR for (var i = 0; i < count; i++) { if (LorR.toL) { this.changeL(2) } if (LorR.toR) { this.changeR(2) } LorR.toL = !LorR.toL LorR.toR = !LorR.toR } } else { //是整数 const LorR = { toL: true, toR: false, } const count = Math.abs(flag) * 2 //变化的次数 LRLR for (var i = 0; i < count; i++) { if (LorR.toL) { this.changeL(2) } if (LorR.toR) { this.changeR(2) } LorR.toL = !LorR.toL LorR.toR = !LorR.toR } } } }, setNum() { //向父组件传值 //传入的参数名称 starNum this.triggerEvent('myevent', { starNum: this.data.star_num }) } } })