1、仓库采购需求基本curd实现
This commit is contained in:
parent
77e3e32585
commit
69f0859f67
|
|
@ -0,0 +1,47 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
//获取仓库采购需求列表
|
||||||
|
export function getWarePurchaseDetailList(parms) {
|
||||||
|
return request({
|
||||||
|
url: '/mall-ware/ware/purchasedetail/list',
|
||||||
|
method: 'get',
|
||||||
|
params: parms
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//删除仓库采购需求
|
||||||
|
export function delWarePurchaseDetail(ids) {
|
||||||
|
return request({
|
||||||
|
url: '/mall-ware/ware/purchasedetail/delete',
|
||||||
|
method: 'delete',
|
||||||
|
data: ids
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取仓库采购需求详情
|
||||||
|
export function getWarePurchaseDetail(id) {
|
||||||
|
return request({
|
||||||
|
url: `/mall-ware/ware/purchasedetail/info/${id}`,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//保存仓库采购需求
|
||||||
|
export function saveWarePurchaseDetail(data) {
|
||||||
|
return request({
|
||||||
|
url: `/mall-ware/ware/purchasedetail/save`,
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改仓库采购需求
|
||||||
|
export function editWarePurchaseDetail(data) {
|
||||||
|
return request({
|
||||||
|
url: `/mall-ware/ware/purchasedetail/update`,
|
||||||
|
method: 'put',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,133 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:title="!dataForm.id ? '新增' : '修改'"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:visible.sync="visible">
|
||||||
|
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
|
||||||
|
label-width="120px">
|
||||||
|
<el-form-item label="优先级" prop="priority">
|
||||||
|
<el-input v-model="dataForm.priority" placeholder="优先级"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
dataForm: {
|
||||||
|
id: 0,
|
||||||
|
assigneeId: '',
|
||||||
|
assigneeName: '',
|
||||||
|
phone: '',
|
||||||
|
priority: '',
|
||||||
|
status: 0,
|
||||||
|
wareId: '',
|
||||||
|
amount: '',
|
||||||
|
createTime: '',
|
||||||
|
updateTime: ''
|
||||||
|
},
|
||||||
|
dataRule: {
|
||||||
|
assigneeId: [
|
||||||
|
{required: true, message: '采购人id不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
assigneeName: [
|
||||||
|
{required: true, message: '采购人名不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
phone: [
|
||||||
|
{required: true, message: '联系方式不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
priority: [
|
||||||
|
{required: true, message: '优先级不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
status: [
|
||||||
|
{required: true, message: '状态不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
wareId: [
|
||||||
|
{required: true, message: '仓库id不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
amount: [
|
||||||
|
{required: true, message: '总金额不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
createTime: [
|
||||||
|
{required: true, message: '创建日期不能为空', trigger: 'blur'}
|
||||||
|
],
|
||||||
|
updateTime: [
|
||||||
|
{required: true, message: '更新日期不能为空', trigger: 'blur'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(id) {
|
||||||
|
this.dataForm.id = id
|
||||||
|
this.visible = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs['dataForm'].resetFields()
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl(`/ware/purchase/info/${this.dataForm.id}`),
|
||||||
|
method: 'get',
|
||||||
|
params: this.$http.adornParams()
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.dataForm.assigneeId = data.purchase.assigneeId
|
||||||
|
this.dataForm.assigneeName = data.purchase.assigneeName
|
||||||
|
this.dataForm.phone = data.purchase.phone
|
||||||
|
this.dataForm.priority = data.purchase.priority
|
||||||
|
this.dataForm.status = data.purchase.status
|
||||||
|
this.dataForm.wareId = data.purchase.wareId
|
||||||
|
this.dataForm.amount = data.purchase.amount
|
||||||
|
this.dataForm.createTime = data.purchase.createTime
|
||||||
|
this.dataForm.updateTime = data.purchase.updateTime
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
this.$refs['dataForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl(`/ware/purchase/${!this.dataForm.id ? 'save' : 'update'}`),
|
||||||
|
method: 'post',
|
||||||
|
data: this.$http.adornData({
|
||||||
|
'id': this.dataForm.id || undefined,
|
||||||
|
'assigneeId': this.dataForm.assigneeId,
|
||||||
|
'assigneeName': this.dataForm.assigneeName,
|
||||||
|
'phone': this.dataForm.phone,
|
||||||
|
'priority': this.dataForm.priority,
|
||||||
|
'status': this.dataForm.status,
|
||||||
|
'wareId': this.dataForm.wareId,
|
||||||
|
'amount': this.dataForm.amount,
|
||||||
|
'createTime': this.dataForm.createTime,
|
||||||
|
'updateTime': this.dataForm.updateTime
|
||||||
|
})
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message({
|
||||||
|
message: '操作成功',
|
||||||
|
type: 'success',
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.visible = false
|
||||||
|
this.$emit('refreshDataList')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,266 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select style="width:120px;" v-model="dataForm.status" placeholder="请选择状态" clearable>
|
||||||
|
<el-option label="新建" :value="0"></el-option>
|
||||||
|
<el-option label="已分配" :value="1"></el-option>
|
||||||
|
<el-option label="已领取" :value="2"></el-option>
|
||||||
|
<el-option label="已完成" :value="3"></el-option>
|
||||||
|
<el-option label="有异常" :value="4"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="关键字">
|
||||||
|
<el-input style="width:120px;" v-model="dataForm.key" placeholder="参数名" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button-group>
|
||||||
|
<el-button @click="getDataList()" size="mini">查询</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="addOrUpdateHandle()"
|
||||||
|
size="mini"
|
||||||
|
>新增
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
@click="deleteHandle()"
|
||||||
|
size="mini"
|
||||||
|
:disabled="dataListSelections.length <= 0"
|
||||||
|
>批量删除
|
||||||
|
</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
:data="dataList"
|
||||||
|
border
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
@selection-change="selectionChangeHandle"
|
||||||
|
style="width: 100%;"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
|
||||||
|
<el-table-column prop="id" header-align="center" align="center" label="采购单id"></el-table-column>
|
||||||
|
<el-table-column prop="assigneeId" header-align="center" align="center" label="采购人id"></el-table-column>
|
||||||
|
<el-table-column prop="assigneeName" header-align="center" align="center" label="采购人名"></el-table-column>
|
||||||
|
<el-table-column prop="phone" header-align="center" align="center" label="联系方式"></el-table-column>
|
||||||
|
<el-table-column prop="priority" header-align="center" align="center" label="优先级"></el-table-column>
|
||||||
|
<el-table-column prop="status" header-align="center" align="center" label="状态">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag v-if="scope.row.status === 0">新建</el-tag>
|
||||||
|
<el-tag type="info" v-if="scope.row.status === 1">已分配</el-tag>
|
||||||
|
<el-tag type="warning" v-if="scope.row.status === 2">已领取</el-tag>
|
||||||
|
<el-tag type="success" v-if="scope.row.status === 3">已完成</el-tag>
|
||||||
|
<el-tag type="danger" v-if="scope.row.status === 4">有异常</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="wareId" header-align="center" align="center" label="仓库id"></el-table-column>
|
||||||
|
<el-table-column prop="amount" header-align="center" align="center" label="总金额"></el-table-column>
|
||||||
|
<el-table-column prop="createTime" header-align="center" align="center" label="创建日期"></el-table-column>
|
||||||
|
<el-table-column prop="updateTime" header-align="center" align="center" label="更新日期"></el-table-column>
|
||||||
|
<el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
v-if="scope.row.status===0||scope.row.status===1"
|
||||||
|
@click="opendrawer(scope.row)"
|
||||||
|
>分配
|
||||||
|
</el-button>
|
||||||
|
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||||
|
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
@size-change="sizeChangeHandle"
|
||||||
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="totalPage"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
></el-pagination>
|
||||||
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
|
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
||||||
|
<el-dialog title="分配采购人员" :visible.sync="caigoudialogVisible" width="30%">
|
||||||
|
<el-select v-model="userId" filterable placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in userList"
|
||||||
|
:key="item.userId"
|
||||||
|
:label="item.username"
|
||||||
|
:value="item.userId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="caigoudialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="assignUser">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AddOrUpdate from "./purchase-add-or-update";
|
||||||
|
import {delWarePurchase, getWarePurchaseList} from "@/api/mall/ware/ware-purchase-detail";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "Purchase",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
wareList: [],
|
||||||
|
currentRow: {},
|
||||||
|
dataForm: {
|
||||||
|
key: "",
|
||||||
|
status: ""
|
||||||
|
},
|
||||||
|
dataList: [],
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0,
|
||||||
|
dataListLoading: false,
|
||||||
|
dataListSelections: [],
|
||||||
|
addOrUpdateVisible: false,
|
||||||
|
caigoudialogVisible: false,
|
||||||
|
userId: "",
|
||||||
|
userList: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
AddOrUpdate
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.getWares()
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
opendrawer(row) {
|
||||||
|
this.getUserList();
|
||||||
|
this.currentRow = row;
|
||||||
|
this.caigoudialogVisible = true;
|
||||||
|
},
|
||||||
|
assignUser() {
|
||||||
|
let _this = this;
|
||||||
|
let user = {};
|
||||||
|
this.userList.forEach(item => {
|
||||||
|
if (item.userId === _this.userId) {
|
||||||
|
user = item;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.caigoudialogVisible = false;
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl(
|
||||||
|
`/ware/purchase/update`
|
||||||
|
),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({
|
||||||
|
id: this.currentRow.id || undefined,
|
||||||
|
assigneeId: user.userId,
|
||||||
|
assigneeName: user.username,
|
||||||
|
phone: user.mobile,
|
||||||
|
status: 1
|
||||||
|
})
|
||||||
|
}).then(({data}) => {
|
||||||
|
if (data && data.code === 0) {
|
||||||
|
this.$message({
|
||||||
|
message: "操作成功",
|
||||||
|
type: "success",
|
||||||
|
duration: 1500
|
||||||
|
});
|
||||||
|
|
||||||
|
this.userId = "";
|
||||||
|
this.getDataList();
|
||||||
|
} else {
|
||||||
|
this.$message.error(data.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
getUserList() {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/sys/user/list"),
|
||||||
|
method: "get",
|
||||||
|
params: this.$http.adornParams({
|
||||||
|
page: 1,
|
||||||
|
limit: 500
|
||||||
|
})
|
||||||
|
}).then(({data}) => {
|
||||||
|
this.userList = data.page.list;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
this.dataListLoading = true;
|
||||||
|
let params = {
|
||||||
|
page: this.pageIndex,
|
||||||
|
limit: this.pageSize,
|
||||||
|
key: this.dataForm.key
|
||||||
|
}
|
||||||
|
getWarePurchaseList(params).then(res => {
|
||||||
|
this.dataList = res.page.list;
|
||||||
|
this.totalPage = res.page.totalCount;
|
||||||
|
this.dataListLoading = false;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 每页数
|
||||||
|
sizeChangeHandle(val) {
|
||||||
|
this.pageSize = val;
|
||||||
|
this.pageIndex = 1;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle(val) {
|
||||||
|
this.pageIndex = val;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 多选
|
||||||
|
selectionChangeHandle(val) {
|
||||||
|
this.dataListSelections = val;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增 / 修改
|
||||||
|
addOrUpdateHandle(id) {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(id);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
deleteHandle(id) {
|
||||||
|
var ids = id ? [id] : this.dataListSelections.map(item => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
this.$confirm(
|
||||||
|
`确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
|
||||||
|
"提示",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}
|
||||||
|
).then(() => {
|
||||||
|
delWarePurchase(ids).then(res => {
|
||||||
|
this.$modal.notifySuccess("删除成功")
|
||||||
|
this.getDataList();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.dataForm = {}
|
||||||
|
this.pageIndex = 1;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,117 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:title="!dataForm.id ? '新增' : '修改'"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:visible.sync="visible"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
ref="dataForm"
|
||||||
|
@keyup.enter.native="dataFormSubmit()"
|
||||||
|
label-width="120px"
|
||||||
|
>
|
||||||
|
<el-form-item label="采购商品id" prop="skuId">
|
||||||
|
<el-input v-model="dataForm.skuId" placeholder="采购商品id"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="采购数量" prop="skuNum">
|
||||||
|
<el-input v-model="dataForm.skuNum" placeholder="采购数量"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="仓库" prop="wareId">
|
||||||
|
<el-select v-model="dataForm.wareId" placeholder="请选择仓库" clearable>
|
||||||
|
<el-option :label="w.name" :value="w.id" v-for="w in wareList" :key="w.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {getWareInfoList} from "@/api/mall/ware/ware-info";
|
||||||
|
import {
|
||||||
|
editWarePurchaseDetail,
|
||||||
|
getWarePurchaseDetail,
|
||||||
|
saveWarePurchaseDetail
|
||||||
|
} from "@/api/mall/ware/ware-purchase-detail";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
wareList: [],
|
||||||
|
dataForm: {
|
||||||
|
id: 0,
|
||||||
|
purchaseId: "",
|
||||||
|
skuId: "",
|
||||||
|
skuNum: "",
|
||||||
|
skuPrice: "",
|
||||||
|
wareId: "",
|
||||||
|
status: 0
|
||||||
|
},
|
||||||
|
dataRule: {
|
||||||
|
skuId: [
|
||||||
|
{required: true, message: "采购商品id不能为空", trigger: "blur"}
|
||||||
|
],
|
||||||
|
skuNum: [
|
||||||
|
{required: true, message: "采购数量不能为空", trigger: "blur"}
|
||||||
|
],
|
||||||
|
wareId: [{required: true, message: "仓库id不能为空", trigger: "blur"}]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getWares();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//获取仓库信息
|
||||||
|
getWares() {
|
||||||
|
let params = {
|
||||||
|
page: 1,
|
||||||
|
limit: 500
|
||||||
|
}
|
||||||
|
getWareInfoList(params).then(res => {
|
||||||
|
this.wareList = res.page.list;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
init(id) {
|
||||||
|
this.dataForm.id = id
|
||||||
|
this.visible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs["dataForm"].resetFields();
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
getWarePurchaseDetail(this.dataForm.id).then(res => {
|
||||||
|
this.dataForm = res.purchaseDetail
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
this.$refs["dataForm"].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
if (!this.dataForm.id) {
|
||||||
|
saveWarePurchaseDetail(this.dataForm).then(res => {
|
||||||
|
this.$modal.notifySuccess("保存成功")
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
editWarePurchaseDetail(this.dataForm).then(res => {
|
||||||
|
this.$modal.notifySuccess("修改成功")
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,293 @@
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
|
||||||
|
<el-form-item label="仓库">
|
||||||
|
<el-select style="width:120px;" v-model="dataForm.wareId" placeholder="请选择仓库" clearable>
|
||||||
|
<el-option :label="w.name" :value="w.id" v-for="w in wareList" :key="w.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select style="width:120px;" v-model="dataForm.status" placeholder="请选择状态" clearable>
|
||||||
|
<el-option label="新建" :value="0"></el-option>
|
||||||
|
<el-option label="已分配" :value="1"></el-option>
|
||||||
|
<el-option label="正在采购" :value="2"></el-option>
|
||||||
|
<el-option label="已完成" :value="3"></el-option>
|
||||||
|
<el-option label="采购失败" :value="4"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="关键字">
|
||||||
|
<el-input style="width:220px;" v-model="dataForm.key" placeholder="请输入采购单id、商品id等" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button-group>
|
||||||
|
<el-button @click="getDataList()">查询</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="addOrUpdateHandle()"
|
||||||
|
>新增
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown @command="handleBatchCommand" :disabled="dataListSelections.length <= 0">
|
||||||
|
<el-button type="info">
|
||||||
|
批量操作
|
||||||
|
<i class="el-icon-arrow-down el-icon--right"></i>
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item command="delete">批量删除</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="merge">合并整单</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table
|
||||||
|
:data="dataList"
|
||||||
|
border
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
@selection-change="selectionChangeHandle"
|
||||||
|
style="width: 100%;"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
|
||||||
|
<el-table-column prop="purchaseId" header-align="center" align="center" label="采购单id"></el-table-column>
|
||||||
|
<el-table-column prop="skuId" header-align="center" align="center" label="采购商品id"></el-table-column>
|
||||||
|
<el-table-column prop="skuNum" header-align="center" align="center" label="采购数量"></el-table-column>
|
||||||
|
<el-table-column prop="skuPrice" header-align="center" align="center" label="采购金额"></el-table-column>
|
||||||
|
<el-table-column prop="wareName" header-align="center" align="center" label="仓库名称"></el-table-column>
|
||||||
|
<el-table-column prop="status" header-align="center" align="center" label="状态">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag v-if="scope.row.status===0">新建</el-tag>
|
||||||
|
<el-tag type="info" v-if="scope.row.status===1">已分配</el-tag>
|
||||||
|
<el-tag type="wanring" v-if="scope.row.status===2">正在采购</el-tag>
|
||||||
|
<el-tag type="success" v-if="scope.row.status===3">已完成</el-tag>
|
||||||
|
<el-tag type="danger" v-if="scope.row.status===4">采购失败</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||||
|
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
@size-change="sizeChangeHandle"
|
||||||
|
@current-change="currentChangeHandle"
|
||||||
|
:current-page="pageIndex"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="totalPage"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
></el-pagination>
|
||||||
|
<!-- 弹窗, 新增 / 修改 -->
|
||||||
|
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
||||||
|
<el-dialog title="合并到整单" :visible.sync="mergedialogVisible">
|
||||||
|
<!-- id assignee_id assignee_name phone priority status -->
|
||||||
|
<el-select v-model="purchaseId" placeholder="请选择" clearable filterable>
|
||||||
|
<el-option
|
||||||
|
v-for="item in purchasetableData"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.id"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
<span style="float: left">{{ item.id }}</span>
|
||||||
|
<span
|
||||||
|
style="float: right; color: #8492a6; font-size: 13px"
|
||||||
|
>{{ item.assigneeName }}:{{ item.phone }}</span>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="mergedialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="mergeItem">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AddOrUpdate from "./purchasedetail-add-or-update";
|
||||||
|
import {getWareInfoList} from "@/api/mall/ware/ware-info";
|
||||||
|
import {delWarePurchaseDetail, getWarePurchaseDetailList} from "@/api/mall/ware/ware-purchase-detail";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "PurchaseDetail",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dataForm: {
|
||||||
|
key: "",
|
||||||
|
status: "",
|
||||||
|
wareId: ""
|
||||||
|
},
|
||||||
|
wareList: [],
|
||||||
|
dataList: [],
|
||||||
|
pageIndex: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
totalPage: 0,
|
||||||
|
dataListLoading: false,
|
||||||
|
dataListSelections: [],
|
||||||
|
addOrUpdateVisible: false,
|
||||||
|
mergedialogVisible: false,
|
||||||
|
purchaseId: "",
|
||||||
|
purchasetableData: []
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
AddOrUpdate
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getDataList();
|
||||||
|
this.getWares();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
mergeItem() {
|
||||||
|
let items = this.dataListSelections.map(item => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
if (!this.purchaseId) {
|
||||||
|
this.$confirm(
|
||||||
|
"没有选择任何【采购单】,将自动创建新单进行合并。确认吗?",
|
||||||
|
"提示",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/ware/purchase/merge"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData({items: items}, false)
|
||||||
|
}).then(({data}) => {
|
||||||
|
this.getDataList();
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/ware/purchase/merge"),
|
||||||
|
method: "post",
|
||||||
|
data: this.$http.adornData(
|
||||||
|
{purchaseId: this.purchaseId, items: items},
|
||||||
|
false
|
||||||
|
)
|
||||||
|
}).then(({data}) => {
|
||||||
|
this.getDataList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.mergedialogVisible = false;
|
||||||
|
},
|
||||||
|
getUnreceivedPurchase() {
|
||||||
|
this.$http({
|
||||||
|
url: this.$http.adornUrl("/ware/purchase/unreceive/list"),
|
||||||
|
method: "get",
|
||||||
|
params: this.$http.adornParams({})
|
||||||
|
}).then(({data}) => {
|
||||||
|
this.purchasetableData = data.page.list;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
handleBatchCommand(cmd) {
|
||||||
|
if (cmd === "delete") {
|
||||||
|
this.deleteHandle();
|
||||||
|
}
|
||||||
|
if (cmd === "merge") {
|
||||||
|
if (this.dataListSelections.length !== 0) {
|
||||||
|
this.getUnreceivedPurchase();
|
||||||
|
this.mergedialogVisible = true;
|
||||||
|
} else {
|
||||||
|
this.$alert("请先选择需要合并的需求", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
callback: action => {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
//获取仓库信息
|
||||||
|
getWares() {
|
||||||
|
let params = {
|
||||||
|
page: 1,
|
||||||
|
limit: 500
|
||||||
|
}
|
||||||
|
getWareInfoList(params).then(res => {
|
||||||
|
this.wareList = res.page.list;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取数据列表
|
||||||
|
getDataList() {
|
||||||
|
this.dataListLoading = true;
|
||||||
|
let params = {
|
||||||
|
page: this.pageIndex,
|
||||||
|
limit: this.pageSize,
|
||||||
|
key: this.dataForm.key,
|
||||||
|
status: this.dataForm.status,
|
||||||
|
wareId: this.dataForm.wareId
|
||||||
|
}
|
||||||
|
getWarePurchaseDetailList(params).then(res => {
|
||||||
|
this.dataList = res.page.list;
|
||||||
|
this.totalPage = res.page.totalCount;
|
||||||
|
this.dataListLoading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 每页数
|
||||||
|
sizeChangeHandle(val) {
|
||||||
|
this.pageSize = val;
|
||||||
|
this.pageIndex = 1;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 当前页
|
||||||
|
currentChangeHandle(val) {
|
||||||
|
this.pageIndex = val;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 多选
|
||||||
|
selectionChangeHandle(val) {
|
||||||
|
this.dataListSelections = val;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增 / 修改
|
||||||
|
addOrUpdateHandle(id) {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(id);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
deleteHandle(id) {
|
||||||
|
var ids = id
|
||||||
|
? [id]
|
||||||
|
: this.dataListSelections.map(item => {
|
||||||
|
return item.id;
|
||||||
|
});
|
||||||
|
this.$confirm(
|
||||||
|
`确定对[id=${ids.join(",")}]进行[${id ? "删除" : "批量删除"}]操作?`,
|
||||||
|
"提示",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}
|
||||||
|
).then(() => {
|
||||||
|
delWarePurchaseDetail(ids).then(res => {
|
||||||
|
this.$modal.notifySuccess("删除成功")
|
||||||
|
this.getDataList();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.dataForm = {}
|
||||||
|
this.pageIndex = 1;
|
||||||
|
this.getDataList();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
@ -44,7 +44,7 @@ public class PurchaseDetailController {
|
||||||
/**
|
/**
|
||||||
* 信息
|
* 信息
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/info/{id}")
|
@GetMapping("/info/{id}")
|
||||||
@ApiOperation("信息")
|
@ApiOperation("信息")
|
||||||
public R info(@PathVariable("id") Long id) {
|
public R info(@PathVariable("id") Long id) {
|
||||||
PurchaseDetailEntity purchaseDetail = purchaseDetailService.getById(id);
|
PurchaseDetailEntity purchaseDetail = purchaseDetailService.getById(id);
|
||||||
|
|
@ -55,7 +55,7 @@ public class PurchaseDetailController {
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/save")
|
@PostMapping("/save")
|
||||||
@ApiOperation("保存")
|
@ApiOperation("保存")
|
||||||
@Log(title = "采购需求", businessType = BusinessType.INSERT)
|
@Log(title = "采购需求", businessType = BusinessType.INSERT)
|
||||||
public R save(@RequestBody PurchaseDetailEntity purchaseDetail) {
|
public R save(@RequestBody PurchaseDetailEntity purchaseDetail) {
|
||||||
|
|
@ -67,7 +67,7 @@ public class PurchaseDetailController {
|
||||||
/**
|
/**
|
||||||
* 修改
|
* 修改
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/update")
|
@PutMapping("/update")
|
||||||
@ApiOperation("修改")
|
@ApiOperation("修改")
|
||||||
@Log(title = "采购需求", businessType = BusinessType.UPDATE)
|
@Log(title = "采购需求", businessType = BusinessType.UPDATE)
|
||||||
public R update(@RequestBody PurchaseDetailEntity purchaseDetail) {
|
public R update(@RequestBody PurchaseDetailEntity purchaseDetail) {
|
||||||
|
|
@ -79,7 +79,7 @@ public class PurchaseDetailController {
|
||||||
/**
|
/**
|
||||||
* 删除
|
* 删除
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/delete")
|
@DeleteMapping("/delete")
|
||||||
@ApiOperation("删除")
|
@ApiOperation("删除")
|
||||||
@Log(title = "采购需求", businessType = BusinessType.DELETE)
|
@Log(title = "采购需求", businessType = BusinessType.DELETE)
|
||||||
public R delete(@RequestBody Long[] ids) {
|
public R delete(@RequestBody Long[] ids) {
|
||||||
|
|
|
||||||
|
|
@ -6,17 +6,27 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.core.utils.StringUtils;
|
||||||
import com.xjs.mall.ware.dao.PurchaseDetailDao;
|
import com.xjs.mall.ware.dao.PurchaseDetailDao;
|
||||||
import com.xjs.mall.ware.entity.PurchaseDetailEntity;
|
import com.xjs.mall.ware.entity.PurchaseDetailEntity;
|
||||||
|
import com.xjs.mall.ware.entity.WareInfoEntity;
|
||||||
import com.xjs.mall.ware.service.PurchaseDetailService;
|
import com.xjs.mall.ware.service.PurchaseDetailService;
|
||||||
|
import com.xjs.mall.ware.service.WareInfoService;
|
||||||
|
import com.xjs.mall.ware.vo.PurchaseDetailVo;
|
||||||
import com.xjs.utils.PageUtils;
|
import com.xjs.utils.PageUtils;
|
||||||
import com.xjs.utils.Query;
|
import com.xjs.utils.Query;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@Service("purchaseDetailService")
|
@Service("purchaseDetailService")
|
||||||
public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailDao, PurchaseDetailEntity> implements PurchaseDetailService {
|
public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailDao, PurchaseDetailEntity> implements PurchaseDetailService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WareInfoService wareInfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageUtils queryPage(Map<String, Object> params) {
|
public PageUtils queryPage(Map<String, Object> params) {
|
||||||
LambdaQueryWrapper<PurchaseDetailEntity> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<PurchaseDetailEntity> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
|
@ -35,7 +45,19 @@ public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailDao, Pu
|
||||||
|
|
||||||
IPage<PurchaseDetailEntity> page = this.page(new Query<PurchaseDetailEntity>().getPage(params), wrapper);
|
IPage<PurchaseDetailEntity> page = this.page(new Query<PurchaseDetailEntity>().getPage(params), wrapper);
|
||||||
|
|
||||||
return new PageUtils(page);
|
List<Object> collect = page.getRecords().stream().map(purchaseDetailEntity -> {
|
||||||
|
PurchaseDetailVo purchaseDetailVo = new PurchaseDetailVo();
|
||||||
|
BeanUtils.copyProperties(purchaseDetailEntity, purchaseDetailVo);
|
||||||
|
//获取仓库信息
|
||||||
|
WareInfoEntity wareInfoEntity = wareInfoService.getById(purchaseDetailVo.getWareId());
|
||||||
|
purchaseDetailVo.setWareName(wareInfoEntity.getName());
|
||||||
|
return purchaseDetailVo;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
PageUtils pageUtils = new PageUtils(page);
|
||||||
|
pageUtils.setList(collect);
|
||||||
|
|
||||||
|
return pageUtils;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.xjs.mall.ware.vo;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购需求vo
|
||||||
|
* @author xiejs
|
||||||
|
* @since 2022-03-23
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PurchaseDetailVo {
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 采购单id
|
||||||
|
*/
|
||||||
|
private Long purchaseId;
|
||||||
|
/**
|
||||||
|
* 采购商品id
|
||||||
|
*/
|
||||||
|
private Long skuId;
|
||||||
|
/**
|
||||||
|
* 采购数量
|
||||||
|
*/
|
||||||
|
private Integer skuNum;
|
||||||
|
/**
|
||||||
|
* 采购金额
|
||||||
|
*/
|
||||||
|
private BigDecimal skuPrice;
|
||||||
|
/**
|
||||||
|
* 仓库id
|
||||||
|
*/
|
||||||
|
private Long wareId;
|
||||||
|
/**
|
||||||
|
* 状态[0新建,1已分配,2正在采购,3已完成,4采购失败]
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仓库名称
|
||||||
|
*/
|
||||||
|
private String wareName;
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue