Browse Source

Merge branch 'dev' into pre-production

fix_bug_pro20231227
pref_mail@163.com 1 year ago
parent
commit
e19d7eebb2
  1. BIN
      public/img/tx.png
  2. 2
      src/api/aftersales/aftersalesProcessingResults.js
  3. 35
      src/api/aftersales/aftersalesWorkOrder.js
  4. 11
      src/api/distribution/AddVehicleStowage.js
  5. 60
      src/api/distribution/VehicleStowage.js
  6. 24
      src/api/distribution/distributionStockList.js
  7. 210
      src/option/distribution/VehicleStowage.js
  8. 1
      src/page/index/index.vue
  9. 2
      src/page/index/top/index.vue
  10. 11
      src/router/views/index.js
  11. 435
      src/views/aftersales/VueTemp.vue
  12. 75
      src/views/aftersales/VueTempAdd.vue
  13. 172
      src/views/aftersales/VueTempend.vue
  14. 4
      src/views/basicdata/warehouse/goodsAllocation/BasicdataGoodsAllocation.vue
  15. 4
      src/views/basicdata/warehouse/goodsShelf/basicdataGoodsShelf.vue
  16. 2
      src/views/basicdata/warehouse/tray/basicdataTray.vue
  17. 229
      src/views/distribution/artery/AddVehicleStowage.vue
  18. 256
      src/views/distribution/artery/VehicleStowage.vue
  19. 598
      src/views/distribution/artery/truckLoadingDetails.vue
  20. 4
      src/views/distribution/deliverylist/distributionDeliveryListdis.vue
  21. 83
      src/views/distribution/deliverylist/distributionDeliveryListedt.vue
  22. 4
      src/views/distribution/deliverylist/distributionDeliveryListmar.vue
  23. 4
      src/views/distribution/inventory/distributionStockArticleDetails.vue
  24. 2
      src/views/distribution/inventory/distrilbutionBillLadingList.vue
  25. 4
      src/views/distribution/reservation/reservation.vue
  26. 14
      src/views/distribution/reservation/reservationAddFrom.vue
  27. 92
      src/views/distribution/reservation/reservationDetails.vue
  28. 32
      src/views/distribution/signfor/distributionSignforedt.vue
  29. 8
      src/views/distribution/stockup/distributionStockupDetails.vue
  30. 10
      src/views/distribution/stockup/distributionStockupDetailsSelf.vue
  31. 12
      src/views/mail/order/add.vue
  32. 4
      src/views/mail/reservation/list.vue
  33. 4
      src/views/waybill/TemporaryStorageList.vue
  34. 9
      src/views/waybill/orderPackageList.vue
  35. 8
      src/views/waybill/orderPackageListDetails.vue

BIN
public/img/tx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

2
src/api/aftersales/aftersalesProcessingResults.js

@ -34,7 +34,7 @@ export const remove = (ids) => {
export const add = (row) => {
return request({
url: '/api/logpm-aftersaless/aftersalesProcessingResults/submit',
url: '/api/logpm-aftersales/aftersalesProcessingResults/submit',
method: 'post',
data: row
})

35
src/api/aftersales/aftersalesWorkOrder.js

@ -119,4 +119,39 @@ export const $_getProcessor = (params) => {
method: 'get',
params
})
}
// 添加回复
export const $_AddReply = (data) => {
return request({
url: '/api/logpm-aftersales/aftersalesExchange/submit',
method: 'post',
data
})
}
// 查看消息
export const $_getExchangeList = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesExchange/exchangeList',
method: 'get',
params
})
}
// ID查询信息
export const $_getInfo = (params) => {
return request({
url: '/api/logpm-aftersales/aftersalesWorkOrder/getProcessingResults',
method: 'get',
params
})
}
// 添加移除记录
export const $_addSubmit = (data) => {
return request({
url: '/api/logpm-aftersales/aftersalesProcessingResults/submit',
method: 'post',
data
})
}

11
src/api/distribution/AddVehicleStowage.js

@ -54,3 +54,14 @@ export const postFindDriverListByName = data => {
data,
});
};
/**
* 新增配载计划
*/
export const postSaveNew = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/saveNew',
method: 'post',
data,
});
};

60
src/api/distribution/VehicleStowage.js

