新增采购模块

This commit is contained in:
启航老齐 2025-10-01 09:25:18 +08:00
parent 888d04812d
commit d59bc58de1
12 changed files with 2381 additions and 0 deletions

View File

@ -0,0 +1,41 @@
import request from '@/utils/request'
// 查询采购订单物流列表
export function listPurchaseOrderShip(query) {
return request({
url: '/erp-api/scm/purchase/shipList',
method: 'get',
params: query
})
}
// 查询采购订单物流详细
export function getPurchaseOrderShip(id) {
return request({
url: '/erp-api/scm/purchase/shipDetail/' + id,
method: 'get'
})
}
//创建入库单
export function createStockInEntry(data) {
return request({
url: '/erp-api/scm/purchase/ship/createStockInEntry',
method: 'post',
data: data
})
}
// 修改采购订单物流
export function confirmReceipt(data) {
return request({
url: '/erp-api/scm/purchase/ship/confirmReceipt',
method: 'put',
data: data
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询物流公司列表
export function listLogistics(query) {
return request({
url: '/erp-api/scm/logistics/list',
method: 'get',
params: query
})
}
// 查询物流公司详细
export function getLogistics(id) {
return request({
url: '/api/logistics/' + id,
method: 'get'
})
}
// 新增物流公司
export function addLogistics(data) {
return request({
url: '/api/logistics',
method: 'post',
data: data
})
}
// 修改物流公司
export function updateLogistics(data) {
return request({
url: '/api/logistics',
method: 'put',
data: data
})
}
// 删除物流公司
export function delLogistics(id) {
return request({
url: '/api/logistics/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询采购订单列表
export function listPurchaseOrder(query) {
return request({
url: '/erp/purchase/list',
method: 'get',
params: query
})
}
// 查询采购订单详细
export function getPurchaseOrder(id) {
return request({
url: '/erp-api/scm/purchase/detail/' + id,
method: 'get'
})
}
// 新增采购订单
export function addPurchaseOrder(data) {
return request({
url: '/erp-api/scm/purchase/create',
method: 'post',
data: data
})
}
// 修改采购订单
export function updatePurchaseOrder(data) {
return request({
url: '/erp-api/scm/purchase/updateStatus',
method: 'put',
data: data
})
}
// 删除采购订单
export function delPurchaseOrder(id) {
return request({
url: '/purchase/purchaseOrder/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询采购订单费用确认列表
export function listPurchaseOrderCost(query) {
return request({
url: '/purchase/purchaseOrderCost/list',
method: 'get',
params: query
})
}
// 查询采购订单费用确认详细
export function getPurchaseOrderCost(id) {
return request({
url: '/purchase/purchaseOrderCost/' + id,
method: 'get'
})
}
// 新增采购订单费用确认
export function addPurchaseOrderCost(data) {
return request({
url: '/purchase/purchaseOrderCost',
method: 'post',
data: data
})
}
// 修改采购订单费用确认
export function updatePurchaseOrderCost(data) {
return request({
url: '/purchase/purchaseOrderCost',
method: 'put',
data: data
})
}
// 删除采购订单费用确认
export function delPurchaseOrderCost(id) {
return request({
url: '/purchase/purchaseOrderCost/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询采购订单明细列表
export function listPurchaseOrderItem(query) {
return request({
url: '/purchase/purchaseOrderItem/list',
method: 'get',
params: query
})
}
// 查询采购订单明细详细
export function getPurchaseOrderItem(id) {
return request({
url: '/purchase/purchaseOrderItem/' + id,
method: 'get'
})
}
// 新增采购订单明细
export function addPurchaseOrderItem(data) {
return request({
url: '/purchase/purchaseOrderItem',
method: 'post',
data: data
})
}
// 修改采购订单明细
export function updatePurchaseOrderItem(data) {
return request({
url: '/purchase/purchaseOrderItem',
method: 'put',
data: data
})
}
// 删除采购订单明细
export function delPurchaseOrderItem(id) {
return request({
url: '/purchase/purchaseOrderItem/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,199 @@
<template>
<el-dialog :visible.sync="dialogVisible" title="选择商品">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<el-form-item label="商品名称" prop="goodsName">
<el-input
v-model="queryParams.goodsName"
placeholder="请输入商品名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="商品ID" prop="goodsId">
<el-input
v-model="queryParams.goodsId"
placeholder="请输入商品ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="商品编码" prop="goodsNum">
<el-input
v-model="queryParams.goodsNum"
placeholder="请输入商品编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="商品SKUID" prop="id">
<el-input
v-model="queryParams.id"
placeholder="请输入商品SKUID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="SKU编码" prop="skuCode">
<el-input
v-model="queryParams.skuCode"
placeholder="请输入SKU编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button round icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
v-if="btn===1"
type="primary"
icon="el-icon-plus"
size="mini"
:disabled="multiple"
@click="sendDataToParent"
>确认添加</el-button>
</el-col>
<el-col :span="1.5">
<el-button
v-if="btn===2"
type="primary"
size="mini"
:disabled="single"
@click="sendDataToParent"
>确认选中</el-button>
</el-col>
<!-- <right-toolbar showSearch.sync="true" @queryTable="getList"></right-toolbar>-->
</el-row>
<el-table v-loading="loading" :data="goodsSpecList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="规格ID" align="center" prop="id" width="60"/>
<el-table-column label="商品ID" align="center" prop="goodsId" width="60"/>
<el-table-column label="图片" align="center" prop="colorImage" width="60">
<template slot-scope="scope">
<image-preview :src="scope.row.colorImage" :width="35" :height="35"/>
</template>
</el-table-column>
<el-table-column label="商品名称" align="left" prop="goodsName" />
<el-table-column label="Sku规格" align="center" prop="skuName" >
<!-- <template slot-scope="scope">-->
<!-- <el-tag size="small" v-if="scope.row.colorValue">{{ scope.row.colorValue }}</el-tag>-->
<!-- <el-tag size="small" v-if="scope.row.sizeValue">{{ scope.row.sizeValue }}</el-tag>-->
<!-- <el-tag size="small" v-if="scope.row.styleValue">{{ scope.row.styleValue }}</el-tag>-->
<!-- </template>-->
</el-table-column>
<el-table-column label="商品编码" align="center" prop="goodsNum" />
<el-table-column label="Sku编码" align="center" prop="skuCode" />
<!-- <el-table-column label="尺码" align="center" prop="sizeValue" />-->
<!-- <el-table-column label="款式" align="center" prop="styleValue" />-->
<!-- <el-table-column label="采购价" align="center" prop="purPrice" />-->
<!-- <el-table-column label="零售价" align="center" prop="retailPrice" />-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- <span>点击按钮向主页面传递数据</span>-->
<!-- <el-button @click="sendDataToParent">发送数据</el-button>-->
</el-dialog>
</template>
<script>
import {listGoodsSpec} from "@/api/goods/goodsSpec";
export default {
name: 'PopupSkuList',
props:{
btn:null,//12
},
data() {
return {
dialogVisible: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
total: 0,
//
goodsSpecList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
goodsId: null,
id: null,
goodsNum: null,
skuCode: null,
merchantId: null,
},
}
},
mounted() {
this.getList()
},
methods: {
//
openDialog() {
this.getList()
this.dialogVisible = true;
},
//
sendDataToParent() {
if(!this.ids) {
this.$modal.msgError("请选择商品")
}
const filteredList = this.goodsSpecList.filter(item => this.ids.includes(item.id));
console.log("======选中的商品=====",filteredList)
const data = { message: 'Hello from Popup!' };
this.$emit('data-from-select', filteredList); //
this.dialogVisible = false; //
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 查询商品规格库存管理列表 */
getList() {
this.loading = true;
listGoodsSpec(this.queryParams).then(response => {
this.goodsSpecList = response.rows;
this.total = response.total;
this.loading = false;
});
},
}
}
</script>
<style scoped lang="scss">
</style>

View File

@ -0,0 +1,377 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" size="small" :rules="rules" :inline="true" label-width="98px">
<el-form-item label="供应商" prop="contactId">
<el-select v-model="form.contactId" filterable placeholder="请选择供应商名称">
<el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="采购日期" prop="orderDate">
<el-date-picker clearable v-model="form.orderDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择订单日期">
</el-date-picker>
</el-form-item>
<el-row>
<el-form-item label="采购商品:" prop="goodsList">
<el-col :span="24">
<!-- <el-button size="small" @click="addGoodsDialog"> 添加商品</el-button>-->
<el-button size="small" @click="addGoodsDialog1"> 添加商品</el-button>
</el-col>
</el-form-item>
<el-col :span="24" style="margin-left: 98px;">
<el-table :data="form.goodsList" style="width: 100%">
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column prop="id" label="id"></el-table-column>
<el-table-column prop="colorImage" label="商品图片">
<template slot-scope="scope">
<el-image style="width: 70px; height: 70px" :src="scope.row.colorImage"></el-image>
</template>
</el-table-column>
<el-table-column prop="goodsName" label="商品名称"></el-table-column>
<el-table-column prop="skuCode" label="SKU">
</el-table-column>
<el-table-column prop="colorValue" label="规格1">
</el-table-column>
<el-table-column prop="sizeValue" label="规格2">
</el-table-column>
<el-table-column prop="styleValue" label="规格3">
</el-table-column>
<el-table-column prop="quantity" label="采购数量">
<template slot-scope="scope">
<el-input v-model.number="scope.row.quantity" placeholder="请输入数量" @input="qtyChange(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="purPrice" label="采购价">
<template slot-scope="scope">
<el-input v-model.number="scope.row.purPrice" placeholder="请输入数量" @input="qtyChange(scope.row)" />
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<!-- <el-button size="mini" @click="handleEditSku(scope.$index, scope.row)">编辑</el-button>-->
<el-button size="mini" type="danger" @click="handleDeleteSku(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-row style="margin-top: 20px;">
<el-form-item label="总金额" prop="amount">
<el-input type="number" v-model.number="form.orderAmount" placeholder="请输入总金额" />
</el-form-item>
</el-row>
<el-form-item>
<el-button type="primary" @click="submitForm">立即创建</el-button>
<el-button @click="cancel">取消</el-button>
</el-form-item>
</el-form>
<!-- 添加采购商品对话框 -->
<!-- <el-dialog title="添加商品" :visible.sync="goodsFormOpen" width="500px" append-to-body :close-on-click-modal="false">-->
<!-- <el-form ref="goodsForm" :model="goodsForm" :rules="goodsRules" label-width="80px">-->
<!-- <el-form-item label="商品" v-if="goodsFormAdd" prop="skuId">-->
<!-- &lt;!&ndash; <el-input v-model="goodsForm.goodsSpec" placeholder="请输入sku" /> &ndash;&gt;-->
<!-- <el-select v-model="goodsForm.skuId" filterable remote reserve-keyword placeholder="搜索商品" style="width: 380px;"-->
<!-- :remote-method="searchSku" :loading="skuListLoading" @change="skuChanage">-->
<!-- <el-option v-for="item in skuList" :key="item.skuId"-->
<!-- :label="item.skuCode + ' - ' + item.goodsName + ' - ' + item.colorValue + ' ' + item.sizeValue + ' ' + item.styleValue"-->
<!-- :value="item.skuId">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="商品图片" >-->
<!-- <el-image style="width: 100px; height: 100px" :src="goodsForm.colorImage">-->
<!-- </el-image>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="采购价" prop="purPrice">-->
<!-- <el-input v-model.number="goodsForm.purPrice" placeholder="" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="数量" prop="qty">-->
<!-- <el-input v-model.number="goodsForm.qty" placeholder="请输入数量" @input="qtyChange" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="总金额" prop="amount">-->
<!-- <el-input type="number" v-model.number="goodsForm.amount" placeholder="请输入总金额" />-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="addGoodsSubmit"> </el-button>-->
<!-- <el-button @click="addGoodsCancel"> </el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
<!-- 添加品对话框 -->
<PopupSkuList @data-from-select="handleDataFromPopup" :btn="1" ref="popup"></PopupSkuList>
</div>
</template>
<script>
import
{ listSupplier } from "@/api/goods/supplier";
import { searchSku } from "@/api/goods/goods";
import { addPurchaseOrder } from "@/api/purchase/purchaseOrder";
import PopupSkuList from '@/views/goods/PopupSkuList.vue'
export default {
name: "PurchaseOrderCreate",
components: { PopupSkuList },
data() {
return {
//
form: {
contactId: null,
orderDate: null,
goodsList: [],
orderAmount:0.00
},
//
rules: {
contactId: [{ required: true, message: '供应商不能为空' }],
orderDate: [{ required: true, message: '采购日期不能为空' }],
goodsList: [{ required: true, message: '采购商品不能为空' }],
},
supplierLoading: false,
supplierList: [],
goodsFormOpen: false,
goodsFormAdd: true,
goodsForm: {
id:null,
skuId: null,
colorImage: null,
goodsName: null,
purPrice: null,
qty: null,
amount: null
},
goodsRules: {
skuId: [{ required: true, message: '请选择商品' }],
purPrice: [{ required: true, message: '请选择商品' }],
qty: [{ required: true, message: '请填写数量' }, { type: 'number', message: '数量必须为数字值' }],
amount: [{ required: true, message: '请填写金额' }, { type: 'number', message: '金额必须为数字值' }],
},
skuListLoading: false,
skuList: []
};
},
created() {
listSupplier({}).then(response => {
this.supplierList = response.rows;
// this.supplierLoading = false;
});
this.form.orderDate = this.getDate()
},
methods: {
getDate() {
var now = new Date();
var year = now.getFullYear(); //
var month = now.getMonth(); //
var date = now.getDate(); //
var hour = " 00:00:00"; //
month = month + 1;
month = month.toString().padStart(2, "0");
date = date.toString().padStart(2, "0");
var defaultDate = `${year}-${month}-${date}`;//
return defaultDate;
},
// SKU
searchSku(query) {
this.skuListLoading = true;
const qw = {
keyword: query
}
searchSku(qw).then(res => {
this.skuList = res.rows;
this.skuListLoading = false;
})
},
skuChanage(nv) {
console.log('=========', nv)
const spec = this.skuList.find(x => x.skuId === nv);
if (spec) {
console.log('=========', spec)
this.goodsForm.skuId = spec.skuId
// this.goodsForm.goodsId = spec.goodsId
this.goodsForm.goodsName = spec.goodsName
this.goodsForm.colorImage = spec.colorImage
this.goodsForm.colorValue = spec.colorValue
this.goodsForm.sizeValue = spec.sizeValue
this.goodsForm.styleValue = spec.styleValue
this.goodsForm.skuCode = spec.skuCode
this.goodsForm.skuName = spec.skuName
// this.goodsForm.number = spec.number
this.goodsForm.purPrice = spec.purPrice
}
},
qtyChange(nv,row) {
console.log('======值变化=====', nv,row)
// const newItemAmount = nv.quantity * nv.purPrice
// this.form.orderAmount += newItemAmount;
this.form.orderAmount = 0
if (this.form.goodsList && this.form.goodsList.length > 0) {
this.form.goodsList.forEach(item => {
this.form.orderAmount+= item.quantity*item.purPrice
})
}
},
//
searchSupplier(query) {
this.supplierLoading = true;
const qw = {
name: query
}
listSupplier(qw).then(response => {
this.supplierList = response.rows;
this.supplierLoading = false;
});
},
addGoodsDialog() {
this.goodsForm.skuId = null
this.goodsForm.goodsId = null
this.goodsForm.goodsName = null
this.goodsForm.colorImage = null
this.goodsForm.colorValue = null
this.goodsForm.number = null
this.goodsForm.purPrice = null
this.goodsForm.sizeValue = null
this.goodsForm.skuCode = null
this.goodsForm.styleValue = null
this.goodsForm.qty = null
this.goodsForm.amount = null
this.goodsFormOpen = true
},
addGoodsDialog1() {
this.$refs.popup.openDialog();
},
//
handleDataFromPopup(data) {
console.log('Received data from popup:', data);
if(data){
data.forEach((item) => {
const find = this.form.goodsList.find(x => x.id === item.id)
if (!find) {
this.form.goodsList.push(item)
}
})
}
let goodsAmount = 0;
this.form.goodsList.forEach(item => {
if(!item.quantity) item.quantity= 1
item.itemAmount = item.quantity*item.retailPrice
goodsAmount+= item.itemAmount
if(!item.isGift) item.isGift = '0'
})
console.log('====添加后=====',this.form.goodsList)
this.form.orderAmount = goodsAmount
},
addGoodsCancel() {
this.goodsForm.skuId = null
this.goodsForm.goodsId = null
this.goodsForm.goodsName = null
this.goodsForm.colorImage = null
this.goodsForm.colorValue = null
this.goodsForm.number = null
this.goodsForm.purPrice = null
this.goodsForm.sizeValue = null
this.goodsForm.skuCode = null
this.goodsForm.styleValue = null
this.goodsForm.qty = null
this.goodsForm.amount = null
this.goodsFormOpen = false
},
addGoodsSubmit() {
this.$refs["goodsForm"].validate(valid => {
if (valid) {
if (this.goodsFormAdd) {
//
const isValueExist = this.form.goodsList.find(item => item.id === this.goodsForm.id) !== undefined;
if (isValueExist) {
this.$message.error("该商品已存在")
} else {
const a = {
... this.goodsForm
}
this.form.goodsList.push(a)
this.form.orderAmount = parseFloat(this.form.orderAmount) + parseFloat(a.amount)
this.$message.success("添加成功")
}
}else{
//
const a = this.form.goodsList.find(item => item.id === this.goodsForm.id)
this.form.orderAmount = parseFloat(this.form.orderAmount) - parseFloat(a.amount) + parseFloat(this.goodsForm.amount)
a.qty = this.goodsForm.qty
a.amount = this.goodsForm.amount
}
this.goodsFormAdd = true
this.goodsFormOpen = false
}
})
},
handleEditSku(index, row) {
this.goodsForm.skuId = row.skuId
this.goodsForm.goodsId = row.goodsId
this.goodsForm.goodsName = row.goodsName
this.goodsForm.colorImage = row.colorImage
this.goodsForm.colorValue = row.colorValue
this.goodsForm.number = row.number
this.goodsForm.purPrice = row.purPrice
this.goodsForm.sizeValue = row.sizeValue
this.goodsForm.skuCode = row.skuCode
this.goodsForm.styleValue = row.styleValue
this.goodsForm.qty = row.qty
this.goodsForm.amount = row.amount
this.goodsFormAdd = false
this.goodsFormOpen = true
},
handleDeleteSku(index, row) {
this.form.goodsList.splice(index, 1);
this.form.orderAmount = 0
if (this.form.goodsList && this.form.goodsList.length > 0) {
this.form.goodsList.forEach(item => {
this.form.orderAmount+= item.quantity*item.purPrice
})
}
},
cancel() {
// ,
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.push('/purchase/order');
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
console.log('======创建采购单=====',this.form)
addPurchaseOrder(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.form.contactId = null;
this.form.orderAmount= null
this.form.orderDate = null
this.form.goodsList = []
// ,
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.push('/purchase/order');
});
}
});
}
}
};
</script>

View File

@ -0,0 +1,124 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" size="small" :rules="rules" :inline="true" label-width="128px">
<el-form-item label="采购单号" >
<el-input v-model="form.orderNum" disabled />
</el-form-item>
<el-form-item label="采购日期" prop="orderDate">
<el-date-picker clearable v-model="form.orderDate" disabled type="date" value-format="yyyy-MM-dd" placeholder="请选择订单日期">
</el-date-picker>
</el-form-item>
<el-form-item label="供应商" prop="supplier">
<el-input v-model="form.supplier" disabled />
</el-form-item>
<el-form-item label="总金额" >
<el-input v-model="form.orderAmount" disabled />
</el-form-item>
<el-form-item label="审核人" >
<el-input v-model="form.auditUser" disabled />
</el-form-item>
<el-form-item label="审核时间" >
<el-input v-model="form.auditTime" disabled />
</el-form-item>
<el-form-item label="采购单确认日期">
<el-date-picker clearable v-model="form.supplierConfirmTime" disabled type="date" value-format="yyyy-MM-dd" placeholder="请选择订单日期">
</el-date-picker>
</el-form-item>
<el-form-item label="供应商发货日期">
<el-date-picker clearable v-model="form.supplierDeliveryTime" disabled type="date" value-format="yyyy-MM-dd" placeholder="">
</el-date-picker>
</el-form-item>
<el-form-item label="采购单创建时间">
<el-date-picker clearable v-model="form.createTime" disabled type="date" value-format="yyyy-MM-dd" placeholder="">
</el-date-picker>
</el-form-item>
<el-form-item label="创建人" >
<el-input v-model="form.createBy" disabled />
</el-form-item>
<el-row>
<el-form-item label="商品明细:" prop="goodsList">
<el-col :span="24">
</el-col>
</el-form-item>
<el-col :span="24" style="margin-left: 98px;">
<el-table :data="itemList" style="width: 100%">
<el-table-column type="index" label="序号">
</el-table-column>
<el-table-column prop="colorImage" label="商品图片">
<template slot-scope="scope">
<el-image style="width: 70px; height: 70px" :src="scope.row.colorImage"></el-image>
</template>
</el-table-column>
<el-table-column prop="goodsName" label="商品名称"></el-table-column>
<el-table-column prop="specNum" label="SKU">
</el-table-column>
<el-table-column prop="colorValue" label="颜色">
</el-table-column>
<el-table-column prop="sizeValue" label="尺码">
</el-table-column>
<el-table-column prop="styleValue" label="款式">
</el-table-column>
<el-table-column prop="quantity" label="采购数量">
</el-table-column>
<el-table-column prop="amount" label="总金额">
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-row style="margin-top: 20px;">
<el-form-item label="总金额" prop="amount">
<el-input type="number" v-model.number="form.orderAmount" disabled placeholder="请输入总金额" />
</el-form-item>
</el-row>
</el-form>
</div>
</template>
<script>
import {getPurchaseOrder} from "@/api/purchase/purchaseOrder";
export default {
name: "PurchaseOrderDetail",
data() {
return {
form:{
id:null
},
itemList:[],
rules:{
}
}
},
mounted(){
this.form.id = this.$route.query.id
this.getDetail()
},
created() {
},
methods: {
dateToString(timespan){
var date = new Date(timespan * 1000);
return date.toLocaleString();
},
getDetail(){
getPurchaseOrder(this.form.id).then((response) => {
this.form = response.data;
this.form.auditTime = this.dateToString(response.data.auditTime * 1000)
this.itemList = response.data.itemList
console.log('采购单详情',this.form)
});
// listPurchaseOrderItem({orderId:this.form.id}).then(res =>{
// this.itemList = res.rows
// console.log('',res)
// })
}
}
}
</script>

View File

@ -0,0 +1,517 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="供应商" prop="supplierId">
<el-select
v-model="queryParams.supplierId"
filterable
placeholder="请选择供应商">
<el-option
v-for="item in supplierList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
<!-- <el-input
v-model="queryParams.contactId"
placeholder="请输入供应商id"
clearable
@keyup.enter.native="handleQuery"
/> -->
</el-form-item>
<el-form-item label="采购单号" prop="orderNum">
<el-input
v-model="queryParams.orderNum"
placeholder="请输入采购单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="下单日期" prop="orderDate">
<el-date-picker clearable
v-model="queryParams.orderDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择下单日期">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>创建采购订单</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['purchase:purchaseOrder:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="purchaseOrderList" @selection-change="handleSelectionChange">
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="供应商" align="center" prop="supplierId" >
<template slot-scope="scope">
<span>{{ supplierList.find(x=>x.id == scope.row.supplierId)?supplierList.find(x=>x.id == scope.row.supplierId).name :'' }}</span>
</template>
</el-table-column>
<el-table-column label="单号" align="center" prop="orderNum" />
<el-table-column label="下单日期" align="center" prop="orderDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.orderDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="总金额" align="center" prop="orderAmount" />
<el-table-column label="审核人" align="center" prop="auditUser" />
<el-table-column label="审核时间" align="center" prop="auditTime" >
<template slot-scope="scope">
{{ scope.row.auditTime ==0 ? '' : dateToString(scope.row.auditTime) }}
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="状态" align="center" prop="status" >
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.status === 0">待审核</el-tag>
<el-tag type="success" v-if="scope.row.status === 1">已审核</el-tag>
<el-tag type="warning" v-if="scope.row.status === 101">已确认待供应商发货</el-tag>
<el-tag v-if="scope.row.status === 102">供应商已发货</el-tag>
<el-tag type="primary" v-if="scope.row.status === 2">已收货</el-tag>
<el-tag type="primary" v-if="scope.row.status === 3">已入库</el-tag>
</template>
</el-table-column>
<el-table-column label="供应商发货时间" align="center" prop="supplierDeliveryTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.supplierDeliveryTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="收货时间" align="center" prop="receivedTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.receivedTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="入库时间" align="center" prop="stockInTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.stockInTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-col :span="24">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情</el-button>
</el-col>
<el-col :span="24">
<el-button
v-if="scope.row.status === 0"
size="mini"
type="text"
icon="el-icon-circle-check"
@click="handleUpdateStatus(scope.row,'audit')"
>审核</el-button>
</el-col>
<!-- <el-col :span="24">-->
<!-- <el-button-->
<!-- v-if="scope.row.status === 1"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-finished"-->
<!-- @click="handleUpdateStatus(scope.row,'confirm')"-->
<!-- v-hasPermi="['purchase:purchaseOrder:edit']"-->
<!-- >采购确认</el-button>-->
<!-- </el-col>-->
<el-col :span="24">
<el-button
v-if="scope.row.status === 1"
size="mini"
type="text"
icon="el-icon-finished"
@click="handleUpdateStatus(scope.row,'SupplierShip')"
>供应商发货</el-button>
</el-col>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改采购订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="138px">
<el-form-item label="单号" prop="orderNum">
<el-input v-model="form.orderNum" disabled placeholder="请输入单号" />
</el-form-item>
<el-form-item label="订单日期" prop="orderDate">
<el-date-picker clearable
v-model="form.orderDate"
type="date"
disabled
value-format="yyyy-MM-dd"
placeholder="请选择订单日期">
</el-date-picker>
</el-form-item>
<el-form-item label="订单创建时间" prop="orderTime">
<el-input v-model="form.orderTime" disabled placeholder="请输入订单创建时间" />
</el-form-item>
<el-form-item label="订单总金额" prop="orderAmount">
<el-input v-model="form.orderAmount" disabled placeholder="请输入订单总金额" />
</el-form-item>
<el-form-item label="采购单审核人" prop="auditUser">
<el-input v-model="form.auditUser" placeholder="请输入采购单审核人" :disabled=" form.optionType !== 'audit' " />
</el-form-item>
<el-form-item label="审核时间" prop="auditTime" v-if="form.optionType !== 'audit'">
<el-input v-model="form.auditTime" placeholder="请输入审核时间" :disabled=" form.optionType !== 'audit' " />
</el-form-item>
<el-form-item label="供应商发货时间" prop="supplierDeliveryTime" v-if="form.optionType === 'SupplierShip'">
<el-date-picker clearable
v-model="form.supplierDeliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择供应商发货时间">
</el-date-picker>
</el-form-item>
<el-form-item label="物流公司" v-if="form.optionType === 'SupplierShip'">
<!-- <el-input v-model="form.shipCompany" placeholder="请输入物流公司" />-->
<el-select v-model="form.shipCompany" filterable r placeholder="选择快递公司" >
<el-option v-for="item in logisticsList" :key="item.id" :label="item.name" :value="item.name">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px" >{{item.number}}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="物流单号" v-if="form.optionType === 'SupplierShip'">
<el-input v-model="form.shipNo" placeholder="请输入物流公司" />
</el-form-item>
<el-form-item label="物流费用" v-if="form.optionType === 'SupplierShip'">
<el-input type="number" v-model.number="form.shipCost" placeholder="请输入物流费用" />
</el-form-item>
<el-form-item label="采购金额(不含运费)" v-if="form.optionType === 'confirm'">
<el-input type="number" v-model.number="form.totalAmount" placeholder="请输入采购金额(不含运费)" />
</el-form-item>
<el-form-item label="采购单确认人" v-if="form.optionType === 'confirm'">
<el-input v-model="form.confirmUser" placeholder="请输入采购单确认人" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listPurchaseOrder, getPurchaseOrder, delPurchaseOrder, addPurchaseOrder, updatePurchaseOrder } from "@/api/purchase/purchaseOrder";
import { listSupplier} from "@/api/goods/supplier";
import { listLogistics } from "@/api/purchase/logistics";
import userInfo from '@/views/system/user/profile/userInfo.vue'
import { getUserProfile } from '@/api/system/user'
export default {
name: "PurchaseOrder",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
purchaseOrderList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
contactId: null,
orderNo: null,
orderDate: null,
orderTime: null,
orderAmount: null,
status: null,
auditUser: null,
auditTime: null
},
//
form: {
id:null,
orderNo:null,
optionType:null,
auditUser:null,
remark:null,
orderAmount:null,
shipCost:0.0,
supplierDeliveryTime:null,
totalAmount:null
},
//
rules: {
},
supplierLoading:false,
supplierList:[],
logisticsList:[],
};
},
created() {
listSupplier({}).then(response => {
this.supplierList = response.rows;
// this.supplierLoading = false;
this.getList();
});
getUserProfile().then(resp=>{
this.form.auditUser = resp.data.nickName
})
},
methods: {
amountChange(nv){
this.form.totalAmount = parseFloat(this.form.orderAmount)+parseFloat(this.form.shipCost)
},
dateToString(timespan){
var date = new Date(timespan * 1000);
return date.toLocaleString();
},
// searchSupplier(query){
// this.supplierLoading = true;
// const qw = {
// name:query
// }
// listSupplier(qw).then(response => {
// this.supplierList = response.rows;
// this.supplierLoading = false;
// });
// },
/** 查询采购订单列表 */
getList() {
this.loading = true;
listPurchaseOrder(this.queryParams).then(response => {
this.purchaseOrderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
handleDetail(row){
// this.$router.push('/scm/purchase/order/detail',{id:row.id});
this.$router.push({path :"/purchase/order/detail", query: { id: row.id }});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
contactId: null,
orderNo: null,
orderDate: null,
orderTime: null,
orderAmount: null,
remark: null,
status: null,
auditUser: null,
auditTime: null,
supplierConfirmTime: null,
supplierDeliveryTime: null,
receivedTime: null,
stockInTime: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push('/purchase/order/create');
},
handleUpdateStatus(row,optionType){
this.form.id = row.id
this.form.orderNum = row.orderNum
this.form.orderDate = row.orderDate
var date = new Date(row.orderTime * 1000);
this.form.orderTime = date.toLocaleString();
this.form.orderAmount = row.orderAmount
this.form.remark = row.remark
// this.form.auditUser = row.auditUser
this.form.auditTime = this.dateToString(row.auditTime)
if ('audit' === optionType){
this.form.optionType = 'audit'
this.title = "审核采购订单";
this.open = true;
}else if (optionType === 'SupplierShip'){
this.form.optionType = 'SupplierShip'
listLogistics({}).then(resp=>{
this.logisticsList = resp.rows
this.title = "供应商发货";
this.form.supplierDeliveryTime = new Date()
this.form.shipCost = 0.0
this.open = true;
})
}
else if (optionType === 'confirm'){
this.form.optionType = 'confirm'
this.form.totalAmount = row.orderAmount
this.title = "采购确认";
this.open = true;
}
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if(this.form.optionType === 'audit'){
if(!this.form.auditUser){
this.$message.error("请填写审核人")
return
}
}else if(this.form.optionType === 'SupplierShip'){
if(!this.form.supplierDeliveryTime){
this.$message.error("请填写供应商发货日期")
return
}
if(!this.form.shipCompany){
this.$message.error("请填写供应商发货物流公司")
return
}
if(!this.form.shipNo){
this.$message.error("请填写供应商发货物流单号")
return
}
if(this.form.shipCost === null || this.form.shipCost === undefined){
this.$message.error("请填写供应商发货物流费用")
return
}
}else if(this.form.optionType === 'confirm'){
if(!this.form.totalAmount){
this.$message.error("请填写采购实际金额")
return
}
if(!this.form.confirmUser){
this.$message.error("请填写采购单确认人")
return
}
}
updatePurchaseOrder(this.form).then(response => {
if(this.form.optionType === 'audit'){
if(response.code===0){
this.$message.error("审核失败!"+ response.msg)
}
else if(response.code === 200) {
this.$modal.msgSuccess("审核成功");
this.open = false;
this.getList();
}else{
this.$message.error("失败!"+ response.msg)
}
}else if(this.form.optionType === 'SupplierShip'){
console.log('=====发货结果======',response)
if(response.code === 200) {
this.$modal.msgSuccess("发货成功");
this.open = false;
this.getList();
}else{
this.$message.error("发货失败!"+ response.msg)
}
}
else if(this.form.optionType === 'confirm'){
console.log('=====确认结果======',response)
if(response.code === 200) {
this.$modal.msgSuccess("确认成功");
this.open = false;
this.getList();
}else{
this.$message.error("确认失败!"+ response.msg)
}
}
});
}
});
},
/** 导出按钮操作 */
handleExport() {
this.download('purchase/purchaseOrder/export', {
...this.queryParams
}, `purchaseOrder_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -0,0 +1,285 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="128px">
<el-form-item label="快递公司" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入快递公司"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="快递公司编码" prop="code">
<el-input
v-model="queryParams.code"
placeholder="请输入快递公司编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
>新增</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="dataList" >
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="id" align="center" prop="id" />
<el-table-column label="快递公司" align="center" prop="name" />
<el-table-column label="编码" align="center" prop="code" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="状态" align="center" prop="status" >
<template slot-scope="scope">
<el-tag size="small" v-if="scope.row.status === 0 || !scope.row.status"> 未启用</el-tag>
<el-tag size="small" v-if="scope.row.status === 1"> 启用</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
v-if="scope.row.status === 0 || !scope.row.status"
type="text"
icon="el-icon-edit"
@click="handleUpdateStatus(scope.row)"
>开启</el-button>
<el-button
size="mini"
v-if="scope.row.status === 1"
type="text"
icon="el-icon-delete"
@click="handleUpdateStatus(scope.row)"
>关闭</el-button>
<el-row>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['shop:shop:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['shop:shop:remove']"
>删除</el-button>
</el-row>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改店铺对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="快递公司名称" prop="name">
<el-input v-model="form.name" placeholder="请输入快递公司名称" />
</el-form-item>
<el-form-item label="快递公司编码" prop="code">
<el-input v-model="form.code" placeholder="请输入快递公司编码" />
</el-form-item>
<el-form-item label="描述" prop="remark">
<el-input type="textarea" v-model="form.remark" placeholder="请输入描述" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="form.status" placeholder="请选择状态">
<el-option label="启用" value="1"></el-option>
<el-option label="禁用" value="0"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listLogistics,
updateLogistics,
addLogistics,
getLogistics,
delLogistics, updateStatus
} from '@/api/purchase/logistics'
import {MessageBox} from "element-ui";
import {isRelogin} from "@/utils/request";
export default {
name: "PurchaseLogistics",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
dataList:[],
typeList: [],
//
title: "",
//
open: false,
apiOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
id:null,
code:null,
name:null
},
//
form: {
platformId:null,
shopId:0,
logisticsId:0,
status:'1'
},
//
rules: {
name: [{ required: true, message: "不能为空", trigger: "blur" }],
code: [{ required: true, message: "不能为空", trigger: "blur" }],
status: [{ required: true, message: "不能为空", trigger: "blur" }],
}
};
},
created() {
},
mounted() {
this.getList();
},
methods: {
/** 查询店铺列表 */
getList() {
this.loading = true;
listLogistics(this.queryParams).then(response => {
this.dataList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除快递公司为"' + ids + '"的数据项?').then(function() {
return delLogistics(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
handleUpdateStatus(row){
updateStatus({id:row.id,status:row.status}).then(response => {
console.log('更新状态====',response)
this.getList()
})
},
//
reset() {
this.form = {
id: null,
name: null,
number: null,
remark: null,
status: null,
};
this.resetForm("form");
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加快递公司";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getLogistics(id).then(response => {
this.form = response.data;
this.form.status = response.data.status+'';
this.open = true;
this.title = "修改";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateLogistics(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addLogistics(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
//
cancel() {
this.open = false;
this.reset();
}
}
};
</script>

View File

@ -0,0 +1,246 @@
<template>
<div class="app-container">
<el-form
:model="form"
ref="form"
size="small"
:rules="rules"
:inline="true"
label-width="128px"
>
<el-col span="24">
<el-form-item label="采购单号">
<el-input v-model="form.orderNum" disabled style="width: 220px"/>
</el-form-item>
<el-form-item label="供应商" prop="supplierId">
<el-select v-model="form.supplierId" disabled filterable placeholder="请选择供应商名称" style="width: 220px">
<el-option v-for="item in supplierList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col span="24">
<el-form-item label="商品总数量"><el-input v-model="ship.orderSpecUnitTotal" disabled style="width: 220px"/> </el-form-item>
<el-form-item label="总金额">
<el-input v-model="form.orderAmount" disabled style="width: 220px"/>
</el-form-item>
</el-col>
<el-col span="24">
<el-form-item label="采购日期" prop="orderDate" >
<el-date-picker
clearable
v-model="form.orderDate"
disabled
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择订单日期"
style="width: 220px"
>
</el-date-picker>
</el-form-item>
<el-form-item label="发货日期">
<el-date-picker
clearable
v-model="form.supplierDeliveryTime"
disabled
type="date"
value-format="yyyy-MM-dd"
placeholder=""
style="width: 220px"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col span="24">
<el-form-item label="创建人">
<el-input v-model="form.createBy" disabled style="width: 220px"/>
</el-form-item>
<el-form-item label="审核人">
<el-input v-model="form.auditUser" disabled style="width: 220px"/>
</el-form-item>
</el-col>
<el-row>
<el-form-item label="商品明细:" prop="goodsList">
<el-col :span="24"> </el-col>
</el-form-item>
<el-col :span="24" style="margin-left: 128px">
<el-table :data="itemList" style="width: 1200px">
<el-table-column type="index" label="序号"> </el-table-column>
<el-table-column prop="colorImage" label="商品图片">
<template slot-scope="scope">
<el-image
style="width: 70px; height: 70px"
:src="scope.row.colorImage"
></el-image>
</template>
</el-table-column>
<el-table-column
prop="goodsName"
label="商品名称"
></el-table-column>
<el-table-column prop="specNum" label="SKU"> </el-table-column>
<el-table-column prop="colorValue" label="规格1"> </el-table-column>
<el-table-column prop="sizeValue" label="规格2"> </el-table-column>
<el-table-column prop="styleValue" label="规格3"> </el-table-column>
<el-table-column prop="price" label="单价"> </el-table-column>
<el-table-column prop="quantity" label="数量">
</el-table-column>
<!-- <el-table-column prop="inQty" label="需入库数量">-->
<!-- <template slot-scope="scope">-->
<!-- <el-input v-model.number="scope.row.inQty" placeholder="填写需入库的数量" />-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="amount" label="总金额"> </el-table-column>
</el-table>
</el-col>
</el-row>
<el-row style="margin-top: 20px">
<el-form-item label="收货日期" >
<el-date-picker
clearable
v-model="ship.receiptTime"
type="date"
value-format="yyyy-MM-dd"
placeholder=""
style="width: 220px"
>
</el-date-picker>
</el-form-item>
<el-form-item label="物流公司"><el-input v-model="ship.shipCompany" style="width: 220px" /> </el-form-item>
<el-form-item label="物流单号"><el-input v-model="ship.shipNum" style="width: 220px" /> </el-form-item>
</el-row>
<el-row>
<el-form-item label="备注"><el-input v-model="ship.remark" style="width: 220px" /> </el-form-item>
</el-row>
<el-row>
<el-form-item label="入库仓库" prop="warehouseId">
<el-select v-model="form.warehouseId" filterable placeholder="请选择入库仓库" style="width: 220px">
<el-option v-for="item in warehouseList" :key="item.id" :label="item.warehouseName" :value="item.id">
<span style="float: left">{{ item.warehouseName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-if="item.warehouseType=='LOCAL'">本地仓</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-else-if="item.warehouseType=='JDYC'">京东云仓</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-else-if="item.warehouseType=='CLOUD'">系统云仓</span>
<span style="float: right; color: #8492a6; font-size: 13px" v-else>未知仓</span>
</el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item>
<el-button type="primary" style="margin-left: 128px;" @click="submitForm">生成采购入库单</el-button>
</el-form-item>
</el-row>
</el-form>
</div>
</template>
<script>
import { getPurchaseOrderShip,createStockInEntry } from "@/api/purchase/PurchaseOrderShip";
import { getPurchaseOrder } from "@/api/purchase/purchaseOrder";
import { listSupplier } from '@/api/goods/supplier'
import { parseTime } from '@/utils/zhijian'
import { listWarehouse } from '@/api/wms/warehouse'
export default {
name: "PurchaseOrderShipCreateEntry",
data() {
return {
queryParams:{
pageNum: 1,
pageSize:50,
},
form: {
id: null,
warehouseId:null
},
ship:{},
itemList:[],
supplierList: [],
warehouseList: [],
rules: {
warehouseId:[{ required: true, message: '请选择入库的仓库' }],
},
};
},
mounted() {
listSupplier({}).then(response => {
this.supplierList = response.rows;
});
listWarehouse(this.queryParams).then(response => {
this.warehouseList = response.rows;
listMerchantCloudWarehouse({}).then(response => {
if(response.code===200){
if(response.data){
response.data.forEach(item => {
this.warehouseList.push({
id:item.warehouseId,
warehouseName:item.warehouseName,
warehouseType:item.warehouseType,
})
})
}
}
});
});
this.form.id = this.$route.query.id;
this.getDetail();
this.form.receiptTime = new Date()
},
created() {},
methods: {
parseTime,
getDetail() {
getPurchaseOrder(this.form.id).then((res) => {
this.form = res.data;
this.itemList = res.data.itemList
console.log("采购单详情", res.data);
});
getPurchaseOrderShip(this.form.id).then((response) => {
this.ship = response.data;
console.log("物流详情", this.ship);
});
// listPurchaseOrderItem({orderId:this.form.id}).then(res =>{
// if(res.rows){
// res.rows.forEach(x=>{
// const g = {
// ...x
// }
// x.inQty = x.quantity
//
// })
// }
// this.itemList = res.rows
// console.log('',res)
// })
},
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.goodsList = this.itemList
console.log("======创建采购入库单=====", this.form);
createStockInEntry(this.form).then(res=>{
console.log("====创建入库单api结果====",res)
if(res.code === 200){
// ,
this.$store.dispatch("tagsView/delView", this.$route);
this.$router.push('/purchase/purchase_stock_in');
}
})
}
});
},
},
};
</script>

View File

@ -0,0 +1,416 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="128px"
>
<el-form-item label="采购单号" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入采购单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="供应商发货时间" prop="shipTime">
<el-date-picker
clearable
v-model="queryParams.shipTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择运送时间"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleConfirmReceipt"
v-hasPermi="['purchase:PurchaseOrderShip:edit']"
>确认收货</el-button
>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['purchase:PurchaseOrderShip:export']"-->
<!-- >导出</el-button-->
<!-- >-->
<!-- </el-col>-->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="PurchaseOrderShipList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="采购单ID" align="center" prop="id" />
<el-table-column label="采购单号" align="center" prop="orderNum" />
<!-- <el-table-column label="商品规格数" align="center" prop="orderSpecUnit"/>-->
<!-- <el-table-column label="商品数" align="center" prop="orderGoodsUnit"/>-->
<el-table-column
label="商品总件数"
align="center"
prop="orderSpecUnitTotal"
/>
<el-table-column label="发货物流公司" align="center" prop="shipCompany" />
<el-table-column label="发货物流单号" align="center" prop="shipNum" />
<el-table-column label="运费" align="center" prop="freight" />
<el-table-column
label="发货时间"
align="center"
prop="shipTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.shipTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-tag type="info" v-if="scope.row.status === 0">待收货</el-tag>
<el-tag type="success" v-if="scope.row.status === 1">已收货</el-tag>
<el-tag type="warning" v-if="scope.row.status === 2">已入库</el-tag>
</template>
</el-table-column>
<el-table-column label="说明" align="center" prop="remark" />
<el-table-column label="退回数量" align="center" prop="backCount" />
<el-table-column label="入库数量" align="center" prop="stockInCount" />
<el-table-column
label="采购下单日期"
align="center"
prop="orderDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情</el-button
>
<!-- <el-button-->
<!-- v-if="scope.row.status === 0"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleConfirmReceipt(scope.row)"-->
<!-- >确认收货</el-button-->
<!-- >-->
<el-button
v-if="scope.row.status === 0"
size="mini"
type="text"
icon="el-icon-document-add"
@click="handleCreateEntry(scope.row)"
>入库</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改采购订单物流对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-form-item label="采购订单编号" prop="orderNum">
<el-input
v-model="form.orderNum"
disabled
placeholder="请输入采购订单编号"
/>
</el-form-item>
<el-form-item label="采购订单日期" prop="orderDate">
<el-date-picker
clearable
disabled
v-model="form.orderDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择采购订单日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="采购订单商品规格数" prop="orderSpecUnit">
<el-input
v-model="form.orderSpecUnit"
disabled
placeholder="请输入采购订单商品规格数"
/>
</el-form-item>
<el-form-item label="采购订单商品数" prop="orderGoodsUnit">
<el-input
v-model="form.orderGoodsUnit"
disabled
placeholder="请输入采购订单商品数"
/>
</el-form-item>
<el-form-item label="采购订单总件数" prop="orderSpecUnitTotal">
<el-input
v-model="form.orderSpecUnitTotal"
disabled
placeholder="请输入采购订单总件数"
/>
</el-form-item>
<el-form-item label="物流公司" prop="shipCompany">
<el-input
v-model="form.shipCompany"
disabled
placeholder="请输入物流公司"
/>
</el-form-item>
<el-form-item label="物流单号" prop="shipNum">
<el-input
v-model="form.shipNum"
disabled
placeholder="请输入物流单号"
/>
</el-form-item>
<el-form-item label="运费" prop="freight">
<el-input v-model="form.freight" disabled placeholder="请输入运费" />
</el-form-item>
<el-form-item label="发货时间" prop="shipTime">
<el-date-picker
clearable
disabled
v-model="form.shipTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="收货日期" prop="receiptTime">
<el-date-picker
clearable
v-model="form.receiptTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择收货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPurchaseOrderShip,
getPurchaseOrderShip,
delPurchaseOrderShip,
addPurchaseOrderShip,
confirmReceipt,
} from "@/api/purchase/PurchaseOrderShip";
export default {
name: "PurchaseOrderShip",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
PurchaseOrderShipList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
shipCompany: null,
shipNo: null,
freight: null,
shipTime: null,
status: null,
backCount: null,
stockInCount: null,
orderDate: null,
orderNo: null,
orderSpecUnit: null,
orderGoodsUnit: null,
orderSpecUnitTotal: null,
},
//
form: {},
//
rules: {
receiptTime: [{ required: true, message: "请选择收货日期" }],
},
};
},
created() {
this.getList();
},
methods: {
/** 查询采购订单物流列表 */
getList() {
this.loading = true;
listPurchaseOrderShip(this.queryParams).then((response) => {
this.PurchaseOrderShipList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
shipCompany: null,
shipNo: null,
freight: null,
shipTime: null,
createBy: null,
createTime: null,
status: null,
remark: null,
backCount: null,
stockInCount: null,
updateBy: null,
updateTime: null,
orderDate: null,
orderNo: null,
orderSpecUnit: null,
orderGoodsUnit: null,
orderSpecUnitTotal: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 详情按钮操作 */
handleDetail(row) {
this.$router.push({path :"/purchase/order/detail", query: { id: row.id }});
},
handleCreateEntry(row){
// this.$router.push("/scm/purchase/ship/create_stock_in_entry", { id: row.id });
this.$router.push({path : "/purchase/ship/create_stock_in_entry", query: { id: row.id }})
},
/** 修改按钮操作 */
handleConfirmReceipt(row) {
this.reset();
const id = row.id || this.ids;
getPurchaseOrderShip(id).then((response) => {
this.form = response.data;
this.form.receiptTime = new Date()
this.open = true;
this.title = "确认收货";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
confirmReceipt(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addPurchaseOrderShip(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
},
};
</script>