123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- // components/My_categoryListings/modules/group.js
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- apps: {
- type: Array,
- value: []
- },
- callback: {
- type: Function
- },
- },
- observers: {
- "apps": function (apps) {
- if (this.data.count == 1) return;
- this.refactorDom();
- }
- },
- /**
- * 组件的初始数据
- */
- data: {
- backupArrays: [],
- nubArr: [],
- count: 0,
- show: true,
- },
- /**
- * 组件的方法列表
- */
- methods: {
- /* 功能单选 */
- onChange(e) {
- const {
- index
- } = e.currentTarget.dataset;
- let obj = {
- systemappid: e.currentTarget.id - 0,
- optionids: e.detail
- };
- let arr = this.data.backupArrays,
- nubArr = this.data.nubArr,
- i = arr.findIndex(v => v.systemappid == obj.systemappid);
- if (e.detail.length > 0) {
- if (i == -1) {
- arr.push(obj);
- nubArr.push(obj.systemappid);
- } else {
- arr[i] = obj;
- }
- } else {
- nubArr.splice(i, 1)
- arr.splice(i, 1)
- };
- this.setData({
- ["apps[" + index + "].optionids"]: obj.optionids,
- backupArrays: arr,
- nubArr
- });
- this.triggerEvent("callback", {
- arr: this.data.backupArrays,
- apps: this.data.apps
- });
- },
- /* 类选择 */
- classClick(e) {
- const {
- item
- } = e.currentTarget.dataset;
- let i = this.data.nubArr.findIndex(v => v == item.systemappid);
- if (i == -1) {
- const obj = {
- systemappid: item.systemappid,
- optionids: item.options.map(v => v.optionid.toString())
- };
- this.data.backupArrays.push(obj);
- this.data.nubArr.push(item.systemappid);
- let index = this.data.apps.findIndex(v => v.systemappid == item.systemappid);
- this.setData({
- backupArrays: this.data.backupArrays,
- nubArr: this.data.nubArr,
- ["apps[" + index + "].optionids"]: obj.optionids
- })
- } else {
- let index = this.data.apps.findIndex(v => v.systemappid == item.systemappid);
- this.setData({
- ["apps[" + index + "].optionids"]: [],
- nubArr: this.data.nubArr.filter(v => v != item.systemappid),
- backupArrays: this.data.backupArrays.filter(v => v.systemappid != item.systemappid)
- });
- };
- this.triggerEvent("callback", {
- arr: this.data.backupArrays,
- apps: this.data.apps
- });
- },
- /* 重构 */
- refactorDom() {
- let apps = this.data.apps;
- let arr = [],
- nubArr = [];
- for (let i = 0; i < apps.length; i++) {
- if (apps[i].optionids.length == 0) continue;
- let obj = {
- systemappid: apps[i].systemappid,
- optionids: apps[i].optionids.map(v => v + '')
- };
- arr.push(obj);
- nubArr.push(apps[i].systemappid);
- this.setData({
- [`apps[${i}].optionids`]: apps[i].optionids.map(v => v + '')
- })
- };
- this.setData({
- backupArrays: arr,
- nubArr,
- count: 1
- })
- if (arr.length == 0) return;
- this.triggerEvent("callback", {
- arr: this.data.backupArrays,
- apps: this.data.apps
- });
- this.setData({
- show: false
- })
- this.setData({
- show: true
- })
- },
- }
- })
|