@ -15,88 +15,68 @@ export const postloadCarsPageList = (page, params) => {
};
/**
* 查询所有计费方式
* 发车
* data -- loadId 配载id组成的字符串
* data -- startCarType 1: 始发仓发车 2: 网点发车
*/
export const postFindChargeTypeList = data => {
export const postStartCarByLoadId = data => {
return request({
url: '/api/logpm-trunkline/billlading/findChargeTypeList',
url: '/api/logpm-trunkline/carsLoad/startCarByLoadId',
method: 'post',
data,
});
};
/**
* 创建新提货单
* 取消发车
*/
export const postSaveNew = data => {
export const postCancelStartCarByLoadId = data => {
return request({
url: '/api/logpm-trunkline/billlading/saveNew',
url: '/logpm-trunkline/carsLoad/cancelStartCarByLoadId',
method: 'post',
data,
});
};
/**
* 查询运单列表
* 卸车确认
*/
export const postList = data => {
export const postUnloadByLoadId = data => {
return request({
url: '/api/logpm-warehouseWaybill/list',
url: '/api/logpm-trunkline/carsLoad/unloadByLoadId',
method: 'post',
data,
});
};
/**
* 更新提货单状态
* 到车
*/
export const postUpdateBillladingStatus = data => {
export const postArriveCarByLoadId = data => {
return request({
url: '/api/logpm-trunkline/billlading/updateBillladingStatus',
url: '/api/logpm-trunkline/carsLoad/arriveCarByLoadId',
method: 'post',
data,
});
};
/**
* 查询提货单详情
* 取消到车
*/
export const postBillladingDetail = data => {
export const postCancelArriveCarByLoadId = data => {
return request({
url: '/api/logpm-trunkline/billlading/billladingDetail',
url: '/api/logpm-trunkline/carsLoad/cancelArriveCarByLoadId',
method: 'post',
data,
});
};
/**
* 查询提货单包件明细
* 取消配载
*/
export const postBillladingPackageDetail = data => {
export const postCancelCarsLoadByLoadId = data => {
return request({
url: '/api/logpm-trunkline/billlading/billladingPackageDetail',
method: 'post',
data,
});
};
/**
* 更新提货单关联运单数据
*/
export const postUpdateBillladingWaybillNum = data => {
return request({
url: '/api/logpm-trunkline/billlading/updateBillladingWaybillNum',
method: 'post',
data,
});
};
/**
* 提货单添加运单
*/
export const postAddWaybillToBillladingId = data => {
return request({
url: '/api/logpm-trunkline/billlading/addWaybillToBillladingId',
url: '/api/logpm-trunkline/carsLoad/cancelCarsLoadByLoadId',
method: 'post',
data,
});

24
src/api/distribution/distributionStockList.js

@ -36,12 +36,28 @@ export const getStockListOwn = (current, size, params) => {
})
}
/**
* 查看库存品包件库存品码
* @param params
* @returns {AxiosPromise}
*/
export const showInventoryPackgeCode = (reservationId,stockListId) => {
return request({
url: '/api/logpm-distribution/distributionStockList/showOrderPackgeCode',
method: 'get',
params: {
reservationId,
stockListId
}
})
}
/**
* 商场的库存品列表
* @param {*} current
* @param {*} size
* @param {*} params
* @returns
* @param {*} current
* @param {*} size
* @param {*} params
* @returns
*/
export const getStockListClient = (current, size, params) => {
return request({

210
src/option/distribution/VehicleStowage.js

@ -15,7 +15,7 @@ export const columnList = [
fixed: true,
},
{
prop: 'billladingCode',
prop: 'waybillNo',
label: '批次号',
type: 13,
values: '',
@ -26,17 +26,17 @@ export const columnList = [
head: false,
},
{
prop: 'carNumber',
prop: 'carsLineName',
label: '路线',
type: 13,
values: '',
width: '180',
width: '250',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'driverName',
prop: 'planLoadingNumber',
label: '计划装车',
type: 1,
values: '',
@ -47,7 +47,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'driverPhone',
prop: 'realLoadingNumber',
label: '装车件数',
type: 1,
values: '',
@ -57,19 +57,19 @@ export const columnList = [
sortable: true,
isshowSummary: true,
},
{
prop: 'warehouseName',
label: '在车件数',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: true,
},
{
prop: 'lineNameTitle',
// {
// prop: 'warehouseName',
// label: '在车件数',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// isshowSummary: true,
// },
{
prop: 'unloadNumber',
label: '卸车件数',
type: 1,
values: '',
@ -80,7 +80,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'nodeNub',
prop: 'fullLoadRate',
label: '满载率',
type: 1,
values: '',
@ -89,38 +89,38 @@ export const columnList = [
fixed: false,
sortable: true,
},
{
prop: 'startTime',
label: '滞留扫描',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'endTime',
label: '直发商家',
type: 3,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'planVolume',
label: '类型',
type: 3,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'billladingStatus',
// {
// prop: 'startTime',
// label: '滞留扫描',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'endTime',
// label: '直发商家',
// type: 3,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: 'planVolume',
// label: '类型',
// type: 3,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'loadStatusName',
label: '车辆状态',
type: 3,
values: '',
@ -130,7 +130,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'chargeType',
prop: 'driverName',
label: '主驾司机',
type: 2,
values: '',
@ -140,7 +140,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalFee',
prop: 'driverMobile',
label: '主驾司机手机号',
type: 2,
values: '',
@ -150,7 +150,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'remark',
prop: 'carNumber',
label: '车牌号',
type: 2,
values: '',
@ -160,7 +160,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'carrierName',
prop: 'startWarehouseName',
label: '起点仓库',
type: 2,
values: '',
@ -170,7 +170,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'waybillCount',
prop: 'endWarehouseNames',
label: '终点仓库',
type: 2,
values: '',
@ -180,7 +180,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalNum',
prop: 'arriveTime',
label: '到车时间',
type: 4,
values: '',
@ -190,7 +190,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalWeight',
prop: 'startTime',
label: '实际发车时间',
type: 4,
values: '',
@ -199,19 +199,19 @@ export const columnList = [
fixed: false,
sortable: true,
},
// {
// prop: 'totalVolume',
// label: '总运输费用',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// isshowSummary: true,
// },
{
prop: 'totalVolume',
label: '总运输费用',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: true,
},
{
prop: 'createUserName',
prop: 'nowTransportCost',
label: '现付运输费',
type: 1,
values: '',
@ -222,8 +222,8 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalWeight',
label: '油费',
prop: 'oilCost',
label: '到付费',
type: 1,
values: '',
width: '130',
@ -233,7 +233,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'totalVolume',
prop: 'tollFee',
label: '路桥费',
type: 1,
values: '',
@ -244,7 +244,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'createUserName',
prop: 'backTransportCost',
label: '回付运输费',
type: 1,
values: '',
@ -255,7 +255,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'createUserName',
prop: 'reachTransportCost',
label: '到付运输费',
type: 1,
values: '',
@ -266,7 +266,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'totalWeight',
prop: 'wholeCarInfoCost',
label: '整车信息费',
type: 1,
values: '',
@ -277,7 +277,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'totalVolume',
prop: 'wholeCarInsuranceCost',
label: '整车保险费',
type: 1,
values: '',
@ -288,7 +288,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'createUserName',
prop: 'wholeCarGroundCost',
label: '整车落地费',
type: 1,
values: '',
@ -299,7 +299,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'totalWeight',
prop: 'hairWholeCost',
label: '发站装车费',
type: 1,
values: '',
@ -310,7 +310,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'totalVolume',
prop: 'hairWholeOtherCost',
label: '发站其他费',
type: 1,
values: '',
@ -321,7 +321,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'createUserName',
prop: 'unloadCost',
label: '到站卸车费',
type: 1,
values: '',
@ -332,7 +332,7 @@ export const columnList = [
isshowSummary: true,
},
{
prop: 'createUserName',
prop: 'unloadOtherCost',
label: '到站其它费',
type: 1,
values: '',
@ -342,18 +342,18 @@ export const columnList = [
sortable: true,
isshowSummary: true,
},
{
prop: 'totalWeight',
label: '经办人',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalVolume',
// {
// prop: 'totalWeight',
// label: '经办人',
// type: 2,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'createTime',
label: '创建时间',
type: 1,
values: '',
@ -362,17 +362,17 @@ export const columnList = [
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '卸车总收入',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: true,
},
// {
// prop: 'createUserName',
// label: '卸车总收入',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// isshowSummary: true,
// },
{
prop: 'createUserName',
label: '操作',

1
src/page/index/index.vue

@ -83,6 +83,7 @@ export default {
return;
}
localStorage.setItem('WarehouseName', res.data.data.name);
localStorage.setItem('my_data', JSON.stringify(res.data.data))
});
},
mounted() {

2
src/page/index/top/index.vue

@ -178,7 +178,7 @@ export default {
}
} else {
let res = await preserveCurrentWarehouse(this.datalist[this.warehousevalue]);
if (res.data.code == 200) {
if (res.data.code == 200) {
this.$message({ message: '切换成功', type: 'success' });
localStorage.setItem('checkwarehousevalue', this.warehousevalue);
this.$router.push({

11
src/router/views/index.js

@ -202,6 +202,17 @@ export default [
/* webpackChunkName: "views" */ '@/views/distribution/artery/AddVehicleStowage.vue'
),
},
{
path: 'truckLoadingDetails',
name: '装车明细',
meta: {
i18n: 'data',
},
component: () =>
import(
/* webpackChunkName: "views" */ '@/views/distribution/artery/truckLoadingDetails.vue'
),
},
],
},
// {

435
src/views/aftersales/VueTemp.vue

@ -98,14 +98,14 @@
</el-table> -->
<div class="content_max">
<div>
<el-tabs tab-position="left" style="height: 100%" @tab-change="tabChenge">
<el-tab-pane label="全部"></el-tab-pane>
<el-tab-pane label="处理中"></el-tab-pane>
<el-tab-pane label="处理完毕"></el-tab-pane>
<el-tab-pane label="理赔金额未出"></el-tab-pane>
<el-tab-pane label="仲裁中"></el-tab-pane>
<el-tab-pane label="完结"></el-tab-pane>
<el-tab-pane label="超时未处理"></el-tab-pane>
<!-- 菜单 -->
<el-tabs v-model="tabValue" tab-position="left" style="height: 100%" @tab-change="tabChenge">
<el-tab-pane
:name="item.name"
:label="item.label"
v-for="item in TabList"
:key="item.name"
></el-tab-pane>
</el-tabs>
</div>
<div class="content_right">
@ -189,7 +189,7 @@
<el-button type="primary" @click="BatchDelete">
<el-icon><Delete /></el-icon></el-button
>
<el-button type="primary" @click="ProcessingParty"> 处理方信息</el-button>
<!-- <el-button type="primary" @click="ProcessingParty"> 处理方信息</el-button> -->
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
@ -216,9 +216,10 @@
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'">
<div class="ElBtnClass">
<el-button @click="addingRecord(slotProps.scope)">新增记录</el-button>
<el-button @click="view(slotProps.scope)">查看</el-button>
<el-button @click="ViewEvent(slotProps.scope)">编辑</el-button>
<el-button @click="ViewEvent(slotProps.scope)">回复</el-button>
<el-button @click="reply(slotProps.scope)">回复</el-button>
<!-- <el-button @click="ViewDelete(slotProps.scope)">删除</el-button> -->
<el-button @click="CompletionButton(slotProps.scope)">完结</el-button>
</div>
@ -486,6 +487,8 @@
/>
</el-form-item>
<el-form-item label="备注">
<el-input
v-model="Indexform.remarks"
@ -494,6 +497,10 @@
clearable
/>
</el-form-item>
</el-form>
<!-- 必填 -->
<div class="el_clzr">
@ -800,6 +807,65 @@
</span>
</template>
</el-dialog>
<!-- 回复弹窗 -->
<el-dialog
class="el_fk"
v-model="dialogcustomerService"
title="客服信息"
width="60%"
draggable
>
<template #header="{ titleId, titleClass }">
<div class="my-header">
<h4 :id="titleId" :class="titleClass">客服回复</h4>
<el-button type="danger" @click="KFRefresh"> 刷新聊天 </el-button>
</div>
</template>
<div class="content" ref="scrollContainer">
<!-- 用户 -->
<div
:class="{ YH: item.businessId != currentUser, KF: item.businessId == currentUser }"
v-for="item in ChatHistory"
:key="item.input"
>
<div class="box">
<div class="TX"></div>
<div class="name">
<span>{{ item.businessName }}</span>
<div class="input">
{{ item.content }}
</div>
<div class="time">{{ item.createTime }}</div>
</div>
</div>
</div>
</div>
<div class="inputTextarea" v-loading="iconState" element-loading-text="正在发送中...">
<div class="fell">
<el-upload
ref="uploadRef"
class="upload-demo"
:action="doubledCount"
:headers="headers"
:on-success="fellSuccess"
>
<template #trigger>
<el-button type="primary">上传附件</el-button>
<div class="felltis" v-if="KFfeel">上传成功</div>
</template>
</el-upload>
<el-input
@keydown.enter="inputEnter"
v-model="KFinput"
:rows="4"
type="textarea"
placeholder="请输入内容"
/>
</div>
<el-button class="btn_fs" type="primary" @click="messagesend">发送</el-button>
</div>
</el-dialog>
</basic-container>
</div>
</div>
@ -822,31 +888,41 @@ import {
$_getDetail,
$_remove,
$_getProcessor,
$_AddReply,
$_getExchangeList,
$_getInfo,
} from '@/api/aftersales/aftersalesWorkOrder';
import { getToken } from '@/utils/auth';
import { getDictionaryBiz } from '@/api/system/dict'; //
import functions from '@/utils/functions.js';
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue';
import { columnList, recordList } from '@/option/aftersales/vueTvemp.js';
import { processRowProperty } from '@/utils/util';
import { useRouter } from 'vue-router';
import dayjs from 'dayjs';
const $router = useRouter();
const tabValue = ref(0); //
const scrollContainer = ref(null); //
const currentPage = ref(1); //
const pageSize = ref(30); //
const total = ref(0); //
const KFinput = ref(''); //
const KFfeel = ref(''); //
const pageList = ref([5, 10, 50, 100, 200]); //
const background = ref(true); //
const disabled = ref(false); // 使
const loading = ref(false); //
const Indexdialog = ref(false); //
const Indexform = ref({}); //
const dialogcustomerService = ref(false); //
const IndexException = ref([]); //
const DiscoveringNodes = ref([]); //
const warehouseData = ref([]); //
const IndexForm = ref(null); //
const FromDisabled = ref(false); //
const SelectType = ref(null); //
const ListRow = ref(); //
const StateType = ref(true); //
const dialogImageUrl = ref('');
const dialogVisible = ref(false);
@ -858,9 +934,23 @@ const screenHeight = ref(0); // 屏幕高度
const eightyPercentHeight = ref(0); // 80%
const list = ref([]);
const options = ref([]);
const Mydata = ref(null); //
const ProcessingList = ref([]); //
const iconState = ref(false); //
const ProcessingPartyState = ref(false); //()
const currentUser = ref(null); //Id
const TabList = ref([
{ name: 0, label: '全部' },
{ name: 1, label: '处理中' },
{ name: 2, label: '处理完毕' },
{ name: 3, label: '待处理' },
{ name: 4, label: '理赔金额未出' },
{ name: 5, label: '仲裁中' },
{ name: 6, label: '完结' },
{ name: 7, label: '超时未处理' },
]); //
const DeliveryDriver = ref([
//
{
value: '0',
label: '兰溪',
@ -873,7 +963,9 @@ const DeliveryDriver = ref([
value: '2',
label: '唐飞',
},
]); //
]);
//
const ChatHistory = ref([]);
const CompensationParty = ref([{ name: '', state: 0, num: 0, reason: '', cld: 1 }]); //
const details = reactive({
/** 是否开启搜索 */
@ -934,7 +1026,7 @@ const details = reactive({
/** 分页参数 */
page: {
currentPage: 1,
pageSize: 5,
pageSize: 50,
total: 0,
},
@ -1396,6 +1488,8 @@ const IndexTable = val => {
//
const OnLoad = async () => {
Mydata.value = JSON.parse(localStorage.getItem('my_data')); //
currentUser.value = Mydata.value.id;
//
screenHeight.value = window.innerHeight;
// 80%
@ -1512,11 +1606,11 @@ const searchHide = () => {
//
const view = val => {
$router.push({
path: '/aftersales/VueTempAdd',
query:{
id:val.id
}
});
path: '/aftersales/VueTempAdd',
query: {
id: val.id,
},
});
console.log(val, '当前行数据');
FromDisabled.value = true; //
updateDictionary(IndexException.value, 'pc_work_order'); //
@ -1592,9 +1686,19 @@ const BatchDelete = () => {
});
};
//
const CompletionButton = () => {
const CompletionButton = val => {
$router.push('/aftersales/VueTempend');
};
//
const addingRecord = val => {
$router.push({
path: '/aftersales/VueTempend',
query: {
id: val.row.id,
name: val.row.id + '-添加异常记录',
},
});
};
//
const abnormalChange = val => {
console.log(val);
@ -1686,10 +1790,15 @@ const searchChange = () => {
ProcessingPartyFun(details.query); //
}
};
const searchChangeS=()=>{
const searchChangeS = () => {
console.log(details.columnList);
details.columnList.forEach(item => {
item.values = '';
});
details.search = false; //
IndexTable(details.query); //
}
tabValue.value = 0;
IndexTable(); //
};
//
const searchReset = () => {
details.query = {};
@ -1713,11 +1822,9 @@ const btnsc = val => {
console.log(val);
};
/** 表格表头下拉框选择 */
const selectsc = (index, row) => {
processRowProperty(index, row, details);
processRowProperty(index, row, details);
if (!ProcessingPartyState.value) {
IndexTable(details.query); //
} else {
@ -1798,6 +1905,39 @@ const changeProcessingResults = val => {
//
const tabChenge = val => {
console.log(val, '触发了标签栏');
let data = {};
if (val == 0) {
IndexTable();
console.log('全部');
} else if (val == 1) {
//
data.workOrderStatus = 20;
IndexTable(data);
} else if (val == 2) {
//
data.workOrderStatus = 30;
IndexTable(data);
} else if (val == 3) {
console.log('待处理');
ProcessingPartyState.value = true; //
ProcessingPartyFun();
} else if (val == 4) {
//
data.workOrderStatus = 40;
IndexTable(data);
} else if (val == 5) {
//
data.workOrderStatus = 70;
IndexTable(data);
} else if (val == 6) {
//
data.workOrderStatus = 80;
IndexTable(data);
} else if (val == 7) {
//
data.workOrderStatus = 60;
IndexTable(data);
}
};
/**
* 设置列表 -- 固定函数
@ -1827,7 +1967,7 @@ const ProcessingPartyFun = val => {
let data = {
...val,
};
console.log(val,'val接收的参数');
console.log(val, 'val接收的参数');
columnList[2].checkarr = []; //
columnList[3].checkarr = [];
@ -1886,11 +2026,110 @@ const ProcessingPartyFun = val => {
});
};
//
const FKList = () => {
iconState.value = true;
let data = { workOrderId: ListRow.value.id };
$_getExchangeList(data).then(res => {
iconState.value = false;
console.log(res, '查询的值');
ChatHistory.value = res.data.data;
setTimeout(() => {
const container = scrollContainer.value;
if (container) {
container.scrollTop = container.scrollHeight;
}
}, 0);
});
};
//
const reply = val => {
console.log(val, 'ID++++++++');
console.log(val.row);
dialogcustomerService.value = true; //
ListRow.value = val.row; //
FKList();
};
//
const ProcessingParty = () => {
ProcessingPartyState.value = true; //
ProcessingPartyFun();
};
//
const messagesendFn = () => {
iconState.value = true;
let data = {
workOrderId: ListRow.value.id,
businessName: Mydata.value.departmentName,
businessId: Mydata.value.id,
content: KFinput.value,
warehouseId: ListRow.value.warehouseId,
annex: KFfeel.value,
};
console.log(data, '处理好的数据');
$_AddReply(data).then(res => {
//
const currentTime = new Date();
//
const year = String(currentTime.getFullYear());
const month = String(currentTime.getMonth() + 1).padStart(2, '0');
const day = String(currentTime.getDate()).padStart(2, '0');
const hours = String(currentTime.getHours()).padStart(2, '0');
const minutes = String(currentTime.getMinutes()).padStart(2, '0');
const seconds = String(currentTime.getSeconds()).padStart(2, '0');
//
const formattedTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
console.log(res, '添加成功');
if (res.data.code == 200) {
//
iconState.value = false;
ChatHistory.value.push({
businessId: Mydata.value.id,
businessName: Mydata.value.departmentName,
content: KFinput.value,
createTime: formattedTime,
});
//
setTimeout(() => {
const container = scrollContainer.value;
if (container) {
container.scrollTop = container.scrollHeight;
}
}, 0);
KFinput.value = ''; //
KFfeel.value = null; //
}
});
console.log(Mydata.value, '参数');
};
//
const messagesend = () => {
messagesendFn();
};
//
const KFRefresh = () => {
FKList();
};
//
const inputEnter = () => {
messagesendFn();
};
// TOKEN
const headers = computed(() => {
return { 'Blade-Auth': 'Bearer ' + getToken() };
});
//
const doubledCount = computed(() => {
return '/api/blade-resource/oss/endpoint/put-file';
});
//
const fellSuccess = (response, uploadFile) => {
console.log('上船成功');
console.log(response, uploadFile);
if (response.data.link) {
KFfeel.value = response.data.link;
}
};
</script>
@ -2172,4 +2411,146 @@ const ProcessingParty = () => {
.topText {
width: 70%;
}
.content {
width: 100%;
height: 300px;
overflow-y: scroll;
scroll-behavior: smooth;
/* 添加平滑滚动效果 */
border-radius: 5px;
.YH {
width: 100%;
min-height: 50px;
margin: 4px 0;
display: flex;
flex-direction: row;
.box {
width: 386px;
height: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
.name {
display: flex;
flex-direction: column;
span {
display: flex;
justify-content: flex-start;
padding-left: 10px;
margin-bottom: 10px;
}
.time {
display: flex;
justify-content: flex-end;
padding: 0 10px;
margin-top: 4px;
}
}
}
.input {
border: 1px solid;
width: 300px;
min-height: 30px;
box-sizing: border-box;
border-radius: 8px;
padding: 8px;
margin: 0 6px;
text-indent: 2em;
position: relative;
.ico {
position: absolute;
right: -6%;
bottom: 0;
}
}
}
.KF {
width: 100%;
min-height: 50px;
margin: 4px 0;
display: flex;
justify-content: flex-end;
.box {
width: 386px;
height: 100%;
display: flex;
flex-direction: row-reverse;
justify-content: space-between;
.name {
display: flex;
flex-direction: column;
span {
display: flex;
justify-content: flex-end;
padding-right: 10px;
margin-bottom: 10px;
}
.time {
display: flex;
justify-content: flex-start;
padding: 0 10px;
margin-top: 4px;
}
}
}
.input {
border: 1px solid;
width: 300px;
min-height: 30px;
box-sizing: border-box;
border-radius: 8px;
padding: 8px;
margin: 0 6px;
text-indent: 2em;
position: relative;
.ico {
position: absolute;
left: -16%;
bottom: 0;
}
}
}
.TX {
height: 50px;
width: 50px;
border-radius: 50%;
border: 1px solid #ccc;
background: url('../../../public/img/tx.png') no-repeat;
background-size: cover;
}
}
.inputTextarea {
margin-top: 50px;
display: flex;
align-items: flex-end;
.fell {
width: 100%;
.el-upload-list {
display: none;
}
}
}
.btn_fs {
margin-left: 50px;
}
.felltis {
height: 28px;
display: flex;
align-items: center;
justify-content: center;
margin-left: 4px;
border: 1px dashed;
padding: 0 4px;
border-radius: 3px;
}
.el_fk {
.my-header {
display: flex;
justify-content: space-between;
margin-right: 25px;
}
.el-dialog__title {
margin: 0;
}
}
</style>

75
src/views/aftersales/VueTempAdd.vue

@ -37,8 +37,8 @@
<el-form-item label="异常工单号">
<el-input v-model="Indexform.workOrderNumber" placeholder="请输入异常工单号" clearable />
</el-form-item>
<!-- 必填 -->
<el-form-item label="运单号">
<!-- 必填(提货环节可以不填写运单号) -->
<el-form-item label="运单号" v-if="groundlineType != 1">
<el-input v-model="Indexform.waybillNumber" placeholder="请输入运单号" clearable />
</el-form-item>
@ -89,7 +89,10 @@
groundlineType == 1 ||
groundlineType == 3 ||
groundlineType == 4 ||
groundlineType == 8
groundlineType == 8 ||
groundlineType == 5 ||
groundlineType == 7 ||
groundlineType==8
"
>
<el-input
@ -107,7 +110,7 @@
<el-input v-model="Indexform.secondary" placeholder="请输入二级品类" clearable />
</el-form-item>
<el-form-item label="车辆路线">
<el-form-item label="车辆路线" v-if="groundlineSet || groundlineType == 3">
<el-input
v-model="Indexform.vehicleRoute"
placeholder="请输入车辆路线车次号(通过车次号自动带出车辆路线)"
@ -132,7 +135,10 @@
groundlineType == 2 ||
groundlineType == 3 ||
groundlineType == 4 ||
groundlineType == 8
groundlineType == 8 ||
groundlineType == 5 ||
groundlineType == 7 ||
groundlineType==8
"
>
<el-date-picker
@ -146,18 +152,29 @@
<el-form-item
label="配送时间"
v-if="groundlineSet || groundlineType == 3 || groundlineType == 4 || groundlineType == 8"
v-if="
groundlineSet ||
groundlineType == 3 ||
groundlineType == 4 ||
groundlineType == 8 ||
groundlineType == 5 ||
groundlineType == 7 ||
groundlineType==8
"
>
<el-date-picker
v-model="Indexform.deliveryTime"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择入库"
placeholder="请选择配送时间"
/>
</el-form-item>
<el-form-item label="入库时间" v-if="groundlineSet || groundlineType == 2">
<el-form-item
label="入库时间"
v-if="groundlineSet || groundlineType == 2 || groundlineType == 4"
>
<el-date-picker
v-model="Indexform.warehousingTime"
type="datetime"
@ -173,7 +190,15 @@
<el-form-item
label="配送司机"
v-if="groundlineSet || groundlineType == 3 || groundlineType == 4 || groundlineType == 8"
v-if="
groundlineSet ||
groundlineType == 3 ||
groundlineType == 4 ||
groundlineType == 8 ||
groundlineType == 5 ||
groundlineType == 7 ||
groundlineType==8
"
>
<el-select
v-model="Indexform.deliveryDriver"
@ -201,7 +226,10 @@
groundlineType == 2 ||
groundlineType == 3 ||
groundlineType == 4 ||
groundlineType == 8
groundlineType == 8 ||
groundlineType == 5 ||
groundlineType == 7 ||
groundlineType==8
"
>
<el-input
@ -266,7 +294,9 @@
</el-form-item>
</div>
<div class="Transport_damage_photos" v-if="SelectType == 1 || SelectType == 3 || StateType">
<span class="title">{{ SelectType == 1 ? '运损照片':SelectType == 3 ?'窜货照片':'照片' }}</span>
<span class="title">{{
SelectType == 1 ? '运损照片' : SelectType == 3 ? '窜货照片' : '照片'
}}</span>
<el-upload
v-model:file-list="Indexform.packList"
list-type="picture-card"
@ -499,8 +529,9 @@ const abnormalChange = val => {
//
const DiscoveringNodesChange = val => {
groundlineSet.value = false; //线
if (val == 1 || val == 2 || val == 3 || val == 4 || val == 5 || val == 8) {
if (val == 1 || val == 2 || val == 3 || val == 4 || val == 5 || val == 8 || val == 7) {
groundlineType.value = val; //线
console.log(val);
} else {
groundlineSet.value = true; //
}
@ -598,16 +629,16 @@ const ConfirmForm = () => {
delete DataSubmit.processor; //
console.log(DataSubmit, '处理好的数据');
//stringify
$_submit(DataSubmit).then(res => {
if (res.data.code == 200) {
ElMessage({
message: res.data.msg,
type: 'success',
});
Indexform.value = {}; //
$router.push('/aftersales/VueTemp');//
}
});
// $_submit(DataSubmit).then(res => {
// if (res.data.code == 200) {
// ElMessage({
// message: res.data.msg,
// type: 'success',
// });
// Indexform.value = {}; //
// $router.push('/aftersales/VueTemp'); //
// }
// });
};
//

172
src/views/aftersales/VueTempend.vue

@ -2,25 +2,25 @@
<el-card class="box-card">
<template #header>
<div class="card-header">
<span>异常工单完结</span>
<el-button class="button">提交</el-button>
<span>{{ routeState ? '添加异常记录' : '异常工单完结' }}</span>
<el-button class="button" @click="submit">提交</el-button>
</div>
</template>
<el-form :model="endFrom" label-width="120px">
<el-form-item label="运单商场">
<el-input v-model="endFrom.name" placeholder="请输入运单商场" />
<el-input v-model="endFrom.waybillMall" placeholder="请输入运单商场" />
</el-form-item>
<el-form-item label="运单号">
<el-input v-model="endFrom.name" placeholder="请输入运单号" />
<el-input v-model="endFrom.waybillNumber" placeholder="请输入运单号" />
</el-form-item>
<el-form-item label="订单自编号">
<el-input v-model="endFrom.name" placeholder="请输入订单自自编号" />
<el-input v-model="endFrom.orderCode" placeholder="请输入订单自自编号" />
</el-form-item>
<el-form-item label="包条码">
<el-input v-model="endFrom.name" placeholder="请输入包条码" />
<el-input v-model="endFrom.waybillNumber" placeholder="请输入包条码" />
</el-form-item>
<el-form-item label="品类">
@ -116,21 +116,21 @@
<div class="selector">
<div class="el-form-item selector">
<span class="el-form-item__label">请选择</span>
<span class="el-form-item__label">处理结果</span>
<el-select
v-model="endFrom.result"
multiple
filterable
default-first-option
:reserve-keyword="false"
placeholder="请选择处理"
placeholder="请选择处理结果"
@change="changeProcessingResults"
>
<el-option
v-for="item in ProcessingResults"
:key="item.value"
:label="item.label"
:value="item.value"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
/>
</el-select>
</div>
@ -149,11 +149,19 @@
/>
</div>
</div>
<div class="lptime">
<span class="name">支付方式</span>
<el-radio-group v-model="endFrom.compensationMethod">
<el-radio :label="item.dictKey" v-for="item in Paymentmethod" size="large" border>{{
item.dictValue
}}</el-radio>
</el-radio-group>
</div>
<div class="lptime">
<span class="name">理赔支付时间</span>
<el-date-picker
v-model="endFrom.Claimtime"
v-model="endFrom.compensationTime"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
@ -162,6 +170,15 @@
/>
</div>
</div>
<!-- 处理结果说明 -->
<el-form-item label="处理结果说明">
<el-input
v-model="endFrom.remarks"
:disabled="FromDisabled"
placeholder="请输入处理结果说明"
clearable
/>
</el-form-item>
<!-- 备注信息 -->
<div class="notes">
@ -199,7 +216,7 @@
</div>
<!-- 视频 -->
<div class="Transport_damage_photos void">
<div class="Transport_damage_photos void" v-if="!routeState">
<span class="title">视频</span>
<el-upload
class="upload-demo"
@ -228,7 +245,7 @@
</el-dialog>
<!-- 处理记录 -->
<div class="ProcessingRecords">
<div class="ProcessingRecords" v-if="!routeState">
<el-tabs type="border-card" class="demo-tabs">
<el-tab-pane>
<template #label>
@ -256,7 +273,7 @@
</div>
<!-- 完善信息 -->
<div class="Improveinformation">
<div class="Improveinformation" v-if="!routeState">
<el-tabs type="border-card" class="demo-tabs">
<el-tab-pane>
<template #label>
@ -283,7 +300,7 @@
</div>
<!-- 仲裁原因 -->
<div class="arbitrate">
<div class="arbitrate" v-if="!routeState">
<el-tabs type="border-card" class="demo-tabs">
<el-tab-pane>
<template #label>
@ -310,8 +327,18 @@
import { ElMessage } from 'element-plus';
import { ElMessageBox } from 'element-plus';
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //
import { $_getInfo, $_addSubmit } from '@/api/aftersales/aftersalesWorkOrder';
import { columnList, recordList } from '@/option/aftersales/vueTvemp.js';
import { getToken } from '@/utils/auth';
import { useRoute } from 'vue-router';
import { getDictionaryBiz } from '@/api/system/dict';
import { computeNumber } from '@/utils/util';
const $route = useRoute();
const Paymentmethod = ref([]); //
const routeData = ref(false); //
const routeState = ref(false); //
const endFrom = ref({
packageImage: [
//
@ -329,7 +356,7 @@ const endFrom = ref({
const videoUrl = ref(null); //
const VideoPreviewStatus = ref(false); //
const warehouseData = ref([]); //
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //
const CompensationParty = ref([{ name: '', state: 0, num: 0, reason: '', cld: 1 }]); ///
const ProcessingList = ref([]); //
const TransportlossList = ref([
@ -359,36 +386,7 @@ const TransportlossList = ref([
txt: '安装环节',
},
]); //
const ProcessingResults = ref([
{
value: '0',
label: '维修',
},
{
value: '1',
label: '补漆',
},
{
value: '2',
label: '下补单',
},
{
value: '3',
label: '赔付运费',
},
{
value: '4',
label: '用库存',
},
{
value: '5',
label: '赔商家',
},
{
value: '6',
label: '赔客户',
},
]);
const ProcessingResults = ref([]); //
//
const details = reactive({
/** 是否开启搜索 */
@ -507,6 +505,27 @@ const TransportChange = val => {
};
//
const onLoad = () => {
//
if ($route.query.id) {
routeState.value = true; //
$_getInfo({ id: $route.query.id }).then(res => {
endFrom.value = res.data.data;
console.log(res, '参数');
});
}
getDictionaryBiz('result_handling').then(res => {
//
console.log(res);
ProcessingResults.value = res.data.data;
});
//
getDictionaryBiz('payment_method').then(res => {
//
console.log(res);
Paymentmethod.value = res.data.data;
});
getDeptWarehouse({}).then(res => {
console.log(res, '处理方');
res.data.data.forEach(item => {
@ -527,17 +546,14 @@ const changeProcessingResults = val => {
let newItem = { input: 0, min: 0, max: 1000, state: num + 1 };
// numnewItemname
switch (num) {
case '0':
newItem.name = '维修';
break;
case '1':
newItem.name = '补漆';
newItem.name = '下补单';
break;
case '2':
newItem.name = '下补单';
newItem.name = '维修/补漆';
break;
case '3':
newItem.name = '赔付运费';
newItem.name = '客户未要求理赔';
break;
case '4':
newItem.name = '用库存';
@ -546,11 +562,13 @@ const changeProcessingResults = val => {
newItem.name = '赔商家';
break;
case '6':
newItem.name = '赔客户';
newItem.name = '赔付运费';
break;
case '7':
newItem.name = '工厂考核';
break;
default:
console.log('未知的编号:', num);
return; // num
return;
}
//
@ -655,6 +673,46 @@ const payremove = (state, val) => {
}
CompensationParty.value.splice(val, 1);
};
//
const submit = () => {
let info = JSON.parse(JSON.stringify(endFrom.value)); //
let data = {
processingMoneyEntityList: [], //
...info,
};
data['workOrderId'] = info.id; //ID
let sum = 0; //
for (let i = 0; i < ProcessingList.value.length; i++) {
console.log(ProcessingList.value[i].input);
sum = computeNumber(sum, '+',ProcessingList.value[i].input).result;
}
data['money'] = sum; //
data['compensationMethod'] = Paymentmethod.value.filter(item =>item.dictKey==endFrom.value.compensationMethod)[0].dictValue;//
delete data['id']; //ID
data['processingMoneyEntityList'] = ProcessingList.value //
.map(item => {
let match = ProcessingResults.value.find(element => element.dictValue == item.name);
if (match) {
return {
resultType: match.dictKey,
money: item.input,
typesOf: 1,
};
} else {
return null;
}
})
.filter(item => item !== null);
data['resultType'] = ProcessingList.value.map(item => item.name).join(','); //
console.log(data['resultType'],'处理结果');
console.log(data['processingMoneyEntityList']);
console.log(data, '处理好的数据');
$_addSubmit(data).then(res => {
console.log(res, '提交后的参数');
});
};
</script>
<style scoped lang="scss">
@ -746,7 +804,7 @@ const payremove = (state, val) => {
.lptime {
display: flex;
.name {
width: 126px;
width: 10%;
color: #606266;
}
.el-input {

4
src/views/basicdata/warehouse/goodsAllocation/BasicdataGoodsAllocation.vue

@ -136,7 +136,7 @@ export default {
imgUrl: '',
qrCodeObj: [],
dialogVisible: false,
html: null, //
html: '', //
};
},
computed: {
@ -437,10 +437,10 @@ export default {
let qr = checkcode.join(',');
console.log(qr);
this.html = '';
getPrintTemplate(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
this.dialogVisible = true;

4
src/views/basicdata/warehouse/goodsShelf/basicdataGoodsShelf.vue

@ -612,7 +612,7 @@ export default {
selectionList: [],
//
allselectionList: [],
html: null, //
html: '', //
excelOption: {
submitBtn: false,
emptyBtn: false,
@ -997,10 +997,10 @@ export default {
let qr = checkcode.join(',');
console.log(qr);
this.html = '';
getPrintTemplate(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
this.dialogVisible = true;

2
src/views/basicdata/warehouse/tray/basicdataTray.vue

@ -394,10 +394,10 @@ export default {
let qr = checkcode.join(',');
console.log(qr);
this.html = '';
getPrintTemplate(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
this.dialogVisible = true;

229
src/views/distribution/artery/AddVehicleStowage.vue

@ -6,7 +6,7 @@
<!-- 标题 -->
<el-divider content-position="left">基础信息</el-divider>
<!-- 表单内容 -->
<el-form label-width="80px">
<el-form :rules="details.rules" :model="details.form" ref="ruleFormRef" label-width="80px">
<!-- 仓库节点 -->
<el-steps finish-status="success" :active="details.active" space="300px">
<el-step v-for="(item, index) in details.nodeInfoData" :key="item">
@ -63,13 +63,14 @@
<div class="form_row mt10">
<!-- 车牌号 -->
<div class="form_row_item">
<el-form-item inline label="车牌号">
<el-form-item inline label="车牌号" prop="carNumber">
<el-select
v-model="form.carNumber"
filterable
remote
reserve-keyword
placeholder="车牌号"
@change="handleCarChange"
:remote-method="remoteMethodCar"
:loading="details.loadingObj.loading"
>
@ -86,11 +87,12 @@
<!-- 主驾司机 -->
<div class="form_row_item">
<el-form-item inline label="主驾司机">
<el-form-item inline label="主驾司机" prop="driverName">
<el-select
v-model="form.driverName"
filterable
remote
@change="handleNameChange(1)"
reserve-keyword
placeholder="车牌号"
:remote-method="remoteMethodDriver"
@ -115,6 +117,7 @@
filterable
remote
reserve-keyword
@change="handleNameChange(2)"
placeholder="车牌号"
:remote-method="remoteMethodDriver"
:loading="details.loadingObj.loading"
@ -131,7 +134,7 @@
<!-- 装车方式 -->
<div class="form_row_item">
<el-form-item inline label="装车方式">
<el-form-item inline label="装车方式" prop="loadingType">
<el-radio-group v-model="form.loadingType" class="ml-4">
<el-radio label="1" size="large">手动装车(后台)</el-radio>
<el-radio label="2" size="large">扫描装车</el-radio>
@ -150,7 +153,7 @@
<!-- 配载类型 -->
<div class="form_row_item">
<el-form-item inline label="配载类型">
<el-form-item inline label="配载类型" prop="loadType">
<el-select v-model="form.loadType" class="m-2" filterable placeholder="配载类型">
<el-option
v-for="item in details.pageInfo.loadType"
@ -164,7 +167,7 @@
<!-- 分摊方式 -->
<div class="form_row_item">
<el-form-item inline label="分摊方式">
<el-form-item inline label="分摊方式" prop="chargeType">
<el-select v-model="form.chargeType" class="m-2" filterable placeholder="分摊方式">
<el-option
v-for="item in details.pageInfo.chargeType"
@ -199,7 +202,7 @@
</div>
<el-form-item label="备注">
<el-input autosize type="textarea" placeholder="备注" />
<el-input autosize v-model="form.remark" type="textarea" placeholder="备注" />
</el-form-item>
</el-form>
</div>
@ -411,15 +414,23 @@
class="columnList"
ref="newColumnListNode"
:columnList="details.newColumnList"
:tableData="item.data"
:tableData="item.lineCarsOrderList"
:loading="item.loading"
@selection="list => item.selectionChange(list, index)"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '计划数'">
<el-text size="small" text @click="handleEditplanNum(slotProps.scope)">{{
<!-- <el-text size="small" text @click="handleEditplanNum(slotProps.scope)">{{
slotProps.scope.row.planNum
}}</el-text>
}}</el-text> -->
<el-input-number
v-model="slotProps.scope.row.planNum"
controls-position="right"
:precision="0"
:min="0"
:max="slotProps.scope.row.stockNum"
:step="1"
/>
</template>
</template>
</tablecmt>
@ -427,6 +438,20 @@
</template>
</div>
</template>
<!-- 页面底部占位 -->
<div class="footer"></div>
<div class="button-container">
<el-button
class="submitButton"
icon="Promotion"
type="primary"
@click="handleSubmit(ruleFormRef)"
>
提交
</el-button>
<el-button class="submitButton" icon="Close" type="primary" @click="back"> 关闭 </el-button>
</div>
</div>
</basic-container>
</template>
@ -450,10 +475,12 @@ import {
postFindAllOrderList,
postFindCarListByName,
postFindDriverListByName,
postSaveNew,
} from '@/api/distribution/AddVehicleStowage';
import { useRouter, useRoute } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
import { useStore } from 'vuex';
import type { FormInstance, FormRules } from 'element-plus';
// ,
const nodeInfokeys = nodeInfoColumnList.slice(1).map(val => val.prop);
@ -465,6 +492,11 @@ const $route = useRoute();
// vuex
const $store = useStore();
//
const ruleFormRef = ref();
console.log('ruleFormRef :>> ', ruleFormRef);
//
const userInfo = computed(() => $store.state.user.userInfo);
@ -566,12 +598,44 @@ const details = reactive<any>({
},
/** 匹配 */
rules: {
/** 发站仓名称 */
departureWarehouseName: [
/** 车牌号 */
carNumber: [
{
required: true,
message: '请填写或选择发站仓',
trigger: ['change', 'blur'],
message: '请填写并选择车牌号',
trigger: ['change'],
},
],
/** 主驾司机 */
driverName: [
{
required: true,
message: '请填写并选择主驾司机',
trigger: ['change'],
},
],
/** 装车方式 */
loadingType: [
{
required: true,
message: '请选择装车方式',
trigger: ['change'],
},
],
/** 配载类型 */
loadType: [
{
required: true,
message: '请选择配载类型',
trigger: ['change'],
},
],
/** 分摊方式 */
chargeType: [
{
required: true,
message: '请选择分摊方式',
trigger: ['change'],
},
],
},
@ -696,7 +760,10 @@ const onLoad = async () => {
details.nodeInfoData = [
{
nodeName: data.startWarehouseInfo.warehouseName,
warehouseId: data.startWarehouseInfo.warehouseId,
nodeId: data.startWarehouseInfo.warehouseId,
linkMan: data.startWarehouseInfo.linkMan,
linkPhone: data.startWarehouseInfo.linkMobile,
linkAddress: data.startWarehouseInfo.linkAddress,
},
];
details.nodeInfoData = handleEditForbidden(details.nodeInfoData);
@ -721,6 +788,9 @@ const destinationWarehouseNameChange = (val, index) => {
const _value = details.options.find(value => value.warehouseId === val);
details.nodeInfoData[index].nodeName = _value.warehouseName;
details.nodeInfoData[index].nodeId = _value.warehouseId;
details.nodeInfoData[index].linkMan = _value.linkMan;
details.nodeInfoData[index].linkPhone = _value.linkPhone;
details.nodeInfoData[index].linkAddress = _value.linkAddress;
};
/** 请求运单数据 */
@ -869,6 +939,29 @@ const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
}
};
/** 司机改变时 1: 主驾 2: 副驾 */
const handleNameChange = (type: number) => {
const findValue = type === 1 ? form.value.driverName : form.value.name;
const _value = details.driverListByName.find(value => value.driverId === findValue);
if (type === 1) {
form.value.driverName = _value.driverName;
form.value.driverId = _value.driverId;
form.value.driverMobile = _value.driverPhone;
} else {
form.value.name = _value.driverName;
form.value.assistantId = _value.driverId;
}
};
/** 车辆改变 */
const handleCarChange = (type: number) => {
const _value = details.carListByName.find(value => value.carId === form.value.carNumber);
console.log('_value :>> ', _value);
form.value.carNumber = _value.carNumber;
form.value.carId = _value.carId;
};
/** 新增车辆 */
const handleAddCar = () => {
$router.push('/basicdata/vehicle/basicdataVehicle');
@ -951,7 +1044,7 @@ const handleAddWaybill = (index: number) => {
message: '未选择目的仓或目的仓信息异常',
});
}
details.nodeInfoData[index].data = details.selectionList.map(val => {
_node.lineCarsOrderList = details.selectionList.map(val => {
val.planNum = val.stockNum;
val.loadingNum = 0;
@ -983,7 +1076,7 @@ const handleRemoveWaybill = (index: number) => {
}
console.log('_node :>> ', _node);
//
_node.data = _node.data.filter((val, index) => {
_node.lineCarsOrderList = _node.lineCarsOrderList.filter((val, index) => {
const _flag = !_node.selectionList.includes(val);
if (!_flag) {
const _code = val.orderCode + ',' + val.waybillNo;
@ -1017,6 +1110,89 @@ const remoteMethodCar = async val => {
/** 修改计划数 */
const handleEditplanNum = row => {};
/** 关闭页面 */
const back = () => {
$store.commit('DEL_TAG_CURRENT');
$router.back('-1');
};
/** 提交 */
const handleSubmit = (formEl: FormInstance | undefined) => {
if (!formEl) return;
console.log('111 :>> ', 111);
formEl.validate(async (valid, fields) => {
if (valid) {
const _warehouseIds = [];
const _warehouseNames = [];
const _flag = details.nodeInfoData.every((value, index) => {
_warehouseNames.push(value.nodeName);
if (index === 0) return true;
_warehouseIds.push(value.nodeId);
return value.nodeName && value.nodeId;
});
if (!_flag) {
return ElMessage({
type: 'warning',
message: '节点信息有误',
});
}
const submitData = {
...form.value,
carsLoadLineList: JSON.parse(JSON.stringify(details.nodeInfoData)),
};
//
submitData.endWarehouseIds = _warehouseIds.join(',');
submitData.endWarehouseNames = _warehouseNames.slice(1).join(',');
submitData.carsLineName = _warehouseNames.join('->');
let _lineCarsOrderList = [];
submitData.carsLoadLineList.forEach((val, i) => {
val.nodeType = '1';
val.sort = i + 1;
delete val.blackList;
if (i === 0) return;
//
delete val.query;
delete val.selectionList;
delete val.loading;
delete val.data;
delete val.filterData;
_lineCarsOrderList = [
..._lineCarsOrderList,
...val.lineCarsOrderList.map(value => {
value.nodeId = submitData.startWarehouseId;
value.nodeName = submitData.startWarehouseName;
value.finalNodeId = val.nodeId;
value.totalNum = 20;
return value;
}),
];
delete val.lineCarsOrderList;
});
submitData.carsLoadLineList[0].lineCarsOrderList = _lineCarsOrderList;
console.log('submitData :>> ', submitData);
const res = await postSaveNew(submitData);
const { code, msg } = res.data;
if (code !== 200) return;
ElMessage({
message: msg,
type: 'success',
});
back();
console.log('res :>> ', res);
} else {
console.log('error submit!', fields);
}
});
};
</script>
<style scoped lang="scss">
@ -1104,7 +1280,7 @@ const handleEditplanNum = row => {};
}
:deep(.slotbuts) {
height: 35px;
height: 30px;
.el-input-number {
height: 100%;
@ -1145,4 +1321,21 @@ const handleEditplanNum = row => {};
display: flex;
justify-content: space-between;
}
:deep(.el-table__row) {
height: 30px;
}
//
.footer {
height: 80px;
}
//
.button-container {
z-index: 99;
position: fixed;
bottom: 30px;
left: 50%;
}
</style>

256
src/views/distribution/artery/VehicleStowage.vue

@ -76,12 +76,12 @@
<el-button type="primary" icon="el-icon-printer" @click="searchReset()"
>装载卸车清单(财务)</el-button
>
<el-button type="primary" icon="el-icon-van" @click="searchReset()"> </el-button>
<el-button type="primary" icon="el-icon-delete" @click="searchReset()"
<el-button type="primary" icon="el-icon-van" @click="handleStartCar()"> </el-button>
<el-button type="primary" icon="el-icon-delete" @click="handleCancelStartCar()"
>取消发车</el-button
>
<el-button type="primary" icon="el-icon-delete" @click="searchReset()"
>取消装车</el-button
<el-button type="primary" icon="el-icon-delete" @click="handleCancelCarsLoad()"
>取消配载</el-button
>
<el-button type="primary" icon="el-icon-document" @click="handleComparativeStatement()"
>对比报表</el-button
@ -100,43 +100,81 @@
</el-row>
<!-- 表格 -->
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="details.columnList"
:tableData="data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '批次号'">
<el-text>123</el-text>
</template>
<!-- 列表模块 -->
<tablecmt
:columnList="details.columnList"
:tableData="data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '批次号'">
<el-text @click="handleGoWaybill(slotProps.scope)">123</el-text>
</template>
<template v-if="slotProps.scope.column.label === '操作'">
<el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)">
<template v-if="slotProps.scope.column.label === '路线'">
<span
v-for="(item, index) in slotProps.scope.row.carsLoadLineList"
:key="item"
class="flex-c-c carsLineName"
>
<el-tooltip placement="top" effect="dark">
<template #content>
<div>
<span class="mr-10">网点:</span>
<span>{{ item.nodeName }}</span>
</div>
<div>
<span class="mr-10">运单总件数:</span>
<span>{{ item.nodeName }}</span>
</div>
<div>
<span class="mr-10">实际装车件数:</span>
<span>{{ item.nodeName }}</span>
</div>
<div>
<span class="mr-10">操作人:</span>
<span>{{ item.nodeName }}</span>
</div>
<div>
<span class="mr-10">状态:</span>
<span>{{ item.nodeName }}</span>
</div>
</template>
<el-text>{{ item.nodeName }}</el-text>
</el-tooltip>
<!-- <el-text @click="handleGoWaybill(slotProps.scope)">
{{ item.nodeName }}
</el-text> -->
<el-icon v-if="index !== slotProps.scope.row.carsLoadLineList.length - 1"
><Right
/></el-icon>
</span>
</template>
<template v-if="slotProps.scope.column.label === '操作'">
<!-- <el-text @click="handleShowzeroAdditionalRecording(slotProps.scope)">
零担补录
</el-text>
<el-text @click="handleShowTruckLoadingDetails(slotProps.scope)">装车明细</el-text>
<el-text>编辑</el-text>
<el-text>数据同步</el-text>
<el-text>批量装车</el-text>
<el-text>手动装车</el-text>
<el-text>节点费用</el-text>
</template>
</el-text> -->
<el-text @click="handleShowTruckLoadingDetails(slotProps.scope)">装车明细</el-text>
<el-text>编辑</el-text>
<el-text>数据同步</el-text>
<el-text>批量装车</el-text>
<el-text>手动装车</el-text>
<el-text>节点费用</el-text>
</template>
</tablecmt>
</el-row>
</template>
</tablecmt>
<!-- 统计 -->
<el-row>
<!-- <el-row>
<div>选择数: , 运单数: , 件数: , 重量: , 体积: , 提货费: ,</div>
<div>总计: 总数: , 运单数: , 件数: , 重量: , 体积: , 提货费: ,</div>
</el-row>
</el-row> -->
<!-- 分页模块 -->
<el-row class="el-fy">
@ -388,7 +426,12 @@ import {
warehouseNodeColumnList,
truckLoadingColumnList,
} from '@/option/distribution/VehicleStowage';
import { postloadCarsPageList } from '@/api/distribution/VehicleStowage';
import {
postloadCarsPageList,
postStartCarByLoadId,
postCancelStartCarByLoadId,
postCancelCarsLoadByLoadId,
} from '@/api/distribution/VehicleStowage';
import { useRouter } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
@ -481,6 +524,16 @@ const details = reactive<any>({
},
});
/** 车辆状态字典 */
const carStateDictionaries = reactive([
{ label: '未发车', code: 0 },
{ label: '已发车', code: 10 },
{ label: '网点到车', code: 20 },
{ label: '网点发车', code: 30 },
{ label: '终点到车', code: 40 },
{ label: '取消配载', code: 100 },
]);
const {
search,
query,
@ -581,7 +634,7 @@ onMounted(() => {
});
/** 请求页面数据 */
const onLoad = async (page: any, params = {}) => {
const onLoad = async (params = {}) => {
try {
// loading
details.loadingObj.list = true;
@ -590,7 +643,12 @@ const onLoad = async (page: any, params = {}) => {
const res = await postloadCarsPageList(details.page, { ...details.query, ...params });
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.data = data.records.map(val => {
val.loadStatusName = carStateDictionaries.find(
item => Number(val.loadStatus) === item.code
).label;
return val;
});
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
@ -599,7 +657,7 @@ const onLoad = async (page: any, params = {}) => {
}
};
onLoad(details.page);
onLoad();
/** 搜索 */
const searchChange = () => {
@ -782,6 +840,118 @@ const handleAdd = () => {
query: { name: '新增配载', type: 1 },
});
};
/** 前往配载详情 */
const handleGoWaybill = ({ row }) => {
console.log('row :>> ', row);
};
/** 发车 */
const handleStartCar = () => {
if (details.selectionList.length === 0) {
return ElMessage({
message: '请选择发车数据',
type: 'warning',
});
}
ElMessageBox.confirm('确认发车吗?', 'Warning', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
const submitData = {
loadId: details.selectionList.map(val => val.id).join(','),
startCarType: '1',
};
const res = await postStartCarByLoadId(submitData);
const { code } = res.data;
if (code !== 200) {
return;
}
ElMessage({
type: 'success',
message: '发车成功',
});
onLoad();
});
};
/** 发车 */
const handleCancelStartCar = () => {
if (details.selectionList.length === 0) {
return ElMessage({
message: '请选择发车数据',
type: 'warning',
});
}
ElMessageBox.confirm('确认取消发车吗?', 'Warning', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
const submitData = {
loadId: details.selectionList.map(val => val.id).join(','),
startCarType: '1',
};
const res = await postCancelStartCarByLoadId(submitData);
const { code } = res.data;
if (code !== 200) {
return;
}
ElMessage({
type: 'success',
message: '取消发车成功',
});
onLoad();
});
};
/** 取消装车 */
const handleCancelCarsLoad = () => {
if (details.selectionList.length === 0) {
return ElMessage({
message: '请选择发车数据',
type: 'warning',
});
}
ElMessageBox.confirm('确认取消发车吗?', 'Warning', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
const ids = [];
const _flag = details.selectionList.every(val => {
ids.push(val.id);
console.log('val :>> ', val);
return Number(val.loadStatus) === 0;
});
if (!_flag)
return ElMessage({
message: '车辆已发车, 无法取消配载计划',
type: 'warning',
});
const submitData = {
loadId: ids.join(','),
startCarType: '1',
};
const res = await postCancelCarsLoadByLoadId(submitData);
const { code } = res.data;
if (code !== 200) {
return;
}
ElMessage({
type: 'success',
message: '取消配载成功',
});
onLoad();
});
};
</script>
<style scoped lang="scss">
@ -831,4 +1001,14 @@ const handleAdd = () => {
.red {
color: #ff0000;
}
.carsLineName {
:deep(.el-text) {
margin-right: 0px !important;
}
}
.mr-10 {
margin-right: 10px;
}
</style>

598
src/views/distribution/artery/truckLoadingDetails.vue

@ -0,0 +1,598 @@
<template>
<basic-container>
<div class="avue-crud">
<!-- 搜索模块 -->
<el-row v-if="!search">
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="el-fr-d">
<el-form-item label="扫码时间:" class="el-times">
<el-date-picker
v-model="stockupDate"
type="daterange"
unlink-panels
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
:shortcuts="shortcuts"
clearable
/>
</el-form-item>
<el-form-item label="卸车时间:" class="el-times">
<el-date-picker
v-model="stockupDate"
type="daterange"
unlink-panels
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
:shortcuts="shortcuts"
clearable
/>
</el-form-item>
<!-- 查询按钮 -->
<el-form-item class="el-btn">
<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="Edit" @click="handleShowTransfer('add')"
>计划仓更改
</el-button>
<el-button type="primary" icon="List" @click="searchReset()">批量卸车</el-button>
<el-button type="primary" icon="Delete" @click="searchReset()">删除</el-button>
<el-button type="primary" icon="Printer" @click="searchReset()">二维码</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="details.detailsColumnList"
:tableData="data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps"> </template>
</tablecmt>
</el-row>
<!-- 分页模块 -->
<el-row class="el-fy">
<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>
</div>
</basic-container>
<!-- 列表配置显示 -->
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="details.editColumnList"
></edittablehead>
</template>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import functions from '@/utils/functions';
import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { downloadXls } from '@/utils/util';
import { detailsColumnList } from '@/option/distribution/TripartiteTransfer';
import { useRouter } from 'vue-router';
//
const $router = useRouter();
const details = reactive<any>({
/** 是否开启搜索 */
search: true,
/** 表格搜索条件 */
query: {},
/** 时间快捷选择设置 */
shortcuts: [
{
text: '最近一周',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
return [start, end];
},
},
{
text: '最近一个月',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
return [start, end];
},
},
{
text: '最近三个月',
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
return [start, end];
},
},
],
/** 时间选择器数据 */
stockupDate: [],
/** 装车明细表头信息 */
detailsColumnList,
/** 列表数据 */
data: [{}],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
list: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
/** 是否显示设置表格 */
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageSize: 30,
total: 0,
},
/** 弹出层显示 */
popUpShow: {
/** 装车详情 */
truckLoadingDetailVisited: false,
/** 零担补录 */
transferVisited: false,
},
/** 列表Dom节点 */
listNode: '',
form: {},
});
const {
search,
query,
shortcuts,
stockupDate,
data,
loadingObj,
selectionList,
drawerShow,
page,
trickleLoadingPage,
} = toRefs(details);
/** vuex */
const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList']));
console.log('permission :>> ', permission);
onMounted(() => {
const timer = setTimeout(() => {
details.listNode = document.querySelector('.maboxhi');
details.listNode.style.transition = 'all .5s ease-out';
console.log('details.listNode :>> ', details.listNode);
clearTimeout(timer);
}, 100);
/**
* 初始化获取本地缓存的编辑隐藏的列表
* 固定搭配不能更改
*/
let checkListnewarr = functions.getStorage(window.location.pathname + 'checkList');
let flexListnewarr = functions.getStorage(window.location.pathname + 'flexList');
let sortlistnewarr = functions.getStorage(window.location.pathname + 'sortlist');
if (checkListnewarr) {
details.columnList.map(item => {
item.head = false;
});
checkListnewarr.map(ite => {
details.columnList.map(item => {
if (ite == item.label) {
item.head = true;
}
});
});
} else {
let arr = [];
details.columnList.map(item => {
if (item.head) {
arr.push(item.label);
}
});
functions.setStorage(window.location.pathname + 'checkList', arr);
}
if (flexListnewarr) {
details.columnList.map(item => {
item.fixed = false;
});
flexListnewarr.map(ite => {
details.columnList.map(item => {
if (ite == item.label) {
if (item.type == 6) {
item.fixed = 'right';
} else {
item.fixed = true;
}
}
});
});
} else {
let arr = [];
details.columnList.map(item => {
if (item.fixed) {
arr.push(item.label);
}
});
functions.setStorage(window.location.pathname + 'flexList', arr);
}
if (sortlistnewarr) {
details.columnList.map(item => {
item.sortable = false;
});
sortlistnewarr.map(ite => {
details.columnList.map(item => {
if (ite == item.label) {
item.sortable = true;
}
});
});
} else {
let arr = [];
details.columnList.map(item => {
if (item.sortable) {
arr.push(item.label);
}
});
functions.setStorage(window.location.pathname + 'sortlist', arr);
}
});
/** 请求页面数据 */
const onLoad = (page: any) => {};
/** 搜索 */
const searchChange = () => {
onLoad(details.page);
};
/** 清空表单 */
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.currentPage = 1;
onLoad(details.page);
};
/** 展开列表控件 */
const showdrawer = (_flag?: boolean, _type?: string) => {
switch (_type) {
case 'truckLoadingDetail':
details.editColumnList = details.detailsColumnList;
break;
default:
console.log('123 :>> ', 123);
details.editColumnList = details.columnList;
break;
// details.
}
details.drawerShow = _flag;
};
/** 是否开启搜索区 */
const searchHide = () => {
function getWinHight() {
var windowHight = 0;
if (document.body.clientHeight && document.documentElement.clientHeight) {
windowHight =
document.body.clientHeight < document.documentElement.clientHeight
? document.body.clientHeight
: document.documentElement.clientHeight;
} else {
}
return document.documentElement.clientHeight;
}
details.search = !details.search;
const timer = setTimeout(() => {
details.listNode.style.height =
getWinHight() - details.listNode.getBoundingClientRect().top - 70 + 'px';
clearTimeout(timer);
}, 10);
};
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
details.query[row.prop] = index;
onLoad(details.page);
};
/** 表格表头时间选择 */
const timesc = (index, row) => {
console.log(index, row);
if (!!index) {
index = dayjs(index).format('YYYY-MM-DD');
}
details.query[row.prop] = index;
if (!index) {
delete details.query[row.prop];
}
onLoad(details.page);
};
/** 表格表头输入框搜索 */
const btnsc = () => {};
/** 表格表头下拉框选择 */
const selectsc = (index, row) => {
details.query[row.prop] = index;
if (!index) delete details.query[row.prop];
if (row.prop === 'certificateTypeName') {
details.query['certificateType'] = index;
if (!index) delete details.query['certificateType'];
}
onLoad(details.page);
};
/** 表格表头复选框选择 */
const selectionChange = (list: any) => {
details.selectionList = list;
};
/** 表格表头输入框搜索 */
const newInputsc = (index, row) => {
details.newQuery[row.prop] = index;
onLoad(details.page);
};
/** 表格表头时间选择 */
const newTimesc = (index, row) => {
console.log(index, row);
if (!!index) {
index = dayjs(index).format('YYYY-MM-DD');
}
details.newQuery[row.prop] = index;
if (!index) {
delete details.newQuery[row.prop];
}
onLoad(details.page);
};
/** 表格表头输入框搜索 */
const newBtnsc = () => {};
/** 表格表头下拉框选择 */
const newSelectsc = (index, row) => {
details.newQuery[row.prop] = index;
if (!index) delete details.newQuery[row.prop];
if (row.prop === 'certificateTypeName') {
details.newQuery['certificateType'] = index;
if (!index) delete details.newQuery['certificateType'];
}
onLoad(details.page);
};
/** 表格表头复选框选择 */
const newSelectionChange = (list: any) => {
details.newSelectionList = list;
};
/** 每页数量改变执行的回调 */
const sizeChange = (pageSize: number) => {
details.page.pageSize = pageSize;
onLoad(details.page);
};
/** 页码改变执行的回调 */
const currentChange = () => {};
/**
* 设置列表 -- 固定函数
* 弹窗的勾选回调用于更改头部数组
* 固定搭配只需要更换 columnList
* */
const setnewcolum = (newarr, headarr, type) => {
if (type == 1) {
details.editColumnList = newarr;
functions.setStorage(window.location.pathname + 'checkList', headarr);
} else if (type == 2) {
details.editColumnList = newarr;
functions.setStorage(window.location.pathname + 'flexList', headarr);
} else if (type == 3) {
details.editColumnList = newarr;
functions.setStorage(window.location.pathname + 'sortlist', headarr);
}
};
/** 弹出层开启前清除数据 */
const beforeClose = done => {
done();
details.form = {};
details.view = false;
};
/** 显示装车详情 */
const handleShowTruckLoadingDetails = ({ row }) => {
details.popUpShow.truckLoadingDetailVisited = true;
nextTick(() => {
// ,
const _node = document.querySelector('.truckLoadingDetailPopUp .maboxhi');
_node.style.height = '550px';
console.log('_node :>> ', _node);
});
};
/** 跳转零担补录 */
const handleShowzeroAdditionalRecording = ({ row }) => {
//
$router.push('/distribution/artery/zeroAdditionalRecording');
};
/** 新增中转 */
const addTransfer = async () => {
return null;
};
/** 修改中转 */
const editTransfer = async () => {
return null;
};
/** 显示新增或修改中转弹窗 */
const handleShowTransfer = async (_type: string) => {
switch (_type) {
//
case 'add':
await addTransfer();
break;
//
case 'edit':
await editTransfer();
break;
default:
break;
}
details.popUpShow.transferVisited = true;
nextTick(() => {
// ,
const _nodeList = document.querySelectorAll('.transferPopUp .maboxhi');
_nodeList.forEach(val => (val.style.height = '300px'));
});
};
/** 添加运单 */
const handleAddWaybill = () => {
// if (this.addInfo.oldSelectionList.length === 0) return this.$message.warning('');
// this.addInfo.newData = [...this.addInfo.newData, ...this.addInfo.oldSelectionList];
// this.addInfo.haveIds = this.addInfo.map(val => val.id);
};
/** 移除运单 */
const handleRemoveWaybill = () => {
// if (this.addInfo.newSelectionList.length === 0) return this.$message.warning('');
// this.addInfo.newData = [...this.addInfo.newData, ...this.addInfo.oldSelectionList];
// this.addInfo.haveIds = this.addInfo.map(val => val.id);
};
</script>
<style scoped lang="scss">
.fo-fl {
display: flex;
flex-wrap: wrap;
zoom: 0.9;
}
//
:deep(.el-date-editor.el-input) {
height: 100% !important;
width: 100% !important;
}
:deep(.el-range-editor.el-input__wrapper) {
height: 100% !important;
}
//
.add_row {
display: flex;
justify-content: space-between;
}
.add_row_title {
text-align: center;
margin-bottom: 10px;
font-size: 18px;
font-weight: bold;
}
//
.statistics_row {
margin: 10px 0;
font-size: 14px;
zoom: 0.9;
display: flex;
> div {
margin-right: 20px;
}
}
//
.crad_container {
display: flex;
.card_container_item {
flex: 1;
// padding: 10px;
border-radius: 5px;
box-shadow: 0 0 5px #ccc;
&:first-child {
margin-right: 20px;
}
.card_container_item_title {
padding: 10px;
border-bottom: 1px solid #ccc;
display: flex;
justify-content: space-between;
align-items: center;
}
.card_container_item_box {
padding: 10px;
}
}
}
.pointer {
cursor: pointer;
}
.transferPopUp :deep(.el-textarea) {
width: 500px;
}
</style>

4
src/views/distribution/deliverylist/distributionDeliveryListdis.vue

@ -1153,6 +1153,7 @@ export default {
return;
}
this.isShow = true;
this.html = '';
const res = await printBatch({ ids: Array.from(this.selectionList).join(','), type: 1 });
console.log('res :>> ', res);
const {
@ -1160,7 +1161,6 @@ export default {
} = res;
if (code === 200) {
//
this.html = '';
data.forEach(item => {
this.html += item.templateHtml;
});
@ -1172,6 +1172,7 @@ export default {
*/
async printOrder(row) {
console.log('row :>> ', row);
this.html = '';
const res = await printBatch({ ids: row.id, type: 1 });
console.log('res :>> ', res);
const {
@ -1179,7 +1180,6 @@ export default {
} = res;
if (code === 200) {
//
this.html = '';
data.forEach(item => {
this.html += item.templateHtml;
});

83
src/views/distribution/deliverylist/distributionDeliveryListedt.vue

@ -287,6 +287,9 @@
<!-- >查看详情-->
<!-- </el-text>-->
<!-- </template>-->
<template #default="slotProps">
<el-text size="small" @click="handleInventoryQRCode(slotProps.scope.row)">查看二维码</el-text>
</template>
</tablecmt>
</el-tab-pane>
</el-tabs>
@ -454,7 +457,7 @@
<!-- </template>-->
</el-dialog>
<el-dialog :title="signtitle" v-model="signBox" width="45%" append-to-body>
<el-dialog class="el_foot" :title="signtitle" v-model="signBox" width="45%" append-to-body :style="{height:windowHeight+'px',overflow:'scroll'}">
<!-- <avue-form :option="signoption" v-model="signform" :data="signdata" ref="signform">
</avue-form> -->
<!-- <div style="bottom: 7%; margin-left: 500px; width: 50%">
@ -618,6 +621,7 @@ import {
getinventorydetail,
} from '@/api/distribution/distributionDeliveryList';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { showInventoryPackgeCode } from '@/api/distribution/distributionStockList';
import { update as updatesign, getOneclickq } from '@/api/distribution/distributionSignfor';
import option from '@/option/basic/basicPdarecords';
import { mapGetters } from 'vuex';
@ -629,6 +633,7 @@ import { getToken } from '@/utils/auth';
export default {
data() {
return {
html:'',
dialogImageUrl: '', //
dialogVisible: false, //
dialogImageUrlA: '',
@ -657,7 +662,7 @@ export default {
//
SignForPhotos: [],
reservationId: null, //ID
windowHeight:null,
columnList: [
{
prop: 'reservationCode',
@ -1591,8 +1596,18 @@ export default {
],
inventoryoptioncolumn: [
{
prop: 'sku',
label: 'SKU',
prop: 'incomingBatch',
label: '入库批次号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
}, {
prop: 'orderCode',
label: '订单自编码',
type: 2,
values: '',
width: '150',
@ -1602,8 +1617,30 @@ export default {
head: false,
},
{
prop: 'descriptionGoods',
label: '物料名称',
prop: 'serviceNumber',
label: '服务号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'marketName',
label: '商场名称',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'brandName',
label: '品牌',
type: 2,
values: '',
width: '150',
@ -1623,6 +1660,17 @@ export default {
sortable: true,
head: false,
},
{
prop: 'descriptionGoods',
label: '物料名称',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'cargoNorms',
label: '物料规格',
@ -2673,6 +2721,8 @@ export default {
mounted() {
this.init();
this.onLoad();
this.windowHeight = window.innerHeight * 0.8;
console.log(`浏览器窗口的高度为:${this.windowHeight}px`);
},
created() {
// //
@ -2813,6 +2863,22 @@ export default {
timesc() {},
btnsc() {},
selectsc() {},
handleInventoryQRCode(row){
this.materialQRCode = row;
console.log('row------------>',row);
// let qr = {
// ids: row.id,
// };
this.html = '';
showInventoryPackgeCode(row.reservationId,row.id).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
this.dialogVisibleF = true;
},
/**
* 查看二维码
* @param {*} row
@ -2826,10 +2892,10 @@ export default {
let qr = {
ids: row.id,
};
this.html = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
@ -3388,4 +3454,7 @@ export default {
width: 100%;
}
}
.el_foot{
overflow: scroll;
}
</style>

4
src/views/distribution/deliverylist/distributionDeliveryListmar.vue

@ -1071,6 +1071,7 @@ export default {
return;
}
this.isShow = true;
this.html = '';
const res = await printBatch({ ids: Array.from(this.selectionList).join(','), type: 2 });
console.log('res :>> ', res);
const {
@ -1078,7 +1079,6 @@ export default {
} = res;
if (code === 200) {
//
this.html = '';
data.forEach(item => {
this.html += item.templateHtml;
});
@ -1090,6 +1090,7 @@ export default {
*/
async printOrder(row) {
console.log('row :>> ', row);
this.html = '';
const res = await printBatch({ ids: row.id, type: 2 });
console.log('res :>> ', res);
const {
@ -1097,7 +1098,6 @@ export default {
} = res;
if (code === 200) {
//
this.html = '';
data.forEach(item => {
this.html += item.templateHtml;
});

4
src/views/distribution/inventory/distributionStockArticleDetails.vue

@ -1248,10 +1248,10 @@ export default {
ids: checkcode.join(','),
// qrCodes: checkcode.join(','),
};
this.html = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
@ -1267,11 +1267,11 @@ export default {
let qr = {
ids: row.id,
};
this.html = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
// console.log(res.data);
console.log('res :>> ', res);
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
this.dialogVisible = true;
});

2
src/views/distribution/inventory/distrilbutionBillLadingList.vue

@ -1064,6 +1064,7 @@ export default {
//
async handlePreview(row){
console.log('row :>> ', row);
this.html = '';
const res = await printBatch({ ids: row.id, type: 3 });
console.log('res :>> ', res);
const {
@ -1071,7 +1072,6 @@ export default {
} = res;
if (code === 200) {
//
this.html = '';
data.forEach(item => {
this.html += item.templateHtml;
});

4
src/views/distribution/reservation/reservation.vue

@ -1599,12 +1599,12 @@ export default {
return;
}
const ids = this.selectionList.map(item => item.id);
this.html = '';
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);
});
@ -1616,12 +1616,12 @@ export default {
* 单独打印
*/
async printData(rowData) {
this.html = '';
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);
});

14
src/views/distribution/reservation/reservationAddFrom.vue

@ -1033,7 +1033,7 @@ export default {
sortable: true,
},
{
prop: 'unpack',
prop: 'unpackName',
label: '拆包状态',
type: 1,
values: '',
@ -1595,7 +1595,7 @@ export default {
sortable: true,
},
{
prop: 'unpack',
prop: 'unpackName',
label: '拆包状态',
type: 1,
values: '',
@ -2018,6 +2018,11 @@ export default {
inventoryList.records.forEach(item => {
item.reservationNum = '0';
item.applyNum = item.quantityStock - item.quantityOccupied;
if (item.unpack){
item.unpackName = '是'
}else {
item.unpackName = '否'
}
});
this.page.total = inventoryList.total;
console.log('res :>> ', res);
@ -2325,6 +2330,11 @@ export default {
const inventoryList = res.data.data;
inventoryList.records.forEach(item => {
item.reservationNum = '0';
if (item.unpack){
item.unpackName = '是'
}else {
item.unpackName = '否'
}
});
this.page.total = inventoryList.total;
this.inventoryInfo = inventoryList.records;

92
src/views/distribution/reservation/reservationDetails.vue

@ -177,8 +177,9 @@
@selectCheck="selectsc"
@selection="selectionsc"
>
<el-button size="small" @click="editsolt(slotProps.scope)">--</el-button>
<br/>
<template #default="slotProps">
<el-text size="small" @click="handleQRCode(slotProps.scope)">查看二维码</el-text>
</template>
</tablecmt>
</el-tab-pane>
<el-tab-pane label="库存品信息">
@ -199,7 +200,9 @@
@selectCheck="selectsc"
@selection="selectionsc"
>
<el-button size="small" @click="costadd(slotProps.scope)">--</el-button>
<template #default="slotProps">
<el-text size="small" @click="handleInventoryQRCode(slotProps.scope)">查看二维码</el-text>
</template>
</tablecmt>
</el-tab-pane>
</el-tabs>
@ -245,7 +248,21 @@
<el-button icon="el-icon-circle-close" @click="isaddvalue=false"> </el-button>
</el-form-item>
</el-dialog>
<el-dialog
title="二维码"
:visible.sync="dialogVisibleF"
width="780px"
v-model="dialogVisibleF"
>
<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="dialogVisibleF = false"> </el-button>
</span>
</el-dialog>
<el-dialog
v-model="dialogVisible"
@ -320,7 +337,8 @@
reservationInfoStockArticleExport,
reservationInfoStockListExport
} from '@/api/distribution/distributionReservation';
import { getStockAddValue } from '@/api/distribution/distributionStockArticle';
import { getStockAddValue, showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { showInventoryPackgeCode } from '@/api/distribution/distributionStockList';
import option from '@/option/distribution/distributionReservationDetails';
import { mapGetters } from 'vuex';
@ -330,12 +348,14 @@
export default {
data() {
return {
html: '',
height: 300,
//
title: '',
//
box: false,
dataForm: {},
dialogVisibleF:false,
//
search: true,
//
@ -726,6 +746,16 @@
sortable: true,
head: false
},
{
prop: 'serviceNumber',
label: '服务号',
type: 2,
values: '',
width: '160',
checkarr: [],
fixed: false,
sortable: true
},
{
prop: 'sku',
label: 'SKU码',
@ -787,6 +817,7 @@
fixed: false,
sortable: true
},
{
prop: 'reservationNum',
label: '预约数量',
@ -797,17 +828,6 @@
fixed: false,
sortable: true
},
{
prop: 'orderCode',
label: '备货件数',
type: 2,
values: '',
width: '160',
checkarr: [],
fixed: false,
sortable: true
},
{
prop: 'stockupNum',
label: '已备件数',
@ -1101,6 +1121,46 @@
.catch(_ => {
});
},
handleQRCode(scope){
const { row } = scope;
console.log('执行查看二维码');
this.materialQRCode = row;
console.log('---------------->',row);
let qr = {
ids: row.id,
};
this.html = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
this.dialogVisibleF = true;
},
printTemplate(){},
handleInventoryQRCode(scope){
const { row } = scope;
console.log('执行查看二维码------------>row:',row);
this.materialQRCode = row;
console.log('---------------->',row);
let qr = {
ids: row.id,
};
this.html = '';
showInventoryPackgeCode(row.reservationId,row.id).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
this.dialogVisibleF = true;
},
checkPackage(scope) {
const { row } = scope;
console.log(row);

32
src/views/distribution/signfor/distributionSignforedt.vue

@ -328,8 +328,8 @@
:initial-index="1"
fit="cover"
/>
</el-dialog>
</el-dialog>
</div>
<div class="imgName">
@ -1333,17 +1333,17 @@ const menuData2 = ref([
sortable: true,
head: true,
},
{
prop: 'orderPackageGroundingStatusName',
label: '上架状态',
type: 4,
values: '',
width: '200',
checkarr: [],
fixed: false,
sortable: true,
head: true,
},
// {
// prop: 'orderPackageGroundingStatusName',
// label: '',
// type: 4,
// values: '',
// width: '200',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: true,
// },
{
prop: 'orderPackageStockupStatusName',
label: '备货状态',
@ -2045,7 +2045,7 @@ getDetail(RouterId.value).then(res => {
});
}
console.log(srcListC.value,'srcListC');
});
const handleRemove = () => {
console.log('图片移除事件');
@ -2329,7 +2329,7 @@ const ImgSuccessE = (response, uploadFile) => {
}
}
:deep(.el-dialog__body) {
img {
width: 100%;
}
@ -2370,7 +2370,7 @@ const ImgSuccessE = (response, uploadFile) => {
margin-bottom: 10px;
}
:deep(.el-dialog__body) {
width: 100%;
height: 100%;
box-sizing: border-box;

8
src/views/distribution/stockup/distributionStockupDetails.vue

@ -979,10 +979,10 @@ export default {
ids: checkcode.join(','),
type: "2"
};
this.html=''
getPrintDetail(qr).then( res =>{
console.log(",./");
this.dialogVisible = true;
this.html=''
this.html=this.getHtmls(res.data.data.dataList,res.data.data.templateHtml)
})
}else if(type== '2'){
@ -999,10 +999,10 @@ export default {
};
console.log("><><>>",qr);
//
this.html=''
getPrintDetail(qr).then( res =>{
// console.log(",./");
this.dialogVisible = true;
this.html=''
this.html=this.getHtmls(res.data.data.dataList,res.data.data.templateHtml)
})
@ -1013,10 +1013,10 @@ export default {
handlePrintDetail(row){
console.log("单个答应》》》",row);
row.type = "1";
this.html=''
getPrintDetail(row).then( res =>{
console.log(",./");
this.dialogVisible = true;
this.html=''
this.html=this.getHtmls(res.data.data.dataList,res.data.data.templateHtml)
})
@ -1164,10 +1164,10 @@ export default {
let qr = {
ids: row.id,
};
this.html=''
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html=''
this.html=this.getHtmls(res.data.data.dataList,res.data.data.templateHtml)
});

10
src/views/distribution/stockup/distributionStockupDetailsSelf.vue

@ -1348,10 +1348,10 @@ export default {
ids: checkcode.join(','),
type: '2',
};
this.html = '';
getPrintDetail(qr).then(res => {
console.log(',./');
this.dialogVisible = true;
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
} else if (type == '2') {
@ -1367,11 +1367,11 @@ export default {
type: '3',
};
console.log('><><>>', qr);
this.html = '';
//
getPrintDetail(qr).then(res => {
// console.log(",./");
this.dialogVisible = true;
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
}
@ -1395,10 +1395,10 @@ export default {
ids: checkcode.join(','),
type: '2',
};
this.html = '';
getPrintDetail(qr).then(res => {
console.log(',./');
this.dialogVisible = true;
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
} else if (type == '2') {
@ -1436,11 +1436,11 @@ export default {
//
handlePrintDetail(row) {
console.log('单个答应》》》', row);
this.html = '';
row.type = '1';
getPrintDetail(row).then(res => {
console.log(',./');
this.dialogVisible = true;
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
},
@ -1490,10 +1490,10 @@ export default {
let qr = {
ids: row.id,
};
this.html = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
console.log(res.data);
this.html = '';
this.html = this.getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});

12
src/views/mail/order/add.vue

@ -1069,7 +1069,7 @@
sortable: true,
},
{
prop: 'unpack',
prop: 'unpackName',
label: '拆包状态',
type: 1,
values: '',
@ -2074,6 +2074,11 @@
inventoryList.records.forEach(item => {
item.reservationNum = '0';
item.applyNum = item.quantityStock - item.quantityOccupied;
if (item.unpack){
item.unpackName = '是'
}else {
item.unpackName = '否'
}
});
this.page.total = inventoryList.total;
console.log('res :>> ', res);
@ -2367,6 +2372,11 @@
const inventoryList = res.data.data;
inventoryList.records.forEach(item => {
item.reservationNum = '0';
if (item.unpack){
item.unpackName = '是'
}else {
item.unpackName = '否'
}
});
this.page.total = inventoryList.total;
this.inventoryInfo = inventoryList.records;

4
src/views/mail/reservation/list.vue

@ -1446,12 +1446,12 @@ export default {
return;
}
const ids = this.selectionList.map(item => item.id);
this.html = '';
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);
});
@ -1463,12 +1463,12 @@ export default {
* 单独打印
*/
async printData(rowData) {
this.html = '';
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);
});

4
src/views/waybill/TemporaryStorageList.vue

@ -601,11 +601,11 @@ const printOrder = ({ row }) => {
let qr = {
ids: row.id,
};
html.value = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
html.value = '';
html.value = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};
@ -615,11 +615,11 @@ const batchPrintOrder = ({ row }) => {
let qr = {
ids: row.id,
};
html.value = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
html.value = '';
html.value = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};

9
src/views/waybill/orderPackageList.vue

@ -468,6 +468,7 @@ const details = reactive<any>({
/** 列表Dom节点 */
listNode: '',
form: {},
html: '',
});
const {
@ -716,12 +717,12 @@ const printOrder = ({ row }) => {
let qr = {
ids: row.id,
};
details.html = '';
showOrderPackgeCode(qr).then(res => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
this.html = '';
this.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};
@ -734,8 +735,8 @@ const batchPrintOrder = ({ row }) => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
this.html = '';
this.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
details.html = '';
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};

8
src/views/waybill/orderPackageListDetails.vue

@ -697,8 +697,8 @@ const printOrder = ({ row }) => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
this.html = '';
this.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
details.html = '';
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};
@ -711,8 +711,8 @@ const batchPrintOrder = ({ row }) => {
// this.orderPackageCode = res.data
if (res.data.code !== 200) return;
console.log(res.data);
this.html = '';
this.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
details.html = '';
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};

Loading…
Cancel
Save