|
|
<template>
|
|
|
<div class="comparisonModal">
|
|
|
<div class="closeButton">
|
|
|
<LeftOutlined
|
|
|
style="color: white; font-size: 20px; margin-right: 10px"
|
|
|
@click="closeComparisonModal"
|
|
|
/>
|
|
|
<div
|
|
|
class="changeButton"
|
|
|
:style="{
|
|
|
background: typeOpen ? '#2A7DC9' : '#5D5F61',
|
|
|
}"
|
|
|
@click="changeTypeOpen"
|
|
|
>
|
|
|
变化检测
|
|
|
<CaretUpOutlined v-if="typeOpen" />
|
|
|
<CaretDownOutlined v-if="!typeOpen" />
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="topDiv"> 照片 AI 变化检测 Beta</div>
|
|
|
<div class="bodyDiv">
|
|
|
<!-- 检测记录 -->
|
|
|
<div v-if="typeOpen" class="jiancejiluDiv">
|
|
|
<RecordList
|
|
|
v-if="status == 0"
|
|
|
:recordList="recordList"
|
|
|
:nowRecord="nowRecord"
|
|
|
@chooseNowRecord="chooseNowRecord"
|
|
|
@openBuildStatus="openBuildStatus"
|
|
|
@openEditStatus="openEditStatus"
|
|
|
/>
|
|
|
<RecordNewBuild v-if="status == 1" @restoreListStatus="restoreListStatus" />
|
|
|
<RecordListEditInfo
|
|
|
v-if="status == 2"
|
|
|
:nowRecord="nowRecord"
|
|
|
:groupIndex="groupIndex"
|
|
|
@chooseNowImageGroup="chooseNowImageGroup"
|
|
|
@chooseGraffitiColor="chooseGraffitiColor"
|
|
|
@restoreListStatus="restoreListStatus"
|
|
|
/>
|
|
|
</div>
|
|
|
<!-- 对比部分 -->
|
|
|
<div
|
|
|
class="imageDiv"
|
|
|
:style="{
|
|
|
width: typeOpen ? 'calc(100% - 360px)' : '100%',
|
|
|
}"
|
|
|
>
|
|
|
<ImageContrast
|
|
|
:recordList="recordList"
|
|
|
:nowRecord="nowRecord"
|
|
|
:groupIndex="groupIndex"
|
|
|
:graffitiColor="graffitiColor"
|
|
|
:isEdit="isEdit"
|
|
|
@chooseNowImageGroup="chooseNowImageGroup"
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, onMounted } from 'vue';
|
|
|
import { LeftOutlined, CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons-vue';
|
|
|
import { RecordList, RecordNewBuild, RecordListEditInfo, ImageContrast } from './comparison';
|
|
|
import datajson from './data.json';
|
|
|
|
|
|
const props = defineProps(['']);
|
|
|
const emit = defineEmits(['closeComparisonModal']);
|
|
|
|
|
|
// 右侧窗口是否展示
|
|
|
const typeOpen = ref(true);
|
|
|
function changeTypeOpen() {
|
|
|
typeOpen.value = !typeOpen.value;
|
|
|
}
|
|
|
|
|
|
// 关闭窗口
|
|
|
function closeComparisonModal() {
|
|
|
emit('closeComparisonModal');
|
|
|
}
|
|
|
|
|
|
const recordList = ref(datajson);
|
|
|
onMounted(() => {
|
|
|
recordList.value = datajson;
|
|
|
// datajson.forEach(item => {
|
|
|
// let templist: any;
|
|
|
// if(item.imageGroup && item.imageGroup.length > 0){
|
|
|
// let temp: any;
|
|
|
// item.imageGroup.forEach(g => {
|
|
|
// temp = {
|
|
|
// ...g,
|
|
|
// imageJson: JSON.parse(g.imageJson),
|
|
|
// };
|
|
|
// });
|
|
|
// }
|
|
|
// });
|
|
|
});
|
|
|
const nowRecord = ref(recordList.value[0]);
|
|
|
// 0:列表、1:新建、2:编辑
|
|
|
const status = ref(0);
|
|
|
|
|
|
// 选择当前记录
|
|
|
function chooseNowRecord(value) {
|
|
|
nowRecord.value = value;
|
|
|
}
|
|
|
// 是否是编辑
|
|
|
const isEdit: any = ref(false);
|
|
|
|
|
|
// ------------------------------------------
|
|
|
// 开启新建检测
|
|
|
function openBuildStatus() {
|
|
|
status.value = 1;
|
|
|
}
|
|
|
// 开启编辑状态
|
|
|
function openEditStatus(record) {
|
|
|
status.value = 2;
|
|
|
isEdit.value = true;
|
|
|
}
|
|
|
// 恢复列表状态
|
|
|
function restoreListStatus() {
|
|
|
status.value = 0;
|
|
|
isEdit.value = false;
|
|
|
}
|
|
|
|
|
|
// 当前图片组的索引
|
|
|
const groupIndex = ref(1);
|
|
|
function chooseNowImageGroup(index) {
|
|
|
groupIndex.value = index;
|
|
|
}
|
|
|
// 颜色
|
|
|
const graffitiColor = ref('#ffffff');
|
|
|
function chooseGraffitiColor(color) {
|
|
|
graffitiColor.value = color;
|
|
|
}
|
|
|
</script>
|
|
|
<style lang="less" scoped>
|
|
|
.comparisonModal {
|
|
|
position: relative;
|
|
|
width: 100%;
|
|
|
height: 920px;
|
|
|
background: #000000;
|
|
|
|
|
|
// 页面不能被选中
|
|
|
-webkit-user-select: none; /* Safari */
|
|
|
-moz-user-select: none; /* Firefox */
|
|
|
-ms-user-select: none; /* IE/Edge */
|
|
|
user-select: none;
|
|
|
|
|
|
// 关闭按钮
|
|
|
.closeButton {
|
|
|
position: absolute;
|
|
|
top: 12px;
|
|
|
left: 0px;
|
|
|
height: 40px;
|
|
|
width: 200px;
|
|
|
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
|
|
|
.changeButton {
|
|
|
height: 30px;
|
|
|
width: 120px;
|
|
|
border-radius: 5px;
|
|
|
color: #ffffff;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 标题
|
|
|
.topDiv {
|
|
|
background: #101010;
|
|
|
color: #ffffff;
|
|
|
width: 100%;
|
|
|
height: 60px;
|
|
|
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
}
|
|
|
|
|
|
// 内容
|
|
|
.bodyDiv {
|
|
|
background: #000000;
|
|
|
width: 100%;
|
|
|
display: flex;
|
|
|
height: calc(100% - 60px);
|
|
|
|
|
|
// 检测记录
|
|
|
.jiancejiluDiv {
|
|
|
position: relative;
|
|
|
background: #232323;
|
|
|
color: #ffffff;
|
|
|
width: 360px;
|
|
|
height: 100%;
|
|
|
border-radius: 10px;
|
|
|
}
|
|
|
|
|
|
.imageDiv {
|
|
|
position: relative;
|
|
|
width: calc(100% - 360px);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</style>
|