cellsysBase/cellsysLayerGroup.js
2024-08-14 16:20:56 +08:00

212 lines
6.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
Query,
QueryTask,
QueryType,
EditTask,
EditType,
Operator,
CellsysType,
} from './cellsysUtil.js';
import { PublishTarget } from './cellsysEnum';
import CellsysLayer from './cellsysLayer';
import CellsysElementType from './cellsysElementType';
class CellsysLayerGroup extends CellsysElementType {
constructor(params) {
super(params);
this.cellsysType = CellsysType.LayerGroup;
if (!params) {
params = {};
}
const options = params.options || { style: null };
this.id = params.id;
this.name = params.name;
this.description = params.description;
this.orgId = params.org_id;
this.orgName = params.org_name;
this.typeCount = params.type_count;
this.orgStatus = params.org_status;
this.options = options;
this.style = params.style;
if (this.style) {
//这里因为专题接口返回数据里出现style和options.style重复在小达达的安排下和其他要素统一只取最外层style
this.options['style'] = this.style;
}
this.layers = [];
this.isPublish = params.is_publish || 0;
this.createBy = params.create_by;
this.publishRange = params.publish_range; //发布范围 0-群组 1-组织
this.publishGroup = params.publish_group ? params.publish_group : []; //发布的群组
this.isEditable = params.is_update === 1 ? true : false; //is_update表示是否允许其他人编辑 0-不允许 1-允许
this.isUnlock = params.is_unlock; //是否未锁定0-已锁定1-未锁定
this.tags = [];
if (params.tag_name) {
this.tags = params.tag_name.map((name) => {
return { name: name };
});
}
/* let creator = params.creator;
this.creator = {
memberId: null,
name: null
}
if (creator) {
this.creator = {
memberId: creator.member_id,
name: creator.name
}
}
let updater = params.updater;
this.updater = {
memberId: null,
name: null
}
if (updater) {
this.updater = {
memberId: updater.member_id,
name: updater.name
}
}*/
}
setId(value) {
this.id = value;
}
setName(value) {
this.name = value;
}
setDescription(value) {
this.description = value;
}
setLayers(arr) {
this.layers = arr;
}
/*旧的逻辑用法没有将返回封装成cellsysLayer懒得处理旧的业务逻辑故先保留*/
queryLayersInfo() {
let query = new Query();
query.addFilter('org_id', Operator.Equals, this.orgId);
query.addFilter('layer_group_id', Operator.Equals, this.id);
query.setOrder({ legend_order: 'desc' });
let queryTask = new QueryTask(QueryType.Layer);
return queryTask.execute(query);
}
/*新方法和上面区别在于返回值封装了cellsysLayer*/
queryLayers() {
let query = new Query();
query.addFilter('layer_group_id', Operator.Equals, this.id);
query.setOrder({ legend_order: 'desc' });
let queryTask = new QueryTask(QueryType.Layer);
return new Promise((resolve, reject) => {
queryTask
.execute(query)
.then((res) => {
let resArr = res.map((item) => {
let cellsysLayer = new CellsysLayer(item);
cellsysLayer.type = item.layer_type;
cellsysLayer.createBy = item.layer_create_by;
return cellsysLayer;
});
resolve(resArr);
})
.catch((err) => {
reject(err);
});
});
}
updateLayerRelations(layers) {
let editTask = new EditTask(EditType.LayerRelation_Update);
editTask.addParam('_layer_group_id', this.id);
if (layers && layers.length > 0) {
let layerRelations = layers.map((item) => {
return item.id;
});
editTask.addParam('_layer_ids', layerRelations);
} else {
editTask.addParam('_layer_ids', []);
}
return editTask.execute();
}
updateLayerOrder(layers) {
let editTask = new EditTask(EditType.LayerOrder_Update);
let legends = layers.map((o) => {
return {
_layer_id: o.layerId,
_layer_group_id: this.id,
_legend_order: o.legendOrder,
};
});
editTask.addParam('_legends', legends);
return editTask.execute();
}
//发布功能
setPublish(publishStatus, range, ids, isEditable, remark) {
let editTask = new EditTask(EditType.LayerGroupPublish);
editTask.addParam('_id', this.id);
editTask.addParam('_layer_group_name', this.name);
editTask.addParam('_is_publish', PublishTarget[publishStatus]);
editTask.addParam('_remark', remark);
if (publishStatus !== 'noPublish') {
if (range === 1) {
//发布到组织
editTask.addParam('_publish_org', ids);
} else {
editTask.addParam('_publish_group', ids);
}
editTask.addParam('_publish_range', range);
}
if (isEditable) {
editTask.addParam('_is_update', 1);
} else {
editTask.addParam('_is_update', 0);
}
return editTask.execute();
}
//查询协同数据发布记录列表
synergyDataPublishRecord(dataId, type) {
let query = new Query();
query.setOrder({ create_time: 'desc' });
query.addFilter('data_type', '=', 8);
query.setCurrPage(1);
query.setPageSize(1);
if (dataId) {
query.addFilter('data_id', '=', dataId);
}
if (type) {
query.addFilter('type', '=', type);
}
let queryTask = new QueryTask(QueryType.synergyDataPublishRecord, true);
return new Promise((resolve, reject) => {
queryTask
.execute(query)
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}
//锁定/解锁
setLock(params) {
let editTask = new EditTask(EditType.LayerGroupLock);
editTask.addParam('_id', params.id);
editTask.addParam('_is_unlock', params.isUnlock);
return editTask.execute();
}
}
export default CellsysLayerGroup;