<template>
|
<win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'">
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<span>报废单号:</span>
|
<span>{{ detail.businessFormCode }}</span>
|
</el-col>
|
<el-col :span="8">
|
<span>仓库:</span>
|
<span>{{ detail.warehouseName }}</span>
|
</el-col>
|
<el-col :span="8">
|
<span>所属机构:</span>
|
<span>{{ detail.agencyName }}</span>
|
</el-col>
|
</el-row>
|
<el-row :gutter="20" style="margin-top: 20px">
|
<el-col :span="8">
|
<span>创建人:</span>
|
<span>{{ detail.operatorName }}</span>
|
</el-col>
|
<el-col :span="8">
|
<span>报废时间:</span>
|
<span>{{ detail.dealTime | formatTime }}</span>
|
</el-col>
|
</el-row>
|
<el-row :gutter="20" style="margin-top: 20px">
|
<el-col class="img-row" :span="24">
|
<span>报废手续:</span>
|
<div class="img-box" v-for="(item, index) in fileList" :key="index" @click="handlePreview(item)">
|
<img class="img" :src="getUrl(item.path)" alt="" />
|
</div>
|
</el-col>
|
</el-row>
|
<div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.scrappedGoods" :key="goodsIndex">
|
<el-row :gutter="20">
|
<el-col :span="8">
|
<span>物品分类:</span>
|
<span>{{ goodsItem.categoryName }}</span>
|
</el-col>
|
<el-col :span="8">
|
<span>物品名称:</span>
|
<span>{{ goodsItem.goodsName }}</span>
|
</el-col>
|
</el-row>
|
<el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px">
|
<el-table-column prop="baseGoodsModelsName" label="规格型号" align="center"></el-table-column>
|
<el-table-column label="单位" prop="unit" align="center"></el-table-column>
|
<el-table-column prop="counts" label="报废数量" align="center"></el-table-column>
|
<el-table-column prop="scrappedName" label="报废原因" align="center"></el-table-column>
|
</el-table>
|
</div>
|
<div id="uploadPreviewImages" style="display: none">
|
<span v-for="(src, index) in fileList" :key="index">
|
<img
|
v-if="checkImg(src.name)"
|
class="v-img"
|
:src="src.url"
|
:alt="src.name"
|
style="width: 100px; height: 100px"
|
/>
|
</span>
|
</div>
|
</win-md>
|
</template>
|
<script>
|
import {scrappedDetail} from '@/api/stock/scrap';
|
import winMd from '@/components/win/win-md';
|
import * as DateFormatter from '@/utils/DateFormatter';
|
import {getDownUrl} from '@/utils/base';
|
import Viewer from 'viewerjs';
|
import 'viewerjs/dist/viewer.css';
|
import {getDicts} from '@/api/system/dict/data';
|
|
let viewer = null;
|
|
export default {
|
components: { winMd },
|
|
props: {
|
setting: {
|
type: Object,
|
default: () => {},
|
},
|
},
|
data() {
|
return {
|
scrapReasonOptions: [],
|
fileList: [],
|
detail: {
|
baseCategoryName: '',
|
businessFormCode: '',
|
goodsTemplateName: '',
|
uploadFiles: '',
|
agencyId: '',
|
agencyName: '',
|
states: '',
|
createName: '',
|
time: '',
|
scrappedGoods: [],
|
},
|
};
|
},
|
filters: {
|
formatTime(time) {
|
if (!time) return;
|
return DateFormatter.LongToDateTime(time);
|
},
|
},
|
created() {
|
scrappedDetail({ id: this.setting.id }).then((res) => {
|
this.detail = res;
|
this.fileList = this.detail.uploadFiles ? JSON.parse(this.detail.uploadFiles) : [];
|
this.$nextTick(() => {
|
this.initPreviewImg();
|
});
|
});
|
getDicts('SCRAP_REASON').then((res) => {
|
this.scrapReasonOptions = res;
|
});
|
},
|
methods: {
|
getDictName(code) {
|
let item = this.scrapReasonOptions.find(v=>v.dict_value==code)
|
return item ? item.dict_label : ''
|
},
|
initPreviewImg() {
|
if (viewer != null) {
|
viewer.destroy();
|
}
|
const ViewerDom = document.querySelector('#uploadPreviewImages');
|
viewer = new Viewer(ViewerDom, {});
|
},
|
handlePreview(file) {
|
if (!this.checkImg(file.name)) {
|
return false;
|
}
|
let index = 0;
|
for (let i = 0; i < this.fileList.length; i++) {
|
const f = this.fileList[i];
|
if (this.checkImg(f.name)) {
|
if (file.id == f.id) {
|
break;
|
}
|
index++;
|
}
|
}
|
viewer.view(index);
|
},
|
checkImg(name) {
|
const suffix = name.substring(name.lastIndexOf('.'), name.length);
|
const imgArray = ['.jpg', '.jpeg', '.png', '.bmp'];
|
if (imgArray.indexOf(suffix) < 0) {
|
return false;
|
}
|
return true;
|
},
|
getUrl(path) {
|
if (path.substr(0, 7).toLowerCase() == 'http://' || path.substr(0, 8).toLowerCase() == 'https://') {
|
return path;
|
} else {
|
return getDownUrl() + path;
|
}
|
},
|
close() {
|
this.$emit('close');
|
},
|
},
|
};
|
</script>
|
<style lang="scss" scoped>
|
@import url(../../index.scss);
|
</style>
|