Browse Source

新增提货单下拉组件

master
qb 1 year ago
parent
commit
6455e3aed8
  1. 45
      src/api/distribution/CreateOrder.js
  2. 25
      src/api/waybill/EditCustomerInfo.js
  3. 27
      src/api/waybill/TemporaryStorageList.js
  4. 20
      src/api/waybill/orderPackageListDetails.js
  5. 121
      src/components/SelectBox/SelectBox.vue
  6. 98
      src/components/SelectComponent/SelectComponent.vue
  7. 20
      src/main.js
  8. 40
      src/option/waybill/EditCustomerInfo.js
  9. 76
      src/option/waybill/FreezeOrder.js
  10. 56
      src/option/waybill/TemporaryStorageList.js
  11. 528
      src/option/waybill/orderPackageListDetails.js
  12. 16
      src/router/views/index.js
  13. 2
      src/utils/util.js
  14. 197
      src/views/distribution/inventory/CreateOrder.vue
  15. 182
      src/views/waybill/EditCustomerInfo.vue
  16. 88
      src/views/waybill/FreezeOrder.vue
  17. 230
      src/views/waybill/TemporaryStorageList.vue
  18. 824
      src/views/waybill/orderPackageListDetails.vue

45
src/api/distribution/CreateOrder.js

@ -0,0 +1,45 @@
import request from '@/axios';
/**
* 暂存单转运单信息查询
*/
export const postOpenOrderAdvanceToWaybillInfo = data => {
return request({
url: '/api/logpm-trunkline/openOrder/advanceToWaybillInfo',
method: 'post',
data,
});
};
/**
* 开单接口
*/
export const postOpenOrderOpenWaybill = data => {
return request({
url: '/api/logpm-trunkline/openOrder/openWaybill',
method: 'post',
data,
});
};
/**
* 录单接口
*/
export const postOpenOrderOpenZeroWaybill = data => {
return request({
url: '/api/logpm-trunkline/openOrder/openZeroWaybill',
method: 'post',
data,
});
};
/**
* 录单信息查询接口
*/
export const postOpenOrderOpenZeroWaybillInfo = data => {
return request({
url: '/api/logpm-trunkline/openOrder/openZeroWaybillInfo',
method: 'post',
data,
});
};

25
src/api/waybill/EditCustomerInfo.js

@ -0,0 +1,25 @@
import request from '@/axios';
/**
* 获取暂存单列表数据
* @returns
*/
export const postOpenOrderAdvancePageList = data => {
return request({
url: '/api/logpm-trunkline/openOrder/findCustomerInfoList',
method: 'post',
data,
});
};
/**
* 修改客户信息
* @returns
*/
export const postUpdateCustomerInfo = data => {
return request({
url: '/api/logpm-trunkline/openOrder/updateCustomerInfo',
method: 'post',
data,
});
};

27
src/api/waybill/TemporaryStorageList.js

