Browse Source

Merge branch 'dev' into pre-production

fix_bug_pro20231227
pref_mail@163.com 1 year ago
parent
commit
9260d844f8
  1. 100
      src/api/distribution/AddVehicleStowage.js
  2. 15
      src/api/distribution/VehicleArrivalManagement.js
  3. 103
      src/api/distribution/VehicleStowage.js
  4. 44
      src/components/tablecmt/tablecmt.vue
  5. 543
      src/option/distribution/addVehicleStowage.js
  6. 11
      src/router/views/index.js
  7. 15
      src/views/aftersales/VueTemp.vue
  8. 156
      src/views/aftersales/VueTempAdd.vue
  9. 5
      src/views/aftersales/VueTempend.vue
  10. 34
      src/views/aftersales/aftersalesWorkOrder.vue
  11. 998
      src/views/distribution/artery/AddVehicleStowage.vue
  12. 33
      src/views/distribution/artery/VehicleArrivalManagement.vue
  13. 49
      src/views/distribution/artery/VehicleStowage.vue
  14. 5
      src/views/distribution/inventory/CreateOrder.vue
  15. 155
      src/views/distribution/inventory/arteryDistrilbutionBillLadingList.vue
  16. 109
      src/views/mail/inventory/list.vue
  17. 5359
      src/views/mail/order/add.vue
  18. 67
      src/views/mail/order/list.vue
  19. 176
      src/views/waybill/CreateZeroOrder.vue

100
src/api/distribution/AddVehicleStowage.js

@ -0,0 +1,100 @@
import request from '@/axios';
/**
* 初始化获取配载信息
*/
export const postloadFindLoadInitData = (data = {}) => {
return request({
url: '/api/logpm-trunkline/carsLoad/findLoadInitData',
method: 'post',
data,
});
};
/**
* 通过名称查询仓库信息
*/
export const postFindWarehouseListByName = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/findWarehouseListByName',
method: 'post',
data,
});
};
/**
* 创建新提货单
*/
export const postFindAllOrderList = data => {
return request({
url: '/api/logpm-trunkline/carsLoad/findAllOrderList',
method: 'post',
data,
});
};
/**
* 查询运单列表
*/
export const postList = data => {
return request({
url: '/api/logpm-warehouseWaybill/list',
method: 'post',
data,
});
};
/**
* 更新提货单状态
*/
export const postUpdateBillladingStatus = data => {
return request({
url: '/api/logpm-trunkline/billlading/updateBillladingStatus',
method: 'post',
data,
});
};
/**
* 查询提货单详情
*/
export const postBillladingDetail = data => {
return request({
url: '/api/logpm-trunkline/billlading/billladingDetail',
method: 'post',
data,
});
};
/**
* 查询提货单包件明细
*/
export const postBillladingPackageDetail = data => {
return request({
url: '/api/logpm-trunkline/billlading/billladingPackageDetail',
method: 'post',
data,
});
};
/**
* 更新提货单关联运单数据
*/
export const postUpdateBillladingWaybillNum = data => {
return request({
url: '/api/logpm-trunkline/billlading/updateBillladingWaybillNum',
method: 'post',
data,
});
};
/**
* 提货单添加运单
*/
export const postAddWaybillToBillladingId = data => {
return request({
url: '/api/logpm-trunkline/billlading/addWaybillToBillladingId',
method: 'post',
data,
});
};

15
src/api/distribution/VehicleArrivalManagement.js

@ -0,0 +1,15 @@
import request from '@/axios';
/**
* 获取配载计划分页
*/
export const postloadArriveCarsPageList = (page, params) => {
return request({
url: '/api/logpm-trunkline/carsLoad/arriveCarsPageList',
method: 'post',
data: {
...page,
...params,
},
});
};

103
src/api/distribution/VehicleStowage.js

@ -0,0 +1,103 @@
import request from '@/axios';
/**
* 获取配载计划分页
*/
export const postloadCarsPageList = (page, params) => {
return request({
url: '/api/logpm-trunkline/carsLoad/loadCarsPageList',
method: 'post',
data: {
...page,
...params,
},
});
};
/**
* 查询所有计费方式
*/
export const postFindChargeTypeList = data => {
return request({
url: '/api/logpm-trunkline/billlading/findChargeTypeList',
method: 'post',
data,
});
};
/**
* 创建新提货单
*/
export const postSaveNew = data => {
return request({
url: '/api/logpm-trunkline/billlading/saveNew',
method: 'post',
data,
});
};
/**
* 查询运单列表
*/
export const postList = data => {
return request({
url: '/api/logpm-warehouseWaybill/list',
method: 'post',
data,
});
};
/**
* 更新提货单状态
*/
export const postUpdateBillladingStatus = data => {
return request({
url: '/api/logpm-trunkline/billlading/updateBillladingStatus',
method: 'post',
data,
});
};
/**
* 查询提货单详情
*/
export const postBillladingDetail = data => {
return request({
url: '/api/logpm-trunkline/billlading/billladingDetail',
method: 'post',
data,
});
};
/**
* 查询提货单包件明细
*/
export const postBillladingPackageDetail = data => {
return request({
url: '/api/logpm-trunkline/billlading/billladingPackageDetail',
method: 'post',
data,
});
};
/**
* 更新提货单关联运单数据
*/
export const postUpdateBillladingWaybillNum = data => {
return request({
url: '/api/logpm-trunkline/billlading/updateBillladingWaybillNum',
method: 'post',
data,
});
};
/**
* 提货单添加运单
*/
export const postAddWaybillToBillladingId = data => {
return request({
url: '/api/logpm-trunkline/billlading/addWaybillToBillladingId',
method: 'post',
data,
});
};

44
src/components/tablecmt/tablecmt.vue

