|
@@ -151,7 +151,7 @@
|
|
|
<!--保存修改弹窗-->
|
|
|
<EditDialog v-if="showEdit" v-model="showEdit" :edit-data="editData" @submit="handleSubmit" />
|
|
|
<Contact v-if="shareState.showShare" v-model="shareState.showShare" @close="handleCloseShare" @confirm="handleShareConfirm" />
|
|
|
- <Dialog v-if="showForm" v-model="showForm" custom-show title="协同标绘" type="xs" @close="showForm = false" @confirm="handleSendForm">
|
|
|
+ <Dialog v-if="showForm" v-model="showForm" custom-show title="协同标绘" height="auto" type="xs" @close="showForm = false" @confirm="handleSendForm">
|
|
|
<div style="display: flex; align-items: center">
|
|
|
<div style="font-size: 36px">预案名称</div>
|
|
|
<el-input v-model="form.pattern_name" class="custom-input" placeholder="请输入" style="flex: 1" />
|
|
@@ -214,11 +214,11 @@ const menu = ref([
|
|
|
value: 'polygon',
|
|
|
image: getImageUrl('polygon')
|
|
|
},
|
|
|
- // {
|
|
|
- // name: '任意线',
|
|
|
- // value: 'anyLine',
|
|
|
- // image: getImageUrl('anyLine')
|
|
|
- // },
|
|
|
+ {
|
|
|
+ name: '任意线',
|
|
|
+ value: 'anyLine',
|
|
|
+ image: getImageUrl('anyLine')
|
|
|
+ },
|
|
|
{
|
|
|
name: '圆',
|
|
|
value: 'circle',
|
|
@@ -460,7 +460,9 @@ const clickTab3 = (item, index) => {
|
|
|
}
|
|
|
const drawTool = getDrawTool();
|
|
|
const newOptions = drawTool.drawGraphics(mouseToolState.value);
|
|
|
- if (newOptions.graphicsType !== 'text') {
|
|
|
+ if (mouseToolState.value.graphicsType === 'anyLine') {
|
|
|
+ drawTool.setDrawEndMethod(handleEndDraw);
|
|
|
+ } else if (mouseToolState.value.graphicsType !== 'text') {
|
|
|
// 绘制完成事件
|
|
|
initDrawMethod(newOptions);
|
|
|
}
|
|
@@ -509,29 +511,9 @@ const addText = (textEditState) => {
|
|
|
const map = drawTool.getMap();
|
|
|
// 监听地图点击事件
|
|
|
map.off('click', handleClickMap);
|
|
|
- webSock.send(
|
|
|
- JSON.stringify({
|
|
|
- operation: 'add', // 必填
|
|
|
- id: data.id,
|
|
|
- name: data.title, // 必填
|
|
|
- content: JSON.stringify(data), // 必填
|
|
|
- visible: '1'
|
|
|
- })
|
|
|
- );
|
|
|
+ sendWebSocket(data);
|
|
|
close();
|
|
|
};
|
|
|
-// watch(
|
|
|
-// () => mouseToolState.value.graphicsType,
|
|
|
-// (value) => {
|
|
|
-// if (value) {
|
|
|
-// const map = getMap();
|
|
|
-// map.off('click', handleClickMap);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// );
|
|
|
-const changeDrawing = () => {
|
|
|
- drawing.value = !drawing.value;
|
|
|
-};
|
|
|
const close = () => {
|
|
|
const drawTool = getDrawTool();
|
|
|
drawTool.closeDraw();
|
|
@@ -539,6 +521,18 @@ const close = () => {
|
|
|
menuActive3.value = '';
|
|
|
mouseToolState.value.graphicsType = '';
|
|
|
};
|
|
|
+watch(
|
|
|
+ mouseToolState,
|
|
|
+ () => {
|
|
|
+ if (mouseToolState.value.graphicsType !== 'text') {
|
|
|
+ const map = getMap();
|
|
|
+ map.off('click', handleClickMap);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ deep: true
|
|
|
+ }
|
|
|
+);
|
|
|
// 初始化绘制完成回调
|
|
|
const initDrawMethod = (options) => {
|
|
|
const drawTool = getDrawTool();
|
|
@@ -606,20 +600,50 @@ const initDrawMethod = (options) => {
|
|
|
// 右击进入编辑
|
|
|
obj.on('rightclick', handleRightClick);
|
|
|
// 发送
|
|
|
- if (!!collaboration.value) {
|
|
|
- webSock.send(
|
|
|
- JSON.stringify({
|
|
|
- operation: 'add', // 必填
|
|
|
- id: data.id,
|
|
|
- name: data.title, // 必填
|
|
|
- content: JSON.stringify(data), // 必填
|
|
|
- visible: '1'
|
|
|
- })
|
|
|
- );
|
|
|
- }
|
|
|
+ sendWebSocket(data);
|
|
|
};
|
|
|
mouseTool.on('draw', onDraw);
|
|
|
};
|
|
|
+const handleEndDraw = (options, obj) => {
|
|
|
+ const drawTool = getDrawTool();
|
|
|
+ drawing.value = false;
|
|
|
+ menuActive3.value = '';
|
|
|
+ mouseToolState.value.graphicsType = '';
|
|
|
+ drawTool.setDrawEndMethod();
|
|
|
+ const id = nanoid();
|
|
|
+ obj._opts.extData = {
|
|
|
+ id: id
|
|
|
+ };
|
|
|
+ const data: any = deepClone(options);
|
|
|
+ data.id = id;
|
|
|
+ if (data.type === 'anyLine') {
|
|
|
+ const path = obj.getPath();
|
|
|
+ // 将AMap.LngLat对象数组转换为经纬度数组
|
|
|
+ const pathArr = path.map((lngLat) => {
|
|
|
+ // 返回经度和纬度的数组
|
|
|
+ return [lngLat.lng, lngLat.lat];
|
|
|
+ });
|
|
|
+ pathArr.push(pathArr[0]);
|
|
|
+ data.path = pathArr;
|
|
|
+ }
|
|
|
+ overlays.push(obj);
|
|
|
+ overlaysData.push(data);
|
|
|
+ commit(deepClone(overlaysData));
|
|
|
+ sendWebSocket(data);
|
|
|
+};
|
|
|
+// 协同标绘发送新增
|
|
|
+const sendWebSocket = (data) => {
|
|
|
+ if (!collaboration.value || !webSock) return;
|
|
|
+ webSock.send(
|
|
|
+ JSON.stringify({
|
|
|
+ operation: 'add', // 必填
|
|
|
+ id: data.id,
|
|
|
+ name: data.title, // 必填
|
|
|
+ content: JSON.stringify(data), // 必填
|
|
|
+ visible: '1'
|
|
|
+ })
|
|
|
+ );
|
|
|
+};
|
|
|
// 图形右击事件
|
|
|
let rightClickObj;
|
|
|
let initContextMenu = false;
|
|
@@ -873,8 +897,8 @@ const handleSendForm = () => {
|
|
|
// createCollaboration(form.value).then(() => {
|
|
|
// patternId.value = form.value.pattern_id;
|
|
|
// webSock = createWebSocket(form.value.pattern_id, getWebSocketData);
|
|
|
- showForm.value = false;
|
|
|
- collaboration.value = true;
|
|
|
+ showForm.value = false;
|
|
|
+ collaboration.value = true;
|
|
|
// });
|
|
|
};
|
|
|
const handleShowDialog = () => {
|