You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1620 lines
56 KiB
1620 lines
56 KiB
<template> |
|
<basic-container> |
|
<div class="avue-crud"> |
|
<el-row v-if="!search" style="padding: 6px 18px"> |
|
<!-- 查询模块 --> |
|
<el-form :inline="true" :model="query"> |
|
<el-form-item label="预约单编号:"> |
|
<el-input v-model="query.reservationCode" placeholder="请输入预约单编号"></el-input> |
|
</el-form-item> |
|
<el-form-item label="订单自编号:"> |
|
<el-input v-model="query.stockArticleId" placeholder="请输入订单自编号"></el-input> |
|
</el-form-item> |
|
<el-form-item label="收货人:"> |
|
<el-input v-model="query.consignee" placeholder="请输入收货人"></el-input> |
|
</el-form-item> |
|
<el-form-item label="收货地址:"> |
|
<el-input v-model="query.deliveryAddress" placeholder="请输入收货地址"></el-input> |
|
</el-form-item> |
|
<el-form-item label="收件人电话:"> |
|
<el-input v-model="query.deliveryPhone" placeholder="请输入收件人电话"></el-input> |
|
</el-form-item> |
|
|
|
<!-- <el-form-item label="顾客姓名:">--> |
|
<!-- <el-input v-model="query.customerName" placeholder="请输入服务类型"></el-input>--> |
|
<!-- </el-form-item>--> |
|
<!-- 查询按钮 --> |
|
<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-tabs v-model="activeName" type="border-card" class="demo-tabs" @tab-click="handleClick"> |
|
<el-tab-pane label="待确认" name="nocheck"> |
|
<el-row> |
|
<el-button-group> |
|
<!-- <el-button type="primary" icon="el-icon-view" @click="ccc">全部</el-button>--> |
|
</el-button-group> |
|
<div class="avue-crud__header"> |
|
<!-- 头部左侧按钮模块 --> |
|
<div class="avue-crud__left"> |
|
<el-button type="primary" icon="el-icon-plus" @click="handleAdd" |
|
>添加预约 |
|
</el-button> |
|
<el-button |
|
v-if="this.query.reservationStatus === '1'" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="handleConfirmReservations" |
|
plain |
|
>批量确认 |
|
</el-button> |
|
<el-button |
|
v-if="this.query.reservationStatus === '2'" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="handleStockUp()" |
|
plain |
|
>批量转备货 |
|
</el-button> |
|
<el-button |
|
v-if="this.query.reservationStatus === '2'" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="handleDeliverys" |
|
plain |
|
>批量转配送 |
|
</el-button> |
|
</div> |
|
<!-- 头部右侧按钮模块 --> |
|
<div class="avue-crud__right"> |
|
<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-text |
|
size="small" |
|
type="primary" |
|
link |
|
icon="el-icon-view" |
|
@click="viewReservation(slotProps.scope)" |
|
>查看 |
|
</el-text |
|
> |
|
<el-text |
|
size="small" |
|
type="primary" |
|
link |
|
icon="el-icon-view" |
|
@click="editsolt(slotProps.scope)" |
|
>编辑 |
|
</el-text |
|
> |
|
<el-text |
|
size="small" |
|
type="primary" |
|
link |
|
icon="el-icon-view" |
|
@click="cancelReservation(slotProps.scope)" |
|
>取消预约 |
|
</el-text |
|
> |
|
<el-text |
|
v-if="this.query.reservationStatus === '1' ? true : false" |
|
size="small" |
|
@click="confirmReservation(slotProps.scope)" |
|
>确认预约 |
|
</el-text |
|
> |
|
</template> |
|
</tablecmt> |
|
<!-- <el-popover :visible="visible" placement="top-start" :width="160">--> |
|
<!-- <p>Are you sure to delete this?</p>--> |
|
<!-- <el-input v-model= 'this.message'--> |
|
<!-- type="textarea"--> |
|
<!-- :rows="1"--> |
|
<!-- placeholder="请输入取消原因"></el-input>--> |
|
<!-- <div style="text-align: right; margin: 10%">--> |
|
<!-- <el-button size="small" text @click="this.message='',visible = false">取消</el-button>--> |
|
<!-- <el-button size="small" type="primary" @click="confirmReservation(slotProps.scope)"--> |
|
<!-- >确认</el-button--> |
|
<!-- >--> |
|
<!-- </div>--> |
|
<!--<!– <template #reference>–>--> |
|
<!--<!– </template>–>--> |
|
<!-- </el-popover>--> |
|
<!-- <el-table ref="table" v-loading="loading" |
|
@selection-change="selectionChange" |
|
:data="data" |
|
:height="height" |
|
style="width: 100%" |
|
:border="option.border"> |
|
<el-table-column type="selection" v-if="option.selection" width="55" |
|
align="center"></el-table-column> |
|
<el-table-column type="expand" v-if="option.expand" align="center"></el-table-column> |
|
<el-table-column v-if="option.index" label="序号" type="index" width="80px" |
|
align="center"></el-table-column> |
|
|
|
<template v-for="(item,index) in option.column"> |
|
<el-table-column v-if="item.hide!==true" |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:key="index"> |
|
</el-table-column> |
|
</template> |
|
<el-table-column prop="menu" label="操作" :width="220" align="center"> |
|
<template #="{row}"> |
|
<el-button type="primary" text icon="el-icon-view" @click="handleView(row)">查看</el-button> |
|
<el-button type="primary" text icon="el-icon-edit" @click="handleEdit(row)">编辑</el-button> |
|
<el-button type="primary" text icon="el-icon-delete" @click="rowDel(row)">删除</el-button> |
|
</template> |
|
</el-table-column> |
|
</el-table> --> |
|
</el-row> |
|
</el-tab-pane> |
|
<el-tab-pane label="已确认" name="yescheck"> |
|
<el-row> |
|
<el-button-group> |
|
<!-- <el-button type="primary" icon="el-icon-view" @click="ccc">全部</el-button>--> |
|
</el-button-group> |
|
<div class="avue-crud__header"> |
|
<!-- 头部左侧按钮模块 --> |
|
<div class="avue-crud__left"> |
|
<el-button type="primary" icon="el-icon-plus" @click="handleAdd" |
|
>添加预约 |
|
</el-button |
|
> |
|
<el-button |
|
v-if="this.query.reservationStatus === '1'" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="handleConfirmReservations" |
|
plain |
|
>批量确认 |
|
</el-button> |
|
<el-button |
|
v-if="this.query.reservationStatus === '2'" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="handleStockUp()" |
|
plain |
|
>批量转备货 |
|
</el-button> |
|
<el-button |
|
v-if="this.query.reservationStatus === '2'" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="handleDeliverys" |
|
plain |
|
>批量转配送 |
|
</el-button> |
|
<el-button |
|
v-if="this.query.reservationStatus === '2'" |
|
type="danger" |
|
icon="el-icon-delete" |
|
@click="batchPrintData" |
|
plain |
|
>批量打印 |
|
</el-button> |
|
</div> |
|
<!-- 头部右侧按钮模块 --> |
|
<div class="avue-crud__right"> |
|
<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-text |
|
size="small" |
|
type="primary" |
|
link |
|
icon="el-icon-view" |
|
@click="viewReservation(slotProps.scope)" |
|
>查看 |
|
</el-text |
|
> |
|
<el-text |
|
size="small" |
|
type="primary" |
|
link |
|
icon="el-icon-view" |
|
@click="editsolt(slotProps.scope)" |
|
>编辑 |
|
</el-text |
|
> |
|
<el-text |
|
size="small" |
|
type="primary" |
|
link |
|
icon="el-icon-view" |
|
@click="cancelReservation(slotProps.scope)" |
|
>取消预约 |
|
</el-text |
|
> |
|
<el-text |
|
v-if="this.query.reservationStatus === '1' ? true : false" |
|
size="small" |
|
@click="confirmReservation(slotProps.scope)" |
|
>确认预约 |
|
</el-text |
|
> |
|
<el-text |
|
size="small" |
|
type="primary" |
|
link |
|
icon="el-icon-view" |
|
@click="printData(slotProps.scope)" |
|
>打印 |
|
</el-text |
|
> |
|
</template> |
|
</tablecmt> |
|
<!-- <el-popover :visible="visible" placement="top-start" :width="160">--> |
|
<!-- <p>Are you sure to delete this?</p>--> |
|
<!-- <el-input v-model= 'this.message'--> |
|
<!-- type="textarea"--> |
|
<!-- :rows="1"--> |
|
<!-- placeholder="请输入取消原因"></el-input>--> |
|
<!-- <div style="text-align: right; margin: 10%">--> |
|
<!-- <el-button size="small" text @click="this.message='',visible = false">取消</el-button>--> |
|
<!-- <el-button size="small" type="primary" @click="confirmReservation(slotProps.scope)"--> |
|
<!-- >确认</el-button--> |
|
<!-- >--> |
|
<!-- </div>--> |
|
<!--<!– <template #reference>–>--> |
|
<!--<!– </template>–>--> |
|
<!-- </el-popover>--> |
|
<!-- <el-table ref="table" v-loading="loading" |
|
@selection-change="selectionChange" |
|
:data="data" |
|
:height="height" |
|
style="width: 100%" |
|
:border="option.border"> |
|
<el-table-column type="selection" v-if="option.selection" width="55" |
|
align="center"></el-table-column> |
|
<el-table-column type="expand" v-if="option.expand" align="center"></el-table-column> |
|
<el-table-column v-if="option.index" label="序号" type="index" width="80px" |
|
align="center"></el-table-column> |
|
|
|
<template v-for="(item,index) in option.column"> |
|
<el-table-column v-if="item.hide!==true" |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:key="index"> |
|
</el-table-column> |
|
</template> |
|
<el-table-column prop="menu" label="操作" :width="220" align="center"> |
|
<template #="{row}"> |
|
<el-button type="primary" text icon="el-icon-view" @click="handleView(row)">查看</el-button> |
|
<el-button type="primary" text icon="el-icon-edit" @click="handleEdit(row)">编辑</el-button> |
|
<el-button type="primary" text icon="el-icon-delete" @click="rowDel(row)">删除</el-button> |
|
</template> |
|
</el-table-column> |
|
</el-table> --> |
|
</el-row> |
|
</el-tab-pane> |
|
</el-tabs> |
|
|
|
<el-row> |
|
<div class="avue-crud__pagination flex-c-sb" style="width:100%;"> |
|
<div style="font-size: 14px;"> |
|
勾选数量: {{ selectionList.length }} |
|
</div> |
|
<!-- 分页模块 --> |
|
<el-pagination align="right" |
|
background |
|
@size-change="sizeChange" |
|
@current-change="currentChange" |
|
:current-page="page.currentPage" |
|
:page-sizes="[30, 50,80, 120]" |
|
:page-size="page.pageSize" |
|
layout="total, sizes, prev, pager, next, jumper" |
|
:total="page.total"> |
|
</el-pagination> |
|
</div> |
|
</el-row> |
|
|
|
<el-dialog title="二维码" :visible.sync="dialogVisible" width="780px" v-model="dialogVisible"> |
|
<div> |
|
<div v-html="html"></div> |
|
</div> |
|
<span slot="footer" class="dialog-footer"> |
|
<!-- <el-button type="primary" @click="ddd">导 出</el-button>--> |
|
<el-button type="primary" @click="printTemplate">打 印</el-button> |
|
<el-button @click="dialogVisible = false">取 消</el-button> |
|
</span> |
|
</el-dialog> |
|
</div> |
|
</basic-container> |
|
<edittablehead |
|
@setcolum="setnewcolum" |
|
@closce="showdrawer" |
|
:drawerShow="drawerShow" |
|
:columnList="columnList" |
|
></edittablehead> |
|
<el-dialog v-model="dialogFormCustomer" title="指派叉车"> |
|
<el-form :model="info"> |
|
<el-form-item label="备货时间:"> |
|
<el-date-picker v-model="info.stockupDate" type="date" placeholder="选择日期"> |
|
</el-date-picker> |
|
</el-form-item> |
|
<!-- <el-form-item label="装卸班组" :label-width="formLabelWidth">--> |
|
<!-- <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="备货区域:"> |
|
<el-select v-model="info.stockupArea" 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> |
|
<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('3')"> 确定 </el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
|
|
<el-dialog title="预约取消" v-model="dialogCancelReservation" style="width: 30%; height: 40%"> |
|
<el-form :model="cancel"> |
|
<el-form-item label="原因:"> |
|
<el-input v-model="cancel.message" autocomplete="off"></el-input> |
|
</el-form-item> |
|
</el-form> |
|
<div slot="footer" class="dialog-footer"> |
|
<el-button @click="dialogCancelReservation = false">取 消</el-button> |
|
<el-button type="primary" @click="cancelReservationConfirm(row)">确 定</el-button> |
|
</div> |
|
</el-dialog> |
|
</template> |
|
|
|
<script> |
|
import { |
|
getList, |
|
getDetail, |
|
add, |
|
update, |
|
remove, |
|
confirms, |
|
addReservations, |
|
cancelReservation, |
|
patchPrintList |
|
} from '@/api/distribution/distributionReservation'; |
|
import option from '@/option/distribution/distributionReservation'; |
|
import { mapGetters } from 'vuex'; |
|
import { getDictionaryBiz } from '@/api/system/dict'; |
|
import { addAssign, getListUser } from '@/api/distribution/distributionStockup'; |
|
import { getPostList } from '@/api/system/post'; |
|
import { getListOwn } from '@/api/system/user'; |
|
import { getListTeam } from '@/api/basicdata/basicdataTeamGroup'; |
|
import { stockUp } from '@/api/basicdata/basicdataGoodsArea'; |
|
import dayjs from 'dayjs'; |
|
import print from '@/utils/print'; |
|
|
|
export default { |
|
data() { |
|
return { |
|
// 弹出框是否显示 |
|
dialogVisible: false, |
|
// 打印模版的html |
|
html: '', |
|
columnList: [ |
|
{ |
|
prop: '', |
|
label: '序号', |
|
type: 0, |
|
values: '', |
|
width: 55, |
|
checkarr: [], |
|
fixed: true |
|
}, |
|
{ |
|
prop: 'reservationCode', |
|
label: '预约单编号', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: true, |
|
sortable: true, |
|
head: false |
|
}, |
|
{ |
|
prop: 'stockArticleId', |
|
label: '订单自编号', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: true, |
|
sortable: true, |
|
head: false |
|
}, |
|
{ |
|
prop: 'serviceNumber', |
|
label: '服务号', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'warehouseName', |
|
label: '仓库', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'mallName', |
|
label: '商城', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'storeName', |
|
label: '门店', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'consignee', |
|
label: '收货人', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'deliveryAddress', |
|
label: '收货地址', |
|
type: 2, |
|
values: '', |
|
width: '180', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'deliveryPhone', |
|
label: '收件人电话', |
|
type: 2, |
|
values: '', |
|
width: '130', |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'reservationDate', |
|
label: '预约时间', |
|
type: 4, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
// { |
|
// prop: 'periodOfTime', |
|
// label: '时段1', |
|
// type: 3, |
|
// values: '', |
|
// width: '180', |
|
// checkarr: [ |
|
// { |
|
// label: '上午', |
|
// value: '1' |
|
// }, |
|
// { |
|
// label: '下午', |
|
// value: '2' |
|
// }, |
|
// { |
|
// label: '全天', |
|
// value: '3' |
|
// }, |
|
// ], |
|
// fixed: false, |
|
// sortable: true, |
|
// head:true, |
|
// }, |
|
{ |
|
prop: 'periodOfTimeName', |
|
label: '时段', |
|
type: 3, |
|
values: '', |
|
width: '130', |
|
checkarr: [ |
|
{ |
|
label: '上午', |
|
value: '1' |
|
}, |
|
{ |
|
label: '下午', |
|
value: '2' |
|
}, |
|
{ |
|
label: '全天', |
|
value: '3' |
|
} |
|
], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'deliveryWay', |
|
label: '配送方式', |
|
type: 3, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
head: true |
|
}, |
|
// { |
|
// prop: 'deliveryType', |
|
// label: '配送类型', |
|
// type: 3, |
|
// values: '', |
|
// width: '150', |
|
// checkarr: [ |
|
// { |
|
// label: '商配', |
|
// value: '1', |
|
// }, |
|
// { |
|
// label: '市配', |
|
// value: '2' |
|
// }, |
|
// ], |
|
// fixed: false, |
|
// sortable: true |
|
// }, |
|
// { |
|
// prop: 'serveType', |
|
// label: '服务类型1', |
|
// type: 2, |
|
// values: '', |
|
// width: '150', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: true, |
|
// hide:true, |
|
// }, |
|
{ |
|
prop: 'serveTypeName', |
|
label: '服务类型', |
|
type: 3, |
|
values: '', |
|
width: '130', |
|
checkarr: [ |
|
{ |
|
label: '上楼', |
|
value: '1' |
|
}, |
|
{ |
|
label: '超区', |
|
value: '2' |
|
}, |
|
{ |
|
label: '拆样', |
|
value: '3' |
|
}, |
|
{ |
|
label: '返货', |
|
value: '4' |
|
}, |
|
{ |
|
label: '平移', |
|
value: '5' |
|
}, |
|
{ |
|
label: '分拣', |
|
value: '6' |
|
}, |
|
{ |
|
label: '专车', |
|
value: '7' |
|
} |
|
], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'reservationNum', |
|
label: '预约包件数', |
|
type: 1, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'reservationStockListNum', |
|
label: '预约库存品数', |
|
type: 1, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'collectionFee', |
|
label: '待收货款', |
|
type: 1, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'otherFee', |
|
label: '其他费用', |
|
type: 1, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
{ |
|
prop: 'replaceFee', |
|
label: '代收运费', |
|
type: 1, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
// { |
|
// prop: 'fee', |
|
// label: '总费用', |
|
// type: 2, |
|
// values: '', |
|
// width: '150', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: true |
|
// }, |
|
// { |
|
// prop: 'reservationStatus', |
|
// label: '预约信息状态1', |
|
// type: 4, |
|
// values: '', |
|
// width: '180', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: true, |
|
// hide: true, |
|
// |
|
// }, |
|
{ |
|
prop: 'reservationStatusName', |
|
label: '预约信息状态', |
|
type: 1, |
|
values: '', |
|
width: '150', |
|
checkarr: [ |
|
// { |
|
// label: '待确认', |
|
// value: '1' |
|
// }, |
|
// { |
|
// label: '已确认', |
|
// value: '2' |
|
// }, |
|
], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
// { |
|
// prop: 'orderSource', |
|
// label: '订单来源', |
|
// type: 4, |
|
// values: '', |
|
// width: '180', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: true |
|
// }, |
|
// { |
|
// prop: 'stockupStatus', |
|
// label: '备货状态', |
|
// type: 3, |
|
// values: '', |
|
// width: '150', |
|
// checkarr: [ |
|
// { |
|
// label: '待备货', |
|
// value: '1', |
|
// },{ |
|
// label: '已备货', |
|
// value: '2', |
|
// }, |
|
// { |
|
// label: '部分备货', |
|
// value: '3' |
|
// }, |
|
// ], |
|
// fixed: false, |
|
// sortable: true |
|
// }, |
|
{ |
|
prop: 'stockupStatusName', |
|
label: '备货状态', |
|
type: 3, |
|
values: '', |
|
width: '130', |
|
checkarr: [ |
|
{ |
|
label: '待备货', |
|
value: '10' |
|
}, |
|
{ |
|
label: '部分备货', |
|
value: '20' |
|
}, |
|
{ |
|
label: '已备货', |
|
value: '30' |
|
} |
|
], |
|
fixed: false, |
|
sortable: true |
|
}, |
|
|
|
// { |
|
// prop: 'goodsAreaName', |
|
// label: '备货区', |
|
// type: 2, |
|
// values: '', |
|
// width: '130', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: true |
|
// }, |
|
// { |
|
// prop: 'goodsAreaId', |
|
// label: '备货区编号', |
|
// type: 2, |
|
// values: '', |
|
// width: '130', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: true, |
|
// hide:true, |
|
// }, |
|
// { |
|
// prop: 'signingType', |
|
// label: '签收类型', |
|
// type: 2, |
|
// values: '', |
|
// width: '130', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: true, |
|
// }, |
|
|
|
// { |
|
// prop: 'notes', |
|
// label: '备注', |
|
// type: 1, |
|
// values: '', |
|
// width: '130', |
|
// checkarr: [], |
|
// fixed: false, |
|
// sortable: false, |
|
// }, |
|
{ |
|
prop: '', |
|
label: '操作', |
|
type: 6, |
|
values: '', |
|
width: '200', |
|
checkarr: [], |
|
fixed: 'right', |
|
hide: true |
|
} |
|
// 更多列的配置... |
|
], |
|
drawerShow: false, |
|
dialogFormCustomer: false, |
|
height: 0, |
|
// 弹框标题 |
|
title: '', |
|
// 是否展示弹框 |
|
box: false, |
|
// 是否显示查询 |
|
search: true, |
|
// 加载中 |
|
loading: true, |
|
// 是否为查看模式 |
|
view: false, |
|
// 查询信息 |
|
query: {}, |
|
// 分页信息 |
|
page: { |
|
currentPage: 1, |
|
pageSize: 30, |
|
total: 40 |
|
}, |
|
// 表单数据 |
|
form: {}, |
|
info: {}, |
|
cancel: {}, |
|
// 选择行 |
|
selectionList: [], |
|
// 表单配置 |
|
option: option, |
|
// 表单列表 |
|
data: [], |
|
dialogCancelReservation: false, |
|
//配送方式字典列表 |
|
deliveryTypeData: [], |
|
//配送类型字典列表 |
|
resvervationStatusData: [], |
|
stockupStatusData: [], |
|
orderSourceData: [], |
|
periodOfTimeData: [], |
|
deliveryWayData: [], |
|
//控制编辑弹窗是否可编辑 |
|
isUpdate: false, |
|
addvalueServeTypeData: [], |
|
forkliftData: [], |
|
loaderData: [], |
|
goodsAreaIdData: [], |
|
deptId: '', |
|
cancelReservationRow: {}, |
|
activeName: 'nocheck' |
|
}; |
|
}, |
|
watch: { |
|
// '$route.query.reservationId': { |
|
handler(newVal, oldVal) { |
|
console.log(newVal, oldVal); |
|
// this.fetchData(); |
|
this.onLoad(this.page); |
|
}, |
|
deep: false, |
|
immediate: true |
|
// } |
|
}, |
|
mounted() { |
|
this.init(); |
|
this.onLoad(this.page); |
|
this.getDictionary(); |
|
|
|
/** |
|
* 初始化获取本地缓存的编辑隐藏的列表 |
|
* 固定搭配,不能更改 |
|
*/ |
|
let checkListnewarr = this.$functions.getStorage(window.location.pathname + 'checkList'); |
|
let flexListnewarr = this.$functions.getStorage(window.location.pathname + 'flexList'); |
|
let sortlistnewarr = this.$functions.getStorage(window.location.pathname + 'sortlist'); |
|
if (checkListnewarr) { |
|
this.columnList.map(item => { |
|
item.head = false; |
|
}); |
|
checkListnewarr.map(ite => { |
|
this.columnList.map(item => { |
|
if (ite == item.label) { |
|
item.head = true; |
|
} |
|
}); |
|
}); |
|
} else { |
|
let arr = []; |
|
this.columnList.map(item => { |
|
if (item.head) { |
|
arr.push(item.label); |
|
} |
|
}); |
|
this.$functions.setStorage(window.location.pathname + 'checkList', arr); |
|
} |
|
if (flexListnewarr) { |
|
this.columnList.map(item => { |
|
item.fixed = false; |
|
}); |
|
flexListnewarr.map(ite => { |
|
this.columnList.map(item => { |
|
if (ite == item.label) { |
|
if (item.type == 6) { |
|
item.fixed = 'right'; |
|
} else { |
|
item.fixed = true; |
|
} |
|
} |
|
}); |
|
}); |
|
} else { |
|
let arr = []; |
|
this.columnList.map(item => { |
|
if (item.fixed) { |
|
arr.push(item.label); |
|
} |
|
}); |
|
this.$functions.setStorage(window.location.pathname + 'flexList', arr); |
|
} |
|
if (sortlistnewarr) { |
|
this.columnList.map(item => { |
|
item.sortable = false; |
|
}); |
|
sortlistnewarr.map(ite => { |
|
this.columnList.map(item => { |
|
if (ite == item.label) { |
|
item.sortable = true; |
|
} |
|
}); |
|
}); |
|
} else { |
|
let arr = []; |
|
this.columnList.map(item => { |
|
if (item.sortable) { |
|
arr.push(item.label); |
|
} |
|
}); |
|
this.$functions.setStorage(window.location.pathname + 'sortlist', arr); |
|
} |
|
}, |
|
computed: { |
|
...mapGetters(['permission']), |
|
ids() { |
|
let ids = []; |
|
this.selectionList.forEach(ele => { |
|
ids.push(ele.id); |
|
}); |
|
return ids.join(','); |
|
} |
|
}, |
|
methods: { |
|
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); |
|
}, |
|
cancelReservation(scope) { |
|
const { row } = scope; |
|
this.dialogCancelReservation = true; |
|
this.cancelReservationRow = row; |
|
console.log(row); |
|
}, |
|
editsolt(scope) { |
|
const { row } = scope; |
|
this.$router.push({ |
|
path: '/distribution/reservation/reservationAddFrom', |
|
query: { |
|
reservationId: row.id, |
|
name: '编辑预约单' |
|
} |
|
}); |
|
console.log(row); |
|
}, |
|
viewReservation(scope) { |
|
const { row } = scope; |
|
this.$router.push({ |
|
path: '/distribution/reservation/reservationDetails', |
|
query: { |
|
id: row.id |
|
} |
|
}); |
|
console.log(row); |
|
}, |
|
btnsc(index, row) { |
|
console.log(index, row); |
|
}, |
|
selectsc(index, row) { |
|
console.log(index, row); |
|
if (row.prop === 'periodOfTimeName') { |
|
this.query['periodOfTime'] = index; |
|
} else if (row.prop === 'stockupStatusName') { |
|
this.query['stockupStatus'] = index; |
|
}else if (row.prop === 'serveTypeName') { |
|
this.query['serveType'] = index; |
|
console.log(this.query, '----------->'); |
|
} |
|
|
|
else { |
|
this.query[row.prop] = index; |
|
} |
|
this.onLoad(this.page); |
|
}, |
|
timesc(index, row) { |
|
console.log(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); |
|
this.query[row.prop] = index; |
|
this.onLoad(this.page); |
|
}, |
|
init() { |
|
this.height = this.setPx(document.body.clientHeight - 340); |
|
}, |
|
handleClick() { |
|
// 切换选项卡时, 清空备选中的数组 |
|
this.selectionList = [] |
|
|
|
if (this.activeName == 'yescheck') { |
|
this.activeName = 'nocheck'; |
|
} else if (this.activeName == 'nocheck') { |
|
this.activeName = 'yescheck'; |
|
} |
|
if (this.activeName == 'yescheck') { |
|
this.bbb(); |
|
} else if (this.activeName == 'nocheck') { |
|
this.aaa(); |
|
} |
|
}, |
|
cancelReservationConfirm() { |
|
if (!this.cancel.message) { |
|
this.$message.warning('请输入取消原因!!'); |
|
return; |
|
} |
|
let data = {}; |
|
if (this.cancelReservationRow) { |
|
data = this.cancelReservationRow; |
|
data.cancelReason = this.cancel.message; |
|
} else { |
|
this.$message.error('请稍后再试!!'); |
|
return; |
|
} |
|
cancelReservation(data).then(res => { |
|
this.onLoad(this.page); |
|
this.cancelReservationRow = {}; |
|
this.dialogCancelReservation = false; |
|
}); |
|
}, |
|
ddd() { |
|
this.form.deliveryType === ''; |
|
console.log(' this.form.deliveryType===', this.form.deliveryType); |
|
}, |
|
//数据字典数据获取 |
|
getDictionary() { |
|
//服务内容 |
|
getDictionaryBiz('addvalue_serve_type').then(res => { |
|
this.addvalueServeTypeData = res.data.data; |
|
}); |
|
getDictionaryBiz('distribution_type').then(res => { |
|
this.deliveryTypeData = res.data.data; |
|
}); |
|
//订单来源 |
|
getDictionaryBiz('order_source').then(res => { |
|
this.orderSourceData = res.data.data; |
|
}); |
|
//预约状态 |
|
getDictionaryBiz('resvervation_status').then(res => { |
|
this.resvervationStatusData = res.data.data; |
|
}); |
|
//备货状态 |
|
getDictionaryBiz('stockup_status').then(res => { |
|
this.stockupStatusData = res.data.data; |
|
}); |
|
//时段 |
|
getDictionaryBiz('period_of_time').then(res => { |
|
this.periodOfTimeData = res.data.data; |
|
}); |
|
getDictionaryBiz('delivery_way').then(res => { |
|
this.deliveryWayData = res.data.data; |
|
}); |
|
}, |
|
//查询叉车人员 |
|
async getFork() { |
|
let ides = ''; |
|
let ide = {}; |
|
await getListUser().then(res => { |
|
// console.log("res>>>",res.data.data); |
|
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: '', //角色 |
|
}; |
|
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; |
|
}); |
|
}, |
|
searchHide() { |
|
this.search = !this.search; |
|
}, |
|
searchChange() { |
|
this.onLoad(this.page); |
|
}, |
|
searchReset() { |
|
this.query = {}; |
|
this.page.currentPage = 1; |
|
this.onLoad(this.page); |
|
}, |
|
handleConfirmReservations() { |
|
if (this.selectionList.length === 0) { |
|
this.$message.warning('请选择至少一条数据'); |
|
return; |
|
} |
|
let param = {}; |
|
param.ids = this.ids.toString(); |
|
addReservations(param).then(res => { |
|
this.selectionClear(); |
|
this.onLoad(this.page); |
|
this.$message({ |
|
type: 'success', |
|
message: '操作成功!' |
|
}); |
|
}); |
|
}, |
|
confirmReservation(scope) { |
|
const { row } = scope; |
|
let param = {}; |
|
param.ids = row.id; |
|
addReservations(param).then(res => { |
|
this.selectionClear(); |
|
this.onLoad(this.page); |
|
this.$message({ |
|
type: 'success', |
|
message: '操作成功!' |
|
}); |
|
}); |
|
}, |
|
handleSubmit() { |
|
this.form.serveType = this.form.serveType.join(','); |
|
update(this.form).then(() => { |
|
this.box = false; |
|
this.onLoad(this.page); |
|
this.$message({ |
|
type: 'success', |
|
message: '操作成功!' |
|
}); |
|
}); |
|
}, |
|
handleAdd() { |
|
this.$router.push({ |
|
path: '/distribution/reservation/reservationAddFrom' |
|
}); |
|
}, |
|
handleEdit(row) { |
|
console.log(row); |
|
this.$router.push({ |
|
path: '/distribution/reservation/reservationAddFrom', |
|
query: { |
|
reservationId: row.id |
|
} |
|
}); |
|
}, |
|
aaa() { |
|
this.query.reservationStatus = '1'; |
|
this.onLoad(this.page); |
|
}, |
|
bbb() { |
|
this.query.reservationStatus = '2'; |
|
this.onLoad(this.page); |
|
}, |
|
handleView(row) { |
|
this.title = '查看'; |
|
this.view = true; |
|
this.box = true; |
|
getDetail(row.id).then(res => { |
|
this.form = res.data.data; |
|
}); |
|
}, |
|
/** |
|
* 批量转配送 |
|
*/ |
|
handleDeliverys() { |
|
if (this.selectionList.length === 0) { |
|
this.$message.warning('请选择至少一条数据'); |
|
return; |
|
} |
|
let ids = []; |
|
this.selectionList.forEach(item => { |
|
if (item.id) { |
|
ids.push(item.id); |
|
} |
|
}); |
|
ids = ids.join(','); |
|
this.$router.push({ |
|
path: '/distribution/reservation/atlas', |
|
query: { |
|
id: ids, |
|
type: '1' |
|
} |
|
}); |
|
// console.log(">>>>>>>>>>",ids); |
|
}, |
|
//批量转备货 |
|
handleStockUp() { |
|
this.info = {}; |
|
if (this.selectionList.length === 0) { |
|
this.$message.warning('请选择至少一条数据'); |
|
return; |
|
} |
|
let data = this.selectionList; |
|
let a = []; |
|
let b = []; |
|
console.log('>>>>>>>>>>>>>', data); |
|
data.forEach(d => { |
|
if (d.stockupStatus === '20' || d.stockupStatusName === '待备货' ) { |
|
a.push(d.reservationCode); |
|
} |
|
if (d.stockupStatus === '30' || d.stockupStatusName === '已备货') { |
|
b.push(d.reservationCode); |
|
} |
|
}); |
|
if (a.length >= 1) { |
|
this.$message.warning(a.join(',') + '预约单存在备货任务,请勿重复添加'); |
|
return; |
|
} |
|
if (b.length >= 1) { |
|
this.$message.warning(a.join(',') + '预约单备货任务已完成,请勿重复添加'); |
|
return; |
|
} |
|
this.dialogFormCustomer = true; |
|
this.info.stockupDate = dayjs().format('YYYY-MM-DD HH:mm:ss'); |
|
|
|
this.getFork(); |
|
this.getTeam(); |
|
}, |
|
//确定指派 |
|
callFordelivery() { |
|
this.info.ids = this.ids; |
|
this.goodsAreaIdData.forEach(item => { |
|
console.log(item); |
|
if (this.info.stockupArea === item.dictKey) { |
|
this.info.goodsAreaName = item.dictValue; |
|
} |
|
}); |
|
confirms(this.info).then(res => { |
|
this.$message({ |
|
type: 'success', |
|
message: '操作成功!' |
|
}); |
|
this.onLoad(this.page); |
|
this.dialogFormCustomer = false; |
|
}); |
|
}, |
|
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; |
|
if (!this.query.reservationStatus) { |
|
this.query.reservationStatus = '1'; |
|
} |
|
getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => { |
|
const data = res.data.data; |
|
console.log('>>>>>>>', data); |
|
data.records.forEach(item => { |
|
this.orderSourceData.forEach(a => { |
|
if (item.orderSource === a.dictKey) { |
|
item.orderSource = a.dictValue; |
|
} |
|
}); |
|
// this.stockupStatusData.forEach(b => { |
|
// if (item.stockupStatus === b.dictKey) { |
|
// item.stockupStatus = b.dictValue; |
|
// } |
|
// }); |
|
this.resvervationStatusData.forEach(e => { |
|
if (item.reservationStatus === e.dictKey) { |
|
item.reservationStatus = e.dictValue; |
|
} |
|
}); |
|
this.deliveryTypeData.forEach(c => { |
|
if (item.deliveryType === c.dictKey) { |
|
item.deliveryType = c.dictValue; |
|
} |
|
}); |
|
|
|
this.deliveryWayData.forEach(c => { |
|
if (item.deliveryWay === c.dictKey) { |
|
item.deliveryWay = c.dictValue; |
|
} |
|
}); |
|
this.periodOfTimeData.forEach(d => { |
|
console.log('11111111111'); |
|
if (item.periodOfTime === d.dictKey) { |
|
item.periodOfTime = d.dictValue; |
|
} |
|
}); |
|
let pa = []; |
|
if (item.serveType.length > 1) { |
|
pa = item.serveType.split(','); |
|
} else { |
|
pa.push(item.serveType); |
|
} |
|
this.addvalueServeTypeData.forEach(f => { |
|
pa.forEach((p, index) => { |
|
if (p === f.dictKey) { |
|
pa[index] = f.dictValue; |
|
} |
|
}); |
|
}); |
|
item.serveType = pa.join(','); |
|
}); |
|
this.page.total = data.total; |
|
this.data = data.records; |
|
this.loading = false; |
|
this.selectionClear(); |
|
}); |
|
}, |
|
|
|
/** |
|
* 请求打印模版 |
|
*/ |
|
async batchPrint(ids){ |
|
const res = await patchPrintList({ids: ids.join(',')}) |
|
return res |
|
}, |
|
|
|
/** |
|
* 批量打印 |
|
*/ |
|
async batchPrintData(){ |
|
if(this.selectionList.length === 0) { |
|
this.$message({ |
|
type: "error", |
|
message: "最少选择一条数据哦" |
|
}) |
|
return |
|
} |
|
const ids = this.selectionList.map(item => item.id) |
|
const res = await this.batchPrint(ids) |
|
const {code, data} = res.data |
|
if(code === 200){ |
|
this.dialogVisible = true |
|
console.log('data :>> ', data); |
|
this.html = ''; |
|
data.forEach(item => { |
|
return this.html += item.templateHtml |
|
}) |
|
this.html ; |
|
} |
|
}, |
|
|
|
/** |
|
* 单独打印 |
|
*/ |
|
async printData(rowData){ |
|
const res = await this.batchPrint([rowData.row.id]) |
|
const {code, data} = res.data |
|
if(code === 200){ |
|
this.dialogVisible = true |
|
console.log('data :>> ', data); |
|
this.html = ''; |
|
data.forEach(item => { |
|
return this.html += item.templateHtml |
|
}) |
|
this.html ; |
|
} |
|
}, |
|
|
|
/** |
|
* 调用打印机 |
|
*/ |
|
printTemplate() { |
|
const orderNodeList = document.querySelectorAll('.el-dialog__body>div>div>div'); |
|
print(orderNodeList); |
|
}, |
|
} |
|
}; |
|
</script> |
|
<style lang="scss" scoped> |
|
// .el-tab-pane{ |
|
// margin-top: -20px; |
|
// } |
|
:deep(.el-dialog){ |
|
width: fit-content !important; |
|
} |
|
</style> |