Commit aa44649c authored by 涂伟's avatar 涂伟
parents 11be351e 1d1844dc
Pipeline #95922 failed with stages
...@@ -96,9 +96,9 @@ ...@@ -96,9 +96,9 @@
"@wisdom-cesium/krpano": "^1.0.29-60", "@wisdom-cesium/krpano": "^1.0.29-60",
"@wisdom-map/arcgismap":"^2.0.97", "@wisdom-map/arcgismap":"^2.0.97",
"@wisdom-map/basemap":"^2.0.4", "@wisdom-map/basemap":"^2.0.4",
"@wisdom-map/gis-component": "^1.0.25", "@wisdom-map/gis-component": "^1.0.35",
"@wisdom-map/gis-utils": "^1.0.20", "@wisdom-map/gis-utils": "^1.0.30",
"@wisdom-map/pd-map": "^1.0.106", "@wisdom-map/pd-map": "^1.0.128",
"@wisdom-utils/components": "0.1.337", "@wisdom-utils/components": "0.1.337",
"@wisdom-utils/utils": "0.1.377", "@wisdom-utils/utils": "0.1.377",
"ace-builds": "^1.4.12", "ace-builds": "^1.4.12",
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
"jszip": "^3.10.1", "jszip": "^3.10.1",
"lodash": "4.17.11", "lodash": "4.17.11",
"minimist": "1.2.0", "minimist": "1.2.0",
"panda-xform": "6.10.87", "panda-xform": "6.10.89",
"parseForm": "^2.3.8", "parseForm": "^2.3.8",
"prop-types": "15.7.2", "prop-types": "15.7.2",
"qrcode.react": "^3.1.0", "qrcode.react": "^3.1.0",
......
...@@ -171,9 +171,13 @@ const AddModal = props => { ...@@ -171,9 +171,13 @@ const AddModal = props => {
style={{ marginRight: '18px', width: '100%' }} style={{ marginRight: '18px', width: '100%' }}
rules={[ rules={[
{ required: true, message: '请选填写时限' }, { required: true, message: '请选填写时限' },
// {
// validator: (_, value) =>
// value < 0 ? Promise.reject(new Error('默认时限需要大于零')) : Promise.resolve(),
// },
{ {
validator: (_, value) => pattern: /^[1-9]\d*$/,
value < 0 ? Promise.reject(new Error('默认时限需要大于零')) : Promise.resolve(), message: '默认时限需要为正整数',
}, },
]} ]}
> >
...@@ -188,6 +192,7 @@ const AddModal = props => { ...@@ -188,6 +192,7 @@ const AddModal = props => {
<Option value="小时">小时</Option> <Option value="小时">小时</Option>
<Option value="自然日">自然日</Option> <Option value="自然日">自然日</Option>
<Option value="工作日">工作日</Option> <Option value="工作日">工作日</Option>
<Option value="分钟">分钟</Option>
</Select> </Select>
</Form.Item> </Form.Item>
</div> </div>
......
...@@ -42,7 +42,7 @@ const ConfigCopyPerson = (props, ref) => { ...@@ -42,7 +42,7 @@ const ConfigCopyPerson = (props, ref) => {
allFieldList.current = []; allFieldList.current = [];
res.data.forEach(item => { res.data.forEach(item => {
if (!allFieldList.current.some(ele => ele.TableName === item.TableName)) { if (!allFieldList.current.some(ele => ele.TableName === item.TableName)) {
let data = item.TableFieldNames.filter(i => i !== '关联表单'); let data = item.TableFieldNames?.filter(i => i !== '关联表单');
allFieldList.current.push({ allFieldList.current.push({
TableFieldNames: data, TableFieldNames: data,
TableName: item.TableName, TableName: item.TableName,
......
...@@ -568,7 +568,7 @@ const Map = props => { ...@@ -568,7 +568,7 @@ const Map = props => {
} }
setRadio1(form.getFieldsValue().customFlag); setRadio1(form.getFieldsValue().customFlag);
setAreaFlag(0); setAreaFlag(0);
setSchemename(item => ({...item}))
} }
// 选择颜色 // 选择颜色
...@@ -1526,7 +1526,7 @@ const Map = props => { ...@@ -1526,7 +1526,7 @@ const Map = props => {
client = "sandbox" client = "sandbox"
/> />
)} )}
{radio == 'arcgis' && PdScene && name && Schemename ? ( {radio == 'arcgis' && PdScene && name && Schemename && PdScene.pipenetLayer.id === PdScene.layerInfo.mapName ? (
<PipenetStylesCenter <PipenetStylesCenter
schemeName={PdScene.pipenetLayer.schemename} schemeName={PdScene.pipenetLayer.schemename}
mapServerName={PdScene.pipenetLayer.id} mapServerName={PdScene.pipenetLayer.id}
......
...@@ -38,6 +38,7 @@ import { ...@@ -38,6 +38,7 @@ import {
GetGridSetList, GetGridSetList,
GetCustomBaseMapByName, GetCustomBaseMapByName,
} from '@/services/webConfig/api'; } from '@/services/webConfig/api';
import { handleMapMaxZoom } from '@/utils/utils';
const { Item } = Form; const { Item } = Form;
const { Option } = Select; const { Option } = Select;
...@@ -71,6 +72,7 @@ const AddModal = props => { ...@@ -71,6 +72,7 @@ const AddModal = props => {
const [radio1, setRadio1] = useState(); const [radio1, setRadio1] = useState();
const [keepJsonData, setKeepJsonData] = useState([]); const [keepJsonData, setKeepJsonData] = useState([]);
const [maplayer, setMaplayer] = useState([]); const [maplayer, setMaplayer] = useState([]);
const [baseMapMaxZoom,setBaseMapMaxZoom] = useState (handleMapMaxZoom('amap-v'))
const arr = [ const arr = [
'assets/images/thumbnail/thumbnail_1.jpg', 'assets/images/thumbnail/thumbnail_1.jpg',
'assets/images/thumbnail/thumbnail_2.jpg', 'assets/images/thumbnail/thumbnail_2.jpg',
...@@ -85,7 +87,6 @@ const AddModal = props => { ...@@ -85,7 +87,6 @@ const AddModal = props => {
setLoading(true); setLoading(true);
let obj = form.getFieldsValue(); let obj = form.getFieldsValue();
let arr = {}; let arr = {};
console.log(obj.url);
// 连点 // 连点
if (obj.servicename) { if (obj.servicename) {
if (mapType == 1) { if (mapType == 1) {
...@@ -114,6 +115,8 @@ const AddModal = props => { ...@@ -114,6 +115,8 @@ const AddModal = props => {
m_User: obj.User || 'admin', m_User: obj.User || 'admin',
m_Pwd: obj.Pwd || 'panda_server@2023', m_Pwd: obj.Pwd || 'panda_server@2023',
gsAppName: obj.gis, gsAppName: obj.gis,
baseMaxZoom:obj.baseMaxZoom,
baseMinZoom:obj.baseMinZoom,
}), }),
}; };
} else { } else {
...@@ -122,17 +125,6 @@ const AddModal = props => { ...@@ -122,17 +125,6 @@ const AddModal = props => {
if (list) { if (list) {
url = list.url; url = list.url;
} }
// if (obj.type == 'streetPurplishBlue') {
// url = '//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer';
// } else if (obj.type == 'streetGray') {
// url = '//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer';
// } else if (obj.type == 'streetWarm') {
// url = '//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer';
// } else if (obj.type == 'mapbox-i-ia') {
// url = '//api.mapbox.com/v4/mapbox.satellite';
// } else if (obj.type == 'tianditu-arcgis-i') {
// url = '//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer';
// }
arr = { arr = {
servicename: obj.servicename, servicename: obj.servicename,
terminalType: 'base', terminalType: 'base',
...@@ -146,6 +138,8 @@ const AddModal = props => { ...@@ -146,6 +138,8 @@ const AddModal = props => {
type: obj.type, type: obj.type,
isTainDiTu: obj.isTainDiTu, isTainDiTu: obj.isTainDiTu,
levelEnd: obj.levelEnd, levelEnd: obj.levelEnd,
baseMaxZoom:obj.baseMaxZoom,
baseMinZoom:obj.baseMinZoom,
}), }),
}; };
} }
...@@ -221,6 +215,8 @@ const AddModal = props => { ...@@ -221,6 +215,8 @@ const AddModal = props => {
Pwd: 'panda_server@2023', Pwd: 'panda_server@2023',
isTainDiTu: 0, isTainDiTu: 0,
levelEndEnlarge: false, levelEndEnlarge: false,
baseMinZoom:1,
baseMaxZoom:handleMapMaxZoom('amap-v')
}); });
break; break;
...@@ -282,12 +278,15 @@ const AddModal = props => { ...@@ -282,12 +278,15 @@ const AddModal = props => {
}; };
const handleChange = (value, label) => { const handleChange = (value, label) => {
let str = label[0].split('('); let str = label[0].split('(');
let maxZoom = handleMapMaxZoom(value)
setAdvanced(0); setAdvanced(0);
setCurrent(false); setCurrent(false);
form.setFieldsValue({ form.setFieldsValue({
label: str[0], label: str[0],
servicename: str[0], servicename: str[0],
baseMaxZoom: maxZoom
}); });
setBaseMapMaxZoom(maxZoom)
if (value == 'google-user' || value == 'pipenet-tile') { if (value == 'google-user' || value == 'pipenet-tile') {
setMapType(1); setMapType(1);
} else { } else {
...@@ -570,21 +569,37 @@ const AddModal = props => { ...@@ -570,21 +569,37 @@ const AddModal = props => {
<Item label="标签" name="label" rules={[{ required: true, message: '请输入标签' }]}> <Item label="标签" name="label" rules={[{ required: true, message: '请输入标签' }]}>
<Input placeholder="请输入标签名" allowClear /> <Input placeholder="请输入标签名" allowClear />
</Item> </Item>
{/* <Item label="URL" name="url"> <Item label="缩放级别">
<Input placeholder="请输入URL" allowClear /> <Row>
</Item> */} <Col span={5}>
{/* <Item label="透明度" name="alpha"> <Item name="baseMinZoom" rules={[{ required: true, message: '请输入最小级别' }]}>
<Slider <InputNumber min={1} max={baseMapMaxZoom} />
marks={marks} </Item>
min={0} </Col>
max={100} <Col span={1}>
onChange={onChange} <div style={{ marginTop: '4px' }}>~</div>
// step={0.1} </Col>
tipFormatter={tipFormatter} <Col span={10}>
// tooltipVisible <Item
defaultValue={100} name="baseMaxZoom"
/> rules={[
</Item> */} {
validator: (rule, value) => {
const obj = form.getFieldsValue().baseMinZoom;
const objmax = form.getFieldsValue().baseMaxZoom;
if (objmax < obj) {
return Promise.reject('最大级别不能小于最小级别');
}
return Promise.resolve();
},
},
]}
>
<InputNumber min={1} max={baseMapMaxZoom} />
</Item>
</Col>
</Row>
</Item>
<Item <Item
label="选择缩略图" label="选择缩略图"
name="icon" name="icon"
...@@ -608,9 +623,6 @@ const AddModal = props => { ...@@ -608,9 +623,6 @@ const AddModal = props => {
form.setFieldsValue({ icon: arr[index] }); form.setFieldsValue({ icon: arr[index] });
}} }}
/> />
{/* <Radio.Group options={item} onChange={radioChange} value={radio}>
<Radio value={arr[index]} />
</Radio.Group> */}
</div> </div>
))} ))}
</div> </div>
...@@ -638,9 +650,6 @@ const AddModal = props => { ...@@ -638,9 +650,6 @@ const AddModal = props => {
</Item> </Item>
</> </>
)} )}
{/* <Item label="缩略图" name="icon" rules={[{ required: true, message: '请选择缩略图' }]}>
<Input placeholder="请输入URL" disabled />
</Item> */}
{mapType === 1 ? ( {mapType === 1 ? (
<> <>
<Item label="ip地址" name="IP" rules={[{ required: true, message: '请输入ip地址' }]}> <Item label="ip地址" name="IP" rules={[{ required: true, message: '请输入ip地址' }]}>
......
...@@ -9,13 +9,17 @@ import { ...@@ -9,13 +9,17 @@ import {
bindSchemeBaseMap, bindSchemeBaseMap,
SetBaseMapschemeName, SetBaseMapschemeName,
} from '@/services/webConfig/api'; } from '@/services/webConfig/api';
import { InfoCircleOutlined } from '@ant-design/icons'; import { handleMapMaxZoom } from '@/utils/utils';
const { Item } = Form; const { Item } = Form;
const { Option } = Select; const { Option } = Select;
const AddProjectModal = props => { const AddProjectModal = props => {
const { callBackSubmit = () => {}, type, formObj, visible, serviceList, cardData, all } = props; const { callBackSubmit = () => {}, type, formObj, visible, serviceList, cardData, all, allBaseMap } = props;
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [baseMap, setBaseMap] = useState([]); const [baseMap, setBaseMap] = useState([]);
const [baseMapZoomRange,setBaseMapZoomRange] = useState ({
max:20,
min:1
})
const [pipeArr, setPipeArr] = useState([]); const [pipeArr, setPipeArr] = useState([]);
const [arr, setArr] = useState([]); const [arr, setArr] = useState([]);
...@@ -26,35 +30,7 @@ const AddProjectModal = props => { ...@@ -26,35 +30,7 @@ const AddProjectModal = props => {
if (validate) { if (validate) {
setLoading(true); setLoading(true);
let obj = form.getFieldsValue(); let obj = form.getFieldsValue();
if (type === 'add') { if (type === 'add') {
// let aa = cardData.find(i => i.schemename == formObj.schemename);
// aa.baseMap.push(obj.serverName);
// aa.baseMapDetail.push({ servicename: obj.serverName, zoom: obj.zoom });
// let query = {
// schemename: formObj.schemename,
// terminalType: 'baseMapscheme',
// isBaseMap: 'false',
// jsonCfg: JSON.stringify({
// baseMap: aa.baseMap,
// baseMapDetail: aa.baseMapDetail,
// }),
// };
// SetServiceConfig(query)
// .then(res => {
// setLoading(false);
// if (res.msg === 'Ok') {
// form.resetFields();
// callBackSubmit();
// prompt('success', '瓦片新增成功');
// } else {
// prompt('fail', '瓦片新增失败');
// }
// })
// .catch(err => {
// setLoading(false);
// });
let data = { let data = {
schemename: formObj.schemename, schemename: formObj.schemename,
servicename: obj.serverName, servicename: obj.serverName,
...@@ -98,19 +74,12 @@ const AddProjectModal = props => { ...@@ -98,19 +74,12 @@ const AddProjectModal = props => {
}; };
const handleEdit = () => { const handleEdit = () => {
let obj = form.getFieldsValue(); let obj = form.getFieldsValue();
// let query = { let currentMap = allBaseMap.find(i=>i.servicename === obj.baseMap)
// schemename: obj.schemename,
// terminalType: 'baseMapscheme',
// isBaseMap: 'false',
// jsonCfg: JSON.stringify({
// baseMap: [obj.baseMap],
// alpha: 1,
// }),
// };
let data = { let data = {
schemename: obj.schemename, schemename: obj.schemename,
servicename: obj.baseMap, servicename: obj.baseMap,
zoom: 0, zoom: currentMap.baseMinZoom,
maxZoom: currentMap.baseMaxZoom,
}; };
SetBaseMapschemeName(data) SetBaseMapschemeName(data)
.then(res => { .then(res => {
...@@ -126,25 +95,10 @@ const AddProjectModal = props => { ...@@ -126,25 +95,10 @@ const AddProjectModal = props => {
.catch(err => { .catch(err => {
setLoading(false); setLoading(false);
}); });
// SetServiceConfig(query)
// .then(res => {
// setLoading(false);
// if (res.msg === 'Ok') {
// form.resetFields();
// callBackSubmit();
// prompt('success', '方案新增成功');
// } else {
// prompt('fail', '方案新增失败');
// }
// })
// .catch(err => {
// setLoading(false);
// });
}; };
const onFinish = value => {}; const onFinish = value => {};
useEffect(() => { useEffect(() => {
console.log(type);
switch (type) { switch (type) {
case 'add': case 'add':
addTile(); addTile();
...@@ -164,10 +118,16 @@ const AddProjectModal = props => { ...@@ -164,10 +118,16 @@ const AddProjectModal = props => {
aa.baseMapDetail.map(i => { aa.baseMapDetail.map(i => {
arrNew.push(i.zoom); arrNew.push(i.zoom);
}); });
console.log(arrNew);
setArr(arrNew); setArr(arrNew);
let _baseMapMaxZoom = handleMapMaxZoom(all[0].servicename)
setBaseMapZoomRange({
max: _baseMapMaxZoom < all[0].baseMaxZoom ? _baseMapMaxZoom :all[0].baseMaxZoom,
min: all[0].baseMinZoom < 1 ? 1 : all[0].baseMinZoom
})
form.setFieldsValue({ form.setFieldsValue({
serverName: serviceList[0], serverName: all[0].servicename,
zoom:1,
maxzoom:_baseMapMaxZoom,
}); });
}; };
// 获取管网及默认底图 // 获取管网及默认底图
...@@ -206,18 +166,18 @@ const AddProjectModal = props => { ...@@ -206,18 +166,18 @@ const AddProjectModal = props => {
}; };
// 选择服务名 // 选择服务名
const handleChange = () => {}; const handleChange = (name) => {
// 选择管网 const currentMapInfo = all.find(i=>i.servicename === name)
const handleService = value => { form.setFieldsValue({
form.setFieldsValue({ zoom:currentMapInfo.baseMinZoom,
label: value, maxzoom:currentMapInfo.baseMaxZoom
// url: `http://{IP}/PandaGIS/MapServer/Export?mapServerName=${value}`, })
url: `http://{IP}/CityInterface/rest/services/MapServer.svc/${value}`,
});
}; };
// 选择底图 // 选择底图
const handleBaseMap = () => {}; const handleBaseMap = () => {};
return ( return (
<Modal <Modal
title={`${type === 'add' ? '添加基础底图' : '添加分级底图'}`} title={`${type === 'add' ? '添加基础底图' : '添加分级底图'}`}
...@@ -242,37 +202,12 @@ const AddProjectModal = props => { ...@@ -242,37 +202,12 @@ const AddProjectModal = props => {
<Row> <Row>
<Col span={7}> <Col span={7}>
<Item <Item
// label={
// <div>
// {/* <Tooltip title="同一分级底图中的不同基础底图级别不能相同">
// <InfoCircleOutlined
// style={{
// color: 'rgb(24, 144, 255)',
// marginLeft: '0px',
// marginRight: '5px',
// }}
// />
// </Tooltip> */}
// <span>最小级别</span>
// </div>
// }
name="zoom" name="zoom"
rules={[ rules={[
{ required: true, message: '请输入最小级别' }, { required: true, message: '请输入最小级别' },
// {
// validator: (rule, value) => {
// const obj = form.getFieldsValue().zoom;
// console.log(obj);
// if (arr.indexOf(obj) != -1) {
// console.log(111);
// return Promise.reject('已存在该级别的基础底图');
// }
// return Promise.resolve();
// },
// },
]} ]}
> >
<InputNumber min={0} max={99} /> <InputNumber min={baseMap.min} max={baseMapZoomRange.max} />
</Item> </Item>
</Col> </Col>
<Col span={2}> <Col span={2}>
...@@ -295,7 +230,7 @@ const AddProjectModal = props => { ...@@ -295,7 +230,7 @@ const AddProjectModal = props => {
}, },
]} ]}
> >
<InputNumber min={0} max={99} /> <InputNumber min={baseMap.min} max={baseMapZoomRange.max} />
</Item> </Item>
</Col> </Col>
</Row> </Row>
...@@ -306,10 +241,10 @@ const AddProjectModal = props => { ...@@ -306,10 +241,10 @@ const AddProjectModal = props => {
rules={[{ required: true, message: '请输入基础底图' }]} rules={[{ required: true, message: '请输入基础底图' }]}
> >
<Select onChange={handleChange}> <Select onChange={handleChange}>
{serviceList.length {all.length
? serviceList.map((item, index) => ( ? all.map((item, index) => (
<Option key={index} value={item}> <Option key={index} value={item.servicename}>
{item} {item.servicename}
</Option> </Option>
)) ))
: ''} : ''}
......
...@@ -19,22 +19,26 @@ import { InfoCircleOutlined } from '@ant-design/icons'; ...@@ -19,22 +19,26 @@ import { InfoCircleOutlined } from '@ant-design/icons';
const { Item } = Form; const { Item } = Form;
const { Option } = Select; const { Option } = Select;
const BaseMap = props => { const BaseMap = props => {
const { visible, onCancel, keepItem, keepProject, callBackSubmit = () => {} } = props; const { visible, onCancel, keepItem, keepProject, callBackSubmit = () => {}, allBaseMap } = props;
const [arr, setArr] = useState([]); const [arr, setArr] = useState([]);
const [form] = Form.useForm(); const [form] = Form.useForm();
const [baseMapZoomRange,setBaseMapZoomRange] = useState ({
max:20,
min:1
})
// 删除瓦片 // 删除瓦片
useEffect(() => { useEffect(() => {
console.log(keepItem);
console.log(keepProject);
if (visible) { if (visible) {
let list = []; let list = [];
keepItem.baseMapDetail.map(i => { keepItem.baseMapDetail.map(i => {
list.push(i.zoom); list.push(i.zoom);
}); });
setArr(list); setArr(list);
let aa = keepItem.baseMapDetail.find(i => i.servicename == keepProject); let findMap = keepItem.baseMapDetail.find(i => i.servicename == keepProject);
form.setFieldsValue({ zoom: aa.zoom, maxzoom: aa.maxzoom }); let currentBaseMap = allBaseMap.find(i => i.servicename == keepProject)
setBaseMapZoomRange({max:currentBaseMap.baseMaxZoom,min:currentBaseMap.baseMinZoom})
form.setFieldsValue({ zoom: findMap.zoom, maxzoom: findMap.maxzoom });
} else { } else {
form.resetFields(); form.resetFields();
} }
...@@ -44,29 +48,6 @@ const BaseMap = props => { ...@@ -44,29 +48,6 @@ const BaseMap = props => {
form.validateFields().then(validate => { form.validateFields().then(validate => {
if (validate) { if (validate) {
let obj = form.getFieldsValue(); let obj = form.getFieldsValue();
// let aa = keepItem.baseMapDetail.find(i => i.servicename == keepProject);
// console.log(aa);
// aa.zoom = obj.zoom;
// let query = {
// schemename: keepItem.schemename,
// terminalType: 'baseMapscheme',
// isBaseMap: 'false',
// jsonCfg: JSON.stringify({
// baseMap: keepItem.baseMap,
// baseMapDetail: keepItem.baseMapDetail,
// }),
// };
// SetServiceConfig(query)
// .then(res => {
// if (res.msg === 'Ok') {
// form.resetFields();
// callBackSubmit();
// prompt('success', '编辑成功');
// } else {
// prompt('fail', '编辑失败');
// }
// })
// .catch(err => {});
let data = { let data = {
schemename: keepItem.schemename, schemename: keepItem.schemename,
servicename: keepProject, servicename: keepProject,
...@@ -137,38 +118,12 @@ const BaseMap = props => { ...@@ -137,38 +118,12 @@ const BaseMap = props => {
<Row> <Row>
<Col span={8}> <Col span={8}>
<Item <Item
// label={
// <div>
// <Tooltip title="同一分级底图中的不同基础底图级别不能相同">
// <InfoCircleOutlined
// style={{
// color: 'rgb(24, 144, 255)',
// marginLeft: '0px',
// marginRight: '5px',
// }}
// />
// </Tooltip>
// <span>最小级别</span>
// </div>
// }
name="zoom" name="zoom"
rules={[ rules={[
{ required: true, message: '请输入级别' }, { required: true, message: '请输入级别' },
// {
// validator: (rule, value) => {
// const obj = form.getFieldsValue().zoom;
// console.log(obj);
// if (arr.indexOf(obj) != -1) {
// console.log(111);
// return Promise.reject('已存在该级别的基础底图');
// }
// return Promise.resolve();
// },
// },
]} ]}
> >
<InputNumber min={0} /> <InputNumber min={baseMapZoomRange.min} max={baseMapZoomRange.max} />
</Item> </Item>
</Col> </Col>
<Col span={3}> <Col span={3}>
...@@ -190,7 +145,7 @@ const BaseMap = props => { ...@@ -190,7 +145,7 @@ const BaseMap = props => {
}, },
]} ]}
> >
<InputNumber min={0} max={99} /> <InputNumber min={baseMapZoomRange.min} max={baseMapZoomRange.max} />
</Item> </Item>
</Col> </Col>
</Row> </Row>
......
...@@ -38,6 +38,7 @@ import { ...@@ -38,6 +38,7 @@ import {
GetGridSetList, GetGridSetList,
GetCustomBaseMapByName, GetCustomBaseMapByName,
} from '@/services/webConfig/api'; } from '@/services/webConfig/api';
import { handleMapMaxZoom } from '@/utils/utils';
const { Item } = Form; const { Item } = Form;
const { Option } = Select; const { Option } = Select;
const { TreeNode } = TreeSelect; const { TreeNode } = TreeSelect;
...@@ -67,6 +68,7 @@ const NewEditModal = props => { ...@@ -67,6 +68,7 @@ const NewEditModal = props => {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [radio1, setRadio1] = useState(); const [radio1, setRadio1] = useState();
const [keepJsonData, setKeepJsonData] = useState([]); const [keepJsonData, setKeepJsonData] = useState([]);
const [baseMapMaxZoom,setBaseMapMaxZoom] = useState (20)
const arr = [ const arr = [
'assets/images/thumbnail/thumbnail_1.jpg', 'assets/images/thumbnail/thumbnail_1.jpg',
'assets/images/thumbnail/thumbnail_2.jpg', 'assets/images/thumbnail/thumbnail_2.jpg',
...@@ -81,10 +83,9 @@ const NewEditModal = props => { ...@@ -81,10 +83,9 @@ const NewEditModal = props => {
if (validate) { if (validate) {
setLoading(true); setLoading(true);
let obj = form.getFieldsValue(); let obj = form.getFieldsValue();
let arr = {}; let submitObj = {};
console.log(mapType);
if (mapType == 1) { if (mapType == 1) {
arr = { submitObj = {
servicename: obj.servicename, servicename: obj.servicename,
terminalType: 'base', terminalType: 'base',
isBaseMap: true, isBaseMap: true,
...@@ -109,6 +110,8 @@ const NewEditModal = props => { ...@@ -109,6 +110,8 @@ const NewEditModal = props => {
m_User: obj.User, m_User: obj.User,
m_Pwd: obj.Pwd, m_Pwd: obj.Pwd,
gsAppName: obj.gis, gsAppName: obj.gis,
baseMaxZoom: obj.baseMaxZoom,
baseMinZoom: obj.baseMinZoom,
}), }),
}; };
} else { } else {
...@@ -117,18 +120,7 @@ const NewEditModal = props => { ...@@ -117,18 +120,7 @@ const NewEditModal = props => {
if (list) { if (list) {
url = list.url; url = list.url;
} }
// if (obj.type == 'streetPurplishBlue') { submitObj = {
// url = '//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer';
// } else if (obj.type == 'streetGray') {
// url = '//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer';
// } else if (obj.type == 'streetWarm') {
// url = '//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer';
// } else if (obj.type == 'mapbox-i-ia') {
// url = '//api.mapbox.com/v4/mapbox.satellite';
// } else if (obj.type == 'tianditu-arcgis-i') {
// url = '//services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer';
// }
arr = {
servicename: obj.servicename, servicename: obj.servicename,
terminalType: 'base', terminalType: 'base',
isBaseMap: true, isBaseMap: true,
...@@ -154,11 +146,13 @@ const NewEditModal = props => { ...@@ -154,11 +146,13 @@ const NewEditModal = props => {
m_User: null, m_User: null,
m_Pwd: null, m_Pwd: null,
gsAppName: null, gsAppName: null,
baseMinZoom: obj.baseMinZoom,
baseMaxZoom: obj.baseMaxZoom
}), }),
}; };
} }
SetServiceConfig(arr) SetServiceConfig(submitObj)
.then(res => { .then(res => {
if (res.code == '0') { if (res.code == '0') {
form.resetFields(); form.resetFields();
...@@ -188,12 +182,6 @@ const NewEditModal = props => { ...@@ -188,12 +182,6 @@ const NewEditModal = props => {
const onFinish = value => {}; const onFinish = value => {};
useEffect(() => { useEffect(() => {
// let data = [];
// jsonData.forEach(item => {
// data = [...data, ...item.items];
// });
// setKeepJsonData(data);
if (json.length > 0) { if (json.length > 0) {
setMaplayer(json); setMaplayer(json);
let data = []; let data = [];
...@@ -215,15 +203,12 @@ const NewEditModal = props => { ...@@ -215,15 +203,12 @@ const NewEditModal = props => {
setKeyData([]); setKeyData([]);
setData([]); setData([]);
setAreaData([]); setAreaData([]);
console.log(formObj);
setAlpha(formObj.alpha); setAlpha(formObj.alpha);
let aa; let aa;
if (formObj.baseLayer) { if (formObj.baseLayer) {
let index = formObj.baseLayer?.lastIndexOf(':'); let index = formObj.baseLayer?.lastIndexOf(':');
aa = formObj.baseLayer?.substring(0, index); aa = formObj.baseLayer?.substring(0, index);
console.log(aa);
} }
console.log(formObj.baseLayer);
if (formObj.type == 'pipenet-tile' || formObj.type == 'google-user') { if (formObj.type == 'pipenet-tile' || formObj.type == 'google-user') {
setMapType(1); setMapType(1);
} else { } else {
...@@ -241,10 +226,11 @@ const NewEditModal = props => { ...@@ -241,10 +226,11 @@ const NewEditModal = props => {
setAdvanced(0); setAdvanced(0);
setCurrent(false); setCurrent(false);
} }
console.log(formObj.isTainDiTu);
setRadio1(formObj.isTainDiTu); setRadio1(formObj.isTainDiTu);
switch (type) { switch (type) {
case 'edit': case 'edit':
let _baseMapMaxZoom = handleMapMaxZoom(formObj.layerType)
setBaseMapMaxZoom(_baseMapMaxZoom)
form.setFieldsValue({ form.setFieldsValue({
...formObj, ...formObj,
isTainDiTu: formObj.isTainDiTu, isTainDiTu: formObj.isTainDiTu,
...@@ -258,18 +244,17 @@ const NewEditModal = props => { ...@@ -258,18 +244,17 @@ const NewEditModal = props => {
User: formObj.m_User, User: formObj.m_User,
Pwd: formObj.m_Pwd, Pwd: formObj.m_Pwd,
workSpance: aa, workSpance: aa,
// type: `${formObj.servicename}(${formObj.type})`, baseMaxZoom:formObj?.baseMaxZoom && formObj?.baseMaxZoom !== 99 ?
formObj?.baseMaxZoom : _baseMapMaxZoom,
baseMinZoom:formObj?.baseMinZoom ? formObj?.baseMinZoom : 1,
}); });
let index = formObj.icon?.lastIndexOf('/'); let index = formObj.icon?.lastIndexOf('/');
console.log(index);
let str = formObj.icon?.substring(index + 1, formObj.icon?.length); let str = formObj.icon?.substring(index + 1, formObj.icon?.length);
console.log(str);
let defaultIndex = arr.filter((item, index) => { let defaultIndex = arr.filter((item, index) => {
if (item.indexOf(str) != -1) { if (item.indexOf(str) != -1) {
return item; return item;
} }
}); });
console.log(defaultIndex);
if (str?.indexOf(1) != -1) { if (str?.indexOf(1) != -1) {
setPickItem(0); setPickItem(0);
} else if (str?.indexOf(2) != -1) { } else if (str?.indexOf(2) != -1) {
...@@ -325,11 +310,10 @@ const NewEditModal = props => { ...@@ -325,11 +310,10 @@ const NewEditModal = props => {
// label: servicenameToType(value), // label: servicenameToType(value),
// servicename: servicenameToType(value), // servicename: servicenameToType(value),
// }); // });
console.log(value); let _baseMapMaxZoom = handleMapMaxZoom(value)
setBaseMapMaxZoom(_baseMapMaxZoom)
if (value == 'google-user' || value == 'pipenet-tile') { if (value == 'google-user' || value == 'pipenet-tile') {
setMapType(1); setMapType(1);
console.log(form.getFieldsValue().IP);
console.log(form.getFieldsValue().gis);
if (!form.getFieldsValue().IP) { if (!form.getFieldsValue().IP) {
form.setFieldsValue({ form.setFieldsValue({
IP: '192.168.12.7', IP: '192.168.12.7',
...@@ -381,27 +365,22 @@ const NewEditModal = props => { ...@@ -381,27 +365,22 @@ const NewEditModal = props => {
let lay = form.getFieldsValue().layer; let lay = form.getFieldsValue().layer;
let index = lay.indexOf(':'); let index = lay.indexOf(':');
let result = lay.substr(index + 1, lay.length); let result = lay.substr(index + 1, lay.length);
console.log(result);
getGetCustomBaseMapByName(work, result, e); getGetCustomBaseMapByName(work, result, e);
}; };
// 选择图层 // 选择图层
const handleLayer = e => { const handleLayer = e => {
let index = e.indexOf(':'); let index = e.indexOf(':');
let result = e.substr(index + 1, e.length); let result = e.substr(index + 1, e.length);
console.log(result);
let work = form.getFieldsValue().workSpance; let work = form.getFieldsValue().workSpance;
console.log(work);
getGetGridSetList(work, result); getGetGridSetList(work, result);
}; };
// 选择工作空间 // 选择工作空间
const handleWorkSpance = e => { const handleWorkSpance = e => {
console.log(e);
setData(spaceData[e]); setData(spaceData[e]);
form.setFieldsValue({ layer: spaceData[e][0] }); form.setFieldsValue({ layer: spaceData[e][0] });
let aa = form.getFieldsValue().layer; let aa = form.getFieldsValue().layer;
let index = aa.indexOf(':'); let index = aa.indexOf(':');
let result = aa.substr(index + 1, aa.length); let result = aa.substr(index + 1, aa.length);
console.log(result);
getGetGridSetList(e, result); getGetGridSetList(e, result);
}; };
...@@ -412,7 +391,6 @@ const NewEditModal = props => { ...@@ -412,7 +391,6 @@ const NewEditModal = props => {
if (aa) { if (aa) {
let index = aa.indexOf(':'); let index = aa.indexOf(':');
result = aa.substr(index + 1, aa.length); result = aa.substr(index + 1, aa.length);
console.log(result);
} }
GetGridSetList({ GetGridSetList({
m_Port: obj.Port || '18088', m_Port: obj.Port || '18088',
...@@ -424,11 +402,9 @@ const NewEditModal = props => { ...@@ -424,11 +402,9 @@ const NewEditModal = props => {
workSpaceName: a, workSpaceName: a,
}).then(res => { }).then(res => {
let data = []; let data = [];
console.log(res.results);
res.results.map(i => { res.results.map(i => {
data.push(i.gridSetName); data.push(i.gridSetName);
}); });
console.log(data);
setAreaData(data); setAreaData(data);
form.setFieldsValue({ coordinate: data[0] }); form.setFieldsValue({ coordinate: data[0] });
getGetCustomBaseMapByName(a, bb, data[0]); getGetCustomBaseMapByName(a, bb, data[0]);
...@@ -448,9 +424,6 @@ const NewEditModal = props => { ...@@ -448,9 +424,6 @@ const NewEditModal = props => {
gridSet: cc, gridSet: cc,
}).then(res => { }).then(res => {
let aa = res.results.coords; let aa = res.results.coords;
console.log(JSON.parse(aa)[2]);
console.log(JSON.parse(aa)[3]);
console.log(JSON.parse(aa).toString());
form.setFieldsValue({ form.setFieldsValue({
range: JSON.parse(aa).toString(), range: JSON.parse(aa).toString(),
resolution: res.results.resolutions, resolution: res.results.resolutions,
...@@ -602,21 +575,38 @@ const NewEditModal = props => { ...@@ -602,21 +575,38 @@ const NewEditModal = props => {
<Item label="标签" name="label" rules={[{ required: true, message: '请输入标签' }]}> <Item label="标签" name="label" rules={[{ required: true, message: '请输入标签' }]}>
<Input placeholder="请输入标签名" allowClear /> <Input placeholder="请输入标签名" allowClear />
</Item> </Item>
{/* <Item label="URL" name="url"> <Item label="缩放级别">
<Input placeholder="请输入URL" allowClear /> <Row>
</Item> */} <Col span={5}>
{/* <Item label="透明度" name="alpha"> <Item name="baseMinZoom" rules={[{ required: true, message: '请输入最小级别' }]}>
{console.log(formObj.alpha)} <InputNumber min={1} max={baseMapMaxZoom} />
<Slider </Item>
marks={marks} </Col>
min={0} <Col span={1}>
max={100} <div style={{ marginTop: '4px' }}>~</div>
onChange={onChange} </Col>
tipFormatter={tipFormatter} <Col span={10}>
// // tooltipVisible={true} <Item
defaultValue={formObj.alpha * 100} name="baseMaxZoom"
/> rules={[
</Item> */} {
validator: (rule, value) => {
const obj = form.getFieldsValue().baseMinZoom;
const objmax = form.getFieldsValue().baseMaxZoom;
if (objmax < obj) {
return Promise.reject('最大级别不能小于最小级别');
}
return Promise.resolve();
},
},
]}
>
<InputNumber min={1} max={baseMapMaxZoom} />
</Item>
</Col>
</Row>
</Item>
<Item <Item
label="选择缩略图" label="选择缩略图"
name="icon" name="icon"
...@@ -675,7 +665,11 @@ const NewEditModal = props => { ...@@ -675,7 +665,11 @@ const NewEditModal = props => {
</Item> */} </Item> */}
{mapType === 1 ? ( {mapType === 1 ? (
<> <>
<Item label="ip地址" name="IP" rules={[{ required: true, message: '请输入ip地址' }]}> <Item
label="ip地址"
name="IP"
rules={[{ required: true, message: '请输入ip地址' }]}
>
<Input placeholder="请输入ip地址" allowClear /> <Input placeholder="请输入ip地址" allowClear />
</Item> </Item>
<Row> <Row>
...@@ -805,7 +799,11 @@ const NewEditModal = props => { ...@@ -805,7 +799,11 @@ const NewEditModal = props => {
> >
<Input placeholder="请输入用户名" allowClear /> <Input placeholder="请输入用户名" allowClear />
</Item> </Item>
<Item label="密码" name="Pwd" rules={[{ required: true, message: '请输入密码' }]}> <Item
label="密码"
name="Pwd"
rules={[{ required: true, message: '请输入密码' }]}
>
<Input placeholder="请输入密码" allowClear /> <Input placeholder="请输入密码" allowClear />
</Item> </Item>
<Item <Item
......
...@@ -61,13 +61,6 @@ const TileData = props => { ...@@ -61,13 +61,6 @@ const TileData = props => {
key: 'type', key: 'type',
align: 'center', align: 'center',
}, },
// {
// title: '透明度',
// dataIndex: 'alpha',
// key: 'alpha',
// align: 'center',
// render: (text, record) => <span>{`${(text * 100).toFixed()}%`}</span>,
// },
{ {
title: '编辑', title: '编辑',
align: 'center', align: 'center',
...@@ -102,13 +95,13 @@ const TileData = props => { ...@@ -102,13 +95,13 @@ const TileData = props => {
]; ];
useEffect(() => { useEffect(() => {
if(!flagAdd) return
setTreeLoading(true); setTreeLoading(true);
GetMaplayerByTerminalType({ GetMaplayerByTerminalType({
terminalType: 'baseMapscheme', terminalType: 'baseMapscheme',
isBaseMap: false, isBaseMap: false,
}) })
.then(res => { .then(res => {
console.log('res', res);
if (res.code == '0') { if (res.code == '0') {
setTreeLoading(false); setTreeLoading(false);
setCardData(res.data.optionalLayer.layers); setCardData(res.data.optionalLayer.layers);
...@@ -162,8 +155,6 @@ const TileData = props => { ...@@ -162,8 +155,6 @@ const TileData = props => {
setFlagAdd(flagAdd + 1); setFlagAdd(flagAdd + 1);
setTreeLoading(false); setTreeLoading(false);
if (res.code == '0') { if (res.code == '0') {
// form.resetFields();
// callBackSubmit();
notification.success({ notification.success({
message: '提示', message: '提示',
duration: 3, duration: 3,
...@@ -183,17 +174,8 @@ const TileData = props => { ...@@ -183,17 +174,8 @@ const TileData = props => {
}); });
}; };
const handleAdd = () => { const handleAdd = () => {
// console.log(baseMap);
// if (baseMap.length) {
setType('add'); setType('add');
setAddVisible(true); setAddVisible(true);
// } else {
// notification.warning({
// message: '提示',
// duration: 3,
// description: '地图类型已都存在,可编辑修改',
// });
// }
}; };
useEffect(() => { useEffect(() => {
renderTile(); renderTile();
...@@ -251,6 +233,8 @@ const TileData = props => { ...@@ -251,6 +233,8 @@ const TileData = props => {
baseMapData.splice(index, 1); baseMapData.splice(index, 1);
} }
}); });
let _cardLayers = res.data.specific.baseMapscheme.optionalLayer.layers
setCardData(_cardLayers)
setName(data); setName(data);
setBaseMap(baseMapData); setBaseMap(baseMapData);
} else { } else {
...@@ -287,6 +271,7 @@ const TileData = props => { ...@@ -287,6 +271,7 @@ const TileData = props => {
const onDeletebaseMap = value => { const onDeletebaseMap = value => {
setFlagAdd(flagAdd + 1); setFlagAdd(flagAdd + 1);
}; };
return ( return (
<div className={styles.tileContainer}> <div className={styles.tileContainer}>
<div> <div>
...@@ -329,13 +314,6 @@ const TileData = props => { ...@@ -329,13 +314,6 @@ const TileData = props => {
</div>{' '} </div>{' '}
</Divider> </Divider>
<div className={styles.cardsList1}> <div className={styles.cardsList1}>
{/* <AutoResponsive
itemMargin="10"
containerWidth="100%"
itemClassName="item"
gridWidth="100"
transitionDuration=".5"
> */}
{cardData && cardData.length ? ( {cardData && cardData.length ? (
cardData.map((item, index) => ( cardData.map((item, index) => (
<div <div
...@@ -345,13 +323,12 @@ const TileData = props => { ...@@ -345,13 +323,12 @@ const TileData = props => {
offset={2} offset={2}
style={{ marginBottom: '1rem' }} style={{ marginBottom: '1rem' }}
> >
<Cards item={item} deletebaseMaps={onDeletebaseMap} cardData={cardData} /> <Cards item={item} deletebaseMaps={onDeletebaseMap} cardData={cardData} allBaseMap={tileData} />
</div> </div>
)) ))
) : ( ) : (
<Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: 'auto' }} /> <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} style={{ margin: 'auto' }} />
)} )}
{/* </AutoResponsive> */}
</div> </div>
<AddModal <AddModal
...@@ -388,6 +365,7 @@ const TileData = props => { ...@@ -388,6 +365,7 @@ const TileData = props => {
callBackSubmit={onSubmitProject} callBackSubmit={onSubmitProject}
type={type1} type={type1}
formObj={formObj} formObj={formObj}
allBaseMap={tileData}
/> />
</Spin> </Spin>
</div> </div>
......
...@@ -16,7 +16,7 @@ import { createGuid } from '@/utils/transformUtil'; ...@@ -16,7 +16,7 @@ import { createGuid } from '@/utils/transformUtil';
import BaseMap from './BaseMap'; import BaseMap from './BaseMap';
import styles from '../SchemeConfig.less'; import styles from '../SchemeConfig.less';
const CardData = props => { const CardData = props => {
const { deletebaseMaps = () => {}, item, cardData } = props; const { deletebaseMaps = () => {}, item, cardData, allBaseMap } = props;
const [visible, setVisible] = useState(false); // 弹窗 const [visible, setVisible] = useState(false); // 弹窗
const [flag, setFlag] = useState(0); // 状态更新 const [flag, setFlag] = useState(0); // 状态更新
const [type, setType] = useState(''); // 弹窗类型 const [type, setType] = useState(''); // 弹窗类型
...@@ -29,9 +29,7 @@ const CardData = props => { ...@@ -29,9 +29,7 @@ const CardData = props => {
const [keepProject, setKeepProject] = useState(''); const [keepProject, setKeepProject] = useState('');
// 删除瓦片 // 删除瓦片
useEffect(() => {
console.log(props.item);
}, []);
const deletebaseMap = (item, baseMapItem) => { const deletebaseMap = (item, baseMapItem) => {
DeletMapServicename({ schemename: item.schemename, servicename: baseMapItem }).then(res => { DeletMapServicename({ schemename: item.schemename, servicename: baseMapItem }).then(res => {
if (res.code == '0') { if (res.code == '0') {
...@@ -86,9 +84,6 @@ const CardData = props => { ...@@ -86,9 +84,6 @@ const CardData = props => {
GettMaplayer({ terminalType: 'base', isBaseMap: true }).then(res => { GettMaplayer({ terminalType: 'base', isBaseMap: true }).then(res => {
if (res.code == '0') { if (res.code == '0') {
res.data.general.baseMap.layers.map(item => { res.data.general.baseMap.layers.map(item => {
console.log(value);
console.log(value.baseMap);
console.log(item.servicename);
if (value.baseMap.indexOf(item.servicename) == -1) { if (value.baseMap.indexOf(item.servicename) == -1) {
serverList.push(item.servicename); serverList.push(item.servicename);
} }
...@@ -183,18 +178,6 @@ const CardData = props => { ...@@ -183,18 +178,6 @@ const CardData = props => {
} }
style={{ width: 360 }} style={{ width: 360 }}
> >
{/* <p>
<span className={styles.schemeName}>管网</span> {props.item.servicename}
</p> */}
{/* <div>
<span className={styles.schemeName}>范围</span>
<Button
style={{ width: '12rem', marginBottom: '0.5rem' }}
onClick={() => setMapScopeVisible(true)}
>
选择范围
</Button>
</div> */}
<div className={styles.schemeItem}> <div className={styles.schemeItem}>
<span className={styles.schemeName}>基础底图</span> <span className={styles.schemeName}>基础底图</span>
<Button className={styles.schemeBtn1} onClick={() => addTile(props.item)}> <Button className={styles.schemeBtn1} onClick={() => addTile(props.item)}>
...@@ -208,11 +191,6 @@ const CardData = props => { ...@@ -208,11 +191,6 @@ const CardData = props => {
? props.item.baseMapDetail.map((baseMapItem, baseindex) => ( ? props.item.baseMapDetail.map((baseMapItem, baseindex) => (
<div className={styles.mapItem1} key={baseindex}> <div className={styles.mapItem1} key={baseindex}>
<div <div
// onClick={() => pick(props.item.schemename, baseindex)}
// className={classnames({
// [styles.defaultTile]: true,
// [styles.activeTile]: baseindex == props.item.defaultBaseMap,
// })}
className={styles.defaultTile1} className={styles.defaultTile1}
> >
{baseMapItem.maxzoom === 0 {baseMapItem.maxzoom === 0
...@@ -272,6 +250,7 @@ const CardData = props => { ...@@ -272,6 +250,7 @@ const CardData = props => {
callBackSubmit={onSubmit} callBackSubmit={onSubmit}
keepItem={keepItem} keepItem={keepItem}
keepProject={keepProject} keepProject={keepProject}
allBaseMap={allBaseMap}
/> />
</div> </div>
); );
......
/* eslint-disable no-restricted-syntax */ /* eslint-disable no-restricted-syntax */
import { Space, Table, Button, Popconfirm, notification, Spin, Input, Radio } from 'antd'; import { Space, Table, Button, Popconfirm, notification, Spin, Input, Radio, message } from 'antd';
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import styles from '../SchemeConfig.less'; import styles from '../SchemeConfig.less';
import { import {
...@@ -9,11 +9,18 @@ import { ...@@ -9,11 +9,18 @@ import {
updatePublishedMetaData, updatePublishedMetaData,
GettMaplayer, GettMaplayer,
deleteConfig, deleteConfig,
GetFileContent,
getAllMetaData,
AddStyleConfigJson
} from '@/services/webConfig/api'; } from '@/services/webConfig/api';
import { LayerSetting } from '@/services/gis/gis';
import AddModal from './AddModal'; import AddModal from './AddModal';
import PreviewModal from './VectorPreviewModal'; import PreviewModal from './VectorPreviewModal';
import MeteDataModal from './MeteDataModal'; import MeteDataModal from './MeteDataModal';
import AddSlicedModal from './AddSlicedModal'; import AddSlicedModal from './AddSlicedModal';
import { mapConfig , VectorUtils} from '@wisdom-map/gis-utils'
import {parseUrlQueryParams , queryParamsToUrl} from '@/utils/utils'
const VectorData = props => { const VectorData = props => {
const [treeLoading, setTreeLoading] = useState(false); // 弹窗显示 const [treeLoading, setTreeLoading] = useState(false); // 弹窗显示
const [tileData, setTileData] = useState([]); // table表格数据 const [tileData, setTileData] = useState([]); // table表格数据
...@@ -172,6 +179,9 @@ const VectorData = props => { ...@@ -172,6 +179,9 @@ const VectorData = props => {
newLoadings[index] = false; newLoadings[index] = false;
setLoading(newLoadings); setLoading(newLoadings);
if (res.success) { if (res.success) {
updateVectorConfig({
mapServerName : record['ServiceName']
})
setFlag(flag + 1); setFlag(flag + 1);
notification.success({ notification.success({
message: '提示', message: '提示',
...@@ -197,6 +207,287 @@ const VectorData = props => { ...@@ -197,6 +207,287 @@ const VectorData = props => {
}); });
}); });
}; };
const updateVectorConfig = async ({
mapServerName
}) => {
try {
const schemes = await updateCurrentMapschemes({mapServerName, exportScheme : mapConfig.exportScheme.arcgis})
if(schemes.length == 0) return
const vectorData = await getVectorConfigData({
schemes,
mapServerName
})
if(!vectorData) return
const isFilterField = getDataIsFilterField({
schemes,
vectorData
})
if(!isFilterField) return
const metaData = await getMetaData({mapServerName})
if(!metaData) return
await updateVectorFileds({
metaData,
schemes,
vectorData
})
} catch (error) {
console.log(error)
}
}
const updateCurrentMapschemes = async ({mapServerName, exportScheme}) => {
const data = await LayerSetting({client : "sandbox"})
if(data.code == "0") {
return data.data.filter(item => item.id == mapServerName &&
(
exportScheme ? item.exportScheme == mapConfig.exportScheme.arcgis : true
)
)
}
return []
}
const getVectorConfigData = async () => {
const data = await GetFileContent({
path : "StyleConfig/StyleConfig.json",
preventCache : Date.now()
})
if(data.code == "0" && data.data.data && data.data.hasOwnProperty("version")) {
return data.data
}
return null
}
const getDataIsFilterField = ({
schemes,
vectorData
}) => {
for(let i = 0 ; i < schemes.length ; i++) {
const scheme = schemes[i]
const data = vectorData.data[`${scheme.schemename}-${scheme.id}`]
if(Array.isArray(data)) {
const hasFilter = data.find(({style}) => style.layers.find(layer => !!layer.filter))
if(hasFilter) {
return true
}
}
}
return false
}
const getMetaData = async ({mapServerName}) => {
const data = await getAllMetaData({mapServerName})
return Array.isArray(data) ? data : null
}
const updateVectorFileds = async ({metaData , schemes, vectorData}) => {
let isUpdateFile = false
schemes.map(scheme => {
const data = vectorData.data[`${scheme.schemename}-${scheme.id}`]
if(!data) return
data.map(({style}) => {
const setFilterCollection = new Map()
const setLayerCollection = new Set()
style.layers.map(layer => {
const metaLayer = metaData.find(item => item.name == layer['source-layer'])
if(!metaLayer) {
setLayerCollection.add(layer['source-layer'])
return
}
handleFilterField({
layer,
setFilterCollection,
metaLayer
})
handleLayoutTextField({
layer,
setFilterCollection,
metaLayer
})
})
if(updateStyleLayer({
style,
setLayerCollection
})) {
isUpdateFile = true
}
if(updateTileUrlAndField({
style,
setFilterCollection
})) {
isUpdateFile = true
}
})
updateStyle(data)
if(data.length == 0) {
delete vectorData.data[`${scheme.schemename}-${scheme.id}`]
}
})
if(isUpdateFile) {
const result = await AddStyleConfigJson({
fileName : "StyleConfig",
preventCache : Date.now()
}, vectorData)
return result && result.code == 0 ? true : false
}
}
const handleFilterField = ({
layer,
setFilterCollection,
metaLayer
}) => {
if(!layer.filter) return
const parseField = VectorUtils.filterFieldsHandle({
layerItem : layer,
outfields : null,
layerFields : []
})
if(!(parseField && parseField.sqlObj && parseField.sqlObj.length > 0)) return
const hasCondition = parseField.sqlObj.every(item => {
return !item.label || metaLayer.fields.find(field => field.name == item.label)
})
if(!hasCondition) {
const layerName = layer['source-layer']
layer.filter = ""
if(!setFilterCollection.has(layerName)) {
setFilterCollection.set(layerName, new Set())
}
const setCollection = setFilterCollection.get(layerName)
parseField.sqlObj.map(item => setCollection.add(item.label))
}
}
const handleLayoutTextField = ({
layer,
setFilterCollection,
metaLayer
}) => {
function extractBraceContentsRegex(str) {
const regex = /\{([^}]+)\}/g;
const contents = [];
let match;
while ((match = regex.exec(str))!== null) {
contents.push(match[1]);
}
return contents;
}
const data = extractBraceContentsRegex(layer?.layout?.['text-field'])?.filter(fieldName => {
return !(metaLayer.fields.find(item => item.name == fieldName))
})
if(data && data.length > 0) {
layer['layout']['text-field'] = ""
const layerName = layer['source-layer']
if(!setFilterCollection.has(layerName)) {
setFilterCollection.set(layerName, new Set())
}
const setCollection = setFilterCollection.get(layerName)
data.map(item => {
setCollection.add(item)
})
}
}
const updateTileUrlAndField = ({
style,
setFilterCollection
}) => {
const tileUrl = style?.sources?.osm?.tiles[0]
if(!tileUrl || setFilterCollection.size < 1) return false
const {params , url} = parseUrlQueryParams({
url : tileUrl
})
const layerNameArr = params.layerNames.split(",")
const outfields = params.outfields.split(";")
if(layerNameArr.length != outfields.length ) return
layerNameArr.map((layerName, index) => {
if(!outfields[index]) return
const layerNameCollection = setFilterCollection.get(layerName)
if(!layerNameCollection) return
const outFieldsArr = outfields[index].split(",")
Array.from(layerNameCollection).map(field => {
const indexCollections = []
outFieldsArr.map((outFiled, index) => {
if(outFiled == field) {
indexCollections.push(index)
}
})
indexCollections.sort((a,b) => a - b > 0 ? -1 : 1)
indexCollections.map(index => {
outFieldsArr.splice(index, 1)
})
})
outfields[index] = outFieldsArr.join(",")
})
style.sources.osm.tiles[0] = queryParamsToUrl({
url,
params : {
...params,
outfields : outfields.join(";")
}
})
return true
}
const updateStyleLayer = ({
style,
setLayerCollection
}) => {
if(setLayerCollection.size == 0) {
return false
}
let indexCollections = []
style.layers.map((layer , index) => {
const layerName = layer['source-layer']
if(setLayerCollection.has(layerName)) {
indexCollections.push(index)
}
})
indexCollections.sort((a,b) => a - b > 0 ? -1 : 1)
indexCollections.map(index => {
style.layers.splice(index , 1)
})
const tileUrl = style?.sources?.osm?.tiles[0]
const {params , url} = parseUrlQueryParams({
url : tileUrl
})
const layerNameArr = params.layerNames.split(",")
const outfields = params.outfields.split(";")
indexCollections = []
layerNameArr.map((layerName, index) => {
if(setLayerCollection.has(layerName)) {
indexCollections.push(index)
}
})
indexCollections.sort((a,b) => a - b > 0 ? -1 : 1)
indexCollections.map(index => {
layerNameArr.splice(index , 1)
outfields.splice(index , 1)
})
style.sources.osm.tiles[0] = queryParamsToUrl({
url,
params : {
...params,
outfields : outfields.join(";"),
layerNames : layerNameArr.join(";"),
}
})
return true
}
const updateStyle = (data) => {
const indexCollections = []
data.map((item , index) => {
if(!(item.style && item.style.layers && item.style.layers.length > 0)) {
indexCollections.push(index)
}
})
indexCollections.sort((a,b) => a - b > 0 ? -1 : 1)
indexCollections.map(index => {
data.splice(index, 1)
})
}
const previewMetaData = record => { const previewMetaData = record => {
setCurrentMetaData(record); setCurrentMetaData(record);
setPreviewVisible(true); setPreviewVisible(true);
...@@ -229,6 +520,7 @@ const VectorData = props => { ...@@ -229,6 +520,7 @@ const VectorData = props => {
deleteVectorService(query).then(res => { deleteVectorService(query).then(res => {
if (res.success) { if (res.success) {
setFlag(flag + 1); setFlag(flag + 1);
deleteVectorData(record)
notification.success({ notification.success({
message: '提示', message: '提示',
duration: 3, duration: 3,
...@@ -244,6 +536,29 @@ const VectorData = props => { ...@@ -244,6 +536,29 @@ const VectorData = props => {
}); });
}; };
const deleteVectorData = async (record) => {
try {
const mapServerName = record?.ServiceName?.split('.')?.[0]
if(!mapServerName) return
const schemes = await updateCurrentMapschemes({mapServerName})
if(schemes.length == 0) return
const vectorData = await getVectorConfigData({
schemes,
mapServerName
})
if(!vectorData) return
schemes.map(scheme => {
delete vectorData.data[`${scheme.schemename}-${scheme.id}`]
})
await AddStyleConfigJson({
fileName : "StyleConfig",
preventCache : Date.now()
}, vectorData)
} catch {
}
}
const delConfirmSliced = record => { const delConfirmSliced = record => {
const { servicename = '' } = record; const { servicename = '' } = record;
setTreeLoading(true); setTreeLoading(true);
......
...@@ -37,26 +37,13 @@ const CardData = props => { ...@@ -37,26 +37,13 @@ const CardData = props => {
// 删除瓦片 // 删除瓦片
useEffect(() => { useEffect(() => {
// GettMaplayer({ terminalType: 'base', isBaseMap: true }).then(res => {
// if (res.msg === 'Ok') {
// let arr = [];
// res.data.general.baseMap.layers.map(i => {
// arr.push(i.servicename);
// });
// }
// });
setCardData(keepData); setCardData(keepData);
console.log(props.item); console.log(props.item);
}, [cardFlag]); }, [cardFlag]);
const deletebaseMap = (item, baseMapItem) => { const deletebaseMap = (item, baseMapItem) => {
console.log(item);
console.log(props.item.defaultOldBaseMap);
console.log(baseMapItem);
let j = props.item.defaultOldBaseMap.indexOf(baseMapItem); let j = props.item.defaultOldBaseMap.indexOf(baseMapItem);
let i = props.item.defaultBaseMap; let i = props.item.defaultBaseMap;
console.log(j);
console.log(i);
if (item.baseMap.length > 1) { if (item.baseMap.length > 1) {
unbindSchemeBaseMap({ schemename: item.schemename, basemapName: baseMapItem }).then(res => { unbindSchemeBaseMap({ schemename: item.schemename, basemapName: baseMapItem }).then(res => {
if (res.code == '0') { if (res.code == '0') {
......
...@@ -195,6 +195,8 @@ export const deleteVectorService = query => ...@@ -195,6 +195,8 @@ export const deleteVectorService = query =>
export const updatePublishedMetaData = query => export const updatePublishedMetaData = query =>
get(`${PANDA_GIS}/MetaData/D_UpdatePublishedMetaData`, query); get(`${PANDA_GIS}/MetaData/D_UpdatePublishedMetaData`, query);
export const getAllMetaData = query => get(`${PANDA_GIS}/MetaData/all`, query);
// 删除配置 // 删除配置
export const deleteConfig = query => get(`${PANDA_GIS}/MapLayer/DeleteMapLayer`, query); export const deleteConfig = query => get(`${PANDA_GIS}/MapLayer/DeleteMapLayer`, query);
...@@ -213,6 +215,8 @@ export const GetbaseMapschemeName = query => ...@@ -213,6 +215,8 @@ export const GetbaseMapschemeName = query =>
// 设置web状态 // 设置web状态
export const setServiceType = query => get(`${PANDA_GIS}/MetaData/SetServiceType`, query); export const setServiceType = query => get(`${PANDA_GIS}/MetaData/SetServiceType`, query);
//获取某个图层详细信息
export const QueryMetaDataLayerFields = query => get(`${PANDA_GIS}/MetaData/QueryMetaDataLayerFields`, query);
// 设置web的默认方案 // 设置web的默认方案
export const SetDefaultsSchemeName = param => export const SetDefaultsSchemeName = param =>
post(`${PANDA_GIS}/Maplayer/SetDefaultsSchemeName`, param); post(`${PANDA_GIS}/Maplayer/SetDefaultsSchemeName`, param);
...@@ -326,6 +330,13 @@ export const UpdateSchemPipeNetwork = param => ...@@ -326,6 +330,13 @@ export const UpdateSchemPipeNetwork = param =>
export const GetSpriteSheet = param => get(`${PANDA_GIS}/MultiMedia/GetSpriteSheet`, param); export const GetSpriteSheet = param => get(`${PANDA_GIS}/MultiMedia/GetSpriteSheet`, param);
export const GetFileContent = param => {
return post(`${PANDA_GIS}/MultiMedia/FileContent?${Object.entries(param).map(([key , value]) => `${key}=${value}`).join("&")}`)
};
export const AddStyleConfigJson = (param, data) => {
return post(`${PANDA_GIS}/MultiMedia/AddStyleConfigJson?${Object.entries(param).map(([key , value]) => `${key}=${value}`).join("&")}`, data)
}
// 同步地图组件 // 同步地图组件
export const SyncMapComponent = query => get(`${PUBLISH_SERVICE}/WebSite/SyncMapComponent`, query); export const SyncMapComponent = query => get(`${PUBLISH_SERVICE}/WebSite/SyncMapComponent`, query);
......
import { get } from '@/services/index'; import { get } from '@/services/index';
import { mapConfig } from '@wisdom-map/gis-utils';
export function compress( export function compress(
base64, // 源图片 base64, // 源图片
rate, // 缩放比例 rate, // 缩放比例
...@@ -46,3 +47,68 @@ export function checkInternalNetwork() { ...@@ -46,3 +47,68 @@ export function checkInternalNetwork() {
} }
}) })
} }
export function handleMapMaxZoom(layerType) {
let configName = '';
switch (layerType) {
case 'amap-v':
case 'amap-i':
case 'amap-ia':
case 'amap-v2':
case 'amap-i2':
case 'googlemap-v':
case 'googlemap-i':
case 'amap-ia2':
case 'amap-i-ia':
case 'amap-i2-ia2':
case 'amap-v-va':
configName = 'gaoDe';
break;
case 'tianditu-v':
case 'tianditu-va':
case 'tianditu-i':
case 'tianditu-ia':
case 'tianditu-t':
case 'tianditu-ta':
case 'tianditu-v-va':
case 'tianditu-i-ia':
configName = 'tianDiTu';
break;
case 'mapbox-i-ia':
configName = 'mapBox';
break;
default:
configName = 'default';
break;
}
return mapConfig.baseMapMaxLevel[configName];
}
export function parseUrlQueryParams ({
url
}) {
const [urlStr , paramsStr] = url.split("?")
let params = {}
if(paramsStr) {
const paramsObj = new URLSearchParams(paramsStr)
for(const [key, value] of paramsObj) {
params[key] = value
}
}
return {
params,
url : urlStr
}
}
export function queryParamsToUrl ({
url,
params = {}
}) {
let urlStr = url
if(urlStr.indexOf("?") == -1) {
urlStr += "?"
}
urlStr += Object.entries(params).map(([key,value]) => `${key}=${value}`).join("&")
return urlStr
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment