|
@@ -14,7 +14,7 @@
|
|
|
<ui-icon
|
|
|
ctrl
|
|
|
:type="setting?.openCompass ? 'eye-s' : 'eye-n'"
|
|
|
- @click="changeBack(setting!.back, setting!.backType, !setting!.openCompass, setting!.mapOpen, setting!.mapType)"
|
|
|
+ @click="changeBack(setting!.back, setting!.backType, !setting!.openCompass, setting!.mapOpen, setting!.mapType, setting!.scale)"
|
|
|
/>
|
|
|
</template>
|
|
|
</ui-group>
|
|
@@ -24,7 +24,7 @@
|
|
|
<ui-icon
|
|
|
ctrl
|
|
|
:type="setting?.mapOpen ? 'eye-s' : 'eye-n'"
|
|
|
- @click="changeBack(setting!.back, setting!.backType, setting!.openCompass, !setting!.mapOpen, setting!.mapType)"
|
|
|
+ @click="changeBack(setting!.back, setting!.backType, setting!.openCompass, !setting!.mapOpen, setting!.mapType, setting!.scale)"
|
|
|
/>
|
|
|
</template>
|
|
|
<ui-group-option v-if="setting?.mapOpen">
|
|
@@ -36,7 +36,7 @@
|
|
|
{ label: '矢量地图', value: 'standard' },
|
|
|
]"
|
|
|
:modelValue="setting!.mapType"
|
|
|
- @update:modelValue="(e: string )=> changeBack(setting!.back, setting!.backType, setting!.openCompass, setting!.mapOpen, e)"
|
|
|
+ @update:modelValue="(e: string )=> changeBack(setting!.back, setting!.backType, setting!.openCompass, setting!.mapOpen, e, setting!.scale)"
|
|
|
/>
|
|
|
</ui-group-option>
|
|
|
</ui-group>
|
|
@@ -49,7 +49,7 @@
|
|
|
:key="back.resource"
|
|
|
class="back-item"
|
|
|
:class="{ [back.backType]: true, active: setting!.back === back.resource }"
|
|
|
- @click="setting!.back !== back.resource && changeBack(back.resource, back.backType, setting!.openCompass, setting!.mapOpen, setting!.mapType)"
|
|
|
+ @click="setting!.back !== back.resource && changeBack(back.resource, back.backType, setting!.openCompass, setting!.mapOpen, setting!.mapType, setting!.scale)"
|
|
|
>
|
|
|
<img
|
|
|
:src="back.resource"
|
|
@@ -67,6 +67,13 @@
|
|
|
settingResourceTypeDesc[back.backType] + "-") + back.name
|
|
|
}}
|
|
|
</p>
|
|
|
+ <ui-button
|
|
|
+ v-if="!back.sys"
|
|
|
+ type="primary"
|
|
|
+ class="del"
|
|
|
+ @click.stop="delBack(back)"
|
|
|
+ >删除</ui-button
|
|
|
+ >
|
|
|
</div>
|
|
|
<ui-input
|
|
|
class="input"
|
|
@@ -128,6 +135,19 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <Teleport to="#layout-app" v-if="setting?.backType === SettingResourceType.bottomImage">
|
|
|
+ <div class="slider-demo-block ant-modal-root">
|
|
|
+ <Slider
|
|
|
+ :value="setting!.scale || 1"
|
|
|
+ vertical
|
|
|
+ :min="0.1"
|
|
|
+ :step="0.1"
|
|
|
+ :max="3"
|
|
|
+ @update:value="(val: any) => changeBack(setting!.back, setting!.backType, setting!.openCompass, setting!.mapOpen, setting!.mapType, val)"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </Teleport>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
@@ -145,6 +165,7 @@ import { togetherCallback, getFileUrl, loadPack } from "@/utils";
|
|
|
import { showRightPanoStack, showRightCtrlPanoStack } from "@/env";
|
|
|
import { sdk, setBackdrop, setMap } from "@/sdk";
|
|
|
import {
|
|
|
+ delSettingResource,
|
|
|
fetchSettingResources,
|
|
|
settingResources,
|
|
|
settingResourceTypeDesc,
|
|
@@ -153,6 +174,7 @@ import { uploadFile } from "@/api";
|
|
|
import { SettingResource, addSettingResource } from "@/api/setting-resource";
|
|
|
import { SettingResourceType } from "@/api/setting-resource";
|
|
|
import { Dialog } from "bill/index";
|
|
|
+import { Slider } from "ant-design-vue";
|
|
|
|
|
|
fetchSettingResources();
|
|
|
|
|
@@ -181,26 +203,30 @@ const initType = setting.value!.backType;
|
|
|
const initOpenCompass = setting.value!.openCompass;
|
|
|
const initopenMap = setting.value!.mapOpen;
|
|
|
const initmapType = setting.value!.mapType;
|
|
|
+const initScale = setting.value!.scale;
|
|
|
let isFirst = true;
|
|
|
const changeBack = (
|
|
|
back: string,
|
|
|
type: SettingResourceType,
|
|
|
openCompass: boolean,
|
|
|
openMap: boolean,
|
|
|
- mapType: string
|
|
|
+ mapType: string,
|
|
|
+ scale: number = 1
|
|
|
) => {
|
|
|
if (type === SettingResourceType.map && !caseProject.value!.tmProject?.latlng) {
|
|
|
Dialog.alert("当前案件没绑定经纬度,无法开启地图功能");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ console.error("??", back);
|
|
|
setting.value!.back = back;
|
|
|
setting.value!.backType = type;
|
|
|
setting.value!.openCompass = openCompass;
|
|
|
setting.value!.mapOpen = openMap;
|
|
|
setting.value!.mapType = mapType;
|
|
|
+ setting.value!.scale = scale;
|
|
|
|
|
|
- setBackdrop(back, type);
|
|
|
+ setBackdrop(back, type, scale);
|
|
|
setMap(openMap, mapType);
|
|
|
|
|
|
(document.querySelector("#direction") as HTMLDivElement)!.style.display = openCompass
|
|
@@ -217,8 +243,9 @@ const changeBack = (
|
|
|
setting.value!.openCompass = initOpenCompass;
|
|
|
setting.value!.mapOpen = initopenMap;
|
|
|
setting.value!.mapType = initmapType;
|
|
|
+ setting.value!.scale = initScale;
|
|
|
|
|
|
- setBackdrop(initBack, initType);
|
|
|
+ setBackdrop(initBack, initType, initScale);
|
|
|
setMap(initopenMap, initmapType);
|
|
|
(document.querySelector(
|
|
|
"#direction"
|
|
@@ -228,11 +255,55 @@ const changeBack = (
|
|
|
});
|
|
|
enterOld(async () => {
|
|
|
isSave = true;
|
|
|
-
|
|
|
await loadPack(updataSetting());
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+const delBack = (() => {
|
|
|
+ let isFirst = true;
|
|
|
+ let oldResources: SettingResource[];
|
|
|
+ let dels: SettingResource[] = [];
|
|
|
+ return (back: SettingResource) => {
|
|
|
+ if (setting.value?.back === back.resource) {
|
|
|
+ changeBack(
|
|
|
+ settingResources.value[0].resource,
|
|
|
+ settingResources.value[0].backType,
|
|
|
+ setting!.value.openCompass,
|
|
|
+ setting!.value.mapOpen,
|
|
|
+ setting!.value.mapType,
|
|
|
+ setting!.value.scale
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isFirst) {
|
|
|
+ dels = [];
|
|
|
+ oldResources = [...settingResources.value];
|
|
|
+ }
|
|
|
+ const ndx = settingResources.value.indexOf(back);
|
|
|
+ if (~ndx) {
|
|
|
+ settingResources.value.splice(ndx, 1);
|
|
|
+ dels.push(back);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isFirst) {
|
|
|
+ let isSave = false;
|
|
|
+ isFirst = false;
|
|
|
+
|
|
|
+ enterEdit(() => {
|
|
|
+ if (!isSave) {
|
|
|
+ settingResources.value = oldResources;
|
|
|
+ }
|
|
|
+ isFirst = true;
|
|
|
+ });
|
|
|
+ enterOld(async () => {
|
|
|
+ isSave = true;
|
|
|
+ await loadPack(Promise.all(dels.map(delSettingResource)));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+})();
|
|
|
+
|
|
|
const options = [
|
|
|
{
|
|
|
value: SettingResourceType.envImage,
|
|
@@ -245,14 +316,11 @@ const options = [
|
|
|
];
|
|
|
const addTemp = ref<Omit<SettingResource, "id">>();
|
|
|
const iconUpload = async (data: any) => {
|
|
|
- console.log(data);
|
|
|
addTemp.value = {
|
|
|
resource: await uploadFile({ blob: data.file as any, url: "" }),
|
|
|
name: "",
|
|
|
backType: SettingResourceType.envImage,
|
|
|
};
|
|
|
-
|
|
|
- console.log(addTemp.value);
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -291,6 +359,7 @@ const iconUpload = async (data: any) => {
|
|
|
}
|
|
|
|
|
|
.back-item {
|
|
|
+ position: relative;
|
|
|
> span,
|
|
|
.iconfont,
|
|
|
img {
|
|
@@ -304,6 +373,14 @@ const iconUpload = async (data: any) => {
|
|
|
object-fit: cover;
|
|
|
}
|
|
|
|
|
|
+ .del {
|
|
|
+ position: absolute;
|
|
|
+ top: 64px;
|
|
|
+ height: 24px;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ }
|
|
|
+
|
|
|
.iconfont {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
@@ -388,4 +465,15 @@ const iconUpload = async (data: any) => {
|
|
|
background-color: rgba(255, 255, 255, 0.16);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.slider-demo-block {
|
|
|
+ position: absolute;
|
|
|
+
|
|
|
+ right: calc(var(--editor-menu-right) + var(--editor-toolbox-width)) !important;
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ margin-right: 20px;
|
|
|
+ z-index: 99;
|
|
|
+ height: 300px;
|
|
|
+}
|
|
|
</style>
|