emis-frontend/src/views/emis/emisTmsScanRecord/scanRecordQuery.vue
2024-06-24 09:22:55 +08:00

776 lines
27 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form ref="queryForm" size="mini" :model="queryParams" :rules="rules" label-width="100px">
<!-- <search-form :model="queryParams" ref="queryForm" size="small" :maxShow="8" label-width="100px" v-show="showSearch" @search="handleQuery" @reset="resetQuery"> -->
<el-row :gutter="0">
<el-col :span="8">
<!-- <el-form-item prop="applySeq">
<el-col :span="8">
<el-select v-model="queryParams.queryType" >
<el-option :label="$t('运单号')" value="1"></el-option>
<el-option :label="$t('订单号')" value="2"></el-option>
</el-select>
</el-col>
<el-col :span="16">
<el-input
v-model="queryParams.billCode"
:placeholder="$t('多个流水号逗号或换行隔开')"
clearable
type="textarea"
rows="9"
@keyup.enter.native="handleQuery"
/>
</el-col>
</el-form-item> -->
<el-form-item label="" prop="billCode">
<div slot="label">
<el-radio-group class="query-label" v-model="queryParams.queryType">
<el-radio label="1">运单号</el-radio>
<el-radio label="0">订单号</el-radio>
</el-radio-group>
</div>
<!-- <el-input
v-model="queryParams.billCode"
:placeholder="$t('多个流水号逗号或换行隔开')"
clearable
type="textarea"
rows="2"
/> -->
<XdTextareaInput
v-model="queryParams.billCode"
:placeholder="$t('多个流水号逗号或换行隔开')"
clearable
:rows="2"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('扫描类型')" prop="scanType" label-width="100px">
<el-select
style="width:100%"
filterable
clearable
v-model="queryParams.scanType"
>
<el-option v-for="item in dict.type.emis_scan_type" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('扫描网点')" prop="scanSiteCode" label-width="100px">
<EmisSiteSimplePicker v-model="queryParams.scanSiteCode" @onChange="onScanSiteSelect" ></EmisSiteSimplePicker>
</el-form-item>
</el-col>
</el-row >
<el-row :gutter="0">
<el-col :span="8">
<el-form-item :label="$t('单号类型')" prop="isSubBill" label-width="100px">
<el-select v-model="queryParams.isSubBill" clearable :placeholder="$t('请选择')" >
<el-option :label="$t('主单')" value="0"></el-option>
<el-option :label="$t('子单')" value="1"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('上/下一网点')" prop="preOrNextStation" label-width="100px">
<EmisSiteSimplePicker v-model="queryParams.preOrNextStation" @onChange="onPreOrNextSiteSelect" ></EmisSiteSimplePicker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('目的地')" prop="destCode" label-width="100px">
<DestinationPicker v-model="queryParams.destCode" @onChange="onDestinationSelect" ></DestinationPicker>
</el-form-item>
</el-col>
</el-row >
<el-row :gutter="0">
<el-col :span="16" label-width="100px">
<el-form-item label="扫描时间" prop="dateTimeRange">
<elDateAdvPicker clearable v-model="dateTimeRange" @dateTimeChange="onDateSelect" ></elDateAdvPicker>
</el-form-item>
</el-col>
</el-row >
<!-- </search-form> -->
</el-form>
<xd-table v-loading="loading"
ref="dataTable"
border
size="small"
:data="emisElectronicPagApplyList"
:showSearch.sync="showSearch"
:queryParams="queryParams"
:total="total"
@queryTable="getList"
@selection-change="handleSelectionChange"
@sort-change="handleSortChange"
v-if="tableHeight" :max-height="tableHeight + 'px'"
>
<div slot="toolbar">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
@click="handleQuery"
>查询</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
@click="handleClearCode"
>清除单号</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['emis:emisTmsScanRecord:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
@click="handleExport"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
@click="handleUpdate"
>修改</el-button>
</el-col>
</el-row>
</div>
<el-table-column type="selection" width="55" align="center" />
<el-table-column :label="$t('单号')" align="center" prop="billCode" min-width="170">
<template slot-scope="scope">
<span>{{scope.row.queryType=="1"?scope.row.billCode:scope.row.orderSN}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('单号类型')" align="center" prop="nuType" min-width="100" />
<el-table-column :label="$t('车牌号')" align="center" prop="carNo" min-width="100" />
<el-table-column :label="$t('扫描时间')" align="center" prop="scanDate" min-width="170" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.scanDate) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('扫描类型')" align="center" prop="scanType" min-width="100" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_scan_type" :value="scope.row.scanType"/>
</template>
</el-table-column>
<el-table-column :label="$t('扫描网点')" align="center" prop="scanSite" min-width="150" />
<el-table-column :label="$t('上/下一网点')" align="center" prop="preOrNextStation" min-width="100" />
<el-table-column :label="$t('扫描员')" align="center" prop="scanMan" min-width="150" />
<el-table-column :label="$t('录入时间')" align="center" prop="createTime" min-width="170" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('扫描重量')" align="center" prop="scanWeight" min-width="100" />
</xd-table>
<!-- 添加或修改网点电子面单申请对话框 -->
<el-dialog :title="title" :visible.sync="open" width="50%" v-dialogDrag :close-on-click-modal="false" append-to-body>
<el-row :gutter="0">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-col :span="8">
<el-form-item :label="$t('扫描网点')" prop="scanSiteCode" label-width="70px">
<EmisSiteSimplePicker key="2" v-model="modifyParams.scanSiteCode" @onChange="onModifyScanSiteSelect" ></EmisSiteSimplePicker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('上/下一网点')" prop="preOrNextStationCode" label-width="90px">
<EmisSiteSimplePicker key="3" v-model="modifyParams.preOrNextStationCode" @onChange="onModifyPreOrNextSiteSelect" ></EmisSiteSimplePicker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('扫描员工')" prop="scanManCode">
<EmisUserSimplePicker key="4" v-model="modifyParams.scanManCode" postCode="RSD" @onChange="onModifyStaffSelect" ></EmisUserSimplePicker>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listEmisElectronicPagApply, getEmisElectronicPagApply, delEmisElectronicPagApply, addEmisElectronicPagApply, updateEmisElectronicPagApply } from "@/api/emis/emisElectronicPagApply";
import { listEmisTmsScanRecord, delEmisTmsScanRecord, updateEmisTmsScanRecord } from "@/api/emis/emisTmsScanRecord";
import elDateAdvPicker from '@/components/DatePickerAdv/elDateAdvPicker';
import EmisSiteSimplePicker from '@/views/emis/EmisBaseTools/EmisSiteSimplePicker.vue';
import EmisGetNextSitePicker from '@/views/emis/EmisBaseTools/EmisGetNextSitePicker.vue';
import DestinationPicker from '@/views/emis/EmisBaseTools/DestinationPicker.vue';
// import elDateSimplePicker from '@/components/DatePickerAdv/elDateSimplePicker';
import EmisUserSimplePicker from '@/views/emis/EmisBaseTools/EmisUserSimplePicker.vue';
import { getDateTimeToString } from '@/utils/payutils'
import { parseTime, dateToStr } from "@/utils/custom";
export default {
name: "ScanRecordQuery",
components: { EmisUserSimplePicker,elDateAdvPicker, EmisSiteSimplePicker, EmisGetNextSitePicker, DestinationPicker },
dicts: ['emis_scan_type'],
data() {
return {
// 调整表格的高度,不允许滚动
tableHeight: 200,
// 遮罩层
loading: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 创建时间搜索
dateTimeRange:[],
// 总条数
total: 0,
// 网点电子面单申请表格数据
emisElectronicPagApplyList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
openForm: false,
titleForm: "",
titleEmisElectronicPagApply: "",
openEmisElectronicPagApply: false,
// 显示编辑框更多
moreInputVisible: false,
// 弹出展示层
currentId:null,
id:null,
titleView:"",
openView: false,
// 备注时间范围
daterangeApplyDate: [],
// 备注时间范围
daterangeCreateTime: [],
// 备注时间范围
daterangeUpdateTime: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 20,
orderSN:null,
billCode: null,
scanType: null,
scanDate: null,
scanManCode: null,
scanManPhone: null,
scanMan: null,
scanSite: null,
scanSiteCode: null,
scanSitePhone: null,
scanWeight: null,
weight: null,
dispatchOrSendMan: null,
dispatchOrSendManCode: null,
dispatchOrSendManPhone: null,
signDate: null,
signMan: null,
signSite: null,
signSiteCode: null,
recordMan: null,
recordManCode: null,
recordManPhone: null,
recordSiteCode: null,
truckMan: null,
truckCode: null,
dataFrom: null,
picUrl: null,
status: null,
delFlag: null,
remark: null,
params:{},//扩展参数
// scanSite:null,
queryType:"1",// 选择运单类型,默认为 运单号:1,订单号:0
// scanType:"",
isSubBill:"",
},
// 修改参数
modifyParams:{
scanSite:null,
scanSiteCode:null,
scanSitePhone:null,
preOrNextStation:null,
preOrNextStationCode:null,
preOrNextStationPhone:null,
scanMan:null,
scanManCode:null,
scanManPhone:null,
},
// 表单参数
form: {},
// 表单校验
rules: {
id: [
{ required: true, message: "id不能为空", trigger: "blur" }
],
}
};
},
created() {
// this.getList();
this.$nextTick(function() {
let queryFormEl = this.$refs.queryForm.$el;
let tableH = queryFormEl.offsetHeight+190;
this.tableHeight = window.innerHeight - tableH;
});
},
mounted() {
const end = new Date()
const start = new Date()
start.setHours(0,0,0,0)
end.setHours(23,59,59,0)
this.dateTimeRange=[start,end];
},
methods: {
/** 查询扫描记录列表 */
getList() {
this.loading = true;
// this.queryParams.params = {};
console.log("---->this.queryParams,", this.queryParams);
// debugger;
if (null != this.dateTimeRange && '' != this.dateTimeRange) {
// this.queryParams.params["beginScanDate"] = this.dateTimeRange[0];
// this.queryParams.params["endScanDate"] = this.dateTimeRange[1];
this.queryParams.params.beginScanDate = dateToStr(new Date(this.dateTimeRange[0]));
this.queryParams.params.endScanDate = dateToStr(new Date(this.dateTimeRange[1]));
}else{
this.queryParams.params.beginScanDate = null;
this.queryParams.params.endScanDate = null;
}
this.queryParams.params.queryType = this.queryParams.queryType;//1:yd;2:dd;
this.queryParams.params.isSubBill = this.queryParams.isSubBill;//1:子单;0:主单
let queryType = this.queryParams.queryType;
if(queryType == "1"){
this.queryParams.orderSN=null;
}else if(queryType == "0"){
this.queryParams.orderSN=this.queryParams.billCode;
this.queryParams.billCode=null;
}
// if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) {
// this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0];
// this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1];
// }
// if (null != this.daterangeUpdateTime && '' != this.daterangeUpdateTime) {
// this.queryParams.params["beginUpdateTime"] = this.daterangeUpdateTime[0];
// this.queryParams.params["endUpdateTime"] = this.daterangeUpdateTime[1];
// }
// console.log(this.addDateRange(this.queryParams, this.dateTimeRange))
// listEmisTmsScanRecord(this.addDateRange(this.queryParams, this.dateTimeRange)).then(response => {
listEmisTmsScanRecord(this.queryParams).then(response => {
// this.emisElectronicPagApplyList = response.rows;
// this.loading = false;
this.emisElectronicPagApplyList = [];
// this.total = 0;
this.loading = false;
let rows = response.rows;
this.total = response.total;
if(!rows || rows.length == 0){
this.$message.error("未查到单号");
return;
}
for (let index = 0; index < rows.length; index++) {
let scanRstItem = rows[index];
console.log(scanRstItem);
let record =Object.assign({}, scanRstItem)
// record.carNo=scanRstItem.carNo;
// record.scanData=scanRstItem.scanData;
// record.scanType=scanRstItem.scanType;
// if(queryType == "1"){
// this.queryParams.orderSN=null;
// }
record.queryType = this.queryParams.queryType;
record.scanSiteName = this.queryParams.scanSiteName || record.scanSiteName;
record.preOrNextStation = this.queryParams.preOrNextStation || scanRstItem.preOrNextStation;
// record.createTime=scanRstItem.createTime;
// record.scanWeight=scanRstItem.scanWeight;
// console.log(record)
// let indexBillCode=record.billCode;
// this.dataMap[indexBillCode]=record;
// this.emisTmsScanRecordList.push(record);
this.emisElectronicPagApplyList.push(record);
}
});
},
// 取消按钮
cancel() {
this.open = false;
this.resetModifyParams();
},
onScanSiteSelect(item){
this.queryParams.scanSite=item && item.siteName;
this.queryParams.scanSiteCode=item && item.siteCode;
},
onPreOrNextSiteSelect(item){
this.queryParams.preOrNextStation=item && item.siteName;
this.queryParams.preOrNextStationCode=item && item.siteCode;
},
onDestinationSelect(item){
this.queryParams.destCode=item && item.destCode;
this.queryParams.destName=item && item.destName;
},
onDateSelect(value){
console.log("date picker---->", value)
this.dateTimeRange=value;
// scanDate
},
onModifyScanSiteSelect(item){
this.modifyParams.scanSite=item.siteName;
this.modifyParams.scanSiteCode = item.siteCode
this.modifyParams.scanSitePhone = item.scanSitePhone;
},
onModifyPreOrNextSiteSelect(item){
this.modifyParams.preOrNextStation=item.siteName;
this.modifyParams.preOrNextStationCode=item.siteCode;
this.modifyParams.preOrNextStationPhone=item.preOrNextStationPhone;
},
onModifyStaffSelect(item){
this.modifyParams.scanMan=item.empName;
this.modifyParams.scanManCode=item.empCode;
// this.modifyParams.scanManPhone=item.scanManPhone;
},
//删除
clearSelectionBatch(){
let newList =[];
console.log(this.ids)
this.emisElectronicPagApplyList.forEach(item=>{
if(this.ids.indexOf(item.id) == -1){
newList.push(item);
}
});
this.emisElectronicPagApplyList = newList;
},
// 表单重置
reset() {
this.form = {
id: null,
applySeq: null,
applyDate: getDateTimeToString(new Date()),
provideType: null,
applyName: null,
applyMan: null,
applyManCode: null,
applySite: null,
applySiteCode: null,
unitMoney: null,
applyCount: null,
sumMoney: null,
blSend: null,
sendDate: null,
sendMan: null,
sendManCode: null,
sendSite: null,
sendSiteCode: null,
blCancel: null,
cancelMan: null,
cancelManCode: null,
cancelDate: null,
cancelSite: null,
cancelSiteCode: null,
userSite: null,
userSiteCode: null,
startNo: null,
endNo: null,
curStartNo: null,
hasBillCount: null,
blAllowAllocate: null,
createSiteCode: null,
modifySiteCode: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
handleClearCode(){
this.queryParams.billCode=null;
},
handleTypeSelect(selection){
this.sctype = selection.value;
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
resetModifyParams(){
this.modifyParams = {
scanSite:null,
scanSiteCode:null,
scanSitePhone:null,
preOrNextStation:null,
preOrNextStationCode:null,
preOrNextStationPhone:null,
scanMan:null,
scanManCode:null,
scanManPhone:null,
}
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
// 排序 查询字段是表格中字段名字 动态取值排序顺序
handleSortChange(column) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
/** 新增按钮操作 */
handleAdd(row) {
this.reset();
this.open = true;
this.title = "新增";
// 子组件打开模式
// if(row != undefined){
// this.currentParentId = row.id
// }
// this.openEmisElectronicPagApply = true;
// this.titleEmisElectronicPagApply = "新增";
},
handleShowMoreInput(){
this.moreInputVisible = !this.moreInputVisible;
},
/** 修改按钮操作 */
handleUpdate() {
// this.reset();
// const id = this.ids
if(!this.ids || this.ids.length == 0){
this.$message.error("未选中数据,请先选择");
return;
}
this.open = true;
this.title = "修改";
// getEmisElectronicPagApply(id).then(response => {
// this.form = response.data;
// this.open = true;
// this.title = "修改";
// });
// 子组件打开模式
// this.currentId= row.id || this.ids;
// this.openEmisElectronicPagApply = true;
// this.titleEmisElectronicPagApply = "修改";
},
handleView(row) {
this.id=row.id;
this.titleView="查看";
this.openView=true;
// this.router.push({ path: '/emis/emisElectronicPagApply/viewDetail', query: { id: row.id }})
},
/** 提交按钮 */
submitForm() {
for(var i=0; i<this.ids.length;i++){
updateEmisTmsScanRecord({
id:this.ids[i],
...this.modifyParams
}).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.resetModifyParams();
this.getList();
});
}
// this.$refs["form"].validate(valid => {
// if (valid) {
// if (this.form.id != null) {
// updateEmisElectronicPagApply(this.form).then(response => {
// this.$modal.msgSuccess("修改成功");
// this.open = false;
// this.getList();
// });
// } else {
// addEmisElectronicPagApply(this.form).then(response => {
// this.$modal.msgSuccess("新增成功");
// this.open = false;
// this.getList();
// });
// }
// }
// });
// todo
},
handleFormChanged(){
this.openForm = false;
this.getList();
},
cancelForm(){
this.openForm = false;
},
/** 删除按钮操作 */
handleDelete() {
const ids = this.ids
this.$modal.confirm('是否确认删除').then(function() {
return delEmisTmsScanRecord(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
let that = this;
const loadingInstance = this.$loading({
text: '正在导出...'
})
var qParam = {...this.queryParams};
qParam.pageNum=1;
qParam.pageSize=500;
if (null != this.dateTimeRange && '' != this.dateTimeRange) {
qParam.params.beginScanDate = dateToStr(new Date(this.dateTimeRange[0]));
qParam.params.endScanDate = dateToStr(new Date(this.dateTimeRange[1]));
}else{
qParam.params.beginScanDate = null;
qParam.params.endScanDate = null;
}
qParam.params.queryType = this.queryParams.queryType;//1:yd;2:dd;
qParam.params.isSubBill = this.queryParams.isSubBill;//1:子单;0:主单
let queryType = this.queryParams.queryType;
if(queryType == "1"){
qParam.orderSN=null;
}else if(queryType == "0"){
qParam.orderSN=this.queryParams.billCode;
qParam.billCode=null;
}
listEmisTmsScanRecord(qParam).then(response => {
this.loadingInstance = false
if (response.code === 200) {
const curList = []
for (let index = 0; index < response.rows.length; index++) {
let scanRstItem = response.rows[index];
let record =Object.assign({}, scanRstItem)
if(this.queryParams.queryType!="1"){
record.billCode = qParam.orderSN;
}
record.scanSiteName = this.queryParams.scanSiteName || record.scanSiteName;
record.preOrNextStation = this.queryParams.preOrNextStation || scanRstItem.preOrNextStation;
record.scanDate = parseTime(record.scanDate);
record.createTime = parseTime(record.createTime);
debugger
console.log(that)
record.scanType = that.dict.label.emis_scan_type[record.scanType];
curList.push(record);
}
let tHeader = [];// ['id','单号','单号类型','车牌号','扫描时间','扫描类型','扫描网点','上/下一网点','扫描员','录入时间','扫描重量'];
let filterVal = [];// ['id','billCode','orderType','carNo','scanDate','scanType','scanSite','preOrNextStation','scanMan','createTime','scanWeight'];
for(let sl = 0; sl < this.$refs.dataTable.storageList.length; sl++){
if(this.$refs.dataTable.storageList[sl].show){
tHeader.push(this.$refs.dataTable.storageList[sl].label);
filterVal.push(this.$refs.dataTable.storageList[sl].prop);
}
}
debugger
import('@/vendor/Export2Excel').then(excel => {
const data = this.formatJson(filterVal, curList, curList)
excel.export_json_to_excel({
header: tHeader,
data,
filename: '扫描记录查询',
autoWidth: true
})
loadingInstance.close()
})
}
});
},
formatJson(filterVal, jsonData, resData) {
let index = 0
return jsonData.map(v => filterVal.map(j => {
if (j === 'index') {
return ++index
}
if (j === 'status') {
var statusStr='xxx'
if(v[j] == 10){
statusStr='xxx'
}
return statusStr;
}
return v[j]
}))
},
/** 列索引函数 */
getIndex($index) {
return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
},
/** 时间搜索响应函数 */
// dateTimeChange(value){
// this.dateTimeRange=value;
// },
}
};
</script>
<style scoped>
.el-divider{
margin-top: 0px;
background: 0 0;
border-top: 1px solid #E6EBF5;
}
.el-divider__text {
color: #0955ee;
cursor: pointer;
}
.query-label {
.el-radio{
display: block;
line-height: 23px;
white-space: normal;
margin-right: 0;
}
}
</style>