入库记录单

master
lion 2 months ago
parent 23fa62c014
commit 8f7ca306dc

@ -2,11 +2,11 @@
ENV='development'
# 本地开发环境配置
#VUE_APP_BASE_API=http://wzgl.localhost/
#VUE_APP_UPLOAD_API=http://wzgl.localhost/api/admin/upload-file
VUE_APP_BASE_API=http://wzgl.localhost/
VUE_APP_UPLOAD_API=http://wzgl.localhost/api/admin/upload-file
VUE_APP_BASE_API = 'http://192.168.60.99:8004/'
VUE_APP_UPLOAD_API = 'http://192.168.60.99:8004/api/admin/upload-file'
#VUE_APP_BASE_API = 'http://192.168.60.99:8004/'
#VUE_APP_UPLOAD_API = 'http://192.168.60.99:8004/api/admin/upload-file'
VUE_APP_OA_URL=http://192.168.60.18:8001
VUE_APP_OA_URL_TYPE='{"采购入库":51,"请示入库":54,"调拨入库":55,"领用出库":56,"处置出库":57,"调令出库":53}'

@ -0,0 +1,130 @@
<template>
<div class="printwrap">
<Modal v-model="modalVisible" width="70" title="苏州市河道管理处物资入库记录单">
<div class="print" id="printruku">
<div class="printtitle">苏州市河道管理处物资入库记录单</div>
<div class="printtop">
<span>经办人{{ formData.jingbanren }}</span>
<span>编号{{ rukushijianDate }}-{{ formData.id }}</span>
</div>
<table width="100%">
<tr>
<td>物资名称</td>
<td>物资型号</td>
<td>物资规格</td>
<td>入库批次</td>
<td>入库数量</td>
</tr>
<tr v-for="(item, index) in printMingxi" :key="item.id || index">
<td>{{ item.zichanmingcheng }}</td>
<td>{{ item.guigexinghao || '-' }}</td>
<td>{{ item.wuziguige || '-' }}</td>
<td>{{ item.rukupici || '-' }}</td>
<td>{{ item.rukushuliang || '-' }}</td>
</tr>
<tr>
<td colspan="5">
<p>备注</p>
<p>{{ formData.beizhu || '-' }}</p>
</td>
</tr>
<tr class="printbottom">
<td colspan="5" rowspan="2">
<p>仓库管理员签字区</p>
<p>
<span></span>
<span></span>
<span></span>
</p>
</td>
</tr>
</table>
</div>
<template v-slot:footer>
<Button type="info" style="margin-left:5px;margin-bottom:5px;" @click="modalVisible=false"></Button>
<Button v-print="'#printruku'" type="primary" style="margin-left:5px;margin-bottom:5px;"></Button>
</template>
</Modal>
</div>
</template>
<script>
export default {
props: {
visible: {
type: Boolean,
default: false
},
printForm: {
type: Object,
default: () => ({})
},
printMingxi: {
type: Array,
default: () => []
}
},
computed: {
formData() {
return {
id: '',
rukushijian: '',
jingbanren: '',
beizhu: '',
...this.printForm
}
},
rukushijianDate() {
const v = this.formData.rukushijian
if (!v) return ''
return String(v).split(' ')[0]
},
modalVisible: {
get() { return this.visible },
set(val) { this.$emit('update:visible', val) }
}
}
}
</script>
<style scoped>
@media print {
@page {
size: auto;
}
body, html, div {
height: auto !important;
}
}
.print {}
.printtitle {
text-align: center;
font-size: 24px;
font-weight: bold;
}
.printtop {
display: flex;
justify-content: space-between;
font-size: 18px;
}
.print table {
font-size: 18px;
border-collapse: collapse;
margin-top: 20px;
}
.print table td {
padding: 10px;
border: 1px solid #ddd;
}
.printbottom td p {
text-align: left;
}
.printbottom td > p:first-child + p {
padding-top: 80px;
text-align: right;
}
.printbottom td p span {
margin-left: 30px;
display: inline-block;
}
</style>

