|
@@ -0,0 +1,135 @@
|
|
|
+// 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
|
|
|
+ })
|
|
|
+ },
|
|
|
+ }
|
|
|
+})
|