@ -201,11 +201,8 @@ onMounted(() => {
var bodyContent = document.querySelectorAll('.maboxhi');
const _height = getWinHight();
console.log('bodyContent :>> ', bodyContent);
//
bodyContent.forEach(val => {
console.log('_height :>> ', _height);
console.log('val.getBoundingClientRect().top :>> ', val);
val.style.height = _height - val.getBoundingClientRect().top - 65 + 'px';
// if (val.style.height === '890px') val.style.height = '600px';
});
@ -324,7 +321,7 @@ watchEffect(() => {
});
});
onMounted(() => {
if (props.checkselect) {
/* if (props.checkselect) {
props.checkselect.map(item => {
if (props.isselectfun) {
if (props.isselectfun(item)) {
@ -334,8 +331,27 @@ onMounted(() => {
selecttable.value.toggleRowSelection(item, true);
}
});
} */
let _checkSelect = props.checkselect;
if (!_checkSelect) {
_checkSelect = [];
}
handleCheckSelect(_checkSelect);
});
/** 勾选 */
function handleCheckSelect(select: []) {
if (select.length !== 0) {
select.map(item => {
if (props.isselectfun) {
if (props.isselectfun(item)) {
selecttable.value.toggleRowSelection(item, true);
}
} else {
selecttable.value.toggleRowSelection(item, true);
}
});
}
}
function godowns(url) {
let a = document.createElement('a'); //a
a.href = url; //myurl
@ -402,27 +418,20 @@ function handleNumberRange(column: TableColumnType, row: TableDataType) {
row.enterNum = row.num;
}
}
console.log(row, 'row');
}
function handleEdit(index: number, row: TableDataType) {
console.log(index, row);
}
function handleEdit(index: number, row: TableDataType) {}
function makeCargo(value, column: TableColumnType) {
emit('makeCargo', value, column);
}
function inputchange(value, column: TableColumnType) {
if (typeof value == 'string') {
console.log(value, column);
emit('inputTxt', value, column);
}
}
function selectchange(value, column: TableColumnType) {
console.log(value, column);
emit('selectCheck', value, column);
}
function timechange(value, column: TableColumnType) {
console.log(value, column);
emit('timeCheck', value, column);
}
const handleSelectionChange = (param: TableDataType[]) => {
@ -431,25 +440,19 @@ const handleSelectionChange = (param: TableDataType[]) => {
emit('selection', param);
};
function inputclear(value, column: TableColumnType) {
console.log('', column);
emit('inputTxt', '', column);
}
function selectclear(value, column: TableColumnType) {
console.log('', column);
emit('selectCheck', '', column);
}
function timeclear(value, column: TableColumnType) {
console.log('', column);
emit('timeCheck', '', column);
}
function handleDelete(index: number, row: TableDataType) {
console.log(index, row);
}
function handleDelete(index: number, row: TableDataType) {}
const getSummaries = (param: any) => {
const { columns, data } = param;
let newarr = [];
let tji = 0;
console.log(columns, data);
columns.map((item, index) => {
if (index == 0) {
newarr[index] = '总计';
@ -467,7 +470,6 @@ const getSummaries = (param: any) => {
}
});
// console.log(columns)
console.log(newarr);
return newarr;
};
watchEffect(() => {
@ -543,7 +545,7 @@ function copyContent(content: string) {
}
}
defineExpose({});
defineExpose({ handleCheckSelect });
</script>
<style lang="scss">
// :root{

543
src/option/distribution/addVehicleStowage.js

@ -0,0 +1,543 @@
/** 节点信息 */
export const nodeInfoColumnList = [
{
prop: 'nodeName',
label: '节点名称',
type: 1,
values: '',
width: '100',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'nowTransportCost',
label: '现付运输费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'oilCost',
label: '现付油卡费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'tollFee',
label: '路桥费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'backTransportCost',
label: '回付运输费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'reachTransportCost',
label: '到付运输费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'wholeCarInfoCost',
label: '整车信息费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'wholeCarInsuranceCost',
label: '整车保险费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'wholeCarGroundCost',
label: '整车落地费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'hairWholeCost',
label: '发站装车费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'hairWholeOtherCost',
label: '发站其它费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'unloadCost',
label: '到站卸车费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
{
prop: 'unloadOtherCost',
label: '到站其它费',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
},
/* {
prop: 'orderCode',
label: '预计到达时间',
type: 6,
values: '',
width: '130',
checkarr: [],
fixed: false,
head: false,
}, */
];
/** 运单池的表头 */
export const columnList = [
{
prop: '',
label: '复选框',
type: 0,
width: 55,
fixed: true,
},
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'createTime',
label: '开单日期',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'orderCode',
label: '订单自编号',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'waybillNo',
label: '运单号',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'destination',
label: '到站',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'destinationWarehouseName',
label: '目的站',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'shipper',
label: '发货单位',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'consignee',
label: '收货单位',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'consigneeName',
label: '收货人',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'productName',
label: '品类名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalNum',
label: '件数',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'stockNum',
label: '在库数',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'price',
label: '单价',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalWeight',
label: '重量(KG)',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'totalVolume',
label: '体积',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'freight',
label: '运费',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'customerTrain',
label: '客户车次',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'remark',
label: '运单备注',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
];
/** 调度池的表头 */
export const newColumnList = [
{
prop: '',
label: '复选框',
type: 0,
width: 55,
fixed: true,
},
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'createTime',
label: '开单日期',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'orderCode',
label: '订单自编号',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'waybillNo',
label: '运单号',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'destination',
label: '到站',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'destinationWarehouseName',
label: '目的站',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'shipper',
label: '发货单位',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
{
prop: 'consignee',
label: '收货单位',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'consigneeName',
label: '收货人',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'productName',
label: '品类名称',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalNum',
label: '件数',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'stockNum',
label: '在库数',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'price',
label: '单价',
type: 1,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalWeight',
label: '重量(KG)',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'totalVolume',
label: '体积',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'freight',
label: '运费',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
isshowSummary: true,
sortable: true,
},
{
prop: 'customerTrain',
label: '客户车次',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'remark',
label: '运单备注',
type: 1,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: false,
},
];

11
src/router/views/index.js

@ -191,6 +191,17 @@ export default [
/* webpackChunkName: "views" */ '@/views/distribution/artery/zeroAdditionalRecording.vue'
),
},
{
path: 'AddVehicleStowage',
name: '新增配载',
meta: {
i18n: 'data',
},
component: () =>
import(
/* webpackChunkName: "views" */ '@/views/distribution/artery/AddVehicleStowage.vue'
),
},
],
},
// {

15
src/views/aftersales/VueTemp.vue

@ -105,6 +105,7 @@
<el-tab-pane label="理赔金额未出"></el-tab-pane>
<el-tab-pane label="仲裁中"></el-tab-pane>
<el-tab-pane label="完结"></el-tab-pane>
<el-tab-pane label="超时未处理"></el-tab-pane>
</el-tabs>
</div>
<div class="content_right">
@ -218,7 +219,7 @@
<el-button @click="view(slotProps.scope)">查看</el-button>
<el-button @click="ViewEvent(slotProps.scope)">编辑</el-button>
<el-button @click="ViewEvent(slotProps.scope)">回复</el-button>
<el-button @click="ViewDelete(slotProps.scope)">删除</el-button>
<!-- <el-button @click="ViewDelete(slotProps.scope)">删除</el-button> -->
<el-button @click="CompletionButton(slotProps.scope)">完结</el-button>
</div>
</template>
@ -851,7 +852,7 @@ const dialogImageUrl = ref('');
const dialogVisible = ref(false);
const groundlineType = ref(null); //线
const groundlineSet = ref(true); //线
const enddialog = ref(true); //
const enddialog = ref(false); //
const endFrom = ref({}); //
const screenHeight = ref(0); //
const eightyPercentHeight = ref(0); // 80%
@ -1510,6 +1511,12 @@ const searchHide = () => {
};
//
const view = val => {
$router.push({
path: '/aftersales/VueTempAdd',
query:{
id:val.id
}
});
console.log(val, '当前行数据');
FromDisabled.value = true; //
updateDictionary(IndexException.value, 'pc_work_order'); //
@ -1709,7 +1716,7 @@ const btnsc = val => {
/** 表格表头下拉框选择 */
const selectsc = (index, row) => {
processRowProperty(index, row, details);
if (!ProcessingPartyState.value) {
IndexTable(details.query); //
@ -1828,7 +1835,7 @@ const ProcessingPartyFun = val => {
data.size = page.value.pageSize; //
updateDictionary(columnList[2].checkarr, 'pc_work_order'); //
updateDictionary(columnList[3].checkarr, 'pc_discovery_node'); //
$_getProcessor(data).then(res => {
$_getProcessor(data).then(res => {
details.loadingObj.list = false; //
page.value.total = res.data.data.total; //
if (res.data.data.records.length) {

156
src/views/aftersales/VueTempAdd.vue

@ -39,7 +39,7 @@
</el-form-item>
<!-- 必填 -->
<el-form-item label="运单号">
<el-input v-model="Indexform.waybillNumber" placeholder="请输入单号" clearable />
<el-input v-model="Indexform.waybillNumber" placeholder="请输入单号" clearable />
</el-form-item>
<el-form-item label="少货件数" v-if="StateType || SelectType == 2">
@ -211,16 +211,12 @@
clearable
/>
</el-form-item>
<el-form-item label="备注信息">
<el-input v-model="Indexform.remarks" placeholder="请输入备注" clearable />
</el-form-item>
</el-form>
<!-- 必填 -->
<div class="el_clzr">
<el-form-item class="investigate" label="调查经过">
<el-input
v-model="Indexform.remarks"
v-model="Indexform.investigationPocess"
placeholder="请输入调查经过"
clearable
:rows="2"
@ -246,7 +242,7 @@
</el-form-item>
<!-- 必填 -->
<el-form-item label="责任方" >
<el-form-item label="责任方" v-if="groundlineType != 1">
<el-select v-model="Indexform.duty" clearable filterable multiple placeholder="请选择责任方">
<el-option
v-for="item in warehouseData"
@ -258,8 +254,8 @@
</el-form-item>
<!-- 提货环节 -->
<el-form-item label="提货责任方" v-if="groundlineSet || groundlineType==1">
<el-select v-model="Indexform.duty" clearable placeholder="请选提货择责任方">
<el-form-item label="责任方" v-if="groundlineSet || groundlineType == 1">
<el-select v-model="Indexform.businessMame" clearable placeholder="请选提货择责任方">
<el-option
v-for="item in responsible"
:key="item.value"
@ -270,9 +266,9 @@
</el-form-item>
</div>
<div class="Transport_damage_photos" v-if="SelectType == 1 || SelectType == 3 || StateType">
<span class="title">运损照片</span>
<span class="title">{{ SelectType == 1 ? '运损照片':SelectType == 3 ?'窜货照片':'照片' }}</span>
<el-upload
v-model="Indexform.packageImage"
v-model:file-list="Indexform.packList"
list-type="picture-card"
:on-preview="pictureList"
:on-remove="ImgListRemove"
@ -345,6 +341,7 @@
<script setup>
import { ElMessage } from 'element-plus';
import { ElMessageBox } from 'element-plus';
import { useRouter } from 'vue-router';
import { getDictionaryBiz } from '@/api/system/dict'; //
@ -352,7 +349,20 @@ import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataW
import { $_getList, $_submit, $_getDetail, $_remove } from '@/api/aftersales/aftersalesWorkOrder';
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { getToken } from '@/utils/auth';
const Indexform = ref({}); //
const $router = useRouter();
const Indexform = ref({
packList: [
{
name: 'food.jpeg',
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
},
{
name: 'food.jpeg',
url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
},
],
decreaseImageEntityList: [], //
}); //
const IndexException = ref([]); //
const DiscoveringNodes = ref([]); //
const warehouseData = ref([]); //
@ -371,15 +381,15 @@ const valueStrictly = ref();
//
const responsible = ref([
{
value: '0',
value: '1',
label: '工厂',
},
{
value: '1',
value: '2',
label: '外包搬运',
},
{
value: '2',
value: '3',
label: '物流',
},
]);
@ -424,11 +434,11 @@ const doubledCount = computed(() => {
const ImgSuccess = (response, uploadFile) => {
if (response.success === true) {
console.log(response);
fileList.value.push({
Indexform.value['packList'].push({
name: response.data.originalName,
url: response.data.link,
});
console.log(fileList.value, '图片列表');
console.log(Indexform.value['packList'], '图片列表');
}
};
@ -507,51 +517,97 @@ const handlePictureCardPreview = uploadFile => {
};
//
const ConfirmForm = () => {
// :10,20
// decreaseImageEntityList:[
// {imageType:10,imageName:'',imagePath:''},
// {imageType:10,imageName:'',imagePath:''},
// ]
console.log(Indexform.value['packList'], '图片列表');
// (西)
if (SelectType.value == 1 || SelectType.value == 3) {
if (Indexform.value['packList']) {
Indexform.value['packList'].forEach(item => {
Indexform.value['decreaseImageEntityList'].push({
imageType: SelectType.value == 1 ? 10 : SelectType.value == 3 ? 20 : '',
imageName: item.name,
imagePath: item.url,
});
});
}
}
console.log(Indexform.value['decreaseImageEntityList'], '处理好的图片');
//
Indexform.value.deliveryDriver = DeliveryDriver.value.find(
item => item.value == Indexform.value.deliveryDriver
).label;
if (Indexform.value.deliveryDriver) {
Indexform.value.deliveryDriver = DeliveryDriver.value.find(
item => item.value == Indexform.value.deliveryDriver
).label;
}
console.log(Indexform.value.deliveryDriver); //
let processorEntityList = [];
//
Indexform.value.processor.forEach(item => {
let found = warehouseData.value.find(element => element.value == item.toString());
processorEntityList.push({
businessName: found ? found.label : '',
businessId: item,
conditions: 1,
typesOf: 2,
if (Indexform.value.processor.length) {
Indexform.value.processor.forEach(item => {
let found = warehouseData.value.find(element => element.value == item.toString());
processorEntityList.push({
businessName: found ? found.label : '',
businessId: item,
conditions: 1,
typesOf: 2,
});
});
});
}
console.log(Indexform.value.duty.length);
//
Indexform.value.duty.forEach(item => {
let found = warehouseData.value.find(element => element.value == item.toString());
processorEntityList.push({
businessName: found ? found.label : '',
businessId: item,
conditions: 1,
typesOf: 1,
if (Indexform.value.duty.length) {
Indexform.value.duty.forEach(item => {
let found = warehouseData.value.find(element => element.value == item.toString());
processorEntityList.push({
businessName: found ? found.label : '',
businessId: item,
conditions: 1,
typesOf: 1,
});
});
});
}
console.log(Indexform.value.businessMame, '提货责任方');
//
if (Indexform.value.businessMame) {
const found = responsible.value.find(item => item.value === Indexform.value.businessMame);
if (found) {
processorEntityList.push({
businessName: found.label,
businessId: found.id,
conditions: 1,
typesOf: 1,
});
}
}
//
console.log(Indexform.value.businessMame, '提货责任方');
let DataSubmit = { ...Indexform.value }; //
DataSubmit.processorEntityList = processorEntityList;
DataSubmit.decreaseImageEntityList = JSON.parse(
JSON.stringify(Indexform.value['decreaseImageEntityList'])
);
delete DataSubmit.duty, //
delete DataSubmit.processor; //
delete DataSubmit.packList; //
delete DataSubmit.processor; //
console.log(DataSubmit, '处理好的数据');
//
// $_submit(DataSubmit).then(res => {
// if (res.data.code == 200) {
// ElMessage({
// message: res.data.msg,
// type: 'success',
// });
// Indexform.value = {}; //
// IndexTable();
// }
// });
//stringify
$_submit(DataSubmit).then(res => {
if (res.data.code == 200) {
ElMessage({
message: res.data.msg,
type: 'success',
});
Indexform.value = {}; //
$router.push('/aftersales/VueTemp');//
}
});
};
//
@ -716,8 +772,10 @@ const moneyBtnB = () => {
}
}
.Transport_damage_photos {
display: flex;
padding: 0 15px;
.title {
width: 100px;
display: block;
margin-bottom: 10px;
font-size: 14px;

5
src/views/aftersales/VueTempend.vue

@ -28,7 +28,7 @@
</el-form-item>
<el-form-item label="异常状态">
<el-input v-model="endFrom.name" placeholder="异常状态" />
<el-input v-model="endFrom.name" disabled placeholder="异常状态" />
</el-form-item>
<div class="el_Transport">
@ -327,7 +327,7 @@ const endFrom = ref({
videoUrl: {}, //
});
const videoUrl = ref(null); //
const VideoPreviewStatus = ref(true); //
const VideoPreviewStatus = ref(false); //
const warehouseData = ref([]); //
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //
const CompensationParty = ref([{ name: '', state: 0, num: 0, reason: '', cld: 1 }]); ///
@ -759,6 +759,7 @@ const payremove = (state, val) => {
}
.notes {
width: 100%;
margin-top: 20px;
}
.Transport_damage_photos {
width: 100%;

34
src/views/aftersales/aftersalesWorkOrder.vue

@ -476,25 +476,25 @@ export default {
console.log("数据????>>",processorEntityList);
this.form.processorEntityList = processorEntityList;
console.log(this.form,'处理好的数据');
add(this.form).then(() => {
// this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
// add(this.form).then(() => {
// // this.box = false;
// this.onLoad(this.page);
// this.$message({
// type: "success",
// message: "!"
// });
// });
} else {
update(this.form).then(() => {
this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
})
// update(this.form).then(() => {
// this.box = false;
// this.onLoad(this.page);
// this.$message({
// type: "success",
// message: "!"
// });
// })
}
},
handleAdd(){

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

@ -0,0 +1,998 @@
<template>
<basic-container>
<div class="avue-crud">
<!-- 基础信息 -->
<div class="w100">
<!-- 标题 -->
<el-divider content-position="left">基础信息</el-divider>
<!-- 表单内容 -->
<el-form label-width="80px">
<!-- 仓库节点 -->
<el-steps finish-status="success" :active="details.nodeInfoData.length" space="300px">
<el-step v-for="(item, index) in details.nodeInfoData" :key="item">
<template #icon>
<el-icon size="20px" v-if="index === 0"><LocationFilled /></el-icon>
<el-icon size="20px" v-else><Van /></el-icon>
</template>
<template #title>
<div class="form_row">
<div class="flex-c-c steps_title">
<div class="count_icon">{{ index + 1 }}</div>
<div v-if="index === 0">始发仓</div>
<div v-else>目的仓</div>
</div>
<!-- 控件 -->
<div>
<!-- 删除节点 -->
<el-button icon="Delete" v-if="index !== 0" @click="handleDelNode(index)" />
<!-- 新增节点 -->
<el-button
v-if="index === details.nodeInfoData.length - 1"
type="primary"
icon="Plus"
@click="handleAddNode"
/>
</div>
</div>
</template>
<template #description>
<el-select
class="mt10"
v-model="item.nodeName"
filterable
remote
reserve-keyword
placeholder="目的仓"
@change="val => destinationWarehouseNameChange(val, index)"
:remote-method="remoteMethod"
:loading="details.loadingObj.loading"
:disabled="index === 0"
>
<el-option
v-for="val in details.options"
:key="val.value"
:label="val.warehouseName"
:value="val.warehouseId"
/>
</el-select>
</template>
</el-step>
</el-steps>
<div class="form_row mt10">
<!-- 车牌号 -->
<div class="form_row_item">
<el-form-item inline label="车牌号">
<el-input v-model="form.carNumber" />
</el-form-item>
<el-button type="primary" @click="handleAddCar" icon="Plus"></el-button>
</div>
<!-- 主驾司机 -->
<div class="form_row_item">
<el-form-item inline label="主驾司机">
<el-input v-model="form.driverName" />
</el-form-item>
<el-button type="primary" @click="handleAddDriver" icon="Plus"></el-button>
</div>
<!-- 副驾司机 -->
<div class="form_row_item">
<el-form-item inline label="副驾司机">
<el-input v-model="form.name" />
</el-form-item>
</div>
<!-- 装车方式 -->
<div class="form_row_item">
<el-form-item inline label="装车方式">
<el-radio-group v-model="form.loadingType" class="ml-4">
<el-radio label="1" size="large">手动装车(后台)</el-radio>
<el-radio label="2" size="large">扫描装车</el-radio>
</el-radio-group>
</el-form-item>
</div>
</div>
<div class="form_row">
<!-- 经办人 -->
<div class="form_row_item">
<el-form-item inline label="经办人">
<el-input v-model="userInfo.user_name" readonly />
</el-form-item>
</div>
<!-- 配载类型 -->
<div class="form_row_item">
<el-form-item inline label="配载类型">
<el-select
v-model="form.loadType"
class="m-2"
filterable
multiple
placeholder="配载类型"
>
<el-option
v-for="item in query.receiptList"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictKey"
/>
</el-select>
</el-form-item>
</div>
<!-- 主驾司机 -->
<div class="form_row_item">
<el-form-item inline label="分摊方式">
<el-select
v-model="form.chargeType"
class="m-2"
filterable
multiple
placeholder="分摊方式"
>
<el-option
v-for="item in query.receiptList"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictKey"
/>
</el-select>
</el-form-item>
</div>
<!-- 合计运费 -->
<div class="form_row_item">
<el-form-item inline label="合计运费">
<el-input-number
v-model="form.countTransportCost"
controls-position="right"
:precision="2"
:min="0"
:step="1"
readonly
/>
</el-form-item>
</div>
<!-- 预计发车 -->
<div class="form_row_item">
<el-form-item inline label="预计发车">
<el-input />
</el-form-item>
</div>
</div>
<el-form-item label="备注">
<el-input autosize type="textarea" placeholder="备注" />
</el-form-item>
</el-form>
</div>
<!-- 节点信息 -->
<div class="w100">
<!-- 标题 -->
<el-divider content-position="left">节点信息</el-divider>
<tablecmt
class="nodeInfo"
:columnList="details.nodeInfoColumnList"
:tableData="details.nodeInfoData"
:loading="loadingObj.stowageLoading"
ref="nodeInfoRef"
>
<template #default="slotProps">
<el-input-number
controls-position="right"
:precision="2"
:min="0"
:step="1"
:disabled="slotProps.scope.row.blackList.includes(slotProps.scope.column.property)"
@input="handleComputedNum"
v-model="slotProps.scope.row[slotProps.scope.column.property]"
/>
</template>
</tablecmt>
<!-- 列表 -->
</div>
<!-- 订单池和调度池 -->
<template v-if="details.nodeInfoData.length > 1">
<div class="add_row" v-for="(item, index) in details.nodeInfoData">
<template v-if="index !== 0">
<div style="width: 49%">
<!-- 头部 -->
<el-divider content-position="left">
<span style="margin-right: 20px">{{ details.nodeInfoData[0].nodeName }}</span>
<span>运单池</span>
</el-divider>
<!-- 搜索区域 -->
<div v-if="!search">
<el-form
:inline="true"
label-width="80px"
:model="details.oldQuery"
class="el-fr-d"
>
<div class="fo-fl">
<el-form-item label="关键词" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="目的网点" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="到站" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="目标品类" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="备注" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="托盘码" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="开单时间" class="el-times">
<!-- <el-input v-model="query.stockupArea" placeholder="请输入备货区"></el-input>-->
<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-search" @click="searchReset()"
> </el-button
>
<el-button icon="el-icon-delete" @click="searchReset()">重置</el-button>
</el-form-item>
</div>
</el-form>
</div>
<!-- 控件 -->
<div style="margin-bottom: 10px" class="flex-c-sb">
<!-- 控件 -->
<div class="avue-crud__right">
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button>
<el-button icon="el-icon-search" @click="searchHide" circle></el-button>
</div>
<el-button type="text" style="cursor: pointer" @click="handleAddWaybill(index)">
加入调度池
<el-icon><CaretRight /></el-icon>
</el-button>
</div>
<!-- 列表模块 -->
<tablecmt
class="columnList"
:columnList="details.columnList"
:tableData="details.data"
:loading="loadingObj.oldListLoading"
@selection="selectionChange"
>
</tablecmt>
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<!-- 分页模块 -->
<el-pagination
style="zoom: 0.9"
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.pageNum"
:teleported="false"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
>
</el-pagination>
</div>
</div>
<!-- 列表模块 -->
<div style="width: 49%">
<!-- 头部 -->
<el-divider content-position="left">
<span style="margin-right: 20px">{{ item.nodeName }}</span>
<span>调度池</span>
</el-divider>
<!-- 搜索区域 -->
<div v-if="!search">
<el-form
:inline="true"
label-width="80px"
:model="details.newQuery"
class="el-fr-d"
>
<div class="fo-fl">
<el-form-item label="关键词" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="目的网点" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="到站" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="目标品类" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="备注" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="托盘码" class="el-times">
<el-input></el-input>
</el-form-item>
<el-form-item label="开单时间" class="el-times">
<!-- <el-input v-model="query.stockupArea" placeholder="请输入备货区"></el-input>-->
<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-search" @click="searchReset()"
> </el-button
>
<el-button icon="el-icon-delete" @click="searchReset()">重置</el-button>
</el-form-item>
</div>
</el-form>
</div>
<!-- 控件 -->
<div style="margin-bottom: 10px" class="flex-c-sb">
<el-button type="text" class="pointer" @click="handleRemoveWaybill">
<el-icon><CaretLeft /></el-icon>
移除调度池
</el-button>
<!-- 展开搜索和刷新 -->
<div class="avue-crud__right">
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button>
<el-button icon="el-icon-search" @click="searchHide" circle></el-button>
</div>
</div>
<tablecmt
class="columnList"
:columnList="details.newColumnList"
:tableData="item.data"
:loading="item.loading"
@selection="list => item.selectionChange(list, index)"
>
</tablecmt>
</div>
</template>
</div>
</template>
</div>
</basic-container>
</template>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import functions from '@/utils/functions';
import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { downloadXls, setNodeHeight, computeNumber, isNumer } from '@/utils/util';
import {
columnList,
nodeInfoColumnList,
newColumnList,
} from '@/option/distribution/addVehicleStowage';
import {
postloadFindLoadInitData,
postFindWarehouseListByName,
postFindAllOrderList,
} from '@/api/distribution/AddVehicleStowage';
import { useRouter } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
import { useStore } from 'vuex';
// ,
const nodeInfokeys = nodeInfoColumnList.slice(1).map(val => val.prop);
//
const $router = useRouter();
// vuex
const $store = useStore();
//
const userInfo = computed(() => $store.state.user.userInfo);
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: [],
/** 订单池表头 */
columnList,
/** 调度池表头 */
newColumnList,
/** 节点信息列表表头 */
nodeInfoColumnList,
/** 列表数据 */
data: [],
/** 节点信息数据 */
nodeInfoData: [],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
list: false,
oldListLoading: false,
loading: false,
},
/** 列表复选框选中的数据 */
selectionList: [],
/** 是否显示设置表格 */
drawerShow: false,
/** 分页参数 */
page: {
pageNum: 1,
pageSize: 30,
total: 0,
},
/** 装车明细分页参数 */
trickleLoadingPage: {
pageNum: 1,
pageSize: 30,
total: 0,
},
/** 弹出层显示 */
popUpShow: {
/** 装车详情 */
truckLoadingDetailVisited: false,
/** 零担补录 */
zeroAdditionalRecordingVisited: false,
/** 对比报表 */
comparativeStatementPopUp: false,
},
/** 列表Dom节点 */
listNode: '',
form: { loadingType: '2' },
/** 零担补录信息 */
zeroAdditionalRecordingInfo: {
oldPage: {
pageSize: 30,
pageNum: 1,
total: 0,
},
},
/** 全屏 */
fullscreenObj: {
/** 装车明细 */
truckLoadingDetailPopUp: false,
comparativeStatementPopUp: false,
},
/** 页面信息 */
pageInfo: {},
options: [],
});
const {
search,
query,
shortcuts,
stockupDate,
data,
loadingObj,
selectionList,
drawerShow,
page,
trickleLoadingPage,
zeroAdditionalRecordingInfo,
popUpShow,
form,
} = toRefs(details);
// --
const nodeInfoRef = ref(null);
/** vuex */
const permission = computed(() => mapGetters(['permission', 'tagWel', 'tagList']));
console.log('permission :>> ', permission);
/** 设置页面表格高度 */
const setTabelHeight = async () => {
//
await nextTick();
const _listNode = document.querySelectorAll('.columnList.maboxhi');
console.log('nodeInfoRef.value.$el :>> ', nodeInfoRef.value.$el);
//
setNodeHeight(nodeInfoRef.value.$el, 'auto');
console.log('_listNode :>> ', _listNode);
if (_listNode.length === 0) return;
setNodeHeight(_listNode, '400px');
};
//
onMounted(() => {
setTabelHeight();
});
/** 设置节点费用禁用 */
const handleEditForbidden = (_arr: []) => {
if (_arr.length === 0) return;
// (, )
const _firstChild = _arr[0];
_firstChild.blackList = ['unloadCost', 'unloadOtherCost'];
const _otherList = _arr.slice(1);
//
const _otherwhiteList = ['tollFee', 'reachTransportCost'];
//
const _otherBlackList = nodeInfokeys.filter(val => _otherwhiteList.indexOf(val) === -1);
// ;
for (let item of _otherList) {
item.blackList = _otherBlackList;
}
return [_firstChild, ..._otherList];
};
/** 请求页面数据 */
const onLoad = async () => {
const res = await postloadFindLoadInitData();
const { code, data } = res.data;
if (code !== 200) return;
details.pageInfo = data;
console.log('data.startWarehouseInfo.nodeName :>> ', data.startWarehouseInfo.nodeName);
details.nodeInfoData = [
{
nodeName: data.startWarehouseInfo.warehouseName,
warehouseId: data.startWarehouseInfo.warehouseId,
},
];
details.nodeInfoData = handleEditForbidden(details.nodeInfoData);
console.log('details.nodeInfoData :>> ', details.nodeInfoData);
details.form.startWarehouseName = data.startWarehouseInfo.warehouseName;
details.form.startWarehouseId = data.startWarehouseInfo.warehouseId;
};
onLoad();
/** 查询仓库 */
const remoteMethod = async val => {
const res = await postFindWarehouseListByName({ warehouseName: val });
const { code, data } = res.data;
if (code !== 200) return;
details.options = data;
console.log('res :>> ', res);
};
/** 目的仓选择时给目的仓名称赋值 */
const destinationWarehouseNameChange = (val, index) => {
const _value = details.options.find(value => value.warehouseId === val);
details.nodeInfoData[index].nodeName = _value.warehouseName;
details.nodeInfoData[index].nodeId = _value.warehouseId;
};
const initOriginWarehouseOrder = async (params = {}) => {
try {
details.loadingObj.oldListLoading = true;
const submitData = {
...details.page,
loadId: details.pageInfo.startWarehouseInfo.warehouseId,
...details.query,
...params,
};
const res = await postFindAllOrderList(submitData);
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.oldListLoading = false;
}
};
/** 搜索 */
const searchChange = () => {
onLoad(details.page);
};
/** 清空表单 */
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.pageNum = 1;
onLoad(details.page);
};
/** 展开列表控件 */
const showdrawer = (_flag?: boolean) => {
details.drawerShow = _flag;
};
/** 是否开启搜索区 */
const searchHide = () => {
details.search = !details.search;
};
/** 表格表头输入框搜索 */
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.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 beforeClose = done => {
done();
details.form = {};
details.view = false;
};
/**
* 是否开启床车明细全屏
* @params(_type) 开启或关闭
*/
const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
let _node = '';
if (_name) _node = document.querySelectorAll(`.${_name} .maboxhi`);
console.log('_node :>> ', _node);
switch (_name) {
case 'comparativeStatementPopUp':
details.fullscreenObj.comparativeStatementPopUp =
!details.fullscreenObj.comparativeStatementPopUp;
break;
default:
details.fullscreenObj[_name] = !details.fullscreenObj[_name];
if (_type === 'close') {
if (_node) setNodeHeight(_node, '500px');
} else {
if (_node) setNodeHeight(_node);
}
break;
}
};
/** 新增车辆 */
const handleAddCar = () => {
$router.push('/basicdata/vehicle/basicdataVehicle');
};
/** 新增司机 */
const handleAddDriver = () => {
$router.push('/basicdata/driverArtery/basicdataDriverArtery');
};
/** 计算合计 */
let timer = null;
const handleComputedNum = () => {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
let _totalNum = 0;
for (let item of details.nodeInfoData) {
for (let index = 0; index < nodeInfokeys.length; index++) {
const _key = nodeInfokeys[index];
let _number = item[_key];
//
if (!isNumer(_number)) _number = 0;
_totalNum = computeNumber(_totalNum, '+', _number).result;
}
}
details.form.countTransportCost = _totalNum;
//
clearTimeout(timer);
}, 1000);
};
//
handleComputedNum();
/** 新增目的仓 */
const handleAddNode = () => {
const _flag = details.nodeInfoData.every(val => val.nodeName);
if (!_flag) {
return ElMessage({
type: 'warning',
message: '请选择节点仓库',
});
}
details.nodeInfoData.push({
//
query: {},
//
selectionList: [],
//
data: [],
filterData: [],
loading: false,
selectionChange(list, index) {
details.nodeInfoData[index].selectionList = list;
console.log('list :>> ', list);
},
});
details.nodeInfoData = handleEditForbidden(details.nodeInfoData);
// ,
if (details.data.length === 0) initOriginWarehouseOrder();
setTabelHeight();
};
/** 删除目的仓 */
const handleDelNode = (index: number) => {
details.nodeInfoData.splice(index, 1);
setTabelHeight();
};
/** 加入调度池 */
const handleAddWaybill = (index: number) => {
const _node = details.nodeInfoData[index];
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
type: 'warning',
message: '未选择目的仓或目的仓信息异常',
});
}
details.nodeInfoData[index].data = details.selectionList;
};
/** 移除调度池 */
const handleRemoveWaybill = (index: number) => {
const _node = details.nodeInfoData[index];
if (!_node.nodeName || !_node.nodeId) {
return ElMessage({
type: 'warning',
message: '未选择目的仓或目的仓信息异常',
});
}
};
</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;
}
.fwb {
font-weight: bold;
}
//
.popUp_title {
font-size: 18px;
font-weight: bold;
padding: 5px 20px;
position: relative;
margin: 20px 0;
&:first-child {
margin-top: 0;
}
&::before {
width: 4px;
height: 100%;
background: #172e60;
content: '';
display: inline-block;
position: absolute;
top: 0;
left: 0;
}
}
.red {
color: var(--token-simulation-red-base-62);
}
.w100 {
width: 100%;
}
//
:deep(.el-divider__text.is-left) {
font-size: 20px;
font-weight: bold;
color: var(--el-color-primary);
}
//
.form_row {
display: flex;
align-items: center;
.form_row_item {
display: flex;
margin-right: 20px;
:deep(.el-form-item.asterisk-left) {
margin-right: 10px;
}
}
}
//
:deep(.el-radio.el-radio--large) {
height: auto;
}
//
:deep(.nodeInfo .el-table .cell) {
overflow: initial;
}
:deep(.slotbuts) {
height: 35px;
.el-input-number {
height: 100%;
}
}
:deep(.el-steps) {
--el-color-success: #1a3061;
}
.count_icon {
--width: 25px;
margin-right: 20px;
width: var(--width);
height: var(--width);
background: var(--el-color-primary);
color: #fff;
border-radius: 50%;
text-align: center;
line-height: var(--width);
}
.steps_title {
margin-right: 30px;
}
//
:deep(.el-steps) {
flex-wrap: wrap;
}
:deep(.el-step.is-horizontal) {
max-width: none !important;
}
//
.add_row {
display: flex;
justify-content: space-between;
}
</style>

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

@ -162,7 +162,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"
@ -237,7 +237,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="trickleLoadingPage.currentPage"
:current-page="trickleLoadingPage.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="trickleLoadingPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -274,6 +274,7 @@ import { mapGetters } from 'vuex';
import { getDictionaryBiz } from '@/api/system/dict';
import { downloadXls } from '@/utils/util';
import { columnList, detailsColumnList } from '@/option/distribution/VehicleArrivalManagement';
import { postloadArriveCarsPageList } from '@/api/distribution/VehicleArrivalManagement';
import { useRouter } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
@ -321,7 +322,7 @@ const details = reactive({
columnList,
detailsColumnList,
/** 列表数据 */
data: [{}],
data: [],
/** 页面loading */
loadingObj: {
/** 列表加载loading */
@ -333,13 +334,13 @@ const details = reactive({
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
/** 装车明细分页参数 */
trickleLoadingPage: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
@ -383,7 +384,25 @@ onMounted(() => {
});
/** 请求页面数据 */
const onLoad = (page: any) => {};
const onLoad = async (page: any, params = {}) => {
try {
// loading
details.loadingObj.list = true;
//
const res = await postloadArriveCarsPageList(details.page, { ...details.query, ...params });
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.list = false;
}
};
onLoad(details.page);
/** 搜索 */
const searchChange = () => {
@ -394,7 +413,7 @@ const searchChange = () => {
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.currentPage = 1;
details.page.pageNum = 1;
onLoad(details.page);
};

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

@ -66,9 +66,7 @@
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<el-button type="primary" icon="el-icon-plus" @click="searchChange"
>新增配载
</el-button>
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">新增配载 </el-button>
<el-button type="primary" icon="el-icon-printer" @click="searchReset()"
> </el-button
>
@ -150,7 +148,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"
@ -250,7 +248,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="trickleLoadingPage.currentPage"
:current-page="trickleLoadingPage.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="trickleLoadingPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -390,6 +388,7 @@ import {
warehouseNodeColumnList,
truckLoadingColumnList,
} from '@/option/distribution/VehicleStowage';
import { postloadCarsPageList } from '@/api/distribution/VehicleStowage';
import { useRouter } from 'vue-router';
import { ElMessage, ElMessageBox } from 'element-plus';
@ -452,13 +451,13 @@ const details = reactive<any>({
drawerShow: false,
/** 分页参数 */
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
/** 装车明细分页参数 */
trickleLoadingPage: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 0,
},
@ -474,14 +473,6 @@ const details = reactive<any>({
/** 列表Dom节点 */
listNode: '',
form: {},
/** 零担补录信息 */
zeroAdditionalRecordingInfo: {
oldPage: {
pageSize: 30,
currentPage: 1,
total: 0,
},
},
/** 全屏 */
fullscreenObj: {
/** 装车明细 */
@ -501,7 +492,6 @@ const {
drawerShow,
page,
trickleLoadingPage,
zeroAdditionalRecordingInfo,
popUpShow,
} = toRefs(details);
@ -519,7 +509,25 @@ onMounted(() => {
});
/** 请求页面数据 */
const onLoad = (page: any) => {};
const onLoad = async (page: any, params = {}) => {
try {
// loading
details.loadingObj.list = true;
//
const res = await postloadCarsPageList(details.page, { ...details.query, ...params });
const { code, data } = res.data;
if (code !== 200) return;
details.data = data.records;
details.page.total = data.total;
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.list = false;
}
};
onLoad(details.page);
/** 搜索 */
const searchChange = () => {
@ -530,7 +538,7 @@ const searchChange = () => {
const searchReset = () => {
details.query = {};
details.stockupDate = [];
details.page.currentPage = 1;
details.page.pageNum = 1;
onLoad(details.page);
};
@ -694,6 +702,11 @@ const handleFullScrean = (_type: 'open' | 'close', _name: string) => {
break;
}
};
/** 新增配载 */
const handleAdd = () => {
$router.push({ path: '/distribution/artery/AddVehicleStowage' });
};
</script>
<style scoped lang="scss">

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

@ -642,6 +642,7 @@
controls-position="right"
:precision="0"
:step="1"
:min="0"
/>
</el-form-item>
@ -1393,7 +1394,7 @@ const handleAdd = () => {
const initOrderList = async (params = {}) => {
try {
details.form.freezeStatus = '0';
const res = await getopenOrderAdvancePageList(details.page, { ...details.from, ...params });
const res = await getopenOrderAdvancePageList(details.page, { ...details.form, ...params });
//
console.log('res :>> ', res);
const { code, data } = res.data;
@ -1612,7 +1613,7 @@ const handleChooseConsigner = (column, prop, order) => {
/** 返回上一个页面 */
function back() {
useStores.commit('DEL_TAG_CURRENT');
$router.back(-1);
$router.back('-1');
}
/** 重置数据 */

155
src/views/distribution/inventory/arteryDistrilbutionBillLadingList.vue

@ -126,7 +126,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"
@ -324,7 +324,7 @@
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="addInfo.oldPages.currentPage"
:current-page="addInfo.oldPages.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="addInfo.oldPages.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -761,7 +761,7 @@
background
@size-change="detailSizeChange"
@current-change="detailCurrentChange"
:current-page="detailPage.currentPage"
:current-page="detailPage.pageNum"
:page-sizes="[30, 50, 80, 120]"
:page-size="detailPage.pageSize"
layout="total, sizes, prev, pager, next, jumper"
@ -857,13 +857,13 @@ export default {
numBill: 0,
//
page: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 40,
total: 0,
},
/** 详情内分页信息 */
detailPage: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 40,
},
@ -887,7 +887,7 @@ export default {
newSelectionList: [],
/** 未选择 -- 页码数据 */
oldPages: {
currentPage: 1,
pageNum: 1,
pageSize: 30,
total: 40,
},
@ -1099,7 +1099,7 @@ export default {
// this.loading = true;
this.options = [];
this.form.customerCode = null;
let cl = await getListClient(this.page.currentPage, this.page.pageSize, {
let cl = await getListClient(this.page.pageNum, this.page.pageSize, {
clientName: query,
});
console.log('客户信息1234>>>>', cl.data.data.records);
@ -1147,7 +1147,7 @@ export default {
searchReset() {
this.query = {};
this.stockupDate = [];
this.page.currentPage = 1;
this.page.pageNum = 1;
this.onLoad(this.page);
},
/** 表单提交 */
@ -1368,8 +1368,8 @@ export default {
// this.$refs.table.clearSelection();
},
/** 页码改变执行回调 */
currentChange(currentPage) {
this.page.currentPage = currentPage;
currentChange(pageNum) {
this.page.pageNum = pageNum;
this.onLoad(this.page);
},
/** 页数改变执行回调 */
@ -1378,8 +1378,8 @@ export default {
this.onLoad(this.page);
},
/** 详情 -- 页码改变执行回调 */
detailCurrentChange(currentPage) {
this.page.currentPage = currentPage;
detailCurrentChange(pageNum) {
this.page.pageNum = pageNum;
this.onLoad(this.page);
},
/** 详情 -- 页数改变执行回调 */
@ -1426,61 +1426,78 @@ export default {
},
/** 请求页面数据 */
async onLoad(page, params = {}) {
this.loading = true;
if (this.stockupDate.length > 0) {
let startDate = this.stockupDate[0];
let entDate = this.stockupDate[1];
params.startDate = this.getTime(startDate.toString());
params.entDate = this.getTime(entDate.toString());
}
getListOwnNUm(params).then(res => {
console.log('查询数量!!!', res.data.data);
if (!!res.data.data) {
this.treatNum = !res.data.data.treatNum ? 0 : parseInt(res.data.data.treatNum);
this.stopNum = !res.data.data.stopNum ? 0 : res.data.data.stopNum;
this.numBill = parseInt(this.treatNum) + parseInt(this.stopNum);
}
});
getListOwn(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
const data = res.data.data;
console.log('???????', data);
this.page.total = data.total;
this.data = data.records;
try {
// loading
this.loading = true;
this.data.forEach(i => {
if (!!i.list) {
i.collectFee = 0;
i.storageFee = 0;
i.transport = 0;
i.forklift = 0;
i.otherFee = 0;
i.list.forEach(a => {
const { cost, money } = a; // acostmoney
switch (cost) {
case '1': //
i.collectFee = money ? parseInt(money) : 0;
break;
case '2': //
i.storageFee = money ? parseInt(money) : 0;
break;
case '3': //
console.log('0=-0-=');
i.transport = money ? parseInt(money) : 0;
break;
case '4': //
i.forklift = money ? parseInt(money) : 0;
break;
case '5': //
i.otherFee = money ? parseInt(money) : 0;
break;
}
});
}
});
console.log(this.data);
//
const res = await postPageList(page, { ...this.query, ...params });
console.log('res :>> ', res);
const { code, data } = res.data;
if (code !== 200) return;
this.data = data.records;
this.page.total = res.total;
} catch (error) {
} finally {
this.loading = false;
this.selectionClear();
});
}
// if (this.stockupDate.length > 0) {
// let startDate = this.stockupDate[0];
// let entDate = this.stockupDate[1];
// params.startDate = this.getTime(startDate.toString());
// params.entDate = this.getTime(entDate.toString());
// }
// getListOwnNUm(params).then(res => {
// console.log('!!!', res.data.data);
// if (!!res.data.data) {
// this.treatNum = !res.data.data.treatNum ? 0 : parseInt(res.data.data.treatNum);
// this.stopNum = !res.data.data.stopNum ? 0 : res.data.data.stopNum;
// this.numBill = parseInt(this.treatNum) + parseInt(this.stopNum);
// }
// });
// getListOwn(page.pageNum, page.pageSize, Object.assign(params, this.query)).then(res => {
// const data = res.data.data;
// console.log('???????', data);
// this.page.total = data.total;
// this.data = data.records;
// this.data.forEach(i => {
// if (!!i.list) {
// i.collectFee = 0;
// i.storageFee = 0;
// i.transport = 0;
// i.forklift = 0;
// i.otherFee = 0;
// i.list.forEach(a => {
// const { cost, money } = a; // acostmoney
// switch (cost) {
// case '1': //
// i.collectFee = money ? parseInt(money) : 0;
// break;
// case '2': //
// i.storageFee = money ? parseInt(money) : 0;
// break;
// case '3': //
// console.log('0=-0-=');
// i.transport = money ? parseInt(money) : 0;
// break;
// case '4': //
// i.forklift = money ? parseInt(money) : 0;
// break;
// case '5': //
// i.otherFee = money ? parseInt(money) : 0;
// break;
// }
// });
// }
// });
// console.log(this.data);
// this.loading = false;
// this.selectionClear();
// });
},
async getMenDian(row, num) {
// console.log("",row);
@ -1520,7 +1537,7 @@ export default {
aa = i.value;
}
});
let bu = await getListName(this.page.currentPage, this.page.pageSize, {
let bu = await getListName(this.page.pageNum, this.page.pageSize, {
clientId: aa,
typeService: '3',
});
@ -1528,7 +1545,7 @@ export default {
if (bu.data.data?.records.length > 0) {
this.form.serviceType = bu.data.data.records[0].mold;
}
let cl = await getListClient(this.page.currentPage, this.page.pageSize, { pid: row });
let cl = await getListClient(this.page.pageNum, this.page.pageSize, { pid: row });
// console.log(">>>>",cl.data.data.records);
this.shop = [];
cl.data.data.records.forEach(i => {
@ -1545,7 +1562,7 @@ export default {
// this.loading = true;
this.options = [];
this.form.clientId = null;
let cl = await getListClient(this.page.currentPage, this.page.pageSize, {
let cl = await getListClient(this.page.pageNum, this.page.pageSize, {
clientCode: query,
});
console.log('客户信息1234>>>>', cl.data.data.records);

109
src/views/mail/inventory/list.vue

@ -255,23 +255,65 @@ export default {
checkarr: [],
fixed: true,
},
{
prop: 'despatch',
label: '物流车次',
type: 2,
values: '',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'incomingBatch',
label: '入库批次',
type: 2,
values: '',
width: '160',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'serviceNumber',
label: '服务号',
type: 2,
values: '',
width: '130',
width: '120',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'marketName',
label: '商场/客户',
type: 2,
values: '',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'storeName',
label: '门店名称',
type: 2,
values: '',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'serviceTypeName',
label: '服务类型',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: true,
sortable: true,
@ -292,7 +334,7 @@ export default {
label: '物料名称',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -302,7 +344,7 @@ export default {
label: '物料编码',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -317,26 +359,8 @@ export default {
// fixed: false,
// sortable: true,
// },
{
prop: 'despatch',
label: '物流车次',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'incomingBatch',
label: '入库批次',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
// {
// prop: 'mallName',
// label: '',
@ -352,7 +376,7 @@ export default {
label: '库存数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -362,7 +386,7 @@ export default {
label: '冻结数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -371,7 +395,7 @@ export default {
label: '出库数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -401,31 +425,12 @@ export default {
label: '品牌',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'marketName',
label: '商场/客户',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'storeName',
label: '门店名称',
type: 2,
values: '',
width: '130',
width: '120',
checkarr: [],
fixed: false,
sortable: true,
},
// {
// prop: 'storeCode',
// label: '',
@ -461,7 +466,7 @@ export default {
label: '仓库名称',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -471,7 +476,7 @@ export default {
label: '物料单位',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -481,7 +486,7 @@ export default {
label: '拆包数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -491,7 +496,7 @@ export default {
label: '拆包状态',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [ {
value: `true`,
label: '是',

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

File diff suppressed because it is too large Load Diff

67
src/views/mail/order/list.vue

@ -352,8 +352,8 @@ export default {
fixed: true,
},
{
prop: 'serviceNumber',
label: '服务号',
prop: 'waybillNumber',
label: '运单号',
type: 2,
values: '',
width: '130',
@ -363,8 +363,8 @@ export default {
head: false,
},
{
prop: 'waybillNumber',
label: '运单号',
prop: 'serviceNumber',
label: '服务号',
type: 2,
values: '',
width: '130',
@ -373,12 +373,13 @@ export default {
sortable: true,
head: false,
},
{
prop: 'orderCode',
label: '订单自编号',
type: 2,
values: '',
width: '130',
width: '160',
checkarr: [],
fixed: false,
sortable: true,
@ -388,7 +389,7 @@ export default {
label: '商场名称',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -398,7 +399,7 @@ export default {
label: '货物名称',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -408,7 +409,7 @@ export default {
label: '所在仓库',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -418,7 +419,7 @@ export default {
label: '入库时间',
type: 4,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -428,7 +429,7 @@ export default {
label: '在库时间',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -438,7 +439,7 @@ export default {
label: '订单总件数',
type: 1,
values: '',
width: '130',
width: '160',
checkarr: [],
fixed: false,
sortable: true,
@ -448,7 +449,7 @@ export default {
label: '收货单位',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -466,7 +467,7 @@ export default {
label: '在库件数',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -475,7 +476,7 @@ export default {
label: '可用数量',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -485,7 +486,7 @@ export default {
label: '未入库数量',
type: 1,
values: '',
width: '130',
width: '160',
checkarr: [],
fixed: false,
sortable: true,
@ -494,7 +495,7 @@ export default {
label: '分拣数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -503,7 +504,7 @@ export default {
label: '配送数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -512,7 +513,7 @@ export default {
label: '中转数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -521,7 +522,7 @@ export default {
label: '签收数量',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -530,7 +531,7 @@ export default {
label: '上架状态',
type: 3,
values: '',
width: '130',
width: '140',
checkarr: [
],
@ -538,10 +539,10 @@ export default {
sortable: true,
},{
prop: 'allocation',
label: '货区-货位-货架',
label: '货位信息',
type: 1,
values: '',
width: '150',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -550,7 +551,7 @@ export default {
label: '订单来源',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -560,7 +561,7 @@ export default {
label: '所在托盘',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -570,7 +571,7 @@ export default {
label: '冻结状态',
type: 3,
values: '',
width: '130',
width: '140',
checkarr: [
],
@ -583,7 +584,7 @@ export default {
label: '预约状态',
type: 3,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -593,7 +594,7 @@ export default {
label: '订单状态',
type: 3,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -603,7 +604,7 @@ export default {
label: '是否齐套',
type: 3,
values: '',
width: '130',
width: '140',
checkarr: [
{
value: '2',
@ -642,7 +643,7 @@ export default {
label: '顾客名字',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -652,7 +653,7 @@ export default {
label: '顾客电话',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -662,7 +663,7 @@ export default {
label: '顾客地址',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -672,7 +673,7 @@ export default {
label: '增值服务',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -690,7 +691,7 @@ export default {
label: '创建时间',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,

176
src/views/waybill/CreateZeroOrder.vue

@ -28,7 +28,7 @@
</div>
<!-- 第一排 -->
<div class="table-row mt15">
<div class="table-row mt15 border-top">
<el-form-item label="发站仓:" prop="departureWarehouseName" class="el-times">
<el-input disabled v-model="query.departureWarehouseName" placeholder="货号"></el-input>
</el-form-item>
@ -395,7 +395,10 @@
<div style="margin-right: 10px; width: 55%; flex: none; zoom: 0.9">
<div style="flex: 1">
<div class="table-row-title" style="margin-bottom: 10px">
<div class="table-row-title-item">合计费用</div>
<div class="table-row-title-item">
合计费用
<span class="red">{{ totalCost }}</span>
</div>
</div>
<div>
<el-form label-width="fit-content">
@ -410,6 +413,9 @@
<el-form-item label="送货费:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.deliveryFee"
></el-input-number>
@ -417,6 +423,9 @@
<el-form-item label="提货费:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.pickupFee"
></el-input-number>
@ -424,6 +433,9 @@
<el-form-item label="仓库管理费:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.warehouseManagementFee"
></el-input-number>
@ -431,6 +443,9 @@
<el-form-item label="仓储费:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.storageFee"
></el-input-number>
@ -440,30 +455,45 @@
<el-row>
<el-form-item label="装卸费:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.handlingFee"
></el-input-number>
</el-form-item>
<el-form-item label="其它费用:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.otherFee"
></el-input-number>
</el-form-item>
<el-form-item label="保价费:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.insuranceFee"
></el-input-number>
</el-form-item>
<el-form-item label="申明价值:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.claimingValue"
></el-input-number>
</el-form-item>
<el-form-item label="回扣:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.rebate"
></el-input-number>
@ -498,18 +528,7 @@
</el-select>
</el-form-item>
<el-form-item
label="付款方式:"
label-width="fit-content"
:rules="[
{
required: true,
message: '请选择付款方式',
trigger: 'change',
},
]"
prop="payWay"
>
<el-form-item label="付款方式:" label-width="fit-content" prop="payWay">
<el-select
v-model="query.payWay"
:teleported="false"
@ -527,6 +546,9 @@
<el-form-item label-width="fit-content" label="现付:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.xianPay"
></el-input-number>
@ -536,6 +558,9 @@
<el-row>
<el-form-item label-width="fit-content" label="到付:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.daoPay"
></el-input-number>
@ -543,6 +568,9 @@
<el-form-item label-width="fit-content" label="月结:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.yuePay"
></el-input-number>
@ -550,6 +578,9 @@
<el-form-item label-width="fit-content" label="回付:">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.huiPay"
></el-input-number>
@ -571,6 +602,9 @@
<div style="font-size: 14px">代收货款:</div>
<el-form-item label-width="0">
<el-input-number
:precision="2"
:min="0"
:step="0.1"
controls-position="right"
v-model="query.replacePrice"
></el-input-number>
@ -600,9 +634,9 @@
</el-form-item>
<el-form-item
prop="deliveryWay"
label="送货方式:"
label-width="fit-content"
prop="deliveryWay"
class="el-times"
>
<el-select v-model="query.deliveryWay" class="m-2" placeholder="送货方式">
@ -735,8 +769,6 @@ const details = reactive<any>({
destinationWarehouseId: '',
/** 货物号 */
goodsCode: '',
/** 订单号 */
orderCode: '',
/** 发货单位id */
shipperId: '',
/** 发货单位 */
@ -1050,12 +1082,7 @@ const details = reactive<any>({
{
required: true,
message: '请填写或选择发站仓',
trigger: 'blur',
},
{
required: true,
message: '请填写或选择发站仓',
trigger: 'change',
trigger: ['change', 'blur'],
},
],
/** 到站 */
@ -1063,7 +1090,7 @@ const details = reactive<any>({
{
required: true,
message: '请填写或选择到站地',
trigger: 'blur',
trigger: 'change',
},
],
/** 目的站名称 */
@ -1079,12 +1106,7 @@ const details = reactive<any>({
{
required: true,
message: '请选择或输入发货单位',
trigger: 'blur',
},
{
required: true,
message: '请选择或输入发货单位',
trigger: 'change',
trigger: ['change', 'blur'],
},
],
/** 发货人 */
@ -1092,12 +1114,7 @@ const details = reactive<any>({
{
required: true,
message: '请选择或输入收货人',
trigger: 'blur',
},
{
required: true,
message: '请选择或输入收货人',
trigger: 'change',
trigger: ['change', 'blur'],
},
],
/** 发货人电话 */
@ -1105,12 +1122,7 @@ const details = reactive<any>({
{
required: true,
message: '请选择或输入发货人电话',
trigger: 'blur',
},
{
required: true,
message: '请选择或输入发货人电话',
trigger: 'change',
trigger: ['change', 'blur'],
},
],
/** 收货单位 */
@ -1118,12 +1130,7 @@ const details = reactive<any>({
{
required: true,
message: '请选择或输入收货单位',
trigger: 'blur',
},
{
required: true,
message: '请选择或输入收货单位',
trigger: 'change',
trigger: ['change', 'blur'],
},
],
/** 收货人 */
@ -1133,11 +1140,6 @@ const details = reactive<any>({
message: '请选择或输入收货人',
trigger: 'blur',
},
{
required: true,
message: '请选择或输入收货人',
trigger: 'change',
},
],
/** 收货人电话 */
consigneeMobile: [
@ -1146,9 +1148,12 @@ const details = reactive<any>({
message: '请选择或输入收货人电话',
trigger: 'blur',
},
],
/** 付款方式 */
payWay: [
{
required: true,
message: '请选择或输入收货人电话',
message: '请选择付款方式',
trigger: 'change',
},
],
@ -1160,7 +1165,7 @@ const details = reactive<any>({
trigger: 'change',
},
],
/** 付款方式 */
/** 紧急度 */
urgency: [
{
required: true,
@ -1168,14 +1173,6 @@ const details = reactive<any>({
trigger: 'change',
},
],
/** 付款方式 */
payWay: [
{
required: true,
message: '请选择付款方式',
trigger: 'change',
},
],
},
payRules: [],
@ -1225,6 +1222,22 @@ const details = reactive<any>({
const { query, data, drawerShow, page, loadingObj } = toRefs(details);
//
const totalCost = computed(() => {
// let _num = 0;
const _num = computeNumber(0, '+', details.totalObj.totalFreight)
.next('+', details.query.deliveryFee)
.next('+', details.query.pickupFee)
.next('+', details.query.warehouseManagementFee)
.next('+', details.query.storageFee)
.next('+', details.query.handlingFee)
.next('+', details.query.otherFee)
.next('+', details.query.insuranceFee)
.next('+', details.query.rebate)
.next('+', details.query.claimingValue).result;
return _num;
});
const consignee = ref();
const consigneeName = ref();
const consigneeMobile = ref();
@ -1250,7 +1263,7 @@ getLazyTreeAll().then(res => {
});
/** 初始化获取暂存单转运单信息 */
const onLoad = async idsArr => {
const onLoad = async (idsArr = []) => {
const res = await postOpenOrderOpenZeroWaybillInfo();
const { code, data } = res.data;
console.log('data :>> ', data);
@ -1549,6 +1562,8 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
</script>
<style scoped lang="scss">
$borderColor: #172e60;
:deep(.el-date-editor.el-input, .el-date-editor.el-input__wrapper) {
height: 100% !important;
}
@ -1567,15 +1582,33 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
margin-bottom: 10px;
}
.border-top {
border-top: 1px solid $borderColor;
}
.table-row {
width: 100%;
display: flex;
// border: 1px solid #ddd;
// border-top: 1px solid $borderColor;
border-left: 1px solid $borderColor;
border-bottom: none;
box-sizing: border-box;
&:first-child {
display: block;
border-top: 1px solid $borderColor;
border-left: 1px solid $borderColor;
> div {
width: 100%;
border: none;
}
}
&:last-child {
display: block;
border: 1px solid #777;
border-bottom: 1px solid $borderColor;
border-right: 1px solid $borderColor;
box-sizing: border-box;
> div {
@ -1587,7 +1620,8 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
> div {
flex: 1;
padding: 5px;
border: 1px solid #777;
border-bottom: 1px solid $borderColor;
border-right: 1px solid $borderColor;
display: inline-flex;
box-sizing: border-box;
}
@ -1720,4 +1754,12 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
.mt15 {
margin-top: 15px;
}
.red {
color: var(--token-simulation-red-base-62);
}
:deep(.el-divider__text.is-center) {
font-size: 28px;
}
</style>

Loading…
Cancel
Save