import { wxRequestPost,wxRequestGet } from "@utils/promise-wx-api"; import animeBehavior from "@mixins/anime"; let tempReslove = () => {}; const app = getApp(); Component({ behaviors: [animeBehavior], properties: { selPartyId: { type: Array, value: [], }, publishRangeDesc: { type: String, value: "", }, }, data: { hidden: true, agencyLoading: false, // 可选区域 partyTreeList: { // agencyId: "", // agencyName: "", // gridList: [ // { // gridId: "", // gridName: "", // }, // ], // subAgencyGridList: [], }, }, lifetimes: { async attached() { await app.doAfterLogin(); this.getAgencyData(); }, detached() {}, }, methods: { show(needRefresh = false) { this.setData({ hidden: false, }); if (needRefresh) { this.getAgencyData(); } return new Promise((reslove) => { tempReslove = reslove; }); }, async hide() { this.animeFadeOut("#root"); await this.animeFadeOutDown("#wrap"); this.setData({ hidden: true }); }, confirm() { this.hide(); return tempReslove({ type: "confirm", data: this.getSelectedGrid(), }); }, cancel() { this.hide(); return tempReslove({ type: "cancel", data: null, }); }, // 统计获得当前选中的网格 getSelectedGrid() { const { partyTreeList } = this.data; let selPartyId = '', selPartyName = ''; const fn = (data) => { data.gridList.forEach((item) => { if (item.selected) { selPartyName = item.gridName; selPartyId = item.gridId; } }); data.subAgencyGridList.forEach((item) => { fn(item); }); }; fn(partyTreeList); return { selPartyId, publishRangeDesc: selPartyName, }; }, // 统计组织是否全选 computeSelectedAll(partyTreeList) { const fn = (obj) => { let selectedAll = true; if (!obj.gridList.every((item) => item.selected)) { selectedAll = false; } obj.subAgencyGridList.forEach((item) => { if (!fn(item)) { selectedAll = false; } }); obj.selectedAll = selectedAll; return selectedAll; }; fn(partyTreeList); return partyTreeList; }, // 切换选中某个网格 shiftSelectGrid(e) { debugger const gridId = e.currentTarget.dataset.gridId || e.detail.gridId; const { partyTreeList } = this.data; const fn = (obj) => { obj.forEach((item) => { if (item.id === gridId) { item.selected = !item.selected; } }); obj.children.forEach((item) => { fn(item); }); }; fn(partyTreeList); this.setData({ partyTreeList }); }, // 初始化接口数据,添加属性 iniAgencyDataAddSelected(obj) { const { selPartyId } = this.data; // 初始化数据:添加"网格是否选中"字段 const fn = (obj) => { obj.forEach((item) => { if (selPartyId === item.gridId) { item.selected = true; } else { item.selected = false; } }); if (!Array.isArray(obj.children)) { obj.children = []; } obj.children.forEach((item) => { fn(item); }); }; fn(obj); return obj; }, // 获取当前组织信息 async getAgencyData() { this.setData({ agencyLoading: true, }); const { data: { data: { code, data }, }, msg, } = await wxRequestGet( 'resi/partymember/icPartyOrg/getTreelist', { customerId: app.globalData.customerId, agencyId: app.globalData.agencyId }, { // isMock: true, // isQuiet: true } ); this.setData({ agencyLoading: false, }); if (msg === "success" && code === 0) { let partyTreeList = data; partyTreeList = this.iniAgencyDataAddSelected(partyTreeList); // partyTreeList = this.computeSelectedAll(partyTreeList); console.log(partyTreeList); this.setData({ partyTreeList, }); } }, }, });