@ -10,10 +10,33 @@ import request from '@/axios';
export const getopenOrderAdvancePageList = (page, params) => {
return request({
url: '/api/logpm-trunkline/openOrder/advancePageList',
method: 'get',
params: {
method: 'post',
data: {
...params,
...page,
},
});
};
/**
* 通过暂存单id冻结
*/
export const postOpenOrderFreezeByAdvanceIds = data => {
return request({
url: '/api/logpm-trunkline/openOrder/freezeByAdvanceIds',
method: 'post',
data,
});
};
/**
* 通过暂存单id删除暂存单
*/
export const postOpenOrderDeletedAdvance = data => {
return request({
url: '/api/logpm-trunkline/openOrder/deletedAdvance',
method: 'post',
data,
});
};

20
src/api/waybill/orderPackageListDetails.js

@ -0,0 +1,20 @@
import request from '@/axios';
/**
* 获取暂存单列表数据
* @param {number} current
* @param {number} size
* @param {*} params
* @returns
*/
export const getopenOrderFindAdvanceDetailList = (page, params) => {
return request({
url: '/api/logpm-trunkline/openOrder/findAdvanceDetailList',
method: 'post',
data: {
...params,
...page,
},
});
};

121
src/components/SelectBox/SelectBox.vue

@ -0,0 +1,121 @@
<template>
<div class="selectBox">
<el-input
@focus="handleFocus"
@input="handleInput"
v-model="inputValue"
:placeholder="props.placeholder"
></el-input>
<div class="selectContainer" v-if="isShowBox">
<div class="content">
<SelectComponent :handleShow="handleShow" :handleClose="handleClose"
><slot></slot>
</SelectComponent>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import SelectComponent from '@/components/SelectComponent/SelectComponent.vue';
import { ref, onMounted, defineExpose, onUnmounted, defineProps, defineEmits } from 'vue';
const query = ref({ serviceNumber: '' });
const isShowBox = ref(false);
const _bodyNode = ref<any>('');
const inputValue = ref('');
const props = defineProps(['modelValue', 'placeholder']);
inputValue.value = props.modelValue;
const $emit = defineEmits(['update:modelValue']);
const handleShow = () => {
isShowBox.value = true;
};
const handleClose = () => {
isShowBox.value = false;
};
const handleFocus = () => {
isShowBox.value = true;
};
const handleInput = () => {
$emit('update:modelValue', inputValue.value);
};
defineExpose({ handleShow });
</script>
<style lang="scss" scoped>
.selectBox {
width: 100%;
position: relative;
text-align: center;
.selectContainer {
position: absolute;
width: 100%;
box-sizing: border-box;
padding: 10px;
line-height: normal;
top: 120%;
left: 0;
z-index: 999;
background: #fff;
border-radius: 3px;
box-shadow: 0px 0px 0.625vw rgba(0, 0, 0, 0.12);
max-height: 200px;
// transition: all 0.3s ease-in-out;
animation: dow 0.5s ease-in-out;
&::before {
content: '';
display: block;
width: 10px;
height: 10px;
background: #fff;
margin: 0 auto;
position: absolute;
top: -5px;
left: 50%;
transform: translateX(-50%) rotate(45deg);
z-index: 1000;
}
.content {
overflow: auto;
}
}
}
@keyframes dow {
0% {
display: none;
opacity: 0;
transform: translateY(-100%);
}
1% {
display: block;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.selectBox-show {
animation: dow 0.3s ease-in-out;
}
.selectBox-hide {
animation: dow 0.3s ease-in-out reverse;
}
</style>

98
src/components/SelectComponent/SelectComponent.vue

@ -0,0 +1,98 @@
<template>
<div class="selectBox">
<slot></slot>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted, onUnmounted } from 'vue';
const _bodyNode = ref<any>('');
const props = defineProps(['handleShow', 'handleClose']);
const addFn = e => {
console.log('e.target.className :>> ', e.target.className);
if (e.target.className === 'selectBox' || e.target.className === 'el-input__inner')
props.handleShow();
else props.handleClose();
};
onMounted(() => {
_bodyNode.value = document.querySelector('body');
console.log('_bodyNode :>> ', _bodyNode);
_bodyNode.value.addEventListener('click', addFn, false);
});
onUnmounted(() => {
_bodyNode.value.removeEventListener('click', addFn);
});
</script>
<style lang="scss" scoped>
.selectBox {
width: 100%;
position: relative;
text-align: center;
.selectContainer {
position: absolute;
width: 100%;
box-sizing: border-box;
padding: 10px;
line-height: normal;
top: 120%;
left: 0;
z-index: 999;
background: #fff;
border-radius: 3px;
box-shadow: 0px 0px 0.625vw rgba(0, 0, 0, 0.12);
max-height: 200px;
// transition: all 0.3s ease-in-out;
animation: dow 0.5s ease-in-out;
&::before {
content: '';
display: block;
width: 10px;
height: 10px;
background: #fff;
margin: 0 auto;
position: absolute;
top: -5px;
left: 50%;
transform: translateX(-50%) rotate(45deg);
z-index: 1000;
}
.content {
overflow: auto;
}
}
}
@keyframes dow {
0% {
display: none;
opacity: 0;
transform: translateY(-100%);
}
1% {
display: block;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.selectBox-show {
animation: dow 0.3s ease-in-out;
}
.selectBox-hide {
animation: dow 0.3s ease-in-out reverse;
}
</style>

20
src/main.js

@ -11,9 +11,9 @@ import ElementPlus from 'element-plus';
import Avue from '@smallwei/avue';
import '@smallwei/avue/lib/index.css';
import crudCommon from '@/mixins/crud.js';
import globalc from '@/api/basicdata/globalc.js'
import { getScreen,getHtmls } from './utils/util';
import functions from './utils/functions'
import globalc from '@/api/basicdata/globalc.js';
import { getScreen, getHtmls } from './utils/util';
import functions from './utils/functions';
import './permission';
import error from './error';
import avueUeditor from 'avue-plugin-ueditor';
@ -23,18 +23,18 @@ import thirdRegister from './components/third-register/main.vue';
import NfDesignBase from '@saber/nf-design-base-elp';
import flowDesign from './components/flow-design/main.vue';
import tablecmt from './components/tablecmt/tablecmt.vue';
import SelectBox from './components/SelectBox/SelectBox.vue';
import edittablehead from './components/edittablehead/index.vue';
import App from './App.vue';
import 'animate.css';
import dayjs from 'dayjs';
import 'styles/common.scss';
// import './styles/custom-theme.scss'
import './styles/index.scss'
import './styles/custom-theme.scss'
import './styles/index.scss';
import './styles/custom-theme.scss';
// 业务组件
import tenantPackage from './views/system/tenantpackage.vue';
window.$crudCommon = crudCommon;
window.axios = axios;
const app = createApp(App);
@ -48,9 +48,10 @@ app.component('flowDesign', flowDesign);
app.component('tenantPackage', tenantPackage);
app.component('tablecmt', tablecmt);
app.component('edittablehead', edittablehead);
app.component('SelectBox', SelectBox);
app.config.globalProperties.$dayjs = dayjs;
app.config.globalProperties.$functions = functions;
app.provide('functions',functions)
app.provide('functions', functions);
app.config.globalProperties.$globalc = globalc;
app.config.globalProperties.website = website;
app.config.globalProperties.getScreen = getScreen;
@ -58,9 +59,6 @@ app.config.globalProperties.getHtmls = getHtmls;
app.use(error);
app.use(i18n);
app.use(store);
app.use(router);
app.use(ElementPlus, {
@ -71,6 +69,6 @@ app.use(Avue, {
calcHeight: 10,
locale: messages[language],
});
app.use(avueUeditor, { axios })
app.use(avueUeditor, { axios });
app.use(NfDesignBase);
app.mount('#app');

40
src/option/waybill/EditCustomerInfo.js

@ -0,0 +1,40 @@
export const columnList = [
{
prop: '',
label: '序号',
type: 12,
values: '',
width: '55',
fixed: true,
},
{
prop: 'customerName',
label: '客户姓名',
type: 1,
values: '',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'customerPhone',
label: '联系电话',
type: 1,
values: '',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'customerAddress',
label: '用户地址',
type: 1,
values: '',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
];

76
src/option/waybill/FreezeOrder.js

@ -15,7 +15,7 @@ export const columnList = [
fixed: true,
},
{
prop: 'billladingCode',
prop: 'orderCode',
label: '订单自编号',
type: 2,
values: '',
@ -25,20 +25,20 @@ export const columnList = [
sortable: true,
head: false,
},
{
prop: 'carNumber',
label: '汇通商场',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'driverName',
// {
// prop: 'carNumber',
// label: '汇通商场',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'dealerName',
label: '商场名称',
type: 2,
type: 1,
values: '',
width: '130',
checkarr: [],
@ -46,9 +46,9 @@ export const columnList = [
sortable: true,
},
{
prop: 'driverPhone',
prop: 'storeName',
label: '门店名称',
type: 2,
type: 1,
values: '',
width: '130',
checkarr: [],
@ -56,9 +56,9 @@ export const columnList = [
sortable: true,
},
{
prop: 'warehouseName',
prop: 'siteName',
label: '基地',
type: 2,
type: 1,
values: '',
width: '130',
checkarr: [],
@ -68,15 +68,15 @@ export const columnList = [
{
prop: 'lineNameTitle',
label: '干仓配',
type: 3,
type: 1,
values: '',
width: '130',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'nodeNub',
prop: 'totalNum',
label: '数量',
type: 1,
values: '',
@ -86,7 +86,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'startTime',
prop: 'trainNumber',
label: '客户车次',
type: 1,
values: '',
@ -96,7 +96,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'endTime',
prop: 'legacyStatus',
label: '遗留',
type: 3,
values: '',
@ -106,9 +106,9 @@ export const columnList = [
sortable: true,
},
{
prop: 'planVolume',
prop: 'customerName',
label: '顾客姓名',
type: 2,
type: 3,
values: '',
width: '130',
checkarr: [],
@ -116,9 +116,9 @@ export const columnList = [
sortable: true,
},
{
prop: 'billladingStatus',
prop: 'customerPhone',
label: '顾客电话',
type: 2,
type: 3,
values: '',
width: '130',
checkarr: [],
@ -126,7 +126,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'chargeType',
prop: 'customerAddress',
label: '顾客地址',
type: 2,
values: '',
@ -136,9 +136,9 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalFee',
prop: 'deliveryDate',
label: '交期',
type: 2,
type: 1,
values: '',
width: '150',
checkarr: [],
@ -146,7 +146,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'remark',
prop: 'dealerCode',
label: '商场编码',
type: 2,
values: '',
@ -156,7 +156,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'carrierName',
prop: 'storeCode',
label: '门店编码',
type: 2,
values: '',
@ -176,7 +176,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalNum',
prop: 'orderType',
label: '订单类型',
type: 3,
values: '',
@ -186,9 +186,9 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalWeight',
prop: 'systemType',
label: '订单来源',
type: 2,
type: 4,
values: '',
width: '130',
checkarr: [],
@ -206,17 +206,17 @@ export const columnList = [
sortable: true,
},
{
prop: 'createUserName',
prop: 'serviceNum',
label: '服务号',
type: 2,
values: '',
width: '150',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
prop: '',
label: '操作',
type: 6,
values: '',

56
src/option/waybill/TemporaryStorageList.js

@ -15,7 +15,7 @@ export const columnList = [
fixed: true,
},
{
prop: 'billladingCode',
prop: 'orderCode',
label: '订单自编号',
type: 2,
values: '',
@ -25,18 +25,18 @@ export const columnList = [
sortable: true,
head: false,
},
{
prop: 'carNumber',
label: '汇通商场',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'driverName',
// {
// prop: 'carNumber',
// label: '汇通商场',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'dealerName',
label: '商场名称',
type: 1,
values: '',
@ -46,7 +46,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'driverPhone',
prop: 'storeName',
label: '门店名称',
type: 1,
values: '',
@ -56,7 +56,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'warehouseName',
prop: 'siteName',
label: '基地',
type: 1,
values: '',
@ -76,7 +76,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'nodeNub',
prop: 'totalNum',
label: '数量',
type: 1,
values: '',
@ -86,7 +86,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'startTime',
prop: 'trainNumber',
label: '客户车次',
type: 1,
values: '',
@ -96,7 +96,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'endTime',
prop: 'legacyStatus',
label: '遗留',
type: 3,
values: '',
@ -106,7 +106,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'planVolume',
prop: 'customerName',
label: '顾客姓名',
type: 3,
values: '',
@ -116,7 +116,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'billladingStatus',
prop: 'customerPhone',
label: '顾客电话',
type: 3,
values: '',
@ -126,7 +126,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'chargeType',
prop: 'customerAddress',
label: '顾客地址',
type: 2,
values: '',
@ -136,7 +136,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalFee',
prop: 'deliveryDate',
label: '交期',
type: 1,
values: '',
@ -146,7 +146,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'remark',
prop: 'dealerCode',
label: '商场编码',
type: 2,
values: '',
@ -156,7 +156,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'carrierName',
prop: 'storeCode',
label: '门店编码',
type: 2,
values: '',
@ -176,7 +176,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalNum',
prop: 'orderType',
label: '订单类型',
type: 3,
values: '',
@ -186,7 +186,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'totalWeight',
prop: 'systemType',
label: '订单来源',
type: 4,
values: '',
@ -206,7 +206,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'createUserName',
prop: 'serviceNum',
label: '服务号',
type: 2,
values: '',
@ -216,7 +216,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'createUserName',
prop: '',
label: '操作',
type: 6,
values: '',

528
src/option/waybill/orderPackageListDetails.js

@ -0,0 +1,528 @@
/** 包件明细表头 */
export const packageListColumnList = [
{
prop: '',
label: '复选框',
type: 0,
width: 55,
fixed: true,
},
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'waybillNo',
label: '运单号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'orderCode',
label: '订单自编号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'warehouseName',
label: '当前所在仓',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: true,
sortable: true,
},
{
prop: 'trainNumber',
label: '客户车次号',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
// {
// prop: '',
// label: '入库',
// type: 1,
// values: '',
// width: '130',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
// {
// prop: '',
// label: '干仓配',
// type: 1,
// values: '',
// width: '180',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'firstPackName',
label: '一级品类',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'secondPackName',
label: '二级品类',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'thirdPackName',
label: '三级品类',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'materialCode',
label: '物料编码',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'materialName',
label: '物料名称',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'orderPackageCode',
label: '包条码',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'systemType',
label: '订单来源',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'serviceNum',
label: '服务号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'quantity',
label: '发货数量',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: '',
// label: '所在托盘',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'volume',
label: '体积',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
// {
// prop: '',
// label: '基地发货日期',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
// {
// prop: 'billladingCode',
// label: '车次类型',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
// {
// prop: 'billladingCode',
// label: '汇通车次号',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
// {
// prop: 'billladingCode',
// label: '装车时间',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
// {
// prop: 'billladingCode',
// label: '签收时间',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// // },
// {
// prop: 'billladingCode',
// label: '导入仓库',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
// {
// prop: 'billladingCode',
// label: '创建人',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
// {
// prop: 'billladingCode',
// label: '创建时间',
// type: 2,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'createUserName',
label: '操作',
type: 6,
values: '',
width: '350',
checkarr: [],
fixed: 'right',
sortable: false,
},
];
/** 包内产品明细 */
export const packageDetailColumnList = [
{
prop: 'createUserName',
label: '复选框',
type: 0,
values: '',
width: '55',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '序号',
type: 12,
values: '',
width: '55',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '包条码',
type: 1,
values: '',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '货品代码',
type: 1,
values: '',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '货品名称',
type: 1,
values: '',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '销量数量',
type: 1,
values: '',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '发货数量',
type: 1,
values: '',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '创建时间',
type: 1,
values: '',
checkarr: [],
fixed: false,
sortable: true,
},
];
/** 流转节点 */
export const flowNodeColumnList = [
{
prop: 'createUserName',
label: '复选框',
type: 0,
values: '',
width: '55',
checkarr: [],
fixed: false,
},
{
prop: 'createUserName',
label: '序号',
type: 12,
values: '',
width: '55',
checkarr: [],
fixed: false,
},
{
prop: 'createUserName',
label: '仓库',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '订单自编号',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '包条码',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '是否干仓配',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '服务类型',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '流转节点',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '库位',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '托盘码',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '一级品名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '二级品名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '三级品名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '物料名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'createUserName',
label: '物料编码',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
];

16
src/router/views/index.js

@ -267,22 +267,24 @@ export default [
{
path: '/waybill',
component: Layout,
// key: 'fullPath',
redirect: '/waybill/orderPackageList',
key: 'fullPath',
redirect: '/waybill/orderPackageListDetails',
children: [
// 包明细
{
path: 'orderPackageList',
name: '订单明细',
path: 'orderPackageListDetails',
meta: {
data: 'data',
keepAlive: true,
},
component: () => import('@/views/waybill/orderPackageList.vue'),
component: () => import('@/views/waybill/orderPackageListDetails.vue'),
},
{
path: 'EditCustomerInfo',
path: 'EditCustomerInfo/:ids/:info',
name: '客户信息修改',
meta: {
data: 'data',
i18n: 'dict',
keepAlive: true,
},
component: () => import('@/views/waybill/EditCustomerInfo.vue'),
},

2
src/utils/util.js

@ -451,7 +451,7 @@ export const getWinHeight = () => {
* @param {node} node 元素 type: element || array
* @param {string} height 高度 (非必填) type: string
*/
export const setNodeHeight = (_node, _height) => {
export const setNodeHeight = (_node, _height = '') => {
console.log('getWinHeight() :>> ', getWinHeight());
const _defaultHeight = getWinHeight();
// 判断是否传入的是数组

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

@ -5,38 +5,36 @@
<el-form :inline="true" :model="query" class="el-fr-d" label-width="100px">
<!-- 顶部 -->
<div class="flex-c-sb">
<div class="flex-c-sb form_top">
<div>
<div>品牌: 欧派 车次号:</div>
<el-form-item label="运单号: " label-width="80px"><el-input /> </el-form-item>
<el-form-item class="mt10" label="运单号: " label-width="80px">
<div><el-input v-model="query.waybillNo" placeholder="运单号" clearable /></div>
</el-form-item>
</div>
<div class="flex-c-c">
<div>admin</div>
<el-date-picker
v-model="value1"
type="datetime"
size="big"
placeholder="Select date and time"
/>
<div style="margin-right: 10px" class="flex-c-c">
<el-icon><User /></el-icon>
<span style="margin-left: 10px">admin</span>
</div>
<el-date-picker v-model="query.value1" type="datetime" placeholder="创建时间" />
</div>
</div>
<!-- 第一排 -->
<div class="table-row">
<el-form-item label="发站仓:" class="el-times">
<el-select v-model="query.serviceNumber" class="m-2" placeholder="Select">
<el-option
v-for="item in details.options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<SelectBox v-model="query.serviceNumber" placeholder="发站仓"> 暂无数据 </SelectBox>
</el-form-item>
<el-form-item label="到站:">
<el-input v-model="query.serviceNumber" placeholder="请输入服务号"></el-input>
<div class="w100">
<!-- <el-input v-model="query.serviceNumber" placeholder="请输入服务号"></el-input> -->
<SelectBox v-model="query.serviceNumber" placeholder="请输入服务号">
暂无数据
</SelectBox>
</div>
</el-form-item>
<el-form-item label="目的仓:" class="el-times">
@ -63,7 +61,7 @@
type="textarea"
placeholder="订单自编号"
></el-input>
<el-button type="primary" icon="Plus">选取订单</el-button>
<el-button class="mt10" type="primary" icon="Plus">选取订单</el-button>
</el-form-item>
</div>
@ -74,23 +72,25 @@
<div>
<el-row>
<el-form-item label="发货单位:">
<el-input v-model="query.serviceNumber" placeholder="发货单位"></el-input>
<SelectBox v-model="query.shipper" placeholder="发货单位"> 暂无数据 </SelectBox>
</el-form-item>
<el-form-item label="发货人:">
<el-input v-model="query.serviceNumber" placeholder="发货人"></el-input>
<SelectBox v-model="query.shipperName" placeholder="发货人"> 暂无数据 </SelectBox>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="手机号码:">
<el-input v-model="query.serviceNumber" placeholder="手机号码"></el-input>
<el-form-item label="联系电话:">
<SelectBox v-model="query.shipperMobile" placeholder="联系电话">
暂无数据
</SelectBox>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="发货地址:">
<el-input v-model="query.serviceNumber" placeholder="发货地址"></el-input>
<el-input v-model="query.shipperAddress" placeholder="发货地址"></el-input>
</el-form-item>
</el-row>
</div>
@ -100,42 +100,38 @@
<div>
<el-row>
<el-form-item label="收货单位:">
<el-input v-model="query.serviceNumber" placeholder="收货单位"></el-input>
<SelectBox v-model="query.consignee" placeholder="收货单位"> 暂无数据 </SelectBox>
</el-form-item>
<el-form-item label="收货人:">
<el-input v-model="query.serviceNumber" placeholder="收货人"></el-input>
<SelectBox v-model="query.consigneeName" placeholder="收货人">
暂无数据
</SelectBox>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="手机号码:">
<el-input v-model="query.serviceNumber" placeholder="手机号码"></el-input>
<el-form-item label="联系电话:">
<SelectBox v-model="query.consigneeMobile" placeholder="联系电话">
暂无数据
</SelectBox>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="货地址:">
<el-input v-model="query.serviceNumber" placeholder="收货地址"></el-input>
<el-form-item label="货地址:">
<el-input v-model="query.consigneeAddress" placeholder="发货地址"></el-input>
</el-form-item>
</el-row>
</div>
</div>
</div>
<!-- 订单自编号 -->
<div class="table-row">
<el-form-item label="订单自编号:" class="el-times">
<el-input
v-model="query.serviceNumber"
type="textarea"
placeholder="订单自编号"
></el-input>
</el-form-item>
</div>
<!-- 计价方式行 -->
<div class="table-row table_row_number">
<div style="width: 55px; flex: none" class="flex-c-c">
<el-button icon="Plus" type="primary" size="small" circle></el-button>
</div>
<div style="width: 230px; flex: none">
<el-form-item label="计价方式:" label-width="fit-content" class="el-times">
<el-radio-group v-model="query.serviceNumber" style="display: flex">
@ -205,6 +201,7 @@
<!-- 合计行 -->
<div class="table-row table_row_number table_row_total">
<div style="width: 55px; flex: none" class="flex-c-c"></div>
<div style="width: 230px; flex: none">合计</div>
<div></div>
<div></div>
@ -223,39 +220,66 @@
<div>
<el-form label-width="fit-content">
<el-row>
<el-form-item label="发货单位:">
<el-input v-model="query.serviceNumber"></el-input>
<el-form-item label="运费:">
<el-input-number
controls-position="right"
v-model="query.totalFreight"
></el-input-number>
</el-form-item>
<el-form-item label="发货人:">
<el-input v-model="query.serviceNumber"></el-input>
<el-form-item label="送货费:">
<el-input-number
controls-position="right"
v-model="query.deliveryFee"
></el-input-number>
</el-form-item>
<el-form-item label="发货人:">
<el-input v-model="query.serviceNumber"></el-input>
<el-form-item label="提货费:">
<el-input-number
controls-position="right"
v-model="query.pickupFee"
></el-input-number>
</el-form-item>
<el-form-item label="发货人:">
<el-input v-model="query.serviceNumber"></el-input>
<el-form-item label="仓库管理费:">
<el-input-number
controls-position="right"
v-model="query.warehouseManagementFee"
></el-input-number>
</el-form-item>
<el-form-item label="发货人:">
<el-input v-model="query.serviceNumber"></el-input>
<el-form-item label="仓储费:">
<el-input-number
controls-position="right"
v-model="query.storageFee"
></el-input-number>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="装卸费:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input-number
controls-position="right"
v-model="query.handlingFee"
></el-input-number>
</el-form-item>
<el-form-item label="其它费用:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input-number
controls-position="right"
v-model="query.otherFee"
></el-input-number>
</el-form-item>
<el-form-item label="保价费:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input-number
controls-position="right"
v-model="query.insuranceFee"
></el-input-number>
</el-form-item>
<el-form-item label="申明价值:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input-number
controls-position="right"
v-model="query.claimingValue"
></el-input-number>
</el-form-item>
</el-row>
</el-form>
@ -271,29 +295,43 @@
<el-form label-width="fit-content">
<el-row>
<el-form-item label="支付方式:">
<el-input v-model="query.serviceNumber"></el-input>
<el-select v-model="query.payType" class="m-2" placeholder="Select">
<el-option
v-for="item in details.options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="付款方式:">
<el-input v-model="query.serviceNumber"></el-input>
<el-select v-model="query.payWay" class="m-2" placeholder="Select">
<el-option
v-for="item in details.options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="现付:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input v-model="query.xPay"></el-input>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="到付:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input v-model="query.dPay"></el-input>
</el-form-item>
<el-form-item label="月结:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input v-model="query.yPay"></el-input>
</el-form-item>
<el-form-item label="回付:">
<el-input v-model="query.serviceNumber"></el-input>
<el-input v-model="query.hPay"></el-input>
</el-form-item>
</el-row>
</el-form>
@ -312,7 +350,7 @@
<el-form-item label="三方操作费:" label-width="fit-content" class="el-times">
<el-input-number
v-model="query.serviceNumber"
v-model="query.thirdOperationFee"
controls-position="right"
:precision="0"
:step="0.1"
@ -320,7 +358,7 @@
</el-form-item>
<el-form-item label="送货方式:" label-width="fit-content" class="el-times">
<el-select v-model="query.serviceNumber" class="m-2" placeholder="Select">
<el-select v-model="query.deliveryWay" class="m-2" placeholder="Select">
<el-option
v-for="item in details.options"
:key="item.value"
@ -331,7 +369,7 @@
</el-form-item>
<el-form-item label="紧急度:" label-width="fit-content" class="el-times">
<el-select v-model="query.serviceNumber" class="m-2" placeholder="Select">
<el-select v-model="query.urgency" class="m-2" placeholder="Select">
<el-option
v-for="item in details.options"
:key="item.value"
@ -343,7 +381,7 @@
<el-form-item label="回单" label-width="fit-content" class="el-times">
<el-input-number
v-model="query.serviceNumber"
v-model="query.receipt"
controls-position="right"
:precision="0"
:step="1"
@ -351,7 +389,7 @@
</el-form-item>
<el-form-item label="回单要求:" label-width="fit-content" class="el-times">
<el-select v-model="query.serviceNumber" class="m-2" placeholder="Select">
<el-select v-model="query.receipt" class="m-2" placeholder="Select">
<el-option
v-for="item in details.options"
:key="item.value"
@ -362,7 +400,7 @@
</el-form-item>
<el-form-item label="运输方式:" label-width="fit-content" class="el-times">
<el-select v-model="query.serviceNumber" class="m-2" placeholder="Select">
<el-select v-model="query.transportType" class="m-2" placeholder="Select">
<el-option
v-for="item in details.options"
:key="item.value"
@ -376,7 +414,7 @@
<!-- 订单自编号 -->
<div class="table-row">
<el-form-item label="备注:" class="el-times">
<el-input v-model="query.serviceNumber" type="textarea" placeholder="备注"></el-input>
<el-input v-model="query.remark" type="textarea" placeholder="备注"></el-input>
</el-form-item>
<div class="flex-c-c">
@ -647,11 +685,24 @@ const handleTabItemClick = tab => {
</script>
<style scoped lang="scss">
:deep(.el-date-editor.el-input, .el-date-editor.el-input__wrapper) {
height: 100% !important;
}
:deep(.el-input__wrapper) {
box-shadow: none;
border-bottom: 1px solid #777;
}
//
.avue-crud {
font-size: 12px !important;
}
.form_top {
margin-bottom: 10px;
}
.table-row {
width: 100%;
display: flex;
@ -660,7 +711,9 @@ const handleTabItemClick = tab => {
&:last-child {
display: block;
border: 1px solid #ddd;
border: 1px solid #777;
box-sizing: border-box;
> div {
width: 100%;
border: none;
@ -670,7 +723,7 @@ const handleTabItemClick = tab => {
> div {
flex: 1;
padding: 5px;
border: 1px solid #ddd;
border: 1px solid #777;
display: inline-flex;
box-sizing: border-box;
}
@ -743,4 +796,8 @@ const handleTabItemClick = tab => {
z-index: 999;
text-align: center;
}
.w100 {
width: 100%;
}
</style>

182
src/views/waybill/EditCustomerInfo.vue

@ -8,49 +8,201 @@
<div class="container">
<el-form v-model="form">
<el-form-item label="客户姓名">
<el-input v-model="form.trainNumber" placeholder="请输入客户姓名" clearable></el-input>
<el-input v-model="form.customerName" placeholder="请输入客户姓名" clearable></el-input>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="form.trainNumber" placeholder="请输入联系电话" clearable></el-input>
<el-input
v-model="form.customerPhone"
placeholder="请输入联系电话"
clearable
></el-input>
</el-form-item>
<el-form-item label="用户地址">
<el-input v-model="form.trainNumber" placeholder="请输入用户地址" clearable></el-input>
<el-input
v-model="form.customerAddress"
placeholder="请输入用户地址"
clearable
></el-input>
</el-form-item>
</el-form>
</div>
<!-- 列表模块 -->
<tablecmt
:columnList="details.columnList"
:tableData="details.data"
:loading="details.loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'">
<el-button type="text" @click="handleShowPackageOrderList(slotProps.scope)">
包明细
</el-button>
</template>
</template>
</tablecmt>
<div class="flex-c-c dialog-footer">
<el-button icon="Position" type="primary" @click="printTemplate"> </el-button>
<el-button icon="Refresh" type="primary" @click="printTemplate"> </el-button>
<el-button icon="Close" @click="details.popUpShow.editClientInfoVisible = false">
</el-button>
</div>
<div class="flex-c-c dialog-footer">
<el-button icon="Position" type="primary" @click="handleSubmit"> </el-button>
<el-button icon="Refresh" type="primary" @click="handleRefresh"> </el-button>
<el-button icon="Close" @click="handleClose"> </el-button>
</div>
</div>
</basic-container>
</template>
<script setup lang="ts">
import { ref, nextTick } from 'vue';
import { ref, nextTick, reactive } from 'vue';
import { getWinHeight } from '@/utils/util.js';
import { useRouter, useRoute } from 'vue-router';
import { columnList } from '@/option/waybill/EditCustomerInfo';
import {
postOpenOrderAdvancePageList,
postUpdateCustomerInfo,
} from '@/api/waybill/EditCustomerInfo';
import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { ElMessage } from 'element-plus';
const $store = useStore();
const $router = useRouter();
const $route = useRoute();
const form = ref({});
const { params } = $route;
console.log('params :>> ', params);
const ids = JSON.parse(params.ids as any);
const info = JSON.parse(params.info as any);
console.log('ids :>> ', ids);
const form = ref({
customerName: '',
customerPhone: '',
customerAddress: '',
});
//
for (let key in form.value) {
form.value[key] = info[key];
}
const details = reactive<any>({
/** 列表 */
columnList,
/** 列表数据 */
data: [],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
list: false,
},
/** 列表Dom节点 */
listNode: '',
});
//
const avueCrud = ref(null);
console.log('$router :>> ', $router);
console.log('$route :>> ', $route);
nextTick(() => {
const _height = getWinHeight();
console.log('_height :>> ', _height);
const offsetTop = avueCrud.value.offsetTop;
console.log('avueCrud :>> ', avueCrud);
avueCrud.value.style.height = _height - offsetTop - 20 + 'px';
});
const onLoad = async () => {
try {
details.loadingObj.list = true;
const res = await postOpenOrderAdvancePageList({ advanceIds: ids });
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data;
} catch (error) {
} finally {
details.loadingObj.list = false;
}
};
onLoad();
/** 提交 */
const handleSubmit = () => {
postUpdateCustomerInfo({ ...form.value, advanceIds: ids }).then(res => {
console.log('res :>> ', res);
const { code, msg } = res.data;
if (code === 200) {
if (msg) ElMessage({ message: msg, type: 'success' });
$store.commit('DEL_TAG_CURRENT');
$router.back();
return;
} else {
if (msg) ElMessage({ message: msg, type: 'warning' });
}
});
};
/** 重置数据 */
const handleRefresh = () => {
for (let key in form.value) {
form.value[key] = info[key];
}
};
/** 关闭 */
const handleClose = () => {
$store.commit('DEL_TAG_CURRENT');
$router.back();
};
/** 查看包明细 */
const handleShowPackageOrderList = ({ row }) => {
$router.push('/waybill/orderPackageList');
};
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
details.query[row.prop] = index;
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) => {
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();
};
/** 表格表头复选框选择 */
const selectionChange = (list: any) => {
details.selectionList = list;
};
</script>
<style lang="scss" scoped>

88
src/views/waybill/FreezeOrder.vue

@ -102,43 +102,6 @@
</div>
</basic-container>
<!-- 修改客户信息 -->
<el-dialog
class="el-dialog-QRCode"
title="修改客户信息"
:visible.sync="details.popUpShow.editClientInfoVisible"
width="780px"
v-model="details.popUpShow.editClientInfoVisible"
>
<div>
<el-divider style="font-size: 28px">修改订单自编号客户信息</el-divider>
</div>
<el-form>
<el-form-item label="客户姓名">
<el-input />
</el-form-item>
<el-form-item label="联系电话">
<el-input />
</el-form-item>
<el-form-item label="用户地址">
<el-input />
</el-form-item>
</el-form>
<template #footer>
<div class="flex-c-c dialog-footer">
<el-button icon="Position" type="primary" @click="printTemplate"> </el-button>
<el-button icon="Refresh" type="primary" @click="printTemplate"> </el-button>
<el-button icon="Close" @click="details.popUpShow.editClientInfoVisible = false">
</el-button>
</div>
</template>
</el-dialog>
<!-- 列表配置显示 -->
<edittablehead
@setcolum="setnewcolum"
@ -155,7 +118,10 @@ import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { getopenOrderAdvancePageList } from '@/api/waybill/TemporaryStorageList';
import {
getopenOrderAdvancePageList,
postOpenOrderFreezeByAdvanceIds,
} from '@/api/waybill/TemporaryStorageList';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
import { columnList, packageListColumnList } from '@/option/waybill/FreezeOrder';
@ -281,14 +247,34 @@ onMounted(() => {
}, 100);
});
/** 请求页面数据 */
/** 请求页面数据 */
const onLoad = async (page: any, params = {}) => {
//
details.data = await getopenOrderAdvancePageList(page, { ...details.query, ...params });
try {
// loading
details.loadingObj.list = true;
details.query.freezeStatus = '1';
//
const res = await getopenOrderAdvancePageList(page, { ...details.query, ...params });
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
return res.data;
} catch (error) {
} finally {
// loading
details.loadingObj.list = false;
}
};
onLoad(details.page);
onLoad(details.page);
/** 搜索 */
const searchChange = () => {
onLoad(details.page);
@ -408,15 +394,16 @@ const handleShowPackageOrderList = ({ row }) => {
/** 修改客户信息 */
const editClientInfo = () => {
if (details.selectionList.length !== 0) {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
$router.push('/waybill/EditCustomerInfo?name=修改客户订单');
// editClientInfoVisible;
// details.popUpShow.editClientInfoVisible = true;
const ids = JSON.stringify(details.selectionList.map(item => item.id));
const info = JSON.stringify(details.selectionList[0]);
$router.push(`/waybill/EditCustomerInfo/${ids}/${info}`);
};
/** 批量删除 */
@ -437,6 +424,19 @@ const handleRefresh = () => {
message: '最少选择一条数据',
});
}
const ids = details.selectionList.map(item => item.id);
postOpenOrderFreezeByAdvanceIds({ advanceIds: ids, freezeStatus: '0' }).then(res => {
const { code } = res.data;
if (code !== 200) return;
ElMessage({
type: 'success',
message: '操作成功',
});
details.page.pageNum = 1;
onLoad(details.page);
});
};
</script>

230
src/views/waybill/TemporaryStorageList.vue

@ -50,7 +50,6 @@
<el-button type="primary" icon="Edit" @click="editClientInfo">修改客户信息</el-button>
<el-button type="primary" icon="Delete" @click="handleDelete">删除</el-button>
<el-button type="primary" icon="Upload" @click="searchReset">家配导入</el-button>
<el-button type="primary" icon="Van" @click="handleDepart"> </el-button>
<el-button type="primary" icon="Plus" @click="searchReset">开标签</el-button>
<el-button type="primary" icon="Upload" @click="searchReset">批量开标签导入</el-button>
<el-button type="primary" icon="Upload" @click="searchReset">定制品导入</el-button>
@ -89,12 +88,6 @@
</tablecmt>
</el-row>
<!-- 统计 -->
<el-row>
<div>选择数: , 运单数: , 件数: , 重量: , 体积: , 提货费: ,</div>
<div>总计: 总数: , 运单数: , 件数: , 重量: , 体积: , 提货费: ,</div>
</el-row>
<!-- 分页模块 -->
<el-row class="el-fy">
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
@ -105,7 +98,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:current-page="page.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -154,110 +147,6 @@
</template>
</el-dialog>
<!-- 包明细 -->
<el-dialog
title="包明细"
v-model="details.popUpShow.packageOrderListlVisited"
width="80%"
:before-close="beforeClose"
append-to-body
:fullscreen="details.fullscreenObj.packageOrderListlVisited"
:show-close="false"
class="packageOrderListlVisited"
>
<template #header="{ close, titleId, titleClass }">
<div class="my-header flex-c-sb">
<h4 :id="titleId" :class="titleClass">包明细</h4>
<div class="flex-c-c">
<!-- 全屏显示按钮 -->
<el-button type="text" v-if="!details.fullscreenObj.packageOrderListlVisited">
<el-icon class="" @click="handleFullScrean('open', 'packageOrderListlVisited')"
><FullScreen
/></el-icon>
</el-button>
<el-button type="text" v-else>
<el-icon class="" @click="handleFullScrean('close', 'packageOrderListlVisited')"
><CopyDocument
/></el-icon>
</el-button>
<!-- 弹窗关闭按钮 -->
<el-button type="text">
<el-icon class="" @click="close"><Close /></el-icon>
</el-button>
</div>
</div>
</template>
<el-form :inline="true" :model="query" class="el-fr-d">
<div class="fo-fl">
<!-- <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>
<!-- <el-button type="primary" icon="el-icon-van" @click="searchChange">批量卸车</el-button>
<el-button type="primary" icon="el-icon-search" @click="searchReset()"> </el-button> -->
<el-button icon="el-icon-printer" type="primary" @click="batchPrintOrder">
二维码
</el-button>
</el-form-item>
</div>
</el-form>
<tablecmt
:columnList="details.packageListColumnList"
:tableData="details.packageListData"
:loading="loadingObj.packageListLoading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'">
<el-button type="text" @click="printOrder(slotProps.scope)"> 包内产品 </el-button>
<el-button type="text" @click="printOrder(slotProps.scope)"> 流转节点 </el-button>
<el-button type="text" @click="printOrder(slotProps.scope)"> 直接入库 </el-button>
<el-button type="text" @click="printOrder(slotProps.scope)"> 查看二维码 </el-button>
</template>
</template>
</tablecmt>
<!-- 分页模块 -->
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="details.packageListPage.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="details.packageListPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="details.packageListPage.total"
>
</el-pagination>
</el-dialog>
<!-- 打印二维码 -->
<el-dialog
class="el-dialog-QRCode"
@ -292,7 +181,11 @@ import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { getopenOrderAdvancePageList } from '@/api/waybill/TemporaryStorageList';
import {
getopenOrderAdvancePageList,
postOpenOrderFreezeByAdvanceIds,
postOpenOrderDeletedAdvance,
} from '@/api/waybill/TemporaryStorageList';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
import { columnList, packageListColumnList } from '@/option/waybill/TemporaryStorageList';
@ -343,7 +236,7 @@ const details = reactive<any>({
/** 列表 */
columnList,
/** 列表数据 */
data: [{}],
data: [],
/** 包明细表头 */
packageListColumnList,
/** 包明细数据 */
@ -360,7 +253,7 @@ const details = reactive<any>({
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
@ -387,6 +280,8 @@ const details = reactive<any>({
/** 包明细 */
packageOrderListlVisited: false,
},
/** 打印的html */
html: '',
});
const {
@ -402,6 +297,7 @@ const {
trickleLoadingPage,
zeroAdditionalRecordingInfo,
popUpShow,
html,
} = toRefs(details);
/** vuex */
@ -420,8 +316,25 @@ onMounted(() => {
/** 请求页面数据 */
const onLoad = async (page: any, params = {}) => {
//
details.data = await getopenOrderAdvancePageList(page, { ...details.query, ...params });
try {
// loading
details.loadingObj.list = true;
details.query.freezeStatus = '0';
//
const res = await getopenOrderAdvancePageList(page, { ...details.query, ...params });
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
return res.data;
} catch (error) {
} finally {
// loading
details.loadingObj.list = false;
}
};
onLoad(details.page);
@ -540,34 +453,57 @@ const beforeClose = done => {
/** 查看包明细 */
const handleShowPackageOrderList = ({ row }) => {
details.popUpShow.packageOrderListlVisited = true;
nextTick(() => {
// ,
const _node: any = document.querySelector('.packageOrderListlVisited .maboxhi');
if (!_node) return;
_node.style.height = '550px';
console.log('_node :>> ', _node);
$router.push({
path: '/waybill/orderPackageListDetails?name=包明细',
query: {
id: row.id,
name: `订单 -- ${row.orderCode} 包明细`,
},
});
};
/** 订单转运单 */
const handleCreateOrder = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '请选择一条数据',
});
}
const _dealerName = details.selectionList[0].dealerName;
console.log('_dealerName :>> ', _dealerName);
const _flag = details.selectionList.every(item => _dealerName === item.dealerName);
if (!_flag) {
return ElMessage({
type: 'warning',
message: '请选择统一商场开单',
});
}
$router.push('/distribution/inventory/CreateOrder');
};
/** 修改客户信息 */
const editClientInfo = () => {
if (details.selectionList.length !== 0) {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
$router.push('/waybill/EditCustomerInfo');
// editClientInfoVisible;
// details.popUpShow.editClientInfoVisible = true;
const ids = JSON.stringify(details.selectionList.map(item => item.id));
const info = JSON.stringify(details.selectionList[0]);
// $router.push(`/waybill/EditCustomerInfo?ids=${ids}&info=${info}`);
$router.push({
path: `/waybill/EditCustomerInfo/${ids}/${info}`,
query: {
name: `订单 -- ${details.selectionList[0].orderCode} 客户信息修改`,
},
});
};
/** 批量删除 */
@ -578,6 +514,19 @@ const handleDelete = () => {
message: '最少选择一条数据',
});
}
const ids = details.selectionList.map(item => item.id);
postOpenOrderDeletedAdvance({ advanceIds: ids, freezeStatus: '1' }).then(res => {
const { code } = res.data;
if (code !== 200) return;
ElMessage({
type: 'success',
message: '操作成功',
});
details.page.pageNum = 1;
onLoad(details.page);
});
};
/** 批量发车 */
@ -598,6 +547,19 @@ const handleFreeze = () => {
message: '最少选择一条数据',
});
}
const ids = details.selectionList.map(item => item.id);
postOpenOrderFreezeByAdvanceIds({ advanceIds: ids, freezeStatus: '1' }).then(res => {
const { code } = res.data;
if (code !== 200) return;
ElMessage({
type: 'success',
message: '操作成功',
});
details.page.pageNum = 1;
onLoad(details.page);
});
};
/**
@ -605,7 +567,7 @@ const handleFreeze = () => {
* @params(_type) 开启或关闭
*/
const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
let _node = '';
let _node: any = '';
if (_name) _node = document.querySelector(`.${_name} .maboxhi`);
switch (_name) {
@ -634,8 +596,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);
html.value = '';
html.value = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};
@ -648,8 +610,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);
html.value = '';
html.value = getHtmls(res.data.data.dataList, res.data.data.templateHtml);
});
};

824
src/views/waybill/orderPackageListDetails.vue

@ -0,0 +1,824 @@
<template>
<basic-container>
<div class="avue-crud">
<!-- 搜索模块 -->
<el-row v-if="!search">
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="el-fr-d" label-width="100px">
<el-form-item label="是否入库">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="是否干仓配">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="运单号">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="订单自编号">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="订单来源">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="二级品类">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="三级品类">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="包条码">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="发货基地">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="客户车次号">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="服务号">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="汇通车次号">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="当前所在仓">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="创建人">
<el-input v-model="query.trainNumber" placeholder="请输入运单号" clearable></el-input>
</el-form-item>
<el-form-item label="发货日期">
<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="创建时间">
<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="Printer" @click="editClientInfo">批量打印</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="Search" @click="searchHide" circle></el-button>
</div>
</div>
</el-row>
<!-- 表格 -->
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="details.packageListColumnList"
:tableData="details.packageListData"
:loading="loadingObj.packageListLoading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'">
<el-button type="text" @click="handleShowPackageOrderList(slotProps.scope)">
包内产品
</el-button>
<el-button type="text" @click="handleShowFlowNode(slotProps.scope)">
流转节点
</el-button>
<el-button type="text" @click="handlePutInStorage(slotProps.scope)">
直接入库
</el-button>
<el-button type="text" @click="printOrder(slotProps.scope)"> 查看二维码 </el-button>
</template>
</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>
<!-- 包内产品 -->
<el-dialog
title="包内产品"
v-model="details.popUpShow.packageDetailColumnListVisited"
width="80%"
:before-close="beforeClose"
append-to-body
:fullscreen="details.fullscreenObj.packageDetailColumnListVisited"
:show-close="false"
class="packageDetailColumnListVisited"
>
<template #header="{ close, titleId, titleClass }">
<div class="my-header flex-c-sb">
<h4 :id="titleId" :class="titleClass">包内产品</h4>
<div class="flex-c-c">
<!-- 全屏显示按钮 -->
<el-button type="text" v-if="!details.fullscreenObj.packageDetailColumnListVisited">
<el-icon class="" @click="handleFullScrean('open', 'packageDetailColumnListVisited')"
><FullScreen
/></el-icon>
</el-button>
<el-button type="text" v-else>
<el-icon class="" @click="handleFullScrean('close', 'packageDetailColumnListVisited')"
><CopyDocument
/></el-icon>
</el-button>
<!-- 弹窗关闭按钮 -->
<el-button type="text">
<el-icon class="" @click="close"><Close /></el-icon>
</el-button>
</div>
</div>
</template>
<tablecmt
:columnList="details.packageDetailColumnList"
:tableData="details.packageDetailData"
:loading="loadingObj.packageListLoading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps"> </template>
</tablecmt>
<!-- 分页模块 -->
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="details.packageListPage.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="details.packageListPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="details.packageListPage.total"
>
</el-pagination>
</el-dialog>
<!-- 流转节点 -->
<el-dialog
title="流转节点"
v-model="details.popUpShow.flowNodeColumnListVisited"
width="80%"
:before-close="beforeClose"
append-to-body
:fullscreen="details.fullscreenObj.flowNodeColumnListVisited"
:show-close="false"
class="flowNodeColumnListVisited"
>
<template #header="{ close, titleId, titleClass }">
<div class="my-header flex-c-sb">
<h4 :id="titleId" :class="titleClass">流转节点</h4>
<div class="flex-c-c">
<!-- 全屏显示按钮 -->
<el-button type="text" v-if="!details.fullscreenObj.flowNodeColumnListVisited">
<el-icon class="" @click="handleFullScrean('open', 'flowNodeColumnListVisited')"
><FullScreen
/></el-icon>
</el-button>
<el-button type="text" v-else>
<el-icon class="" @click="handleFullScrean('close', 'flowNodeColumnListVisited')"
><CopyDocument
/></el-icon>
</el-button>
<!-- 弹窗关闭按钮 -->
<el-button type="text">
<el-icon class="" @click="close"><Close /></el-icon>
</el-button>
</div>
</div>
</template>
<tablecmt
:columnList="details.flowNodeColumnList"
:tableData="details.flowNodeData"
:loading="loadingObj.packageListLoading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<template #default="slotProps"> </template>
</tablecmt>
<!-- 分页模块 -->
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="details.packageListPage.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="details.packageListPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="details.packageListPage.total"
>
</el-pagination>
</el-dialog>
<!-- 打印二维码 -->
<el-dialog
class="el-dialog-QRCode"
title="二维码"
:visible.sync="details.popUpShow.QRCodeVisible"
width="780px"
v-model="details.popUpShow.QRCodeVisible"
>
<div>
<div v-html="details.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="details.popUpShow.QRCodeVisible = false"> </el-button>
</span>
</el-dialog>
<!-- 列表配置显示 -->
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="details.packageListColumnList"
></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 } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { getopenOrderFindAdvanceDetailList } from '@/api/waybill/orderPackageListDetails';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls } from '@/utils/util';
import {
packageListColumnList,
packageDetailColumnList,
flowNodeColumnList,
} from '@/option/waybill/orderPackageListDetails';
import print from '@/utils/print';
import { ElMessage, ElMessageBox } from 'element-plus';
import { useRoute, useRouter } from 'vue-router';
//
const $router = useRouter();
const $route = useRoute();
const {
query: { id },
} = $route;
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: [],
/** 包明细表头 */
packageListColumnList,
/** 包明细数据 */
packageListData: [{}],
/** 包内产品表头 */
packageDetailColumnList,
/** 包内产品数据 */
packageDetailData: [{}],
/** 流转节点表头 */
flowNodeColumnList,
/** 流转节点数据 */
flowNodeData: [{}],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
list: false,
packageListLoading: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
/** 是否显示设置表格 */
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageSize: 30,
total: 0,
},
/** 包明细分页参数 */
packageListPage: {
currentPage: 1,
pageSize: 30,
total: 0,
},
/** 弹出层显示 */
popUpShow: {
/** 流转节点 */
flowNodeColumnListVisited: false,
/** 二维码 */
QRCodeVisible: false,
/** 包内产品 */
packageDetailColumnListVisited: false,
},
/** 全屏 */
fullscreenObj: {
/** 流转节点 */
flowNodeColumnListVisited: false,
/** 包内产品 */
packageDetailColumnListVisited: false,
},
/** 列表Dom节点 */
listNode: '',
form: {},
html: '',
});
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);
onMounted(() => {
const timer = setTimeout(() => {
details.listNode = document.querySelector('.maboxhi');
details.listNode.style.transition = 'all .3s ease-out';
clearTimeout(timer);
}, 100);
});
/** 请求页面数据 */
const onLoad = async (page: any, params = {}) => {
try {
details.loadingObj.packageListLoading = true;
//
const res = await getopenOrderFindAdvanceDetailList(page, {
...details.query,
...params,
advanceId: id,
});
if (res.data.code !== 200) return;
details.packageListData = res.data.data;
} catch (error) {
} finally {
details.loadingObj.packageListLoading = false;
}
};
onLoad(details.page);
/** 搜索 */
const searchChange = () => {
onLoad(details.page);
};
/** 清空表单 */
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.currentPage = 1;
onLoad(details.page);
};
/** 展开列表控件 */
const showdrawer = (_flag?: boolean) => {
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 sizeChange = (pageSize: number) => {
details.page.pageSize = pageSize;
onLoad(details.page);
};
/** 页码改变执行的回调 */
const currentChange = () => {};
/**
* 设置列表 -- 固定函数
* 弹窗的勾选回调用于更改头部数组
* 固定搭配只需要更换 columnList
* */
const setnewcolum = (newarr, headarr, type) => {
if (type == 1) {
details.packageListColumnList = newarr;
functions.setStorage(window.location.pathname + 'checkList', headarr);
} else if (type == 2) {
details.packageListColumnList = newarr;
functions.setStorage(window.location.pathname + 'flexList', headarr);
} else if (type == 3) {
details.packageListColumnList = newarr;
functions.setStorage(window.location.pathname + 'sortlist', headarr);
}
};
/** 弹出层开启前清除数据 */
const beforeClose = done => {
done();
details.form = {};
details.selectionList = [];
details.view = false;
};
/** 查看包内产品 */
const handleShowPackageOrderList = ({ row }) => {
details.popUpShow.packageDetailColumnListVisited = true;
nextTick(() => {
// ,
const _node: any = document.querySelector('.packageDetailColumnListVisited .maboxhi');
if (!_node) return;
_node.style.height = '550px';
console.log('_node :>> ', _node);
});
};
/** 订单转运单 */
const handleCreateOrder = () => {
$router.push('/distribution/inventory/CreateOrder');
};
/** 修改客户信息 */
const editClientInfo = () => {
if (details.selectionList.length !== 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
// editClientInfoVisible;
details.popUpShow.editClientInfoVisible = true;
};
/** 批量删除 */
const handleDelete = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/** 批量发车 */
const handleDepart = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/** 批量冻结 */
const handleFreeze = () => {
if (details.selectionList.length === 0) {
return ElMessage({
type: 'warning',
message: '最少选择一条数据',
});
}
};
/**
* 是否开启全屏
* @params(_type) 开启或关闭
*/
const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
let _node = '';
if (_name) _node = document.querySelector(`.${_name} .maboxhi`);
switch (_name) {
//
case 'packageDetailColumnListVisited':
details.fullscreenObj.packageDetailColumnListVisited =
!details.fullscreenObj.packageDetailColumnListVisited;
if (_type === 'close') {
if (_node) setNodeHeight(_node, '500px');
} else {
if (_node) setNodeHeight(_node);
}
break;
default:
details.fullscreenObj[_name] = !details.fullscreenObj[_name];
if (_type === 'close') {
if (_node) setNodeHeight(_node, '500px');
} else {
if (_node) setNodeHeight(_node);
}
break;
}
};
/** 单列查看包条码 */
const printOrder = ({ row }) => {
let qr = {
ids: row.id,
};
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);
});
};
/** 单列查看包条码 */
const batchPrintOrder = ({ row }) => {
let qr = {
ids: row.id,
};
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);
});
};
/** 打印包条码 */
const printTemplate = () => {
const orderNodeList = document.querySelectorAll('.el-dialog-QRCode .el-dialog__body>div>div>div');
print(orderNodeList);
};
/** 入库 */
const handlePutInStorage = row => {
ElMessageBox.confirm('确认直接入库吗?', '警告', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
ElMessage({
type: 'success',
message: '入库成功',
});
})
.catch(() => {});
};
/** 显示流转节点 */
const handleShowFlowNode = ({ row }) => {
details.popUpShow.flowNodeColumnListVisited = true;
nextTick(() => {
// ,
const _node: any = document.querySelector('.flowNodeColumnListVisited .maboxhi');
if (!_node) return;
_node.style.height = '550px';
console.log('_node :>> ', _node);
});
};
</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;
}
}
}
</style>
Loading…
Cancel
Save