|
|
|
@ -10,7 +10,7 @@
|
|
|
|
|
:key="item.nodeId" |
|
|
|
|
:class="{ |
|
|
|
|
VehicleLineNode_item: true, |
|
|
|
|
notActive: false, |
|
|
|
|
notActive: details.nowWarehoseIndex < index, |
|
|
|
|
choose: details.activeIndex === index, |
|
|
|
|
}" |
|
|
|
|
@click="() => handleCheckNode(item, index)" |
|
|
|
@ -34,74 +34,83 @@
|
|
|
|
|
|
|
|
|
|
<!-- 图片容器 --> |
|
|
|
|
<div class="VehicleLineImgs_container"> |
|
|
|
|
<div class="mb20 align-center"> |
|
|
|
|
<div class="VehicleLineImgs_container_title">装车前图片</div> |
|
|
|
|
<!-- 装车前图片 --> |
|
|
|
|
<template v-if="details.activeIndex !== details.loadLineArr.length - 1"> |
|
|
|
|
<div class="mb20 align-center"> |
|
|
|
|
<div class="VehicleLineImgs_container_title">装车前图片</div> |
|
|
|
|
|
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
icon="edit" |
|
|
|
|
@click="() => handleEdit('beforeLoad', beforeLoadImgArr, '装车前图片')" |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
icon="edit" |
|
|
|
|
@click="() => handleEdit('beforeLoad', beforeLoadImgArr, '装车前图片')" |
|
|
|
|
v-if="details.myWarehouseId === details.loadLineArr[details.activeIndex]?.nodeId" |
|
|
|
|
> |
|
|
|
|
编辑 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
<div |
|
|
|
|
class="VehicleLineImgs_container_list mb20" |
|
|
|
|
v-for="(item, index) in beforeLoadImgArr" |
|
|
|
|
:key="item.type + '-' + item.position" |
|
|
|
|
> |
|
|
|
|
编辑 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
<div |
|
|
|
|
class="VehicleLineImgs_container_list mb20" |
|
|
|
|
v-for="(item, index) in beforeLoadImgArr" |
|
|
|
|
:key="item.type + '-' + item.position" |
|
|
|
|
> |
|
|
|
|
<div class="title">{{ item.title }}</div> |
|
|
|
|
<div class="title">{{ item.title }}</div> |
|
|
|
|
|
|
|
|
|
<div class="item"> |
|
|
|
|
<el-image |
|
|
|
|
v-for="(value, i) in item.imgArr" |
|
|
|
|
:key="value.url" |
|
|
|
|
style="width: 150px; height: 150px; margin: 5px; border-radius: 5px" |
|
|
|
|
:src="value.url" |
|
|
|
|
:zoom-rate="1.2" |
|
|
|
|
:max-scale="7" |
|
|
|
|
:min-scale="0.2" |
|
|
|
|
:preview-src-list="item.imgArr.map(val => val.url)" |
|
|
|
|
:initial-index="i" |
|
|
|
|
fit="cover" |
|
|
|
|
/> |
|
|
|
|
<div class="item"> |
|
|
|
|
<el-image |
|
|
|
|
v-for="(value, i) in item.imgArr" |
|
|
|
|
:key="value.url" |
|
|
|
|
style="width: 150px; height: 150px; margin: 5px; border-radius: 5px" |
|
|
|
|
:src="value.url" |
|
|
|
|
:zoom-rate="1.2" |
|
|
|
|
:max-scale="7" |
|
|
|
|
:min-scale="0.2" |
|
|
|
|
:preview-src-list="item.imgArr.map(val => val.url)" |
|
|
|
|
:initial-index="i" |
|
|
|
|
fit="cover" |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<div class="mb20 align-center"> |
|
|
|
|
<div class="VehicleLineImgs_container_title">发车前图片</div> |
|
|
|
|
<!-- 发车前图片 --> |
|
|
|
|
<template v-if="details.activeIndex !== details.loadLineArr.length - 1"> |
|
|
|
|
<div class="mb20 align-center"> |
|
|
|
|
<div class="VehicleLineImgs_container_title">发车前图片</div> |
|
|
|
|
|
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
icon="edit" |
|
|
|
|
@click="() => handleEdit('boforeStart', boforeStartImgArr, '发车前图片')" |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
icon="edit" |
|
|
|
|
@click="() => handleEdit('boforeStart', boforeStartImgArr, '发车前图片')" |
|
|
|
|
v-if="details.myWarehouseId === details.loadLineArr[details.activeIndex]?.nodeId" |
|
|
|
|
> |
|
|
|
|
编辑 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
<div |
|
|
|
|
class="VehicleLineImgs_container_list mb20" |
|
|
|
|
v-for="(item, index) in boforeStartImgArr" |
|
|
|
|
:key="item.type + '-' + item.position" |
|
|
|
|
> |
|
|
|
|
编辑 |
|
|
|
|
</el-button> |
|
|
|
|
</div> |
|
|
|
|
<div |
|
|
|
|
class="VehicleLineImgs_container_list mb20" |
|
|
|
|
v-for="(item, index) in boforeStartImgArr" |
|
|
|
|
:key="item.type + '-' + item.position" |
|
|
|
|
> |
|
|
|
|
<div class="title">{{ item.title }}</div> |
|
|
|
|
<div class="title">{{ item.title }}</div> |
|
|
|
|
|
|
|
|
|
<div class="item"> |
|
|
|
|
<el-image |
|
|
|
|
v-for="(value, i) in item.imgArr" |
|
|
|
|
:key="value.url" |
|
|
|
|
style="width: 150px; height: 150px; margin: 5px; border-radius: 5px" |
|
|
|
|
:src="value.url" |
|
|
|
|
:zoom-rate="1.2" |
|
|
|
|
:max-scale="7" |
|
|
|
|
:min-scale="0.2" |
|
|
|
|
:preview-src-list="item.imgArr.map(val => val.url)" |
|
|
|
|
:initial-index="i" |
|
|
|
|
fit="cover" |
|
|
|
|
/> |
|
|
|
|
<div class="item"> |
|
|
|
|
<el-image |
|
|
|
|
v-for="(value, i) in item.imgArr" |
|
|
|
|
:key="value.url" |
|
|
|
|
style="width: 150px; height: 150px; margin: 5px; border-radius: 5px" |
|
|
|
|
:src="value.url" |
|
|
|
|
:zoom-rate="1.2" |
|
|
|
|
:max-scale="7" |
|
|
|
|
:min-scale="0.2" |
|
|
|
|
:preview-src-list="item.imgArr.map(val => val.url)" |
|
|
|
|
:initial-index="i" |
|
|
|
|
fit="cover" |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<!-- 卸车前图片 --> |
|
|
|
|
<template v-if="details.activeIndex !== 0"> |
|
|
|
|
<div class="mb20 align-center"> |
|
|
|
|
<div class="VehicleLineImgs_container_title">卸车前图片</div> |
|
|
|
@ -110,6 +119,7 @@
|
|
|
|
|
type="primary" |
|
|
|
|
icon="edit" |
|
|
|
|
@click="() => handleEdit('beforeUnload', beforeUnloadImgArr, '卸车前图片')" |
|
|
|
|
v-if="details.myWarehouseId === details.loadLineArr[details.activeIndex]?.nodeId" |
|
|
|
|
> |
|
|
|
|
编辑 |
|
|
|
|
</el-button> |
|
|
|
@ -205,7 +215,7 @@
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<script setup lang="ts"> |
|
|
|
|
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue'; |
|
|
|
|
import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue'; |
|
|
|
|
/** 获取字典 */ |
|
|
|
|
import { getDictionaryBiz } from '@/api/system/dict'; |
|
|
|
|
import { deepClone, getObjType, ChecksWhetherTheWarehouseIsSelected } from '@/utils/util'; |
|
|
|
@ -243,6 +253,7 @@ type ImgArr = {
|
|
|
|
|
type LoadItme = { |
|
|
|
|
nodeName?: string; |
|
|
|
|
nodeId?: string; |
|
|
|
|
nowWarehouseId?: string; |
|
|
|
|
/** 装车前图片 */ |
|
|
|
|
beforeLoadImgArr?: ImgArr; |
|
|
|
|
/** 发车前图片 */ |
|
|
|
@ -263,6 +274,7 @@ const details = reactive({
|
|
|
|
|
title: '', |
|
|
|
|
loadLineArr: [] as LoadItme[], |
|
|
|
|
activeIndex: 0, |
|
|
|
|
nowWarehoseIndex: 0, |
|
|
|
|
/** 提交类型 */ |
|
|
|
|
editType: 'beforeLoad' as 'beforeLoad' | 'boforeStart' | 'beforeUnload', |
|
|
|
|
/** 回显数据 */ |
|
|
|
@ -288,6 +300,8 @@ const details = reactive({
|
|
|
|
|
headers: { |
|
|
|
|
'Blade-Auth': 'bearer ' + getToken(), |
|
|
|
|
}, |
|
|
|
|
/** 当前用户选择的仓库 */ |
|
|
|
|
myWarehouseId: '', |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 装车前 |
|
|
|
@ -363,6 +377,15 @@ const handleAddImg = (arr, addArr, isHavePosition = true) => {
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** 获取当前用户的仓库id */ |
|
|
|
|
const getWarehouseId = () => { |
|
|
|
|
const myData = JSON.parse(localStorage.getItem('my_data') || '') || {}; |
|
|
|
|
|
|
|
|
|
details.myWarehouseId = myData.id; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
getWarehouseId(); |
|
|
|
|
|
|
|
|
|
/** 配载图片显示 */ |
|
|
|
|
const initImgList = async () => { |
|
|
|
|
try { |
|
|
|
@ -373,11 +396,13 @@ const initImgList = async () => {
|
|
|
|
|
details.loadLineArr = []; |
|
|
|
|
for (let i = 0; i < data.length; i++) { |
|
|
|
|
const value = data[i]; |
|
|
|
|
const { loadingObject, startObject, unloadObject, carsLoadLineEntity } = value; |
|
|
|
|
const { loadingObject, startObject, unloadObject, carsLoadLineEntity, nowWarehouseId } = |
|
|
|
|
value; |
|
|
|
|
|
|
|
|
|
const _obj: LoadItme = { |
|
|
|
|
nodeId: '', |
|
|
|
|
nodeName: '', |
|
|
|
|
nowWarehouseId: '', |
|
|
|
|
beforeLoadImgArr: [ |
|
|
|
|
{ |
|
|
|
|
title: '车厢卫生', |
|
|
|
@ -468,6 +493,12 @@ const initImgList = async () => {
|
|
|
|
|
if (getObjType(carsLoadLineEntity) === 'object') { |
|
|
|
|
_obj.nodeName = carsLoadLineEntity.nodeName; |
|
|
|
|
_obj.nodeId = carsLoadLineEntity.nodeId; |
|
|
|
|
_obj.nowWarehouseId = nowWarehouseId; |
|
|
|
|
|
|
|
|
|
if (details.myWarehouseId === _obj.nodeId) { |
|
|
|
|
details.nowWarehoseIndex = i; |
|
|
|
|
details.activeIndex = i; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
ElMessage.warning('存在异常节点信息'); |
|
|
|
|
return; |
|
|
|
@ -498,9 +529,10 @@ const initImgList = async () => {
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
initImgList(); |
|
|
|
|
// initImgList(); |
|
|
|
|
|
|
|
|
|
const handleCheckNode = (item, index) => { |
|
|
|
|
if (details.nowWarehoseIndex < index) return; |
|
|
|
|
details.activeIndex = index; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
@ -643,6 +675,8 @@ const handleEditSubmit = async () => {
|
|
|
|
|
details.loadingObj.imgEdit = false; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
watch(() => $route.fullPath, initImgList, { immediate: true }); |
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
@ -681,7 +715,7 @@ const handleEditSubmit = async () => {
|
|
|
|
|
|
|
|
|
|
// 节点 |
|
|
|
|
.VehicleLineNode_item { |
|
|
|
|
$transition: all 0.3s; |
|
|
|
|
$transition: all 1s; |
|
|
|
|
$activeColor: #0bc80b; |
|
|
|
|
$disabled: #808080 !important ; |
|
|
|
|
|
|
|
|
@ -702,8 +736,9 @@ const handleEditSubmit = async () => {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.VehicleLineNode_item_container { |
|
|
|
|
background-color: #fff !important; |
|
|
|
|
background-color: #f5f7fa !important; |
|
|
|
|
cursor: no-drop; |
|
|
|
|
border-radius: 0; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|