You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
4.7 KiB
218 lines
4.7 KiB
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,
|
|
});
|
|
}
|
|
},
|
|
},
|
|
});
|
|
|