Browse Source

修复部分bug

pre-production
qb 9 months ago
parent
commit
340bf617e6
  1. 27
      src/api/distribution/directMerchantSign.js
  2. 10
      src/option/distribution/TripartiteTransfer.js
  3. 23
      src/option/distribution/VehicleArrivalManagement.js
  4. 26
      src/option/distribution/VehicleStowage.js
  5. 154
      src/option/distribution/directMerchantSign.js
  6. 22
      src/views/distribution/artery/AddVehicleStowage.vue
  7. 1
      src/views/distribution/artery/TripartiteTransfer.vue
  8. 87
      src/views/distribution/artery/VehicleArrivalManagement.vue
  9. 8
      src/views/distribution/artery/VehicleStowage.vue
  10. 438
      src/views/distribution/artery/directMerchantSign.vue
  11. 46
      src/views/distribution/artery/truckLoadingDetails.vue
  12. 2
      src/views/distribution/inventory/BookingNote.vue
  13. 2
      src/views/distribution/inventory/CreateOrder.vue
  14. 2
      src/views/waybill/CreateZeroOrder.vue
  15. 2
      src/views/waybill/WaybillOrderList.vue
  16. 59
      src/views/waybill/orderPackageList.vue
  17. 1756
      src/views/wel/index.vue
  18. 248
      src/views/wel/index1.vue
  19. 1459
      src/views/wel/index2.vue

27
src/api/distribution/directMerchantSign.js

@ -0,0 +1,27 @@
import request from '@/axios';
/**
* 直发商家签收列表
* @param {*} data
* @returns
*/
export const postFindSignOrderPageList = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/findSignOrderPageList',
method: 'post',
data,
});
};
/**
* 直发商家签收列表
* @param {*} data
* @returns
*/
export const postFindSignPhotoList = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/findSignPhotoList',
method: 'post',
data,
});
};

10
src/option/distribution/TripartiteTransfer.js

