2024-07-30 18:13:11 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div class="pageBox">
|
|
|
|
|
|
<div class="cardBox">
|
|
|
|
|
|
<div class="searchBox">
|
|
|
|
|
|
<div class="row">
|
|
|
|
|
|
<span>sku标题:</span>
|
|
|
|
|
|
<el-input v-model="filter.title" clearable></el-input>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="row">
|
|
|
|
|
|
<span>商品编号:</span>
|
|
|
|
|
|
<el-input v-model="filter.external_sku_id" clearable></el-input>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="row">
|
|
|
|
|
|
<span>创建时间:</span>
|
|
|
|
|
|
<el-date-picker
|
|
|
|
|
|
v-model="addTime"
|
|
|
|
|
|
type="datetimerange"
|
|
|
|
|
|
range-separator="-"
|
|
|
|
|
|
start-placeholder="开始时间"
|
|
|
|
|
|
end-placeholder="结束时间"
|
|
|
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
|
style="width: 340px">
|
|
|
|
|
|
</el-date-picker>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="row">
|
|
|
|
|
|
<el-button type="primary" icon="el-icon-search" @click="handleSearch">筛选</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-card>
|
|
|
|
|
|
<div class="opaBox">
|
|
|
|
|
|
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
|
|
|
|
|
|
<el-button type="warning" icon="el-icon-upload2" @click="handleImport">导入</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-table v-loading="loading" :data="supplierList" style="width: 100%" border>
|
|
|
|
|
|
<el-table-column prop="id" label="ID" width="80" align="center" />
|
|
|
|
|
|
<el-table-column prop="goods_sku.title" label="商品标题" />
|
|
|
|
|
|
<el-table-column prop="sku_id" label="skuID" />
|
|
|
|
|
|
<el-table-column prop="day" label="日期" />
|
|
|
|
|
|
<el-table-column prop="inventory" label="盘点库存" />
|
|
|
|
|
|
<el-table-column prop="inventory_time" label="盘点时间" />
|
|
|
|
|
|
</el-table>
|
|
|
|
|
|
<div class="page-pagination">
|
|
|
|
|
|
<el-pagination
|
|
|
|
|
|
@size-change="handleSizeChange"
|
|
|
|
|
|
@current-change="handleCurrentChange"
|
|
|
|
|
|
:current-page="page"
|
|
|
|
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
|
|
|
|
:page-size="pageSize"
|
|
|
|
|
|
layout="prev, pager, next, jumper, sizes, total"
|
|
|
|
|
|
:total="total">
|
|
|
|
|
|
</el-pagination>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
|
|
<el-dialog title="新增" :visible.sync="dialogVisible" width="500px">
|
|
|
|
|
|
<el-form label-width="90px">
|
|
|
|
|
|
<el-form-item label="规格编码:">
|
|
|
|
|
|
<el-input v-model="curInfo.external_sku_id" clearable></el-input>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="盘点库存:">
|
|
|
|
|
|
<el-input v-model="curInfo.inventory" clearable></el-input>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
|
|
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
|
|
|
<el-button type="primary" @click="commitSupplier" :loading="commitloading">确 定</el-button>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
|
|
<el-dialog title="导入" :visible.sync="showImport" width="500px">
|
|
|
|
|
|
<div style="text-align: center;">
|
|
|
|
|
|
<el-upload class="upload-demo" drag action="" :limit="1" :multiple="false"
|
|
|
|
|
|
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
|
|
|
|
|
|
:file-list="fileList" :auto-upload="false" :on-change="importFileChange" :on-remove="fileRemove">
|
|
|
|
|
|
<i class="el-icon-upload"></i>
|
|
|
|
|
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
|
|
|
|
|
</el-upload>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
|
|
|
<el-button @click="showImport = false">取 消</el-button>
|
|
|
|
|
|
<el-button type="primary" @click="commitUpload" :loading="commitloading">上 传</el-button>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
import { getDailyStock, addDailyStock } from "@/api/supplyChain"
|
|
|
|
|
|
import axios from "axios"
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
|
|
|
|
|
loading: false,
|
|
|
|
|
|
page: 1,
|
|
|
|
|
|
pageSize: 10,
|
|
|
|
|
|
total: 0,
|
|
|
|
|
|
supplierList: [],
|
|
|
|
|
|
dialogVisible: false,
|
|
|
|
|
|
curInfo: {},
|
|
|
|
|
|
commitloading: false,
|
|
|
|
|
|
filter: {
|
|
|
|
|
|
title: '',
|
|
|
|
|
|
external_sku_id: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
addTime: [],
|
|
|
|
|
|
showImport: false,
|
|
|
|
|
|
fileList: []
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
fetchList() {
|
|
|
|
|
|
this.loading = true
|
|
|
|
|
|
let params = {
|
|
|
|
|
|
page: this.page,
|
|
|
|
|
|
per_page: this.pageSize,
|
|
|
|
|
|
...this.filter,
|
|
|
|
|
|
start_time: this.addTime ? this.addTime[0] : '',
|
|
|
|
|
|
end_time: this.addTime ? this.addTime[1] : ''
|
|
|
|
|
|
}
|
|
|
|
|
|
getDailyStock(params).then((res) => {
|
|
|
|
|
|
this.supplierList = res.data.data
|
|
|
|
|
|
this.total = res.data.meta.total
|
|
|
|
|
|
this.loading = false
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
|
this.loading = false
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
handleSizeChange(val) {
|
|
|
|
|
|
this.page = 1
|
|
|
|
|
|
this.pageSize = val
|
|
|
|
|
|
this.fetchList()
|
|
|
|
|
|
},
|
|
|
|
|
|
handleCurrentChange(val) {
|
|
|
|
|
|
this.page = val
|
|
|
|
|
|
this.fetchList()
|
|
|
|
|
|
},
|
|
|
|
|
|
handleSearch() {
|
|
|
|
|
|
this.page = 1
|
|
|
|
|
|
this.fetchList()
|
|
|
|
|
|
},
|
|
|
|
|
|
// 新增供应商
|
|
|
|
|
|
handleAdd() {
|
|
|
|
|
|
this.curInfo = {}
|
|
|
|
|
|
this.dialogVisible = true
|
|
|
|
|
|
},
|
|
|
|
|
|
commitSupplier() {
|
|
|
|
|
|
this.commitloading = true
|
|
|
|
|
|
addDailyStock(this.curInfo).then((res) => {
|
|
|
|
|
|
this.page = 1
|
|
|
|
|
|
this.fetchList()
|
|
|
|
|
|
this.$message({ type: "success", message: "新增成功!" })
|
|
|
|
|
|
this.dialogVisible = false
|
|
|
|
|
|
this.commitloading = false
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
|
this.commitloading = false
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
handleImport() {
|
|
|
|
|
|
this.fileList = []
|
|
|
|
|
|
this.showImport = true
|
|
|
|
|
|
},
|
|
|
|
|
|
importFileChange(file, fileList) {
|
|
|
|
|
|
console.log(fileList)
|
|
|
|
|
|
this.fileList = fileList
|
|
|
|
|
|
},
|
|
|
|
|
|
fileRemove() {
|
|
|
|
|
|
this.fileList = []
|
|
|
|
|
|
},
|
|
|
|
|
|
commitUpload() {
|
|
|
|
|
|
if(this.fileList.length) {
|
|
|
|
|
|
this.commitloading = true
|
|
|
|
|
|
const params = new FormData();
|
|
|
|
|
|
params.append("inventoryFile", this.fileList[0].raw)
|
|
|
|
|
|
let token = localStorage.getItem("token")
|
2024-08-05 18:04:49 +08:00
|
|
|
|
axios.post("/api/supplier/daily_stock_record/inventory_import", params, {
|
2024-07-30 18:13:11 +08:00
|
|
|
|
headers: {
|
|
|
|
|
|
Authorization: `Bearer ${token}`
|
|
|
|
|
|
}
|
|
|
|
|
|
}).then((res) => {
|
|
|
|
|
|
if (res.status === 200) {
|
|
|
|
|
|
this.$message.success("导入成功")
|
|
|
|
|
|
this.page = 1
|
|
|
|
|
|
this.fetchList()
|
|
|
|
|
|
this.commitloading = false
|
|
|
|
|
|
this.showImport = false
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.commitloading = false
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
|
this.commitloading = false
|
|
|
|
|
|
})
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.$message.error("请先上传文件")
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
mounted() {
|
|
|
|
|
|
this.fetchList()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
.searchBox{
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
|
.row{
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
|
margin-right: 15px;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.opaBox{
|
|
|
|
|
|
margin-bottom: 15px;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|