|
@@ -3,27 +3,29 @@
|
|
|
<div class="left">
|
|
|
<div class="upload">
|
|
|
<el-button type="primary" @click="addCaseFileHandler"> 上传照片 </el-button>
|
|
|
+ <el-button type="primary" @click="sortType = !sortType" :icon="sortType?FullScreen:Menu">{{sortType?'横排':'竖排'}}</el-button>
|
|
|
</div>
|
|
|
- <draggable @changeList="changeList" />
|
|
|
+ <draggable :sortType="sortType" @changeList="changeList" @handleItem="handleItem" />
|
|
|
</div>
|
|
|
<div class="right">
|
|
|
<swiper
|
|
|
class="swiper"
|
|
|
slides-per-view="auto"
|
|
|
:space-between="24"
|
|
|
+ :centeredSlides="true"
|
|
|
@swiper="onSwiper"
|
|
|
style="height: 100%;"
|
|
|
@slideChange="onSlideChange"
|
|
|
>
|
|
|
<swiper-slide class="swiperItem" v-for="(item,index) in newlist" :key="index">
|
|
|
<div class="swiperList">
|
|
|
- <div class="itemper" v-for="eleItem in item" :key="eleItem">
|
|
|
+ <div class="itemper" :class="{oneItemper: sortType}" v-for="eleItem in item" :key="eleItem">
|
|
|
<img class="itemImg" src="https://4dscene.4dage.com/new4dkk/v2/lang/images/home/caseList/bwg.png" alt="" />
|
|
|
<div class="text">{{ eleItem.name }}</div>
|
|
|
</div>
|
|
|
<div class="page">
|
|
|
- <span style="margin-right: 16px">第 1 页</span>
|
|
|
- <span>共 3 页</span>
|
|
|
+ <span style="margin-right: 16px">第 {{index + 1}} 页</span>
|
|
|
+ <span>共 {{newlist.length}} 页</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</swiper-slide>
|
|
@@ -34,6 +36,7 @@
|
|
|
|
|
|
<script setup>
|
|
|
import { ref } from 'vue'
|
|
|
+import { Menu, FullScreen } from '@element-plus/icons-vue'
|
|
|
import { Swiper, SwiperSlide } from 'swiper/vue';
|
|
|
import 'swiper/css';
|
|
|
// import { addCaseFile } from "@/store/caseFile";
|
|
@@ -43,6 +46,7 @@ const props = defineProps({ caseId: Number });
|
|
|
const newlist = ref([]);
|
|
|
const swiperRef = ref(null);
|
|
|
const caseId = ref(props.caseId);
|
|
|
+const sortType = ref(false);
|
|
|
console.log(props);
|
|
|
const addCaseFileHandler = async () => {
|
|
|
await addCaseFile({ caseId: caseId.value, fileType: 'currentTypeId.value!' });
|
|
@@ -51,9 +55,13 @@ const addCaseFileHandler = async () => {
|
|
|
const changeList = (list) => {
|
|
|
let newList = []
|
|
|
list.map((item, index) => {
|
|
|
- if(index%2 ==0){
|
|
|
- let newItem = list[index+1]?[item, list[index+1]]:[item];
|
|
|
- newList.push(newItem);
|
|
|
+ if(sortType.value){
|
|
|
+ newList.push([item]);
|
|
|
+ }else{
|
|
|
+ if(index%2 ==0){
|
|
|
+ let newItem = list[index+1]?[item, list[index+1]]:[item];
|
|
|
+ newList.push(newItem);
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
newlist.value = newList;
|
|
@@ -65,6 +73,18 @@ const onSwiper = (swiper) => {
|
|
|
const onSlideChange = (swiper) => {
|
|
|
console.log(swiper);
|
|
|
}
|
|
|
+const handleItem = (item) => {
|
|
|
+ let active = sortType.value ? item : Math.floor(item/2)
|
|
|
+ swiperRef.value.slideTo(active);
|
|
|
+ console.log('handleItem', item, active);
|
|
|
+}
|
|
|
+const handleDetele = async (item) => {
|
|
|
+ if (await confirm("删除该场景,将同时从案件和融合模型中移除,确定要删除吗?")) {
|
|
|
+ const scenes = getCaseScenes(list.value.filter((item) => item !== scene));
|
|
|
+ await replaceCaseScenes(props.caseId, scenes);
|
|
|
+ refresh();
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
@@ -121,6 +141,13 @@ const onSlideChange = (swiper) => {
|
|
|
object-fit: cover;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .oneItemper{
|
|
|
+ height: calc(100% - 120px);
|
|
|
+ .itemImg{
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|