@ -338,6 +338,16 @@ export const detailsColumnList = [
fixed: false,
sortable: true,
},
{
prop: 'destinationWarehouseName',
label: '运单目的仓',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'scanStatusName',
label: '装卸状态',

23
src/option/distribution/VehicleArrivalManagement.js

@ -99,16 +99,19 @@ export const columnList = [
// fixed: false,
// sortable: true,
// },
// {
// prop: 'endTime',
// label: '直发商家',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'isCustomerName',
label: '是否直发商家',
type: 6,
values: '',
width: '130',
checkarr: [
{ label: '是', value: '1' },
{ label: '否', value: '2' },
],
fixed: false,
sortable: true,
},
// {
// prop: 'planVolume',
// label: '类型',

26
src/option/distribution/VehicleStowage.js

@ -99,19 +99,19 @@ export const columnList = [
// fixed: false,
// sortable: true,
// },
// {
// prop: 'isCustomerName',
// label: '是否直发商家',
// type: 6,
// values: '',
// width: '130',
// checkarr: [
// { label: '是', value: '1' },
// { label: '否', value: '2' },
// ],
// fixed: false,
// sortable: true,
// },
{
prop: 'isCustomerName',
label: '是否直发商家',
type: 6,
values: '',
width: '130',
checkarr: [
{ label: '是', value: '1' },
{ label: '否', value: '2' },
],
fixed: false,
sortable: true,
},
// {
// prop: 'planVolume',
// label: '类型',

154
src/option/distribution/directMerchantSign.js

@ -0,0 +1,154 @@
/** 签收列表 */
export const columnList = [
{
prop: '',
label: '复选框',
type: 0,
width: 55,
fixed: true,
},
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'carsNo',
label: '车次号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'loadSignCode',
label: '签收号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'belongToWarehouseName',
label: '归属仓库',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'mallName',
label: '商场名称',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'mallPerson',
label: '商场联系人',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'mallMobile',
label: '商场电话',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'mallAddress',
label: '商场地址',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'driverName',
label: '司机名称',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'planNum',
label: '计划数',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'loadingNum',
label: '装车数',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'signNum',
label: '签收数',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'signStatusName',
label: '签收状态',
type: 14,
values: '',
width: '130',
checkarr: [
{ label: '未签收', value: '0' },
{ label: '部分签收', value: '10' },
{ label: '已签收', value: '20' },
],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '操作',
type: 6,
values: '',
width: '200',
checkarr: [],
fixed: 'right',
sortable: false,
},
];

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

@ -27,7 +27,15 @@
</div>
<!-- 控件 -->
<div v-if="Number(details.pageType) !== 3">
<div
v-if="
Number(details.pageType) === 3
? false
: Number(details.pageType) === 2
? index > details.active
: true
"
>
<!-- 删除节点 -->
<el-button
icon="Delete"
@ -285,7 +293,12 @@
:precision="2"
:min="0"
:step="1"
:disabled="slotProps.scope.row.blackList.includes(slotProps.scope.column.property)"
:disabled="
Number(details.pageType) === 1
? slotProps.scope.row.blackList.includes(slotProps.scope.column.property)
: slotProps.scope.row.index < details.active ||
slotProps.scope.row.blackList.includes(slotProps.scope.column.property)
"
:value-on-clear="0"
@change="handleComputedNum"
v-model.lazy="slotProps.scope.row[slotProps.scope.column.property]"
@ -1013,6 +1026,7 @@ const onLoad = async () => {
details.pageInfo = data;
details.nodeInfoData = [
{
index: 1,
nodeName: data.startWarehouseInfo.warehouseName,
nodeId: data.startWarehouseInfo.warehouseId,
linkMan: data.startWarehouseInfo.linkMan,
@ -1038,6 +1052,7 @@ const onLoad = async () => {
details.nodeInfoData = handleEditForbidden(
data.allCarsLineList.map((val, index) => {
const _node = {
index,
...val,
//
query: {},
@ -1388,6 +1403,7 @@ const handleAddNode = async (index: number) => {
}
details.nodeInfoData.splice(index + 1, 0, {
index: index + 1,
//
query: {},
//
@ -1877,6 +1893,8 @@ const nodeCostSubmit = async () => {
/** 提交 */
const handleSubmit = (formEl: FormInstance | undefined) => {
if (details.nodeInfoData.length <= 1) return ElMessage.warning('最少存在一个目的仓');
if (btnLoadingObj.submitBtn) return;
if (!formEl) return;
formEl.validate((valid, fields) => {

1
src/views/distribution/artery/TripartiteTransfer.vue

@ -202,6 +202,7 @@
<!-- 结算 -->
<el-text
v-if="
slotProps.scope.row.signTime &&
permissionObj.TripartiteTransfer_Account &&
Number(slotProps.scope.row.isSettlement) === 1
"

87
src/views/distribution/artery/VehicleArrivalManagement.vue

@ -258,6 +258,14 @@
<el-tag type="danger">{{ slotProps.scope.row.loadStatusName }}</el-tag>
</template>
<template v-else-if="slotProps.scope.column.label === '是否直发商家'">
<el-tag
v-if="slotProps.scope.row.isCustomer"
:class="slotProps.scope.row.isCustomer === '1' ? 'green' : 'red'"
>{{ slotProps.scope.row.isCustomerName }}</el-tag
>
</template>
<template
v-else-if="
slotProps.scope.column.label === '操作' &&
@ -275,20 +283,14 @@
<el-text
v-if="
permissionObj.VehicleArrivalManagement_edit &&
(Mydata.id === slotProps.scope.row.nowWarehouseId ||
Number(slotProps.scope.row.loadStatus) !== 40)
Mydata.id === slotProps.scope.row.nowWarehouseId &&
Number(slotProps.scope.row.loadStatus) === 20
"
@click="handleEditStowage(slotProps.scope)"
>编辑
</el-text>
<el-dropdown
v-if="
Mydata.id === slotProps.scope.row.nowWarehouseId &&
Number(slotProps.scope.row.loadingType) === 1 &&
Number(slotProps.scope.row.loadStatus) === 20
"
>
<el-dropdown v-if="Number(slotProps.scope.row.loadStatus) !== 0">
<span class="el-dropdown-link">
<el-text>
更多 <el-icon class="el-icon--right"><arrow-down /></el-icon
@ -296,11 +298,21 @@
</span>
<template #dropdown>
<el-dropdown-menu>
<!-- <el-dropdown-item v-if="Mydata.id === slotProps.scope.row.nowWarehouseId">
<el-dropdown-item
v-if="
Mydata.id === slotProps.scope.row.nowWarehouseId &&
Number(slotProps.scope.row.loadStatus) === 20
"
>
<el-text @click="handleNodeCost(slotProps.scope)"> 节点费用 </el-text>
</el-dropdown-item>
<el-dropdown-item v-if="Mydata.id === slotProps.scope.row.nowWarehouseId">
<el-dropdown-item
v-if="
Mydata.id === slotProps.scope.row.nowWarehouseId &&
Number(slotProps.scope.row.loadStatus) === 20
"
>
<el-text @click="handleDirectGoMarketVesited(slotProps.scope)">
配置直发商家
</el-text>
@ -310,7 +322,7 @@
<el-text @click="handleDirectGoMarketDetails(slotProps.scope)">
签收详情
</el-text>
</el-dropdown-item> -->
</el-dropdown-item>
<!-- 手动装车 -->
<el-dropdown-item
@ -579,6 +591,7 @@ import {
setNodeHeight,
debounce,
handleClearTableQuery,
handleTranslationDataSeclect,
} from '@/utils/util';
import { columnList } from '@/option/distribution/VehicleArrivalManagement';
import { packageColumnList } from '@/option/distribution/VehicleStowage';
@ -599,11 +612,12 @@ import {
postFindLoadingListData,
postFindWarehouseUnloadReport,
} from '@/api/distribution/VehicleStowage';
import { useRouter } from 'vue-router';
import { useRouter, useRoute } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
//
const $router = useRouter();
const $route = useRoute();
const $store = useStore();
@ -811,12 +825,13 @@ const onLoad = debounce(async (params = {}) => {
if (code !== 200) return;
details.data = data.records;
//
const codes = details.carsStatus.map(val => val.value);
for (let item of details.data) {
const _index = codes.indexOf(Number(item.loadStatus));
item.loadStatusName = _index !== -1 ? details.carsStatus[_index].label : '未知';
item.NumberOfPiecesInTheCar = item.realLoadingNumber - item.unloadNumber;
}
// const codes = details.carsStatus.map(val => val.value);
// for (let item of details.data) {
// const _index = codes.indexOf(Number(item.loadStatus));
// item.loadStatusName = _index !== -1 ? details.carsStatus[_index].label : '';
// item.NumberOfPiecesInTheCar = item.realLoadingNumber - item.unloadNumber;
// }
handleTranslationDataSeclect(details.data, details.columnList);
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
@ -1400,6 +1415,40 @@ const handleShowUnloadReport = async () => {
details.loadingObj.pageLoading = false;
}
};
/** 节点费用 */
const handleNodeCost = ({ row }) => {
$store.commit('DEL_ONCE_TAG', '/distribution/artery/AddVehicleStowage');
$router.push({
path: '/distribution/artery/AddVehicleStowage',
query: { name: '节点费用更改', type: 3, loadId: row.id },
});
};
/** 配置直发商家弹窗显示 */
const handleDirectGoMarketVesited = ({ row }) => {
$router.push({
path: '/distribution/artery/directGoMarket',
query: {
loadId: row.id,
name: row.carsNo + '--' + '配置直发商家',
backPath: $route.fullPath,
},
});
};
/** 直发商家签收详情 */
const handleDirectGoMarketDetails = ({ row }) => {
$router.push({
path: '/distribution/artery/directGoMarketDetails',
query: {
loadId: row.id,
name: row.carsNo + '--' + '签收详情',
backPath: $route.fullPath,
},
});
};
</script>
<style scoped lang="scss">

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

@ -232,6 +232,7 @@
v-if="
permissionObj.VehicleStowage_zeroAdditionalRecording &&
Mydata.id === slotProps.scope.row.nowWarehouseId &&
Number(slotProps.scope.row.loadStatus) === 0 &&
Number(slotProps.scope.row.loadingType) === 1
"
@click="handleShowzeroAdditionalRecording(slotProps.scope)"
@ -269,7 +270,12 @@
<template #dropdown>
<el-dropdown-menu>
<!-- 节点费用 -->
<el-dropdown-item v-if="permissionObj.VehicleStowage_nodeCost">
<el-dropdown-item
v-if="
permissionObj.VehicleStowage_nodeCost &&
Number(slotProps.scope.row.loadStatus) === 0
"
>
<el-text @click="handleNodeCost(slotProps.scope)"> 节点费用 </el-text>
</el-dropdown-item>

438
src/views/distribution/artery/directMerchantSign.vue

@ -0,0 +1,438 @@
<template>
<basic-container v-loading="details.loadingObj.pageLoading">
<div class="avue-crud">
<!-- 搜索模块 -->
<div v-h5uShow="search">
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="header_search" label-width="100px">
<!-- 查询按钮 -->
<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>
</div>
<!-- 控件模块 -->
<el-row>
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div></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="Search" @click="searchHide" circle></el-button>
</div>
</div>
</el-row>
<!-- 表格 -->
<!-- 列表模块 -->
<tablecmt
:columnList="details.columnList"
:tableData="details.packageListData"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '签收状态'">
<el-tag
:class="{
err: Number(slotProps.scope.row.signStatus) === 0,
sub: Number(slotProps.scope.row.signStatus) === 10,
primary: Number(slotProps.scope.row.signStatus) === 20,
}"
>
{{ slotProps.scope.row.signStatusName }}
</el-tag>
</template>
<template v-else-if="slotProps.scope.column.label === '操作'">
<el-text
v-if="Number(slotProps.scope.row.signStatus) !== 0"
@click="() => handleShowSignImg(slotProps.scope)"
>
查看签收图片
</el-text>
</template>
</template>
</tablecmt>
<!-- 分页模块 -->
<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.pageNum"
: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>
<el-dialog
title="签收图片"
v-model="details.popUpShow.signImg"
width="50%"
append-to-body
:show-close="true"
class="signImg"
>
<div class="signImg_container">
<el-image
v-for="(item, index) in details.signImgList"
:key="item"
style="width: 100px; height: 100px"
:src="item"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="details.signImgList"
:initial-index="index"
fit="cover"
/>
</div>
</el-dialog>
<!-- 列表配置显示 -->
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="details.columnList"
v-model="details.columnList"
></edittablehead>
</template>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import functions from '@/utils/functions.js';
import dayjs from 'dayjs';
import { mapGetters, useStore } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import {
postFindSignOrderPageList,
postFindSignPhotoList,
} from '@/api/distribution/directMerchantSign.js';
import {
downloadXls,
setNodeHeight,
getHtmls,
deepClone,
getObjType,
handleTranslationDataSeclect,
handleClearTableQuery,
handleSelectQuery,
handleInputQuery,
} from '@/utils/util';
import { columnList } from '@/option/distribution/directMerchantSign.js';
import { flowNodeColumnList } from '@/option/waybill/orderPackageListDetails.js';
import { useRouter } from 'vue-router';
import print from '@/utils/print';
import { ElMessage, ElMessageBox } from 'element-plus';
//
const $router = useRouter();
const $store = useStore();
const details = reactive<any>({
/** 是否开启搜索 */
search: false,
/** 表格搜索条件 */
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: [],
/** 包明细表头 */
columnList: deepClone(columnList),
/** 包明细数据 */
packageListData: [],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
list: false,
/** 页面loading */
pageLoading: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
/** 是否显示设置表格 */
drawerShow: false,
/** 分页参数 */
page: {
pageNum: 1,
pageSize: 30,
total: 0,
},
/** 弹出层显示 */
popUpShow: {
signImg: false,
},
/** 列表Dom节点 */
listNode: '',
html: '',
signImgList: [],
});
const {
search,
query,
shortcuts,
stockupDate,
data,
loadingObj,
selectionList,
drawerShow,
page,
trickleLoadingPage,
zeroAdditionalRecordingInfo,
popUpShow,
} = toRefs(details);
/** vuex */
const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList']));
console.log('permission :>> ', permission);
/** 权限按钮 */
const permissionObj = reactive({});
onMounted(() => {
const timer = setTimeout(() => {
details.listNode = document.querySelector('.maboxhi');
details.listNode.style.transition = 'all .5s ease-out';
clearTimeout(timer);
}, 100);
});
/** 请求页面数据 */
const onLoad = async (params = {}) => {
try {
// if (Object.keys(details.query).length === 0) return (details.packageListData = []);
details.loadingObj.list = true;
const submitData = { ...details.page, ...details.query, ...params };
//
if (
getObjType(details.query.createTimeArr) === 'array' &&
details.query.createTimeArr.length > 0
) {
submitData.createTimeStartStr = details.query.createTimeArr[0];
submitData.createTimeEndStr = details.query.createTimeArr[1];
}
delete submitData.createTimeArr;
const res = await postFindSignOrderPageList(submitData);
const { code, data } = res.data;
if (code !== 200) return;
details.packageListData = data.records;
details.page.total = data.total;
handleTranslationDataSeclect(details.packageListData, details.columnList);
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.list = false;
}
};
onLoad();
/** 搜索 */
const searchChange = () => {
onLoad();
};
/** 清空表单 */
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.pageNum = 1;
handleClearTableQuery(details.columnList);
onLoad();
};
/** 展开列表控件 */
const showdrawer = (_flag?: boolean) => {
details.drawerShow = _flag;
};
/** 是否开启搜索区 */
const searchHide = () => {
details.search = !details.search;
setNodeHeight(details.listNode, '', true);
};
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
handleInputQuery(index, row, details.query);
onLoad();
};
/** 表格表头时间选择 */
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();
};
/** 表格表头输入框搜索 */
const btnsc = () => {};
/** 表格表头下拉框选择 */
const selectsc = (index, row) => {
handleSelectQuery(index, row, details.query);
onLoad();
};
/** 表格表头复选框选择 */
const selectionChange = (list: any) => {
details.selectionList = list;
};
/** 每页数量改变执行的回调 */
const sizeChange = (pageSize: number) => {
details.page.pageSize = pageSize;
onLoad();
};
/** 页码改变执行的回调 */
const currentChange = pageNum => {
details.page.pageNum = pageNum;
onLoad();
};
/**
* 设置列表 -- 固定函数
* 弹窗的勾选回调用于更改头部数组
* 固定搭配只需要更换 columnList
* */
const setnewcolum = (newarr, headarr, type) => {
if (type == 1) {
details.columnList = newarr;
functions.setStorage(window.location.pathname + 'checkList', headarr);
} else if (type == 2) {
details.columnList = newarr;
functions.setStorage(window.location.pathname + 'flexList', headarr);
} else if (type == 3) {
details.columnList = newarr;
functions.setStorage(window.location.pathname + 'sortlist', headarr);
}
};
/** 查看签收图片 */
const handleShowSignImg = async ({ row }) => {
try {
details.loadingObj.pageLoading = true;
const submitData = {
signOrderId: row.id,
};
const res = await postFindSignPhotoList(submitData);
const { code, data } = res.data;
if (code !== 200) return;
details.signImgList = data || [];
if (details.signImgList.length === 0) return ElMessage.warning('暂无签收图片');
details.popUpShow.signImg = true;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLoading = false;
}
};
</script>
<style scoped lang="scss">
//
:deep(.el-date-editor.el-input) {
height: 100% !important;
width: 100% !important;
}
:deep(.el-range-editor.el-input__wrapper) {
height: 100% !important;
}
:deep(.el-tag) {
&.err {
background-color: #f8544b;
border-color: #f8544b;
color: #fff;
}
&.primary {
background-color: #0086f1;
border-color: #0086f1;
color: #fff;
}
&.sub {
background-color: #d3832a;
border-color: #d3832a;
color: #fff;
}
}
//
.signImg_container {
display: flex;
flex-wrap: wrap;
}
</style>

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

@ -129,6 +129,9 @@
>
零担卸车
</el-text>
<!-- 零担二维码 -->
<el-text @click="() => printOrderByZero(slotProps.scope)">零担二维码</el-text>
</template>
<!-- 包件 -->
@ -246,6 +249,7 @@ import {
postLoadingDetailExport,
} from '@/api/distribution/truckLoadingDetails';
import { getShowAdvancePackgeCode } from '@/api/waybill/orderPackageListDetails';
import { postShowOrderCode } from '@/api/distribution/distributionStockArticle';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import {
@ -1152,20 +1156,46 @@ const printOrder = async ({ row }) => {
}
};
/** 查看零担零担码 */
const printOrderByZero = async ({ row }) => {
try {
details.loadingObj.pageLoading = true;
let ids = {
ids: row.id,
};
const res = await postShowOrderCode(ids);
if (res.data.code !== 200) return;
details.popUpShow.QRCodeVisible = true;
console.log(res.data);
details.html = '';
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLoading = false;
}
};
/** 批量查看二维码 */
const handleBatchBarcode = async () => {
if (details.selectionList.length === 0)
return ElMessage.warning({ message: '请选择需要查看的数据' });
const _arr = [];
const _zeroArr = [];
for (const iterator of details.selectionList) {
if (Number(iterator.type) === 1) _arr.push(iterator);
else _zeroArr.push(iterator);
}
tableNodeRef.value.handleClearSelect();
tableNodeRef.value.handleCheckSelect(_arr);
// tableNodeRef.value.handleClearSelect();
// tableNodeRef.value.handleCheckSelect(_arr);
if (_arr.length === 0) return ElMessage.warning('零担无法查看二维码');
// if (_arr.length === 0) return ElMessage.warning('');
try {
details.loadingObj.pageLoading = true;
@ -1174,13 +1204,19 @@ const handleBatchBarcode = async () => {
orderPackageCodes: _arr.map(val => val.scanCode).join(','),
};
const res = await getShowAdvancePackgeCode(qr);
const [res, zeroRes] = await Promise.all([
getShowAdvancePackgeCode(qr),
postShowOrderCode({ ids: _zeroArr.map(val => val.id).join(',') }),
]);
if (res.data.code !== 200) return;
// const res = await getShowAdvancePackgeCode(qr);
if (res.data.code !== 200 || zeroRes.data.code !== 200) return;
details.popUpShow.QRCodeVisible = true;
console.log(res.data);
details.html = '';
details.html = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
details.html += getHtmls(zeroRes.data.data.dataList, zeroRes.data.data.templateHtml);
} catch (error) {
console.log('error :>> ', error);
} finally {

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

@ -1840,7 +1840,7 @@ const handlePrint = async () => {
const res = await postPrintBatch({
ids: $route.query.id,
tempId: 15,
tempId: 16,
});
const { code, data } = res.data;

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

@ -3561,7 +3561,7 @@ const handlePrint = async () => {
const res = await postPrintBatch({
ids: details.waybillId,
tempId: 15,
tempId: 16,
});
const { code, data } = res.data;

2
src/views/waybill/CreateZeroOrder.vue

@ -3081,7 +3081,7 @@ const handlePrint = async () => {
const res = await postPrintBatch({
ids: details.waybillId,
tempId: 15,
tempId: 16,
});
const { code, data } = res.data;

2
src/views/waybill/WaybillOrderList.vue

@ -655,7 +655,7 @@ const batchPrint = async () => {
const res = await postPrintBatch({
ids: details.selectionList.map(val => val.id).join(','),
tempId: 15,
tempId: 16,
});
const { code, data } = res.data;

59
src/views/waybill/orderPackageList.vue

@ -833,12 +833,6 @@ const handleShowFlowNode = async ({ row }) => {
</script>
<style scoped lang="scss">
.fo-fl {
display: flex;
flex-wrap: wrap;
zoom: 0.9;
}
//
:deep(.el-date-editor.el-input) {
height: 100% !important;
@ -848,57 +842,4 @@ const handleShowFlowNode = async ({ row }) => {
: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;
}
}
}
</style>

1756
src/views/wel/index.vue

File diff suppressed because it is too large Load Diff

248
src/views/wel/index1.vue

@ -0,0 +1,248 @@
<template>
<div class="bx" v-if="indexState">
<div class="left">
<div class="tptitl">
<img src="./static/topicon.png" />
<span>发货操作</span>
</div>
<div class="onebx1">
<div class="item1">
<img src="./static/1.png" />
<span>提货</span>
</div>
<div class="item2">
<img src="./static/2.png" />
<span>预开单</span>
</div>
<div class="item3">
<img src="./static/3.png" />
<span>创建运单</span>
</div>
<div class="item4">
<img src="./static/4.png" />
<span>补录运单</span>
</div>
<div class="item5">
<img src="./static/5.png" />
<span>短驳发车</span>
</div>
<div class="item6">
<img src="./static/6.png" />
<span>外部中转</span>
</div>
<div class="item7">
<img src="./static/7.png" />
<span>库存管理</span>
</div>
<div class="item8">
<img src="./static/8.png" />
<span>车辆配载</span>
</div>
<img class="upimg" src="./static/up.png" />
<img class="rigth1" src="./static/rigth.png" />
<img class="rigth2" src="./static/rigth.png" />
<img class="rigth3" src="./static/rigth.png" />
<img class="rigth4" src="./static/rigth.png" />
<img class="rigthall" src="./static/rigthall.png" />
</div>
</div>
<div class="ztjk">
<img src="./static/9.png" />
<span>到货操作</span>
</div>
<div class="rigth">
<div class="tptitl">
<img src="./static/topicon.png" />
<span>到货操作</span>
</div>
<div class="onebx1">
<div class="item1">
<img src="./static/10.png" />
<span>到站卸车</span>
</div>
<div class="item2">
<img src="./static/11.png" />
<span>库存管理</span>
</div>
<div class="item3">
<img src="./static/12.png" />
<span>短驳接收</span>
</div>
<div class="item4">
<img src="./static/13.png" />
<span>外部中转</span>
</div>
<div class="item5">
<img src="./static/14.png" />
<span>送货</span>
</div>
<div class="item6">
<img src="./static/15.png" />
<span>中转签收</span>
</div>
<div class="item7">
<img src="./static/16.png" />
<span>送货签收</span>
</div>
<div class="item8">
<img src="./static/17.png" />
<span>自提签收</span>
</div>
<img class="upimg" src="./static/down.png" />
<img class="rigth1" src="./static/rigth.png" />
<img class="rigth2" src="./static/rigth.png" />
<img class="rigth3" src="./static/rigth.png" />
<img class="rigth4" src="./static/rigth.png" />
<img class="rigthall" src="./static/rigthall2.png" />
<img class="leftall" src="./static/leftall.png" />
</div>
</div>
<div class="buts">
<div class="tptitl">
<img src="./static/topicon.png" />
<span>回单管理</span>
</div>
<div class="onebx1">
<div class="item1">
<img src="./static/18.png" />
<span>回单回收</span>
</div>
<div class="item2">
<img src="./static/19.png" />
<span>回单寄出</span>
</div>
<div class="item3">
<img src="./static/20.png" />
<span>回单接收</span>
</div>
<div class="item4">
<img src="./static/21.png" />
<span>回单发放</span>
</div>
<img class="left1" src="./static/rigth.png" />
<img class="left2" src="./static/rigth.png" />
<img class="left3" src="./static/rigth.png" />
</div>
</div>
<div class="el-gl">
<div>公告栏</div>
</div>
</div>
<div v-else class="el_Hwlogo">
<div class="content">
<img src="/public/img/p-logo.png" alt="" />
<div class="info">
<div class="name">{{ name }}</div>
<div class="slogan">您好欢迎使用货无忧</div>
<div class="title">成都数联物科信息技术有限公司</div>
<div class="time">{{ currentTime }}</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
const indexState = ref(false);
const currentTime = ref('0000年00月00日00时00分00秒');
const name = ref('');
name.value = JSON.parse(localStorage.getItem('TWMS-userInfo')).content.real_name;
setInterval(() => {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
currentTime.value = `${year}${month}${day}${hours}${minutes}${seconds}`;
}, 1000);
</script>
<style scoped lang="scss">
.info {
display: flex;
display: flex;
flex-direction: column;
justify-content: center;
.name {
font-size: 40px;
color: #d3832a;
font-weight: bold;
}
.slogan {
font-size: 3em;
}
.time {
display: flex;
margin-top: 10px;
justify-content: flex-end;
}
.title {
display: flex;
margin-top: 10px;
justify-content: flex-end;
}
}
.el_Hwlogo {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
span {
color: #d3832a;
}
img {
width: 300px;
height: 300px;
}
.content {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
justify-content: center;
}
}
.el-gl {
font-weight: 500;
text-align: center;
position: absolute;
right: 10px;
top: 10px;
width: 15%;
background-color: #fff;
border-radius: 32px;
padding: 5px;
box-sizing: border-box;
border: 1px solid #f1eeee69;
box-shadow: 4px 6px 0 #d3dff6, 1px 1px 9px #d3dff6;
height: 762px;
}
</style>
<style lang="scss" scope>
@import '../../styles/flowStyle.scss';
#avue-view {
background-color: #fff;
}
</style>
<script>
import { mapGetters } from 'vuex';
export default {
name: 'wel',
data() {
return {
activeNames: ['1', '2', '3', '5'],
logActiveNames: ['29'],
};
},
computed: {
...mapGetters(['userInfo']),
},
methods: {
handleChange(val) {
window.console.log(val);
},
},
};
</script>

1459
src/views/wel/index2.vue

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save