@ -36,7 +36,7 @@
</el-upload>
<div v-else>
<template v-for="(item,index) in fileList">
<div :key="index" style="display:inline-flex;align-items:center;margin:6px 10px 6px 0;">
<div :key="'file-'+index" style="display:inline-flex;align-items:center;margin:6px 10px 6px 0;">
<div>
<a :href="item.url" target="_blank" style="color:#409EFF;text-decoration:none;">
{{ item.name}}
@ -44,16 +44,38 @@
</div>
</div>
</template>
</div>
</div>
<div style="margin: 10px 0;font-weight: bold;color:#303133;font-size: 16px;">
入库记录单
</div>
<div>
<el-upload v-if="form.zhuangtai===2" ref="uploadRukujiludan" list-type="text" class="upload-demo" :action="action" multiple :headers="headers"
:before-upload="beforeUpload" :on-success="onSuccessRukujiludan" :on-error="onErrorRukujiludan" :on-remove="onRemoveRukujiludan" :on-preview="onPreview"
:file-list="rukujiludanFileList" :auto-upload="true">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">支持上传任意类型文件</div>
</el-upload>
<div v-else>
<template v-for="(item,index) in rukujiludanFileList">
<div :key="'rukujiludan-'+index" style="display:inline-flex;align-items:center;margin:6px 10px 6px 0;">
<div>
<a :href="item.url" target="_blank" style="color:#409EFF;text-decoration:none;">
{{ item.name }}
</a>
</div>
</div>
</template>
</div>
</div>
</template>
<template v-slot:footerContent>
<Button @click="isShow=false"></Button>
<Button type="primary" v-if="form.zhuangtai===2" @click="openPrint"></Button>
<Button type="primary" v-if="form.zhuangtai===2" @click="submit"></Button>
</template>
</xy-dialog>
<printRuku :visible.sync="printDialogVisible" :print-form="printForm" :print-mingxi="mingxiList" />
</div>
</template>
@ -75,8 +97,9 @@
import {
getToken
} from '@/utils/auth'
import printRuku from './printRuku.vue'
export default {
components: {},
components: { printRuku },
data() {
return {
id: '',
@ -84,6 +107,7 @@
tableName: 'stocks',
zuozhengList:[],
fileList: [],
rukujiludanFileList: [],
action: process.env.VUE_APP_UPLOAD_API,
headers: {
token: ''
@ -97,7 +121,8 @@
baoguanrenyuan: '',
beizhu: '',
zuozhengwenjian: '',
rukutupian:''
rukutupian:'',
rukujiludan: ''
},
mingxiList: [],
mingxiTable: [{
@ -172,7 +197,9 @@
// },
],
//
printArr: ''
printArr: '',
printDialogVisible: false,
printForm: {}
}
},
watch: {
@ -182,6 +209,7 @@
}else{
this.id = ''
this.fileList = []
this.rukujiludanFileList = []
this.zuozhengList = []
this.form = {
rukushijian: '',
@ -192,7 +220,8 @@
baoguanrenyuan: '',
beizhu: '',
zuozhengwenjian: '',
rukutupian:''
rukutupian:'',
rukujiludan: ''
}
}
@ -246,6 +275,36 @@
}
},
onSuccessRukujiludan(response, file, fileList) {
this.rukujiludanFileList = fileList
const arr = []
for (var k of this.rukujiludanFileList) {
arr.push(k?.response?.id)
}
this.form.rukujiludan = arr
},
onRemoveRukujiludan(file, fileList) {
this.rukujiludanFileList = fileList
const arr = []
for (var k of this.rukujiludanFileList) {
arr.push(k?.response?.id)
}
this.form.rukujiludan = arr
},
onErrorRukujiludan(err) {
this.$message({ type: 'warning', message: err })
},
openPrint() {
this.printForm = {
id: this.form.id,
rukushijian: this.form.rukushijian,
jingbanren: this.form.jingbanren,
beizhu: this.form.beizhu
}
this.printDialogVisible = true
},
isImage(url) {
if (!url) return false
return /\.(png|jpe?g|gif|bmp|webp|svg)(\?.*)?$/i.test(url)
@ -266,12 +325,23 @@
message:'请上传现场实物图'
})
return
}else{
}
if(this.rukujiludanFileList.length<1){
Message({
type:'warning',
message:'请先打印上传入库记录单'
})
return
}
this.form.rukutupian = []
for (var k of this.fileList) {
this.form.rukutupian.push(k?.response?.id)
}
const rukujiludanArr = []
for (var k of this.rukujiludanFileList) {
rukujiludanArr.push(k?.response?.id)
}
this.form.rukujiludan = rukujiludanArr
saveStock({
...this.form,
zhuangtai:3,
@ -297,7 +367,8 @@
baoguanrenyuan: res?.baoguanrenyuan,
beizhu: res?.beizhu,
zuozhengwenjian: res?.zuozhengwenjian,
rukutupian:res?.rukutupian,
rukutupian: res?.rukutupian,
rukujiludan: res?.rukujiludan,
}
this.form.id = this.id
this.form.zhuangtai = res.zhuangtai?res.zhuangtai:0
@ -322,6 +393,15 @@
})
}
this.rukujiludanFileList = []
const rukujiludan_lists = res.rukujiludan_upload_details ? res.rukujiludan_upload_details : []
for (var g of rukujiludan_lists) {
this.rukujiludanFileList.push({
name: g?.original_name,
url: g?.url,
response: g
})
}
},
}
}

@ -63,6 +63,9 @@
<template v-if="scope.row.zhuangtai===3 || scope.row.zhuangtai===1">
<Button style="margin-right: 10px;" type="primary" size="small"
@click="showRukuDetail(scope.row.id)">查看</Button>
<Button style="margin-right: 10px;" type="primary" size="small"
@click="showRukuDetail(scope.row.id)">确认入库</Button>
</template>
<template v-else>
<Button v-if="scope.row.zhuangtai===0 || scope.row.zhuangtai===4" style="margin-right: 10px;"

Loading…
Cancel
Save