From 332c012e7336f2996c4fe5c8c110d00713c1bde2 Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期六, 11 十一月 2023 18:51:33 +0800 Subject: [PATCH] 采购单,采购明细,库存管理,出入库,调拨管理,库存盘点 --- admin-web/src/views/stock/procure/purchaseOrder/detail.vue | 201 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 133 insertions(+), 68 deletions(-) diff --git a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue index 35f7d41..d98bfd2 100644 --- a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue +++ b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue @@ -1,15 +1,5 @@ <template> - <el-dialog - title="璇︽儏" - width="60%" - :modal="true" - :visible.sync="visible" - :top="'15vh'" - :close-on-click-modal="false" - :append-to-body="true" - :destroy-on-close="true" - @close="close" - > + <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'"> <el-row :gutter="20"> <el-col :span="8"> <span>鍏ュ簱鍗曞彿锛�</span> @@ -17,17 +7,17 @@ </el-col> <el-col :span="8"> <span>鍏ュ簱浠撳簱锛�</span> - <span>{{ detail.goodsTemplateName }}</span> + <span>{{ detail.warehouseName }}</span> </el-col> <el-col :span="8"> <span>鎵�灞炴満鏋勶細</span> - <span>{{ detail.agencyId }}</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.states==1?'寰呭叆搴�':'宸插叆搴�' }}</span> + <span>{{ detail.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}</span> </el-col> <el-col :span="8"> <span>鍒涘缓浜猴細</span> @@ -35,34 +25,42 @@ </el-col> <el-col :span="8"> <span>鍏ュ簱鏃堕棿锛�</span> - <span>{{ detail.time }}</span> + <span>{{ detail.incomeTime | formatTime }}</span> + </el-col> + </el-row> + <el-row :gutter="20" style="margin-top: 20px"> + <el-col class="img-row" :span="12"> + <span>閲囪喘绫诲瀷锛�</span> + <span>{{ detail.buyType == 1 ? '闆嗛噰' : '鑷噰' }}</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"></div> + <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.procureGoods" :key="goodsIndex"> <el-row :gutter="20"> <el-col :span="8"> <span>鐗╁搧鍒嗙被锛�</span> - <span>{{ goodsItem.baseCategoryId }}</span> + <span>{{ goodsItem.baseCategoryName }}</span> </el-col> <el-col :span="8"> <span>鐗╁搧鍚嶇О锛�</span> - <span>{{ goodsItem.baseGoodsTemplateId }}</span> + <span>{{ goodsItem.goodsTemplateName }}</span> </el-col> <el-col :span="8"> <span>渚涜揣鍟嗭細</span> <span>{{ goodsItem.supplier }}</span> </el-col> </el-row> - <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px;"> - <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center"> + <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px"> + <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center"> <template slot-scope="scope"> - {{ scope.row.baseGoodsModelsId }} + {{ scope.row.baseGoodsModelsName }} </template> </el-table-column> <el-table-column label="鍗曚綅" align="center"> @@ -70,78 +68,145 @@ {{ scope.row.unit }} </template> </el-table-column> - <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center"> + <el-table-column prop="price" label="鍗曚环" align="center"> <template slot-scope="scope"> - <el-input v-model="scope.row.price"></el-input> + {{ scope.row.price }} </template> </el-table-column> - <el-table-column prop="counts" label="鍑哄簱鏁伴噺" align="center"> + <el-table-column prop="counts" label="鍏ュ簱鏁伴噺" align="center"> <template slot-scope="scope"> - <el-input v-model="scope.row.counts"></el-input> + {{ scope.row.counts }} + </template> + </el-table-column> + <el-table-column prop="counts" label="閲戦" align="center"> + <template slot-scope="scope"> + {{ (scope.row.price * scope.row.counts).toFixed(2) }} </template> </el-table-column> </el-table> </div> - </el-dialog> + <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 { - procureDetail, -} from '@/api/stock/procure/purchaseOrder'; +import { procureDetail } from '@/api/stock/procure/purchaseOrder'; +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'; + +let viewer = null; + export default { + components: { winMd }, + + props: { + setting: { + type: Object, + default: () => {}, + }, + }, data() { return { - visible: false, + fileList: [], detail: { - businessFormCode:'', - goodsTemplateName:'', - agencyId:'', - states:'', - createName:'', - time:'', - procureGoods:[{},{}] + baseCategoryName: '', + businessFormCode: '', + goodsTemplateName: '', + procureDoc: '', + agencyId: '', + agencyName: '', + states: '', + createName: '', + time: '', + procureGoods: [{}, {}], + fileKey: Math.random(), }, }; }, + filters: { + formatTime(time) { + if (!time) return; + return DateFormatter.LongToDateTime(time); + }, + }, + created() { + procureDetail({ id: this.setting.id }).then((res) => { + this.detail = res; + this.fileList = this.detail.procureDoc ? JSON.parse(this.detail.procureDoc) : []; + this.$nextTick(() => { + this.initPreviewImg(); + }); + }); + }, methods: { - open(id) { - this.visible = true; - procureDetail({ id }).then(res=>{ - this.detail = res - }) + 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++; + } + } + // this.fileList.forEach((f, i) => { + // if (file.uid == f.uid) { + // index = i + // } + // }) + // document.querySelector('#uploadPreviewImages').children[0].click() + 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.visible = false; + this.$emit('close'); }, }, }; </script> <style lang="scss" scoped> -.img-row { - display: flex; - align-content: center; +@import url(../../index.scss); +.el-dialog { + z-index: 1100 !important; } -.img-box { - display: inline-block; - width: 80px; - height: 80px; - background: #f9f9f9; - margin-right: 20px; - img { - width: 100%; - } -} - -.goods-card { - position: relative; - background: #f6f6f6; - padding: 20px; - box-sizing: border-box; - border-radius: 4px; - background-color: #f9f9f9; - margin-top: 20px; - &:nth-of-type(1) { - margin-top: 0; - } +>>> .el-dialog { + z-index: 1100 !important; } </style> -- Gitblit v1.9.1