944 lines
29 KiB

<template>
<basic-container>
<div class="avue-crud">
<!--<el-row :hidden="!search" style="padding:6px 18px">
&lt;!&ndash; 查询模块 &ndash;&gt;
<el-form :inline="true" :model="query">
<el-form-item label="备货状态:">
<el-input v-model="query.stockupStatus" placeholder="请输入备货状态"></el-input>
</el-form-item>
<el-form-item label="备货区:">
<el-input v-model="query.stockupArea" placeholder="请输入备货区"></el-input>
</el-form-item>
<el-form-item label="指派状态;1-未指派、2-已指派:">
<el-input v-model="query.assignStatus" placeholder="请输入指派状态;1-未指派、2-已指派"></el-input>
</el-form-item>
&lt;!&ndash; 查询按钮 &ndash;&gt;
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="searchChange">搜 索</el-button>
<el-button icon="el-icon-delete" @click="searchReset()">清 空</el-button>
</el-form-item>
</el-form>
</el-row>-->
<el-row>
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<!-- <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新 增</el-button>
<el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain>删 除</el-button>-->
<el-button type="primary" text icon="el-icon-edit" @click="handleForklift" >指派备货信息</el-button>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
<!-- <el-button icon="el-icon-search" @click="onLoad" >全部</el-button>-->
<!-- <el-button icon="el-icon-refresh" @click="getStockUp('2')" >已备货</el-button>
<el-button icon="el-icon-search" @click="getStockUp('1')" >待备货</el-button>-->
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button>
<el-button icon="Operation" @click="showdrawer(true)" circle></el-button>
<el-button icon="el-icon-search" @click="searchHide" circle></el-button>
</div>
</div>
</el-row>
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="columnList"
:tableData="data"
:loading="loading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<el-button type="primary" text icon="el-icon-view" @click="handleView(slotProps.scope)">查看</el-button>
<el-button type="primary" text icon="el-icon-edit" @click="handleEdit(slotProps.scope)">编辑</el-button>
<!-- <el-button type="primary" text icon="el-icon-edit" @click="handleEdit(slotProps.scope)">取消</el-button>-->
<el-button type="primary" text icon="el-icon-edit" @click="handleEdit(slotProps.scope)">打印</el-button>
</template>
</tablecmt>
</el-row>
<el-row>
<div class="avue-crud__pagination" style="width:100%">
<!-- 分页模块 -->
<el-pagination align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[10, 20, 30, 40, 50, 100]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total">
</el-pagination>
</div>
</el-row>
<el-dialog v-model="dialogFormCustomer" title="指派备货信息">
<el-form :model="form">
<el-form-item label="备货时间" :label-width="formLabelWidth" v-if="this.num=='2'">
<el-date-picker style="width: 25%;"
v-model="form.stockupDate"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="时间"
/>
</el-form-item>
<el-form-item label="备货人员" :label-width="formLabelWidth">
<el-select v-model="form.forkliftId" clearable placeholder="请选择备货人员" @change="getForklift($event,'1')">
<el-option
v-for="item in forkliftData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="装卸班组" :label-width="formLabelWidth">
<el-select v-model="form.loaderId" clearable placeholder="请选择装卸班组" @change="getForklift($event,'2')">
<el-option
v-for="item in loaderData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="备货区域" :label-width="formLabelWidth" >
<el-select v-model="form.goodsAreaId" clearable placeholder="请选择备货区编号" @change="getForklift($event,'3')">
<el-option
v-for="item in goodsAreaIdData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="出库时间" prop="outboundDate" :label-width="formLabelWidth">
<el-date-picker v-model="form.outboundDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择出库时间" style="width: 26%"></el-date-picker>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogFormCustomer = false">取消</el-button>
<!-- <el-button type="primary" @click="dialogFormVisible = false"> 确定 </el-button>-->
<el-button type="primary" @click="callFordelivery()"> 确定 </el-button>
</span>
</template>
</el-dialog>
<!-- 表单模块 -->
<el-dialog :title="title"
v-model="box"
width="50%"
:before-close="beforeClose"
append-to-body>
<el-form :disabled="view" ref="form" :model="form" label-width="80px">
<!-- 表单字段 -->
<el-form-item label="备货时间" prop="stockupDate">
<el-date-picker v-model="form.stockupDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择备货时间"></el-date-picker>
</el-form-item>
<el-form-item label="备货人" prop="stockupUser">
<el-input v-model="form.stockupUser" placeholder="请输入备货人"/>
</el-form-item>
<el-form-item label="备货状态" prop="stockupStatus">
<el-input v-model="form.stockupStatus" placeholder="请输入备货状态"/>
</el-form-item>
<el-form-item label="备货区" prop="stockupArea">
<el-input v-model="form.stockupArea" placeholder="请输入备货区"/>
</el-form-item>
<el-form-item label="指派状态;1-未指派、2-已指派" prop="assignStatus">
<el-select v-model="form.assignStatus" clearable placeholder="请选择指派状态;1-未指派、2-已指派">
<el-option
v-for="item in assignStatusData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="备货库位" prop="stockipAllocation">
<el-input v-model="form.stockipAllocation" placeholder="请输入备货库位"/>
</el-form-item>
<el-form-item label="备货区编号" prop="goodsAreaId">
<el-select v-model="form.goodsAreaId" clearable placeholder="请选择备货区编号">
<el-option
v-for="item in goodsAreaIdData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="叉车司机" prop="forklift">
<el-select v-model="form.forklift" clearable placeholder="请选择叉车司机">
<el-option
v-for="item in forkliftData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="装卸班组" prop="loader">
<el-select v-model="form.loader" clearable placeholder="请选择装卸班组">
<el-option
v-for="item in loaderData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="确认完成备货时间" prop="fixTime">
<el-date-picker v-model="form.fixTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择确认完成备货时间"></el-date-picker>
</el-form-item>
<el-form-item label="指派时间" prop="assignTime">
<el-date-picker v-model="form.assignTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择指派时间"></el-date-picker>
</el-form-item>
</el-form>
<!-- 表单按钮 -->
<template #footer>
<span v-if="!view" class="dialog-footer">
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit">提 交</el-button>
<el-button icon="el-icon-circle-close" @click="box = false">取 消</el-button>
</span>
</template>
</el-dialog>
</div>
</basic-container>
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="columnList"
></edittablehead>
</template>
<script>
import { getList, getDetail, add, update, remove,getListUser,addAssign } from "@/api/distribution/distributionStockup";
import { getPostList } from '@/api/system/post';
import { stockUp } from '@/api/basicdata/basicdataGoodsArea';
import { getListOwn,getUser } from '@/api/system/user';
import option from "@/option/distribution/distributionStockup";
import { mapGetters } from "vuex";
import { getListTeam } from '@/api/basicdata/basicdataTeamGroup';
import dayjs from 'dayjs';
import { getDictionaryBiz } from '@/api/system/dict';
export default {
data () {
return {
columnList: [
{
prop: '',
label: '序号',
type: 0,
values: '',
width: 55,
checkarr: [],
fixed: true,
},
{
prop: 'stockupDate',
label: '备货时间',
type: 4,
values: '',
width: '150',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'stockupDate',
label: '出库时间',
type: 4,
values: '',
width: '150',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'stockupUser',
label: '操作人',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'stockupStatusName',
label: '备货状态',
type: 3,
values: '',
width: '180',
checkarr: [
// {
// label: '未备货',
// value: '1',
// },
// {
// label: '待备货',
// value: '2',
// },
// {
// label: '备货中',
// value: '3',
// },
// {
// label: '已备货',
// value: '4',
// },
],
fixed: false,
sortable: true,
},
{
prop: 'stockupArea',
label: '备货区',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'assignStatusName',
label: '指派状态',
type: 3,
values: '',
width: '150',
checkarr: [
{
label: '未指派',
value: '1',
},
{
label: '已指派',
value: '2',
},
],
fixed: false,
sortable: true,
},
{
prop: 'stockipAllocation',
label: '所在库位',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
// {
// prop: 'goodsAreaId',
// label: '备货区编号',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: true,
// },
{
prop: 'forkliftName',
label: '备货人员',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
/*{
prop: 'typeServiceName',
label: '服务类型',
type: 3,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},*/
{
prop: 'loaderName',
label: '装卸班组',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'fixTime',
label: '确认完成备货时间',
type: 1,
values: '',
width: '220',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'assignTime',
label: '指派时间',
type: 1,
values: '',
width: '220',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: '',
label: '操作',
type: 6,
values: '',
width: '230',
checkarr: [],
fixed: 'right',
hide: true,
},
// 更多列的配置...
],
columnListedit: [],
drawerShow: false,
height: 0,
// 弹框标题
title: '',
// 是否展示弹框
box: false,
// 是否显示查询
search: true,
// 加载中
loading: true,
// 是否为查看模式
view: false,
dialogFormCustomer: false,
formLabelWidth: '120px',
// 查询信息
query: {},
// 分页信息
page: {
currentPage: 1,
pageSize: 10,
total: 40
},
// 表单数据
form: {},
formOne: {},
// 选择行
selectionList: [],
// 表单配置
option: option,
// 表单列表
data: [],
forkliftData: [],
loaderData: [],
goodsAreaIdData: [],
distributionType: [],
deptId: '',
num: '',
}
},
mounted () {
this.init();
/**
* 初始化获取本地缓存的编辑隐藏的列表
* 固定搭配,不能更改
*/
let newarr = this.$functions.getStorage(window.location.pathname);
if (newarr) {
this.columnList.map(item => {
item.head = false;
});
newarr.map(ite => {
this.columnList.map(item => {
if (ite == item.label) {
item.head = true;
}
});
});
}
},
computed: {
...mapGetters(["permission"]),
ids () {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
}
},
methods: {
//选择
getForklift(row,ty){
console.log("执行了了了了",row);
switch (ty){
case '1':
let x = this.forkliftData.find(i =>i.dictKey==row);
// console.log("xxx",x);
this.form.forkliftName = x.dictValue;
break;
case '2':
let b = this.loaderData.find(i =>i.dictKey == row)
this.form.loaderName = b.dictValue;
break;
case '3':
let f = this.goodsAreaIdData.find(i =>i.dictKey == row)
console.log("fff",f);
this.form.stockupArea = f.dictValue;
break;
}
},
showdrawer(value){
this.drawerShow=value
},
/**
* 弹窗的勾选回调,用于更改头部数组
* 固定搭配,只需要更换 columnList
*/
setnewcolum(newarr, headarr,type) {
// console.log(newarr,'+++++++++++')
if(type==1){
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname+'checkList', headarr);
}else if(type==2){
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname+'flexList', headarr);
}else if(type==3){
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname+'sortlist', headarr);
}
},
selectionsc(value) {
console.log(value);
},
delectsolt(scope) {
const { row } = scope;
console.log(row);
},
editsolt(scope) {
const { row } = scope;
console.log(row);
},
btnsc(index, row) {
console.log(index, row);
},
selectsc(index, row) {
console.log(index, row);
if(row.prop =='typeServiceName'){
this.query['typeService'] = index;
}else if(row.prop =='stockupStatusName'){
this.query["stockupStatus"] = index;
}else if(row.prop =='assignStatusName'){
this.query["assignStatus"] = index;
}else{
this.query[row.prop] = index;
}
// this.query[row.prop] = index;
this.onLoad(this.page);
},
timesc(index, row) {
console.log(index, row);
if (!!index){
index = dayjs(index).format('YYYY-MM-DD');
}
this.query[row.prop] = index
if (!index){
delete this.query[row.prop]
}
this.onLoad(this.page);
},
inputsc(index, row) {
console.log(index, row);
/* if(row.prop =='typeServiceName'){
this.query['typeService'] = index;
}else if(row.prop =='stockupStatusName'){
this.query["stockupStatus"] = index;
}else if(row.prop =='assignStatusName'){
this.query["assignStatus"] = index;
}else{
this.query[row.prop] = index;
}*/
this.query[row.prop] = index;
this.onLoad(this.page);
},
//查询备货
getStockUp(row){
console.log("row",row);
let params = {};
switch (row) {
case '1':
params.stockupStatus = '2'
break;
case '2':
params.stockupStatus = '3'
break;
}
getList(this.page.currentPage, this.page.pageSize, params).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
});
},
//查询叉车人员
async getFork(){
let ides = '';
let ide = { };
let b = false;
await getListUser().then(res =>{ //查询当前人信息
// console.log("res>>>",res.data.data);
if(res.data.data.userName != 'admin'){
b = true;
}
ides = res.data.data.tenantId;
this.deptId = res.data.data.deptId;
})
await getPostList(ides).then(res =>{ // 查询角色
// console.log("查询>>>>",res.data.data);
res.data.data.forEach(i =>{
if(i.postName == "叉车"){
ide = i;
}
})
})
// console.log("ied>>>>>",ide);
let params={
// postId: ide.id, //岗位
deptId: this.deptId, //部门
// roleId: '', //角色
}
if(b){
// console.log("进来了");
params.postId = ide.id;//岗位
}
// console.log("查询人员信息",params);
getListOwn(Object.assign(params, this.query)).then(res =>{ //查询人员
// console.log(".............",res.data.data);
let fo = [];
res.data.data.forEach( i =>{
let a ={
dictKey: i.id,
dictValue: i.name
};
fo.push(a);
});
this.forkliftData = fo;
})
await this.getStorageArea();
await this.getTeam();
},
//查询班组
async getTeam(){
let params ={
department: this.deptId
}
getListTeam(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res =>{
// console.log(">><><",res.data.data.records);
let fo= [];
res.data.data.records.forEach(i =>{
let a= {
dictKey: i.id,
dictValue: i.name +'-'+i.groupName
}
fo.push(a);
});
this.loaderData = fo;
})
},
//备货区
async getStorageArea(){
let params ={
department: this.deptId
}
stockUp(params).then(res =>{
// console.log("res>>>",res.data.data);
let fo =[];
res.data.data.forEach(i =>{
let v = {
dictKey: i.id,
dictValue: i.name +'-'+i.headline
}
fo.push(v)
})
this.goodsAreaIdData = fo;
})
},
/**
* 指派叉车查询的司机
*/
handleForklift(){
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
return;
}
let a = false ;
this.selectionList.some(i =>{
if(i.assignStatus == "2"){
a = true;
return;
}
})
// = this.selectionList.findIndex(i => i.assignStatus == 2);
if(!a){
this.num = '3';
this.dialogFormCustomer = true;
this.getFork();
this.getTeam();
}else{
this.$message.warning("已指派,请勿重复指派!!!")
}
},
//确定指派
callFordelivery(){
if(this.num =='3'){
this.form.ids = this.ids;
console.log("数据》》》",this.form);
addAssign(this.form).then(res =>{
this.$message({
type: "success",
message: "操作成功!"
});
this.onLoad(this.page);
this.dialogFormCustomer = false;
})
}else if(this.num == '2'){
console.log("修改提交",this.formOne);
update(Object.assign(this.formOne,this.form)).then(res =>{
console.log(">>>>>>>",this.formOne);
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
this.dialogFormCustomer = false;
})
}
},
init () {
this.height = this.setPx(document.body.clientHeight - 340);
getDictionaryBiz('distribution_type').then(res => {
// console.log("8908098080",res.data.data);
this.distributionType = res.data.data;
// this.columnList[8].checkarr =res.data.data.map(item=>{
// item.value=item.dictKey
// item.label=item.dictValue
// return item
// });
});
getDictionaryBiz('stock_assign_status').then(res => { //指派
// console.log("8908098080",res.data.data);
// this.distributionType = res.data.data;
this.checkcColumnList("assignStatusName", this.columnList).checkarr =res.data.data.map(item=>{
item.value=item.dictKey
item.label=item.dictValue
return item
});
});
this.onLoad(this.page);
},
checkcColumnList(prop,columnList){
for(var a = 0; a < columnList.length; a++){
if(columnList[a].prop===prop){
console.log("1111111111111",columnList[a]);
return columnList[a];
}
}
},
searchHide () {
this.search = !this.search;
},
searchChange () {
this.onLoad(this.page);
},
searchReset () {
this.query = {};
this.page.currentPage = 1;
this.onLoad(this.page);
},
handleSubmit () {
if (!this.form.id) {
add(this.form).then(() => {
this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
} else {
update(this.form).then(() => {
this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
})
}
},
handleAdd () {
this.title = '新增'
this.form = {}
this.box = true
},
handleEdit (row) {
// this.title = '编辑'
// this.box = true
// getDetail(row.id).then(res => {
// this.form = res.data.data;
// });
console.log("row<<<<<",row);
this.form.forkliftId = row.row.forkliftId;
this.form.loaderId = row.row.loaderId;
this.form.goodsAreaId = row.row.goodsAreaId;
this.form.stockupDate = row.row.stockupDate;
this.dialogFormCustomer = true;
this.num = '2';
this.formOne = row.row;
this.getFork();
this.getTeam();
},
handleView (row) {
// this.title = '查看'
// this.view = true;
// this.box = true;
// getDetail(row.id).then(res => {
// this.form = res.data.data;
// });
this.$router.push({
path: '/distribution/stockup/distributionStockupDetails',
query: {
id : row.row.id,
name: "备货明细"
},
})
},
handleDelete () {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
return;
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(this.ids);
})
.then(() => {
this.selectionClear();
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
},
rowDel (row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
},
beforeClose (done) {
done()
this.form = {};
this.view = false;
},
selectionChange (list) {
this.selectionList = list;
},
selectionClear () {
// this.selectionList = [];
// this.$refs.table.clearSelection();
},
currentChange (currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page);
},
sizeChange (pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page);
},
onLoad (page, params = {}) {
this.loading = true;
getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.data.forEach(async i =>{
/* if(i.forkliftId != "-1"){
console.log("i==",i);
let a = await getUser(i.forkliftId);
i.forkliftId =a.data.data.name;
}*/
// let s =this.distributionType.find(d => d.dictKey == i.typeService);
// // console.log("sssss",s);
// i.typeServiceName = s.dictValue;
i.loader = i.groupName;
// i.stockupArea = i.headline;
// if(i.assignStatus == '2'){
// i.assignStatusName = '已指派';
// }else{
// i.assignStatusName = '未指派';
// }
// if(i.stockupStatus == '2'){
// i.stockupStatusName = '待备货';
// }else if(i.stockupStatus == '3'){
// i.stockupStatusName = '已备货';
// }else{
// i.stockupStatusName = '未备货';
// }
});
this.selectionClear();
this.loading = false;
});
}
}
};
</script>