pref_mail@163.com 11 months ago
parent
commit
d410de0339
  1. 11
      src/api/distribution/arteryDistrilbutionBillLadingList.js
  2. 35
      src/api/waybill/WaybillOrderList.js
  3. 14
      src/components/tablecmt/tablecmt.vue
  4. 8
      src/option/waybill/WarehousingByTrainNumber.js
  5. 72
      src/option/waybill/WaybillOrderList.js
  6. 148
      src/utils/util.js
  7. 549
      src/views/aftersales/aftersalesWorkOrderAddTemp.vue
  8. 4
      src/views/distribution/artery/AddVehicleStowage.vue
  9. 2
      src/views/distribution/artery/VehicleArrivalManagement.vue
  10. 2
      src/views/distribution/artery/VehicleStowage.vue
  11. 6
      src/views/distribution/artery/VehicleStowageDetails.vue
  12. 2
      src/views/distribution/artery/handleLoadingDestination.vue
  13. 2
      src/views/distribution/artery/zeroAdditionalRecording.vue
  14. 5
      src/views/distribution/deliverylist/distributionDeliveryListdis.vue
  15. 105
      src/views/distribution/deliverylist/distributionDeliveryListedt.vue
  16. 4
      src/views/distribution/deliverylist/distributionDeliveryListmar.vue
  17. 2
      src/views/distribution/inventory/BookingNote.vue
  18. 5
      src/views/distribution/inventory/CreateOrder.vue
  19. 3011
      src/views/distribution/inventory/CreateOrder2.vue
  20. 2
      src/views/distribution/inventory/addArteryDistrilbutionBillLadingList.vue
  21. 87
      src/views/distribution/inventory/arteryDistrilbutionBillLadingListDetails.vue
  22. 10
      src/views/distribution/inventory/distributionStockListDetails.vue
  23. 4
      src/views/distribution/reservation/reservationAddFrom copy.vue
  24. 264
      src/views/distribution/reservation/reservationAddFrom.vue
  25. 33
      src/views/distribution/signfor/distributionSignforedt.vue
  26. 7
      src/views/waybill/CreateZeroOrder.vue
  27. 25
      src/views/waybill/TemporaryStorageList.vue
  28. 131
      src/views/waybill/WarehousingByTrainNumber.vue
  29. 134
      src/views/waybill/WaybillOrderList.vue
  30. 2
      src/views/waybill/orderDetails.vue
  31. 35
      src/views/waybill/orderPackageList.vue
  32. 2
      src/views/waybill/orderPackageListDetails.vue

11
src/api/distribution/arteryDistrilbutionBillLadingList.js

@ -153,3 +153,14 @@ export const postFindWaybillBillladingList = data => {
data,
});
};
/**
* 查询提货日志
*/
export const postFindBillladingLogList = data => {
return request({
url: '/api/logpm-trunkline/billlading/findBillladingLogList',
method: 'post',
data,
});
};

35
src/api/waybill/WaybillOrderList.js

@ -27,7 +27,7 @@ export const postSaveWaybillReturn = data => {
};
/**
* 上传回
* 打印运
*/
export const postPrintBatch = params => {
return request({
@ -36,3 +36,36 @@ export const postPrintBatch = params => {
params,
});
};
/**
* 批量作废
*/
export const postAbolishWaybill = data => {
return request({
url: '/api/logpm-trunkline/openOrder/abolishWaybill',
method: 'post',
data,
});
};
/**
* 批量冻结
*/
export const postFreezeWaybill = data => {
return request({
url: '/api/logpm-trunkline/openOrder/freezeWaybill',
method: 'post',
data,
});
};
/**
* 批量恢复
*/
export const postUnFreezeWaybill = data => {
return request({
url: '/api/logpm-trunkline/openOrder/unFreezeWaybill',
method: 'post',
data,
});
};

14
src/components/tablecmt/tablecmt.vue

@ -54,7 +54,7 @@
clearable
:placeholder="`请输入${column.label}`"
@change="inputchange($event, column)"
@keyup.enter="handleInput($event, column)"
@keyup.enter="handleInput"
/>
<el-select
v-if="column.type == 3 || column.type == 14"
@ -75,10 +75,9 @@
<el-date-picker
v-model="column.values"
v-if="column.type == 4"
type="date"
clearable
style="width: auto;height:23px !important"
style="width: auto; height: 23px !important"
:placeholder="`请选择${column.label}`"
@change="timechange($event, column)"
/>
@ -87,7 +86,7 @@
v-if="column.type == 5"
type="datetime"
clearable
style="width: auto;"
style="width: auto"
size="default"
:placeholder="`请选择${column.label}`"
format="YYYY/MM/DD HH:mm:ss"
@ -358,7 +357,7 @@ let props = defineProps({
default: false,
},
initFn: {
type: Function as PropType<Function>,
type: (Boolean as PropType<boolean>) || (Function as PropType<Function>),
required: false,
default: false,
},
@ -555,7 +554,6 @@ const handleSelectionChange = (param: TableDataType[]) => {
} catch (error) {
console.log('error :>> ', error);
} finally {
console.log('123 :>> ', param);
emit('selection', param);
}
}, 50);
@ -571,7 +569,6 @@ const handleUserSelcet = list => {
for (const item of props.tableData) {
if (item === iterator) _flag = true;
console.log('_flag :>> ', _flag);
if (_flag) break;
}
}
@ -855,8 +852,7 @@ defineExpose({ handleCheckSelect, handleClearSelect });
.el-table__body tr.hover-row > td {
background-color: #d3d8e1 !important;
}
:deep(.el-date-editor.el-input,
.el-date-editor.el-input__wrapper) {
:deep(.el-date-editor.el-input, .el-date-editor.el-input__wrapper) {
height: 23px;
}
.copys {

8
src/option/waybill/WarehousingByTrainNumber.js

@ -18,7 +18,7 @@ export const columnList = [
{
prop: 'orderCode',
label: '订单自编号',
type: 2,
type: 1,
values: '',
width: '150',
checkarr: [],
@ -90,7 +90,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'legacyStatus',
prop: 'legacyStatusName',
label: '是否遗留',
type: 3,
values: '',
@ -153,7 +153,7 @@ export const columnList = [
sortable: true,
},
{
prop: 'matingType',
prop: 'matingTypeName',
label: '是否齐套',
type: 3,
values: '',
@ -218,7 +218,7 @@ export const columnList = [
{
prop: 'createTime',
label: '创建时间',
type: 1,
type: 4,
values: '',
width: '130',
checkarr: [],

72
src/option/waybill/WaybillOrderList.js

@ -635,6 +635,78 @@ export const columnList = [
isshowSummary: false,
sortable: true,
},
{
prop: 'freezeStatusName',
label: '是否冻结',
type: 3,
values: '',
width: '150',
checkarr: [
{ label: '是', value: '1' },
{ label: '否', value: '0' },
],
fixed: false,
isshowSummary: false,
sortable: true,
},
{
prop: 'freezeUserName',
label: '冻结人',
type: 3,
values: '',
width: '150',
checkarr: [],
fixed: false,
isshowSummary: false,
sortable: true,
},
{
prop: 'freezeTime',
label: '冻结时间',
type: 3,
values: '',
width: '150',
checkarr: [],
fixed: false,
isshowSummary: false,
sortable: true,
},
{
prop: 'abolishStatusName',
label: '是否作废',
type: 3,
values: '',
width: '150',
checkarr: [
{ label: '是', value: '1' },
{ label: '否', value: '0' },
],
fixed: false,
isshowSummary: false,
sortable: true,
},
{
prop: 'abolishUserName',
label: '作废人',
type: 3,
values: '',
width: '150',
checkarr: [],
fixed: false,
isshowSummary: false,
sortable: true,
},
{
prop: 'abolishTime',
label: '作废时间',
type: 3,
values: '',
width: '150',
checkarr: [],
fixed: false,
isshowSummary: false,
sortable: true,
},
/* {
prop: 'carrierName',
label: '审核状态',

148
src/utils/util.js

@ -3,6 +3,7 @@ import sha256 from 'crypto-js/sha256';
import Base64 from 'crypto-js/enc-base64';
import store from '@/store/index';
import { nextTick } from 'vue';
import dayjs from 'dayjs';
//表单序列化
export const serialize = data => {
let list = [];
@ -674,8 +675,7 @@ export function checkParams(data, targetParam) {
}
}
/**
* 去除表格表头搜索框的值
/**
* @param {Array} tableColumnList
* @returns
*/
@ -688,8 +688,7 @@ export function handleClearTableQuery(tableColumnList) {
}
}
/**
* 文本换行
/**
* @param {string} className 类名
* @param {number} num 多少字进行换行
* @returns
@ -716,8 +715,7 @@ export function hanleTextLineFeed(className, num) {
}
}
/**
* 转译数据中下拉框的值
/**
* @param {Array} data
* @param {Array} columnList
* @param {Function} fn 执行的函数
@ -727,7 +725,9 @@ export function handleTranslationDataSeclect(data, columnList, fn = (value, item
return console.log('columnList 参数类型错误 >>>', columnList);
if (getObjType(data) !== 'array') return console.log('data 参数类型错误 >>>', data);
const filterArr = columnList.filter(val => val.type === 3);
const filterArr = columnList.filter(
val => getObjType(val.checkarr) === 'array' && val.checkarr.length > 0
);
for (let i = 0; i < data.length; i++) {
const value = data[i];
@ -749,3 +749,137 @@ export function handleTranslationDataSeclect(data, columnList, fn = (value, item
}
}
}
/**
* @param {*} value 输入的值
* @param {object} col 每列的配置
* @param {object} query 存储查询条件的对象
* @param {Boolean} isRegExp 是否将输入的值转换为正则表达式
* @returns
*/
export const handleInputQuery = (value, col, query, isRegExp = false) => {
if (getObjType(query) !== 'object') return;
if (getObjType(col) !== 'object') return;
if (!value && value !== 0) {
delete query[col.prop];
return;
}
const _value = isRegExp ? new RegExp('^' + value) : value;
query[col.prop] = _value;
};
/**
* @param {*} value 下拉框选择的值
* @param {object} col 每列的配置
* @param {object} query 存储查询条件的对象
* @returns
*/
export const handleSelectQuery = (value, col, query) => {
if (getObjType(query) !== 'object') return;
if (getObjType(col) !== 'object') return;
const _key = col.prop.replace('Name', '');
if (!value && value !== 0) {
delete query[_key];
return;
}
query[_key] = value;
};
/**
* @param {*} value 下拉框选择的值
* @param {object} col 每列的配置
* @param {object} query 存储查询条件的对象
* @returns
*/
export const handleTimeQuery = (value, col, query) => {
if (getObjType(query) !== 'object') return;
if (getObjType(col) !== 'object') return;
if (!value && value !== 0) {
delete query[col.prop];
return;
}
query[col.prop] = dayjs(value).format('YYYY-MM-DD');
};
/**
* @param {Array} data 所有数据
* @param {any} renderData 渲染数据
* @param {Object} option inputQuery -- 输入框查询条件, selectQuery -- 下拉框查询条件, timeQuery -- 时间查询条件
* @returns
*/
export const handleFilterData = (data, renderData, { inputQuery, selectQuery, timeQuery }) => {
const newData = [];
let isReturn = true;
if (getObjType(inputQuery) === 'object' && Object.keys(inputQuery).length > 0) isReturn = false;
if (isReturn && getObjType(selectQuery) === 'object' && Object.keys(selectQuery).length > 0)
isReturn = false;
if (isReturn && getObjType(timeQuery) === 'object' && Object.keys(timeQuery).length > 0)
isReturn = false;
if (isReturn) return (renderData.value = data);
for (let i = 0; i < data.length; i++) {
const element = data[i];
let _flag = true;
// 筛选输入框
for (const key in inputQuery) {
if (!_flag) break;
if (!inputQuery[key].test(element[key])) {
_flag = false;
break;
}
}
// 筛选下拉框
for (const key in selectQuery) {
if (!_flag) break;
if (element[key] + '' !== selectQuery[key] + '') {
_flag = false;
break;
}
}
// 筛选时间
for (const key in timeQuery) {
if (!_flag) break;
const value = timeQuery[key];
if (!value) continue;
const type = getObjType(value);
let _startTime = 0;
let _endTime = 0;
if (type === 'string') {
_startTime = Date.parse(value);
_endTime = Date.parse(value) + 1000 * 60 * 60 * 24 - 1;
} else if (type === 'array') {
_startTime = Date.parse(value[0]);
_endTime = Date.parse(value[1]) + 1000 * 60 * 60 * 24 - 1;
} else continue;
const _time = Date.parse(element[key.replace('Arr', '')]);
if (_time !== _time) _flag = false;
else if (_time < _startTime || _time > _endTime) _flag = false;
if (!_flag) break;
}
if (_flag) newData.push(element);
}
renderData.value = newData;
};

549
src/views/aftersales/aftersalesWorkOrderAddTemp.vue

@ -25,9 +25,9 @@
<!-- 头部类型选择 -->
<div class="tablemunTop">
<!-- 异常类型 -->
<el-form-item label="异常类型" prop="workOrderType">
<el-form-item label="异常类型" prop="basis.workOrderType">
<el-select
v-model="form.workOrderType"
v-model="form.basis.workOrderType"
placeholder="请选择异常类型"
style="width: 100%"
clearable
@ -40,10 +40,11 @@
/>
</el-select>
</el-form-item>
<!-- 发现节点 -->
<el-form-item label="发现节点" prop="discoveryNode">
<el-form-item label="发现节点" prop="basis.discoveryNode">
<el-select
v-model="form.discoveryNode"
v-model="form.basis.discoveryNode"
placeholder="请选择发现节点"
style="width: 100%"
@change="DiscoveringNodesChange"
@ -59,8 +60,8 @@
</el-select>
</el-form-item>
<el-form-item label="异常类型">
<el-input v-model="form.name" disabled placeholder="异常工单号(自动生成)" />
<el-form-item label="异常工单号">
<el-input v-model="form.basis.name" disabled placeholder="异常工单号(自动生成)" />
</el-form-item>
</div>
@ -73,9 +74,6 @@
>
<el-tab-pane label="包件信息" name="0">
<div class="el_top">
<el-button type="primary" class="el_addPackage" @click="Addpackages">
<el-icon><Plus /></el-icon></el-button
>
<div class="el_Package_num">
<span>共计包件:{{ form.PackageList.length }}</span>
</div>
@ -142,16 +140,30 @@
clearable
/>
</el-form-item>
</div>
<!-- 按钮 -->
<div class="el_activPackage_btton">
<el-button v-if="item.history" @click="ViewhistoricalPackages(item)"
>查看历史包件</el-button
<el-button
v-if="!index"
type="primary"
class="el_addPackage"
@click="Addpackages"
style="margin-top: 2px"
>
<el-icon><Plus /></el-icon></el-button
>
<el-button v-if="index" type="primary" @click="Removepackage(index)"
>移除</el-button
<el-button
v-if="index"
type="primary"
class="el_addPackage"
style="margin-top: 2px"
@click="Removepackage(index)"
>
<el-icon><DeleteFilled /></el-icon></el-button
>
<div class="el_activPackage_btton" v-if="item.history">
<el-button @click="ViewhistoricalPackages(item)">查看历史包件</el-button>
</div>
</div>
<!-- 按钮 -->
</div>
</template>
</el-tab-pane>
@ -165,12 +177,21 @@
v-loading="form.Packageloading"
>
<el-tab-pane label="基础信息" name="0">
<div class="Basicinformation" style="padding-left: 20px; box-sizing: border-box">
<el-form-item label="车次号" prop="trainNumber" v-if="displaySettings.trainNumber">
<div class="Basicinformation" style="padding-left: 26px; box-sizing: border-box">
<el-form-item
label="车次号"
prop="basis.trainNumber"
v-if="displaySettings.trainNumber"
>
<el-select
v-model="form.trainNumber"
v-model="form.basis.trainNumber"
filterable
allow-create
default-first-option
:reserve-keyword="false"
placeholder="请选择车次号"
style="width: 100%"
clearable
@change="DeliveryTrainnumber(form.trainNumber)"
>
<el-option
@ -178,18 +199,17 @@
:key="item.value"
:label="item.trainNumber"
:value="item.trainNumber"
clearable
/>
</el-select>
</el-form-item>
<el-form-item
label="配送时间"
prop="deliveryTime"
prop="basis.deliveryTime"
v-if="displaySettings.deliveryTime"
>
<el-date-picker
v-model="form.deliveryTime"
v-model="form.basis.deliveryTime"
style="width: 100%"
type="datetime"
format="YYYY-MM-DD"
@ -200,27 +220,35 @@
<el-form-item
label="配送司机"
prop="deliveryDriver"
prop="basis.deliveryDriver"
v-if="displaySettings.deliveryDriver"
>
<el-input v-model="form.deliveryDriver" placeholder="请输配送司机" clearable />
<el-input
v-model="form.basis.deliveryDriver"
placeholder="请输配送司机"
clearable
/>
</el-form-item>
<el-form-item
label="车辆线路"
prop="vehicleRoute"
prop="basis.vehicleRoute"
v-if="displaySettings.vehicleRoute"
>
<el-input v-model="form.vehicleRoute" placeholder="请输入车辆线路" clearable />
<el-input
v-model="form.basis.vehicleRoute"
placeholder="请输入车辆线路"
clearable
/>
</el-form-item>
<el-form-item
label="发货时间"
prop="deliverGoodsTime"
prop="basis.deliverGoodsTime"
v-if="displaySettings.deliverGoodsTime"
>
<el-date-picker
v-model="form.deliverGoodsTime"
v-model="form.basis.deliverGoodsTime"
style="width: 100%"
type="datetime"
format="YYYY-MM-DD"
@ -231,11 +259,11 @@
<el-form-item
label="入库时间"
prop="warehousingTime"
prop="basis.warehousingTime"
v-if="displaySettings.warehousingTime"
>
<el-date-picker
v-model="form.warehousingTime"
v-model="form.basis.warehousingTime"
style="width: 100%"
type="datetime"
format="YYYY-MM-DD"
@ -246,11 +274,11 @@
<el-form-item
label="发现时间"
prop="discoveryTime"
prop="basis.discoveryTime"
v-if="displaySettings.discoveryTime"
>
<el-date-picker
v-model="form.discoveryTime"
v-model="form.basis.discoveryTime"
style="width: 100%"
type="datetime"
format="YYYY-MM-DD"
@ -259,17 +287,21 @@
/>
</el-form-item>
<!-- 初始必填 -->
<el-form-item label="运单商场" prop="waybillMall" v-if="displaySettings.waybillMall">
<el-input v-model="form.waybillMall" placeholder="请输入运单商场" clearable />
<el-form-item
label="运单商场"
prop="basis.waybillMall"
v-if="displaySettings.waybillMall"
>
<el-input v-model="form.basis.waybillMall" placeholder="请输入运单商场" clearable />
</el-form-item>
<!-- 初始必填 -->
<el-form-item
label="合作模式"
prop="typeServiceName"
prop="basis.typeServiceName"
v-if="displaySettings.typeServiceName"
>
<el-input
v-model="form.typeServiceName"
v-model="form.basis.typeServiceName"
placeholder="合作模式(有则自动带出)"
disabled
clearable
@ -279,12 +311,12 @@
<div class="el_Basic">
<el-form-item
label="处理方"
prop="processor"
prop="basis.processor"
class="el_Processing"
v-if="displaySettings.processor"
>
<el-select
v-model="form.processor"
v-model="form.basis.processor"
placeholder="请选择处理方"
style="width: 100%"
multiple
@ -302,13 +334,13 @@
<!-- 初始必填 -->
<el-form-item
label="调查经过"
prop="investigationPocess"
prop="basis.investigationPocess"
class="el_Investigation"
clearable
v-if="displaySettings.investigationPocess"
>
<el-input
v-model="form.investigationPocess"
v-model="form.basis.investigationPocess"
placeholder="请输调查经过"
type="textarea"
:autosize="{ minRows: 1, maxRows: 10 }"
@ -328,30 +360,24 @@
>
<el-tab-pane label="内部责任划分" name="0">
<div class="el_top">
<el-button type="primary" class="el_addPackage" @click="AddResponsible">
<el-icon><Plus /></el-icon></el-button
>
<div class="el_Package_num">
<span>公司占比:{{ form.Proportion }}%</span>
</div>
</div>
<div class="el_responsibilities">
<template
v-for="(item, index) in form.responsibilitiesList"
:key="index + item.businessName"
>
<template v-for="(item, index) in form.responsibilitiesList" :key="index">
<div class="el_responsibilities_box">
<span class="Number"> {{ index + 1 }}</span>
<el-form-item
label="责任方"
class="el_Processing"
:prop="`responsibilitiesList[${index}.businessName]`"
:rules="ruleForm.businessName"
:prop="`responsibilitiesList[${index}.businessId]`"
:rules="ruleForm.businessId"
>
<el-select
v-if="form.groundlineType == '1'"
v-model="item.businessName"
v-model="item.businessId"
placeholder="请选择提货责任方"
style="width: 100%"
clearable
@ -366,7 +392,7 @@
</el-select>
<el-select
v-else
v-model="item.businessName"
v-model="item.businessId"
placeholder="请选择责任方"
style="width: 100%"
clearable
@ -385,18 +411,18 @@
<el-form-item
label="责任人"
class="el_Processing"
:prop="`responsibilitiesList[${index}.personResponsibleName]`"
:rules="ruleForm.personResponsibleName"
:prop="`responsibilitiesList[${index}.personResponsibleId]`"
:rules="ruleForm.personResponsibleId"
>
<el-input
v-if="form.groundlineType == '1'"
v-model="item.personResponsibleName"
v-model="item.personResponsibleId"
placeholder="请输入责任人"
clearable
/>
<el-select
v-else
v-model="item.personResponsibleName"
v-model="item.personResponsibleId"
style="width: 100%"
filterable
clearable
@ -446,12 +472,26 @@
clearable
/>
</el-form-item>
</div>
<div>
<el-button v-if="index" type="primary" @click="Responsemoval(index)"
>移除</el-button
<el-button
v-if="!index"
type="primary"
class="el_addPackage"
@click="AddResponsible"
style="margin-top: 2px"
>
<el-icon><Plus /></el-icon></el-button
>
<el-button
style="margin-top: 2px"
v-if="index"
type="primary"
@click="Responsemoval(index)"
>
<el-icon><DeleteFilled /></el-icon></el-button
>
</div>
<div></div>
</template>
</div>
</el-tab-pane>
@ -462,11 +502,12 @@
v-model="form.ProcessingTab"
class="demo-tabs Processingresults"
v-loading="form.Packageloading"
v-if="ProcessingState"
>
<el-tab-pane label="处理结果-理赔金额" name="0">
<el-form-item label="" prop="result">
<el-form-item label="" prop="basis.result">
<el-select
v-model="form.result"
v-model="form.basis.result"
placeholder="请选择处理结果类型"
style="width: 100%"
clearable
@ -546,29 +587,29 @@
</template>
</div>
</el-tab-pane>
</el-tabs>
<!-- 照片上传 -->
<el-tabs
v-model="form.responsibilities"
class="demo-tabs responsibilities"
@tab-click="handleClick"
v-loading="form.Packageloading"
>
<el-form-item label="">
<el-tab-pane label="照片" name="0">
<el-upload
v-model:file-list="form.fileList"
:action="action"
:headers="headers"
:on-success="ImgSuccess"
:before-upload="beforeAvatarUpload"
list-type="picture-card"
>
<el-icon><Plus /></el-icon>
</el-upload>
</el-tab-pane>
</el-form-item>
</el-tabs>
<!-- 照片上传 -->
<el-tabs
v-model="form.responsibilities"
class="demo-tabs responsibilities"
@tab-click="handleClick"
v-loading="form.Packageloading"
>
<el-form-item label="">
<el-tab-pane label="照片" name="0">
<el-upload
v-model:file-list="form.fileList"
:action="action"
:headers="headers"
:on-success="ImgSuccess"
:before-upload="beforeAvatarUpload"
list-type="picture-card"
>
<el-icon><Plus /></el-icon>
</el-upload>
</el-tab-pane>
</el-form-item>
</el-tabs>
<!-- 操作按钮 -->
<div class="flex-c-c">
@ -623,6 +664,9 @@ import { getToken } from '@/utils/auth';
const $router = useRouter();
const formCopy = ref({}); //
const form = ref({
basis: {
workOrderType: null,
}, //
TabactiveName: '0', //
activPackage: '0', //
responsibilities: '0', //
@ -649,8 +693,8 @@ const form = ref({
//
responsibilitiesList: [
{
businessName: '', //
personResponsibleName: '', //
businessId: '', //
personResponsibleId: '', //
responsibilityRatio: 0, //
description: '', //
tripartite: '', //
@ -671,28 +715,36 @@ const form = ref({
Claimamount: [],
fileList: [], //
});
const myData = ref({}); //
const ruleForm = reactive({
workOrderType: [{ required: true, message: '请选择异常类型', trigger: ['bulr', 'change'] }],
discoveryNode: [{ required: true, message: '请选择发现节点', trigger: ['bulr', 'change'] }],
basis: {
workOrderType: [{ required: true, message: '请选择异常类型', trigger: ['bulr', 'change'] }],
discoveryNode: [{ required: true, message: '请选择发现节点', trigger: ['bulr', 'change'] }],
trainNumber: [{ required: true, message: '请选择车次号', trigger: ['bulr', 'change'] }],
deliveryTime: [{ required: true, message: '请输入配送时间', trigger: ['bulr', 'change'] }],
deliveryDriver: [{ required: true, message: '请输入配送司机', trigger: ['bulr', 'change'] }],
vehicleRoute: [{ required: true, message: '请输入车辆线路', trigger: ['bulr', 'change'] }],
deliverGoodsTime: [{ required: true, message: '请输入发货时间', trigger: ['bulr', 'change'] }],
warehousingTime: [{ required: true, message: '请选择入库时间', trigger: ['bulr', 'change'] }],
discoveryTime: [{ required: true, message: '请选择发现时间', trigger: ['bulr', 'change'] }],
waybillMall: [{ required: true, message: '请输入运单商场', trigger: ['bulr'] }],
typeServiceName: [{ required: false, message: '请输入合作模式', trigger: ['bulr', 'change'] }],
investigationPocess: [
{ required: true, message: '请输入调查经过', trigger: ['bulr', 'change'] },
],
result: [{ required: true, message: '请输选择处理结果', trigger: ['bulr'] }],
processor: [{ required: true, message: '请输入处理方', trigger: ['bulr'] }],
},
packageCode: [{ required: true, message: '请输入包条码', trigger: ['bulr', 'change'] }],
waybillNumber: [{ required: true, message: '请输入运单号', trigger: ['bulr', 'change'] }],
orderCode: [{ required: true, message: '请输入订单自编号', trigger: ['bulr', 'change'] }],
first: [{ required: true, message: '请输入一级品', trigger: ['bulr', 'change'] }],
secondary: [{ required: true, message: '请输入二级品', trigger: ['bulr', 'change'] }],
brandName: [{ required: false, message: '请输入品牌', trigger: ['bulr', 'change'] }],
trainNumber: [{ required: true, message: '请选择车次号', trigger: ['bulr', 'change'] }],
deliveryTime: [{ required: true, message: '请输入配送时间', trigger: ['bulr', 'change'] }],
deliveryDriver: [{ required: true, message: '请输入配送司机', trigger: ['bulr', 'change'] }],
vehicleRoute: [{ required: true, message: '请输入车辆线路', trigger: ['bulr', 'change'] }],
deliverGoodsTime: [{ required: true, message: '请输入发货时间', trigger: ['bulr', 'change'] }],
warehousingTime: [{ required: true, message: '请选择入库时间', trigger: ['bulr', 'change'] }],
discoveryTime: [{ required: true, message: '请选择发现时间', trigger: ['bulr', 'change'] }],
waybillMall: [{ required: true, message: '请输入运单商场', trigger: ['bulr', 'change'] }],
typeServiceName: [{ required: false, message: '请输入合作模式', trigger: ['bulr', 'change'] }],
processor: [{ required: true, message: '请输入处理方', trigger: ['bulr'] }],
investigationPocess: [{ required: true, message: '请输入调查经过', trigger: ['bulr', 'change'] }],
businessName: [{ required: true, message: '请选择责任方', trigger: ['bulr', 'change'] }],
personResponsibleName: [{ required: true, message: '请输入责任人', trigger: ['bulr', 'change'] }],
businessId: [{ required: true, message: '请选择责任方', trigger: ['bulr', 'change'] }],
personResponsibleId: [{ required: true, message: '请输入责任人', trigger: ['bulr', 'change'] }],
responsibilityRatio: [{ required: true, message: '请输入占比', trigger: ['bulr', 'change'] }],
tripartite: [{ required: true, message: '请输入三方责任人', trigger: ['bulr', 'change'] }],
description: [{ required: true, message: '请输入说明', trigger: ['bulr', 'change'] }],
@ -702,7 +754,6 @@ const ruleForm = reactive({
compensationMethod: [
{ required: true, message: '请输选择支付方式', trigger: ['bulr', 'change'] },
],
result: [{ required: true, message: '请输选择处理结果', trigger: ['bulr'] }],
});
const ResponsibleParty = ref([]); //
const ruleFormRef = ref(); //
@ -748,11 +799,15 @@ const Handling = async () => {
};
//
const PageState = () => {
if (localStorage.getItem('my_data')) {
myData.value = JSON.parse(localStorage.getItem('my_data')); //
}
//
form.value.responsibilitiesList = [
{
businessName: '', //
personResponsibleName: '', //
businessId: '', //
personResponsibleId: '', //
responsibilityRatio: 0, //
description: '', //
tripartite: '', //
@ -811,7 +866,19 @@ const onLoad = async () => {
form.value.Pageloading = false; //
};
onLoad();
const ProcessingState = computed(() => {
if (form.value.basis.processor && form.value.basis.processor.length) {
let data = form.value.basis.processor.find(res => res == myData.value.id);
if (data) {
return true;
} else {
//
form.value.Claimamount = [];
form.value.basis.result = [];
return false;
}
}
});
//
const handleClick = (tab, event) => {
console.log(tab, event);
@ -820,6 +887,12 @@ const handleClick = (tab, event) => {
const DiscoveringNodesChange = value => {
console.log(value);
form.value.groundlineType = value;
form.value.basis = {
workOrderType: form.value.basis.workOrderType,
discoveryNode: form.value.basis.discoveryNode,
workOrderNumber: form.value.basis.workOrderNumber,
};
ruleFormRef.value.clearValidate();
};
//
const displaySettings = computed(() => {
@ -839,11 +912,6 @@ const displaySettings = computed(() => {
});
//
const Addpackages = () => {
form.value.Packageloading = true;
let time = setTimeout(() => {
form.value.Packageloading = false;
clearTimeout(time);
}, 300);
let data = {
packageCode: '', //
waybillNumber: '', //
@ -886,14 +954,9 @@ const ViewhistoricalPackages = item => {
};
//
const AddResponsible = () => {
form.value.Packageloading = true;
let time = setTimeout(() => {
form.value.Packageloading = false;
clearTimeout(time);
}, 300);
let data = {
businessName: '', //
personResponsibleName: '', //
businessId: '', //
personResponsibleId: '', //
responsibilityRatio: 0, //
description: '', //
tripartite: '', //
@ -1037,8 +1100,8 @@ const ChangePackageInfo = async item => {
item.brandName = ''; //
let data = form.value.PackageList.find(res => res.packageCode); //
if (!data) {
form.value.waybillMall = ''; //
form.value.typeServiceName = ''; //
form.value.basis.waybillMall = ''; //
form.value.basis.typeServiceName = ''; //
}
return;
}
@ -1051,6 +1114,7 @@ const ChangePackageInfo = async item => {
//
if (packageCodeState) {
item.packageCode = '';
ElMessage({
message: '已经存在相同包条码,请勿重复添加!',
type: 'warning',
@ -1087,9 +1151,8 @@ const ChangePackageInfo = async item => {
item.first = packageData.firsts || ''; //
item.secondary = packageData.second || ''; //
item.brandName = packageData.brandName || ''; //
form.value.waybillMall = packageData.mallName || ''; //
form.value.typeServiceName = packageData.typeServiceName || ''; //
form.value.basis.waybillMall = packageData.mallName || ''; //
form.value.basis.typeServiceName = packageData.typeServiceName || ''; //
// ,
const results = res.data.data.filter(item => {
return item.workOrderId && item.workOrderNumber;
@ -1151,14 +1214,17 @@ const Viewdetails = value => {
},
});
};
// >
const ResponsiblePartychange = item => {
item.personResponsibleId = '';
if (!item.businessId) {
return;
}
let data = {
warehouseId: item.businessName,
warehouseId: item.businessId,
};
//
item.personResponsibleName = '';
$_getBusinessDepartmentUser(data).then(res => {
console.log(res, '获取责任人列表');
if (res.data.code == 200 && res.data.data && res.data.data.length) {
@ -1180,19 +1246,20 @@ const ResponsiblePartychange = item => {
// 线
const DeliveryTrainnumber = value => {
if (value) {
if(form.value.Trainoptions.length){
if (form.value.Trainoptions.length) {
let data = form.value.Trainoptions.find(res => res.trainNumber == value);
form.value.vehicleRoute = data.vehicleRoute;
}
form.value.vehicleRoute = data.vehicleRoute;
}
}
};
//
const onSubmit = () => {
console.log(form.value.fileList);
console.log(form.value);
ruleFormRef.value.validate(valid => {
if (!valid) {
ElMessage({
message: '有遗漏信息未填写,请根据提示填写完整!',
message: '息未填写完整,请根据提示填写完整!',
type: 'warning',
});
return;
@ -1207,27 +1274,188 @@ const onSubmit = () => {
}).then(async () => {
form.value.Pageloading = true; //
let submitData = {
//
// packageEntityList: [
// {
// packageCode: '', //
// waybillNumber: '', //
// orderCode: '', //
// first: '', //
// secondary: '', //
// brandName: '', //
// },
// ],
//
...form.value.basis,
//
// personResponsibleDTO: [
// {
// businessName: '', //
// businessId: '', //id
// personResponsibleName: '', //
// personResponsibleId: '', //ID
// responsibilityRatio: 0, //
// tripartite: '', //
// description: '', //
// },
// ],
// OR
// processorEntityList: [
// {
// businessName: '', //
// businessId: '', //ID
// conditions: 1, //
// typesOf: '', //1 2
// },
// ],
//
// aftersalesProcessingResultsDTO: {
// compensationMethod: '', // ,
// money: 0, //
// resultType: '', // ,/
// processingMoneyEntityList: [
// {
// compensationMethodName: '', //
// compensationMethod: '2', //value
// compensationTime: '', //
// money: 0, //
// paymentUnit: '', //
// resultName: '', //
// resultType: '', // value
// typesOf: 1, //
// },
// ],
// },
//
// decreaseImageEntityList: [
// {
// imageName: '', //
// imagePath: '', //
// imageType: '', //
// },
// ],
};
//
if (form.value.PackageList.length) {
submitData.packageEntityList = [];
form.value.PackageList.forEach(item => {
submitData['packageEntityList'].push({
packageCode: item.packageCode, //
waybillNumber: item.waybillNumber, //
orderCode: item.orderCode, //
first: item.first, //
secondary: item.secondary, //
brandName: item.brandName, //
});
});
//
submitData.orderCode = form.value.PackageList[0].orderCode;
}
//
if (form.groundlineType == '1') {
submitData.processorEntityList = [];
form.value.responsibilitiesList.forEach(item => {
submitData['processorEntityList'].push({
businessName: item.Responsibleoptions.find(res => res.value == item.businessId).label, //
businessId: item.businessId, //ID
conditions: 1, //
typesOf: 1, //1 2
});
});
}
//
if (form.value.basis.processor.length) {
submitData.processorEntityList = [];
form.value.basis.processor.forEach(item => {
submitData['processorEntityList'].push({
businessName: Processingoptions.value.find(res => res.value == item).label, //
businessId: item, //ID
conditions: 1, //
typesOf: 2, //1 2
});
});
}
//
if (form.value.responsibilitiesList.length) {
submitData.personResponsibleDTO = [];
form.value.responsibilitiesList.forEach(item => {
console.log(item);
let data = {
// businessName: item.Responsibleoptions.find(res => res.id == item.businessId).label || '', //
// businessId: item.businessId, //id
// personResponsibleName: item.ResponsibleoNameptions.find(
// res => res.id == item.personResponsibleId
// ).name, //
// personResponsibleId: item.personResponsibleId, //ID
responsibilityRatio: item.responsibilityRatio, //
tripartite: item.tripartite, //
description: item.description, //
};
if (form.value.groundlineType == '1') {
data.personResponsibleName = item.personResponsibleId; //
data.businessName = item.Processingoptions.find(
res => res.value == item.businessId
).label; //
data.businessId = item.businessId; //id
} else {
data.personResponsibleId = item.personResponsibleId; //id
(data.personResponsibleName = item.ResponsibleoNameptions.find(
res => res.id == item.personResponsibleId
).name), //
(data.businessName = item.Responsibleoptions.find(
res => res.value == item.businessId
).label); //
data.businessId = item.businessId; //id
}
submitData['personResponsibleDTO'].push(data);
});
}
//
if (
form.value.fileList.length &&
(form.value.groundlineType == '1' || form.value.groundlineType == '3')
) {
submitData.decreaseImageEntityList = [];
form.value.fileList.forEach(item => {
if (item.response) {
submitData['decreaseImageEntityList'].push({
imageName: item.response.data.originalName, //
imagePath: item.response.data.link, //
imageType: form.value.groundlineType == 1 ? 10 : 20, //
});
}
});
}
console.log(submitData, '处理好的参数');
$_submit(submitData).then(res => {
console.log(res, '提交成功');
});
//
let _time = setTimeout(() => {
form.value.Pageloading = false; //
clearTimeout(_time);
}, 300);
console.log(valid, '校验状态');
if (!form.value.fileList || !form.value.fileList.length) {
console.log('请上传图片');
return;
} else if (form.value.fileList || form.value.fileList.length) {
let state = form.value.fileList.every(
item => item.response && item.response.data && item.response.data.link
);
if (!state) {
ElMessage({
message: '图片未上传成功,请重新上传',
type: 'warning',
});
}
}
// console.log(valid, '');
// console.log(form.value, 'form');
// if (!form.value.fileList || !form.value.fileList.length) {
// console.log('');
// return;
// } else if (form.value.fileList || form.value.fileList.length) {
// let state = form.value.fileList.every(
// item => item.response && item.response.data && item.response.data.link
// );
// if (!state) {
// ElMessage({
// message: '',
// type: 'warning',
// });
// }
// }
});
});
};
@ -1291,20 +1519,19 @@ const TabactiveClick = (a, b) => {
flex: 1;
display: flex;
justify-content: space-between;
margin: 0px 3%;
margin: 0px 2px;
}
}
:deep(.is-active) {
font-weight: bold;
}
:deep(.Package) {
width: 80%;
width: 83%;
display: flex;
justify-content: space-between;
align-items: center;
.el-form-item {
width: 16%;
margin-right: 0;
width: 14%;
margin-right: 6px;
.el-form-item__label {
margin-bottom: 0;
}
@ -1312,17 +1539,17 @@ const TabactiveClick = (a, b) => {
.Number {
width: 20px;
height: 20px;
background-color: #666;
color: #fff;
// background-color: #409eff;
color: #409eff;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
margin-right: 10px;
}
}
.el_addPackage {
background-color: #409eff;
border: none;
color: #ffffff;
}
@ -1332,7 +1559,6 @@ const TabactiveClick = (a, b) => {
margin-bottom: 10px;
height: 40px;
.el_Package_num {
margin-left: 64px;
font-size: 14px;
height: 80%;
border-bottom: 1px solid #409eff;
@ -1357,12 +1583,12 @@ const TabactiveClick = (a, b) => {
}
}
.Basicinformation {
width: 100%;
width: 80%;
display: flex;
flex-wrap: wrap;
:deep(.el-form-item) {
width: 12.8%;
margin-right: 10px;
width: 15%;
margin-right: 6px;
.el-form-item__content {
.el-input {
height: 100% !important;
@ -1400,8 +1626,8 @@ const TabactiveClick = (a, b) => {
flex-wrap: wrap;
align-items: center;
.el-form-item {
width: 16%;
margin-right: 10px;
width: 14%;
margin-right: 6px;
.el-input-number {
width: 100%;
}
@ -1423,15 +1649,14 @@ const TabactiveClick = (a, b) => {
.Number {
width: 20px;
height: 20px;
background-color: #666;
margin-right: 4px;
color: #fff;
// background-color: #409eff;
color: #409eff;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
margin-top: 2px;
margin-right: 10px;
}
}
}
@ -1441,11 +1666,9 @@ const TabactiveClick = (a, b) => {
margin-bottom: 10px;
height: 40px;
.el_addPackage {
background-color: #409eff;
border: none;
}
.el_Package_num {
margin-left: 36px;
font-size: 14px;
height: 80%;
border-bottom: 1px solid #409eff;

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

@ -1035,7 +1035,7 @@ const onLoad = async () => {
console.log('this :>> ', this);
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
this.query[prop] = reg;
@ -1379,7 +1379,7 @@ const handleAddNode = async (index: number) => {
console.log('this :>> ', this);
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
this.query[prop] = reg;

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

@ -1214,7 +1214,7 @@ const handleSubmit = async () => {
/** 输入筛选 */
const packageInputsc = (value, row) => {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
details.packageQuery[row.prop] = reg;

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

@ -1128,7 +1128,7 @@ const handleSubmit = async () => {
/** 输入筛选 */
const packageInputsc = (value, row) => {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
details.packageQuery[row.prop] = reg;

6
src/views/distribution/artery/VehicleStowageDetails.vue

@ -233,12 +233,12 @@
<span>{{ item.updateTime }}</span>
</div>
<div class="flex-c-c mr10">
<el-icon color="#172e60" size="20px"><Location /></el-icon>
<el-icon class="mr10" color="#172e60" size="20px"><Location /></el-icon>
<span>操作网点</span>
<span>{{ item.nodeName }}</span>
</div>
<div class="flex-c-c mr10">
<el-icon color="#172e60" size="20px"><User /></el-icon>
<el-icon class="mr10" color="#172e60" size="20px"><User /></el-icon>
<span>操作人</span>
<span>{{ item.createUserName }}</span>
</div>
@ -884,7 +884,7 @@ const inputsc = async (value, row) => {
try {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
details.query[row.prop] = reg;

2
src/views/distribution/artery/handleLoadingDestination.vue

@ -219,7 +219,7 @@ const searchHide = () => {
/** 表格表头输入框搜索 */
const inputsc = (value, row) => {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
details.query[row.prop] = reg;

2
src/views/distribution/artery/zeroAdditionalRecording.vue

@ -537,7 +537,7 @@ const handleFilterData = () => {
/** 表格表头输入框搜索 */
const newInputsc = (value, { prop }) => {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
details.newQuery[prop] = reg;

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

@ -9,7 +9,10 @@
<el-input v-model="query.trainNumber" placeholder="请输入配送车次"></el-input>
</el-form-item>
<el-form-item label="配送日期:" class="el-times">
<el-date-picker v-model="query.taskTime" type="date" placeholder="选择日期">
<el-date-picker v-model="query.taskTime"
type="datetime"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD" placeholder="选择日期">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="配送类型:">-->

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

@ -487,7 +487,7 @@
<el-button @click="QRcodes" style="margin-bottom: 4px" type="primary"
>批量查看二维码</el-button
>
<el-button @click="Batchsigning" style="margin-bottom: 4px" type="primary"
<el-button @click="Batchpackages" style="margin-bottom: 4px" type="primary"
>批量签收</el-button
>
<el-button @click="PackBatchcancellation" style="margin-bottom: 4px" type="primary"
@ -1711,7 +1711,27 @@ export default {
values: '',
width: '180',
checkarr: [],
fixed: true,
fixed: false,
sortable: true,
},
{
prop: 'reservationCode',
label: '预约编号',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'deliveryTrainNumber',
label: '配送车次号',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
@ -4457,10 +4477,67 @@ export default {
this.loading=false
})
})
},
//
Batchpackages(){
if (!this.selectionList.length) {
ElMessage({
message: '请勾选需要批量签收的数据',
type: 'warning',
});
return;
}
const allSigned = this.selectionList.every(
item => item.orderPackageStatus == '70'
);
if(allSigned){
ElMessage({
message: '勾选的数据都是已签收的',
type: 'warning',
});
return
}else{
let state=false
this.selectionList.forEach(item=>{
if(item.orderPackageStatus ==70){
ElMessage({
message: `${item.orderCode}已签收,请取消勾选!`,
type: 'warning',
});
state=true
}
})
if(state){
return
}
}
ElMessageBox.confirm(
'是否进行批量签收?',
'提示',
{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
this.loading=true
let data = {
deliveryId: this.deliveryId,
reservationId: this.wid,
barcodes: this.selectionList.map(item => item.orderPackageCode).join(','),
};
//
deliverySign(data).then(res => {
console.log('res>>>>>>>>>>>>>>>>>>>>>>>', res);
if (res.data.code === 200) {
this.$message.success(res.data.msg);
this.getWrapdetails(this.page);
}
}).catch(res=>{
this.loading=false
})
})
},
signingReservationInventoryPackage(row) {
console.log('row', row);
@ -4472,7 +4549,6 @@ export default {
reservationId: this.wid,
barcodes: row.stockPackageCode,
};
//
deliveryInventorySign(data)
.then(res => {
console.log('res>>>>>>>>>>>>>>>>>>>>>>>', res);
@ -4655,7 +4731,7 @@ export default {
console.log(this.selectionList, 'this.selectionList');
if(!this.selectionList.length){
ElMessage({
message: '请勾选需要计划取消的数据',
message: '请勾选需要签收的数据',
type: 'warning',
});
return;
@ -4663,18 +4739,19 @@ export default {
this.$confirm('是否确认进行批量签收?')
.then(() => {
let data = {
let data = {
deliveryId: this.deliveryId,
reservationId: this.wid,
barcodes: this.selectionList.map(item => item.orderPackageCode).join(','),
barcodes: this.selectionList.map(item => item.stockPackageCode).join(','),
};
this.loading = true;
deliverySign(data)
deliveryInventorySign(data)
.then(res => {
console.log('res>>>>>>>>>>>>>>>>>>>>>>>', res);
if (res.data.code === 200) {
this.$message.success(res.data.msg);
this.getWrapdetails(this.page);
// this.getWrapdetails(this.page);
this.getReservationInventoryPackageListInfo(this.page);
}
this.selectionList = []; //
this.loading = false;
@ -4684,10 +4761,6 @@ export default {
this.loading = false;
});
})
},
//

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

@ -1333,8 +1333,8 @@ export default {
// }
// }
// }
this.page.total = data.total;
this.data = data.records;
this.page.total = data.total ||0;
this.data = data.records ||[];
this.loading = false;
this.selectionClear();
});

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

@ -1438,7 +1438,7 @@ const onLoad = async () => {
details.pageInfo = { ...$route.query };
const res = await postFindWaybillDetail({ waybillId: details.pageInfo.id });
const res = await postFindWaybillDetail({ waybillId: details.pageInfo.id, isEdit: 0 });
const { code, data } = res.data;
if (code !== 200) return;

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

@ -2046,14 +2046,17 @@ const initPageInfo = async (idsArr = []) => {
});
details.pageInfo = { ...$route.query };
//
if (details.pageInfo.type !== 'edit') await onLoad(idsArr);
//
else {
const res = await postFindWaybillDetail({ waybillId: details.pageInfo.id });
const res = await postFindWaybillDetail({ waybillId: details.pageInfo.id, isEdit: 1 });
const { code, data } = res.data;
if (code !== 200) return;
details.query = { ...data, ...data.warehouseWaybill };
delete details.query.warehouseWaybill;
details.query.trainNumber = details.query.customerTrain;
//
details.query.isPickUp =

3011
src/views/distribution/inventory/CreateOrder2.vue

File diff suppressed because it is too large Load Diff

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

@ -771,7 +771,7 @@ const newInputsc = (value, row) => {
// newRenderData
try {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
details.addInfo.newQuery[row.prop] = reg;

87
src/views/distribution/inventory/arteryDistrilbutionBillLadingListDetails.vue

@ -1,7 +1,7 @@
<template>
<basic-container v-loading="loadingObj.pageLoading">
<div class="avue-crud">
<el-tabs v-model="activeTab">
<el-tabs v-model="activeTab" @tab-click="handleCheckTab">
<el-tab-pane label="详 情 信 息" name="tab1">
<el-divider>提货基本信息</el-divider>
<el-row :gutter="24" class="rows">
@ -141,15 +141,33 @@
<el-tab-pane label="操 作 日 志" name="tab2">
<div style="min-height: 300px">
<el-steps direction="vertical" space="80px">
<el-step title="32131">
<template #description> {{ new Date() }} </template>
<template #icon>
<el-icon color="#172e60" size="20px"><HelpFilled /></el-icon>
<el-steps direction="vertical" space="120px" :active="loadLogsList.length">
<el-step :title="item.abstText" v-for="item in loadLogsList" :key="item">
<template #description>
<div class="fz-0-9">
<el-row>
<div class="flex-c-c mr10">
<el-icon color="#172e60" class="mr10" size="20px"><Clock /></el-icon>
<span>操作时间</span>
<span>{{ item.createTime }}</span>
</div>
<!-- <div class="flex-c-c mr10">
<el-icon color="#172e60" size="20px"><Location /></el-icon>
<span>操作网点</span>
<span>{{ item.nodeName }}</span>
</div> -->
<div class="flex-c-c mr10">
<el-icon class="mr10" color="#172e60" size="20px"><User /></el-icon>
<span>操作人</span>
<span>{{ item.createUserName }}</span>
</div>
</el-row>
<div class="word-break-break-all mt10">
{{ item.content }}
</div>
</div>
</template>
</el-step>
<el-step title="32131">
<template #description> {{ new Date() }} </template>
<template #icon>
<el-icon color="#172e60" size="20px"><HelpFilled /></el-icon>
</template>
@ -259,6 +277,7 @@ import {
postBillladingDetail,
postFindChargeTypeList,
postUpdateBillladingWaybillNum,
postFindBillladingLogList,
} from '@/api/distribution/arteryDistrilbutionBillLadingList';
import { ElMessage } from 'element-plus';
import { getToken } from '@/utils/auth';
@ -534,6 +553,8 @@ export default {
/** 查询所有计费模式 */
chargeTypeList: [],
options: [],
/** 提货日志 */
loadLogsList: [],
};
},
watch: {
@ -614,7 +635,7 @@ export default {
inputsc(value, row) {
try {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
this.query[row.prop] = reg;
@ -803,6 +824,36 @@ export default {
this.loadingObj.pageLoading = false;
}
},
/** 请求日志跟踪 */
async handleSignLoadScanLogs() {
try {
this.loadingObj.pageLoading = true;
const submitData = { billladingId: this.$route.query.id };
const res = await postFindBillladingLogList(submitData);
const { code, data } = res.data;
if (code !== 200) return;
this.loadLogsList = data;
} catch (error) {
console.log('error :>> ', error);
} finally {
this.loadingObj.pageLoading = false;
}
},
handleCheckTab(e) {
console.log('e :>> ', e);
switch (e.props.name) {
//
case 'tab2':
this.handleSignLoadScanLogs();
break;
default:
break;
}
},
},
};
</script>
@ -856,4 +907,20 @@ export default {
margin-top: 20px;
text-align: center;
}
// tab
:deep(.el-tabs__item.is-active) {
color: var(--el-color-primary);
font-weight: bold;
}
:deep(.el-tabs__item:hover) {
color: var(--el-color-primary);
font-weight: bold;
}
:deep(.el-tabs__item) {
color: #959a9e;
transition: all 0.3s;
}
</style>

10
src/views/distribution/inventory/distributionStockListDetails.vue

@ -48,12 +48,20 @@
<span>{{ stockquantity || 0 }}</span>
</el-form-item>
</el-col>
<el-col :span="10">
<el-col :span="8">
<el-form-item label="货位总数:">
<span>{{ locations || 0 }}</span>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="未上架数:">
<span>{{stockquantity - locations}}</span>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="10">
<el-form-item label="库位信息:">

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

@ -2450,7 +2450,7 @@ export default {
//
if (type === 1) {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
this.orderQuery[row.prop] = reg;
@ -2477,7 +2477,7 @@ export default {
//
if (type === 1) {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
this.stockQuery[row.prop] = reg;

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

@ -125,7 +125,7 @@
</el-form>
<el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
<el-tab-pane name='orderTab' label="订单">
<el-tab-pane name="orderTab" label="订单">
<el-button class="el-btn-xz" type="primary" link @click="handleAddOrder"> </el-button>
<tablecmt
class="tablesc"
@ -174,7 +174,7 @@
</tablecmt>
</el-tab-pane>
<el-tab-pane name='InventoryTab' label="库存品">
<el-tab-pane name="InventoryTab" label="库存品">
<el-button class="el-btn-xz" link @click="handleAddInventory"> </el-button>
<tablecmt
class="tablesc"
@ -513,13 +513,13 @@ import { getDictionaryBiz } from '@/api/system/dict';
import dayjs from 'dayjs';
import { entryNum, updateEntryNum } from '@/api/distribution/distributionParcelNumber';
import { setNodeHeight, removeZeroWidth } from '@/utils/util.js';
import { ElMessage, ElMessageBox } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus';
import error from '@/error';
export default {
name: '/distribution/reservation/reservationAddFrom',
data() {
return {
activeName:'orderTab',
activeName: 'orderTab',
Inventoryloading: true, //
packageQuery: {},
reservationloading: false,
@ -2022,7 +2022,7 @@ export default {
},
mounted() {
this.init();
this.Copyfrom= JSON.parse(JSON.stringify(this.form))
this.Copyfrom = JSON.parse(JSON.stringify(this.form));
this.onLoad(this.page);
this.getDictionary();
@ -2097,8 +2097,15 @@ export default {
async handleAddOrder() {
this.loading = true;
this.orderList = [...this.orderData];
this.query={}
this.stockArtcolumnList.forEach(item=>{
item.values=''
})
//
await this.onLoadOrder(this.page);
this.loading = false;
this.orderShow = true;
this.$nextTick(() => {
@ -2542,8 +2549,8 @@ export default {
this.$store.commit('DEL_TAG_CURRENT');
},
//
async onSubmit(formEl) {
this.$refs.ruleForm.validate(async valid => {
async onSubmit(formEl) {
this.$refs.ruleForm.validate(async valid => {
if (valid) {
console.log('submit!');
try {
@ -2645,72 +2652,76 @@ this.$refs.ruleForm.validate(async valid => {
// this.form.stockArticleList = this.packageList;
console.log('>>>>>>>>', this.form);
if (this.reservationId) {
//
const checkInfoValues = this.form.stockArticleList.every(item => !item.packageListInfo || !item.packageListInfo.length);
if(checkInfoValues){
ElMessageBox.prompt('当前所有订单都没有选择包件是否确认"取消本次计划"?', '请填写取消原因', {
confirmButtonText: '确认',
cancelButtonText: '关闭',
inputPattern: /^\S+$/,
inputErrorMessage: '请填写取消原因',
})
.then((value) => {
let data={
cancelReason:value.value,
id:this.$route.query.reservationId
}
this.reservationloading=true
cancelReservation(data).then(res=>{
console.log(res);
if(res.data.code ==200){
ElMessage({
message: res.data.msg,
type: 'success',
})
this.$router.push('/distribution/reservation/reservation');
this.$store.commit('DEL_TAG_CURRENT');
}
}).catch((error)=>{
this.reservationloading=false
console.log(error);
})
console.log(data,'要提交的数据');
})
.catch(() => {
})
}else{
for(let i=0;i< this.form.stockArticleList.length;i++){
if(!this.form.stockArticleList[i].packageListInfo || !this.form.stockArticleList[i].packageListInfo.length ){
ElMessageBox.confirm(
`订单自编号:${this.form.stockArticleList[i].orderCode}没有选择包件是否移除!`,
'提示',
{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
this.renderOrderData.splice(i, 1);
this.form.stockArticleList.splice(i,1)
})
.catch(() => {
})
return
}
}
//
const checkInfoValues = this.form.stockArticleList.every(
item => !item.packageListInfo || !item.packageListInfo.length
);
if (checkInfoValues) {
ElMessageBox.prompt(
'当前所有订单都没有选择包件是否确认"取消本次计划"?',
'请填写取消原因',
{
confirmButtonText: '确认',
cancelButtonText: '关闭',
inputPattern: /^\S+$/,
inputErrorMessage: '请填写取消原因',
}
)
.then(value => {
let data = {
cancelReason: value.value,
id: this.$route.query.reservationId,
};
this.reservationloading = true;
cancelReservation(data)
.then(res => {
console.log(res);
if (res.data.code == 200) {
ElMessage({
message: res.data.msg,
type: 'success',
});
this.$router.push('/distribution/reservation/reservation');
this.$store.commit('DEL_TAG_CURRENT');
}
})
.catch(error => {
this.reservationloading = false;
console.log(error);
});
console.log(data, '要提交的数据');
})
.catch(() => {});
} else {
for (let i = 0; i < this.form.stockArticleList.length; i++) {
if (
!this.form.stockArticleList[i].packageListInfo ||
!this.form.stockArticleList[i].packageListInfo.length
) {
ElMessageBox.confirm(
`订单自编号:${this.form.stockArticleList[i].orderCode}没有选择包件是否移除!`,
'提示',
{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
this.renderOrderData.splice(i, 1);
this.form.stockArticleList.splice(i, 1);
})
.catch(() => {});
return;
}
}
}
// loading
this.loadingObj.submitBtnLoading = true;
this.reservationloading = true; //
this.form.id = this.reservationId;
}
// loading
this.loadingObj.submitBtnLoading = true;
this.reservationloading = true; //
this.form.id = this.reservationId;
const res = await update(this.form);
const res = await update(this.form);
console.log('res :>> ', res);
if (res.data.code !== 200) return;
this.$message({
@ -2718,49 +2729,44 @@ ElMessageBox.prompt('当前所有订单都没有选择包件是否确认"取消
message: '操作成功!',
});
this.back();
} else {
// loading
this.loadingObj.submitBtnLoading = true;
this.reservationloading = true; //
this.form.reservationStatus = '20';
} else {
// loading
this.loadingObj.submitBtnLoading = true;
this.reservationloading = true; //
this.form.reservationStatus = '20';
const res = await autonomouslySave(this.form);
console.log('res :>> ', res);
if (res.data.code !== 200) return;
ElMessageBox.confirm(
'当前预约已完成,是否继续添加预约?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
this.form=this.Copyfrom
this.Copyfrom= JSON.parse(JSON.stringify(this.form))
this.$refs.ruleForm.resetFields(); //
this.renderOrderData=[]//
this.serveType=[];//
this.renderInventoryData=[]//
this.orderList=[]
this.orderData = []
this.packageListInfo=[]
this.stockArticleInfo=[]
this.inventoryDat= []
this.inventoryData=[]
this.inventoryList=[]
delete this.query.marketName
this.marketName=''
this.activeName='orderTab',
console.log(this.orderList,'');
})
.catch(() => {
this.$message({
type: 'success',
message: '操作成功!',
});
this.back();
})
ElMessageBox.confirm('当前预约已完成,是否继续添加预约?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
this.form = this.Copyfrom;
this.Copyfrom = JSON.parse(JSON.stringify(this.form));
this.$refs.ruleForm.resetFields(); //
this.renderOrderData = []; //
this.serveType = []; //
this.renderInventoryData = []; //
this.orderList = [];
this.orderData = [];
this.packageListInfo = [];
this.stockArticleInfo = [];
this.inventoryDat = [];
this.inventoryData = [];
this.inventoryList = [];
delete this.query.marketName;
this.marketName = '';
(this.activeName = 'orderTab'), console.log(this.orderList, '');
})
.catch(() => {
this.$message({
type: 'success',
message: '操作成功!',
});
this.back();
});
// this.$message({
// type: 'success',
@ -2926,7 +2932,7 @@ console.log(this.orderList,'');
//
if (type === 1) {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
this.orderQuery[row.prop] = reg;
@ -2953,7 +2959,7 @@ console.log(this.orderList,'');
//
if (type === 1) {
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
this.stockQuery[row.prop] = reg;
@ -3384,7 +3390,7 @@ console.log(this.orderList,'');
if (code !== 200) return;
console.log('this.orderList',this.orderList)
console.log('this.orderList', this.orderList);
const _chooseArr = [...this.orderList];
this.stockArticleInfo = records;
@ -3441,13 +3447,12 @@ console.log(this.orderList,'');
this.form.isUrgent = '1';
// this.form.reservationDate = new Date();
if (this.orderIds) {
this.reservationloading=true
if(res.data.code !==200){
this.reservationloading=false
return
}
this.reservationloading = true;
if (res.data.code !== 200) {
this.reservationloading = false;
return;
}
getStockArticleList(this.orderIds).then(res => {
console.log(res.data.data);
const data = res.data.data;
@ -3471,17 +3476,16 @@ console.log(this.orderList,'');
this.form.deliveryAddress = address;
this.orderData = data;
this.renderOrderData = [...this.orderData];
this.reservationloading=false
})
this.reservationloading = false;
});
}
if (this.reservationId) {
this.reservationloading=true
this.reservationloading = true;
this.inventoryShow = true;
getReservationInfo(this.reservationId).then(res => {
if(res.data.code !==200){
this.reservationloading=false
return
if (res.data.code !== 200) {
this.reservationloading = false;
return;
}
const reservation = res.data.data;
const stockArticleListInfo = res.data.data.stockArticleList;
@ -3508,8 +3512,8 @@ console.log(this.orderList,'');
});
}
this.form = reservation;
this.reservationloading=false
})
this.reservationloading = false;
});
} else {
this.form.deliveryType = '2';
}

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

@ -412,6 +412,7 @@
element-loading-text="加载中..."
type="border-card"
@tab-click="tabClickB"
class="el_Server"
>
<template v-for="item in TabB" :key="item.name">
<el-tab-pane :label="item.label" :name="item.name">
@ -792,8 +793,6 @@ const TabTitle = ref([
]);
//
const menuData1 = ref([
{
prop: 'waybillNumber',
label: '运单号',
@ -965,7 +964,6 @@ const menuData1 = ref([
sortable: true,
head: false,
},
{
prop: 'consigneeMobile',
@ -1012,7 +1010,6 @@ const menuData1 = ref([
head: false,
},
{
prop: 'descriptionGoods',
label: '货物名称',
type: 2,
@ -1035,9 +1032,6 @@ const menuData1 = ref([
isshowSummary: true,
head: false,
},
]);
//
//
@ -1236,7 +1230,7 @@ const menuData2 = ref([
sortable: true,
head: false,
},
// {
// {
// prop: 'orderPackageGroundingStatusName',
// label: '',
// type: 1,
@ -1350,11 +1344,6 @@ const menuData2 = ref([
// head: false,
// },
{
prop: 'scanStatus',
label: '装车方式',
@ -2188,12 +2177,12 @@ const tabClick = val => {
//
const Signforexport = () => {
if(SignforMenu.value.label == '库存品列表'){
if (SignforMenu.value.label == '库存品列表') {
ElMessage({
message: '库存品导出维护中',
type: 'warning',
})
return
message: '库存品导出维护中',
type: 'warning',
});
return;
}
console.log(SignforMenu.value);
ElMessageBox.confirm(`是否导出${SignforMenu.value.label}`, '提示', {
@ -2404,7 +2393,7 @@ const inputsc = (value, row, type) => {
const _item = Tabs.value.find(val => val.type === type);
//
const reg = new RegExp(value, 'i');
const reg = new RegExp('^' + value);
_item.query[row.prop] = reg;
@ -2619,4 +2608,10 @@ const handleChooseSigneState = val => {
.goodsTable {
flex: 1;
}
.el_Server{
.el-tab-pane{
display: flex;
flex-direction: column;
}
}
</style>

7
src/views/waybill/CreateZeroOrder.vue

@ -1666,13 +1666,18 @@ const initPageInfo = async () => {
});
console.log('$route :>> ', $route);
//
if ($route.query.type !== 'edit') await onLoad();
//
else {
const res = await postFindWaybillDetail({ waybillId: details.pageInfo.id });
const res = await postFindWaybillDetail({ waybillId: details.pageInfo.id, isEdit: 1 });
const { code, data } = res.data;
if (code !== 200) return;
details.query = { ...data, ...data.warehouseWaybill };
details.query.trainNumber = details.query.customerTrain;
details.info = data;
details.query.openOrderUserName = data.warehouseWaybill.agent;
delete details.query.warehouseWaybill;

25
src/views/waybill/TemporaryStorageList.vue

@ -362,12 +362,9 @@
<P>请确认传入的文件为Excel文件格式</P>
<a
href="http://47.108.51.143:9000/bladex/upload/20240118/65c977fe6ac575ebb17803400a7abbc7.xlsx"
style="text-decoration: none"
>
<el-button type="primary" icon="Download"> 模版下载 </el-button>
</a>
<el-button type="primary" icon="Download" @click="handleDownLoadFile">
{{ details.ouPaiChooseType === 1 ? '包条码导入模板' : '无包条码导入模板' }}
</el-button>
<div v-loading="details.loadingObj.UploadLoadong" class="mt10">
<el-upload
@ -479,7 +476,7 @@ import {
} from '@/api/waybill/TemporaryStorageList';
import { getLazyTreeAll } from '@/api/base/region';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls, deepClone } from '@/utils/util';
import { downloadXls, setNodeHeight, deepClone, downloadFileBase64 } from '@/utils/util';
import { columnList } from '@/option/waybill/TemporaryStorageList';
import { useRouter } from 'vue-router';
import print from '@/utils/print';
@ -1309,6 +1306,20 @@ const handleOpenAddTagDlog = () => {
ruleFormRef.value.resetFields();
};
/** 下载导入模板 */
const handleDownLoadFile = () => {
const url =
details.ouPaiChooseType === 1
? 'http://47.108.51.143:9000/bladex/upload/20240118/65c977fe6ac575ebb17803400a7abbc7.xlsx'
: 'http://47.108.51.143:9000/bladex/upload/20240508/%E6%97%A0%E5%8C%85%E6%9D%A1%E7%A0%81%E5%AF%BC%E5%85%A5%E6%A8%A1%E7%89%88%28%E8%B4%A7%E6%97%A0%E5%BF%A7%29.xlsx?Content-Disposition=attachment%3B%20filename%3D%22upload%2F20240508%2F%E6%97%A0%E5%8C%85%E6%9D%A1%E7%A0%81%E5%AF%BC%E5%85%A5%E6%A8%A1%E7%89%88%28%E8%B4%A7%E6%97%A0%E5%BF%A7%29.xlsx%22&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minio%2F20240508%2F%2Fs3%2Faws4_request&X-Amz-Date=20240508T024854Z&X-Amz-Expires=432000&X-Amz-SignedHeaders=host&X-Amz-Signature=cebd92541903249d5c5fdf1a2dfa03bdb5d56beba7b73c97ac419c209cd1f2fa';
const name =
details.ouPaiChooseType === 1
? '包条导入模版(货无忧-生成包条).xlsx'
: '无包条导入模版(货无忧-生成包条).xlsx';
downloadFileBase64(url, name);
};
onActivated(() => {
console.log('activated');
console.log('this.$store :>> ', $store);

131
src/views/waybill/WarehousingByTrainNumber.vue

@ -46,33 +46,29 @@
</el-row>
<!-- 表格 -->
<el-row>
<!-- 列表模块 -->
<tablecmt
ref="tableNodeRef"
:columnList="details.columnList"
:tableData="details.data"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
:isselectfun="handleIsSelect"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'">
<el-text
v-if="Number(slotProps.scope.row.isIncoming) === 1"
@click="handlePutInStorage(slotProps.scope)"
>
入库
</el-text>
<el-text @click="handleGoDetails(slotProps.scope)">包明细</el-text>
</template>
<tablecmt
ref="tableNodeRef"
:columnList="details.columnList"
:tableData="renderData"
:loading="loadingObj.list"
@inputTxt="inputsc"
@timeCheck="timesc"
@selectCheck="selectsc"
@selection="selectionChange"
:isselectfun="handleIsSelect"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '操作'">
<el-text
v-if="Number(slotProps.scope.row.isIncoming) === 1"
@click="handlePutInStorage(slotProps.scope)"
>
入库
</el-text>
<el-text @click="handleGoDetails(slotProps.scope)">包明细</el-text>
</template>
</tablecmt>
</el-row>
</template>
</tablecmt>
<!-- 分页模块 -->
<el-row class="el-fy">
@ -93,9 +89,9 @@
</template>
<script setup lang="ts">
import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
import { ref, reactive, toRefs, computed, shallowRef, onMounted, nextTick } from 'vue';
import functions from '@/utils/functions.js';
import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
@ -103,12 +99,18 @@ import {
postFindIncomingOrderList,
postIncomingBatchOrder,
} from '@/api/distribution/WarehousingByTrainNumber';
import { downloadXls, setNodeHeight, getHtmls, deepClone } from '@/utils/util';
import {
setNodeHeight,
deepClone,
handleTranslationDataSeclect,
handleFilterData,
handleInputQuery,
handleSelectQuery,
handleTimeQuery,
} from '@/utils/util';
import { columnList } from '@/option/waybill/WarehousingByTrainNumber';
import { useRouter } from 'vue-router';
import print from '@/utils/print';
import { ElMessage, ElMessageBox } from 'element-plus';
import { submit } from '@/api/base/region';
//
const $router = useRouter();
@ -121,8 +123,13 @@ const details = reactive<any>({
searchType: 'orderCode',
/** 是否开启搜索 */
search: false,
/** 表格搜索条件 */
query: {},
/** 表格搜索条件 -- 输入框 */
inputQuery: {},
/** 表格搜索条件 -- 下拉框 */
selectQuery: {},
/** 表格搜索条件 -- 时间选择 */
timeQuery: {},
/** 时间快捷选择设置 */
shortcuts: [
{
@ -189,6 +196,8 @@ const details = reactive<any>({
listNode: '',
form: {},
});
/** 渲染数据 */
const renderData = shallowRef([]);
const { search, query, loadingObj, selectionList, drawerShow } = toRefs(details);
@ -215,6 +224,15 @@ const onLoad = async (params = {}) => {
const { code, data } = res.data;
if (code !== 200) return;
details.data = data;
handleTranslationDataSeclect(details.data, details.columnList);
handleFilterData(details.data, renderData, {
inputQuery: details.inputQuery,
selectQuery: details.selectQuery,
timeQuery: details.timeQuery,
});
console.log('details.renderData :>> ', details.renderData);
} catch (error) {
console.log('error :>> ', error);
} finally {
@ -229,6 +247,9 @@ const searchChange = () => {
for (let i = 0; i < details.columnList.length; i++) {
details.columnList[i].values = '';
}
details.timeQuery = {};
details.inputQuery = {};
details.selectQuery = {};
onLoad();
};
@ -255,36 +276,36 @@ const searchHide = () => {
};
/** 表格表头输入框搜索 */
const inputsc = (index, row) => {
details.query[row.prop] = index;
if (!index && index !== 0) delete details.query[row.prop];
onLoad();
const inputsc = (index, col) => {
handleInputQuery(index, col, details.inputQuery, true);
handleFilterData(details.data, renderData, {
inputQuery: details.inputQuery,
selectQuery: details.selectQuery,
timeQuery: details.timeQuery,
});
};
/** 表格表头时间选择 */
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 timesc = (index, col) => {
handleTimeQuery(index, col, details.timeQuery);
/** 表格表头输入框搜索 */
const btnsc = () => {};
handleFilterData(details.data, renderData, {
inputQuery: details.inputQuery,
selectQuery: details.selectQuery,
timeQuery: details.timeQuery,
});
};
/** 表格表头下拉框选择 */
const selectsc = (index, row) => {
const _prop = row.prop.replace('Name', '');
details.query[_prop] = index;
if (!index) delete details.query[_prop];
const selectsc = (index, col) => {
handleSelectQuery(index, col, details.selectQuery);
onLoad();
handleFilterData(details.data, renderData, {
inputQuery: details.inputQuery,
selectQuery: details.selectQuery,
timeQuery: details.timeQuery,
});
};
/** 表格表头复选框选择 */

134
src/views/waybill/WaybillOrderList.vue

@ -80,6 +80,13 @@
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
:isselectfun="row => row.abolishStatus + '' !== '1'"
:tableRowClassName="
(row, index) => {
if (row.abolishStatus + '' === '1') return 'abolish';
else return '';
}
"
>
<template #default="slotProps">
<template v-if="slotProps.scope.column.label === '运单号'">
@ -88,7 +95,15 @@
</el-text>
</template>
<template v-else-if="slotProps.scope.column.label === '操作'">
<template
v-else-if="
slotProps.scope.column.label === '操作' &&
//
slotProps.scope.row.abolishStatus + '' !== '1' &&
//
slotProps.scope.row.freezeStatus + '' !== '1'
"
>
<el-text @click="handleUploadReceipt(slotProps.scope)"> 上传回单 </el-text>
<el-text @click="handleViewOrderDetails(slotProps.scope)"> 查看订单 </el-text>
</template>
@ -257,8 +272,10 @@ import {
postWarehouseWaybillPageWaybillList,
postSaveWaybillReturn,
postPrintBatch,
postAbolishWaybill,
postFreezeWaybill,
postUnFreezeWaybill,
} from '@/api/waybill/WaybillOrderList.js';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import {
downloadXls,
setNodeHeight,
@ -270,7 +287,7 @@ import {
import { columnList } from '@/option/waybill/WaybillOrderList';
import { useRouter } from 'vue-router';
import print from '@/utils/print';
import { ElMessage } from 'element-plus';
import { ElMessage, ElMessageBox } from 'element-plus';
import { getToken } from '@/utils/auth';
import type { UploadProps, UploadUserFile } from 'element-plus';
import { utils } from 'sortablejs';
@ -680,6 +697,36 @@ const handleBatchDelete = () => {
message: '最少选择一条数据',
});
}
ElMessageBox.confirm('确定要批量作废吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
try {
details.loadingObj.pageLoading = true;
const res = await postAbolishWaybill({
waybillIds: details.selectionList.map(val => val.id),
});
console.log('res :>> ', res);
if (res.data.code !== 200) return;
ElMessage({
type: 'success',
message: '批量作废成功',
});
details.selectionList = [];
onLoad();
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLoading = false;
}
});
};
/** 批量冻结 */
@ -690,6 +737,36 @@ const handleBatchFreeze = () => {
message: '最少选择一条数据',
});
}
ElMessageBox.confirm('确定要批量冻结吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
try {
details.loadingObj.pageLoading = true;
const res = await postFreezeWaybill({
waybillIds: details.selectionList.map(val => val.id),
});
console.log('res :>> ', res);
if (res.data.code !== 200) return;
ElMessage({
type: 'success',
message: '批量冻结成功',
});
details.selectionList = [];
onLoad();
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLoading = false;
}
});
};
/** 批量恢复 */
@ -700,6 +777,36 @@ const handleBatchRecover = () => {
message: '最少选择一条数据',
});
}
ElMessageBox.confirm('确定要批量恢复吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then(async () => {
try {
details.loadingObj.pageLoading = true;
const res = await postUnFreezeWaybill({
waybillIds: details.selectionList.map(val => val.id),
});
console.log('res :>> ', res);
if (res.data.code !== 200) return;
ElMessage({
type: 'success',
message: '批量恢复成功',
});
details.selectionList = [];
onLoad();
} catch (error) {
console.log('error :>> ', error);
} finally {
details.loadingObj.pageLoading = false;
}
});
};
/** 查看运单 */
@ -792,6 +899,27 @@ const handleUploadReceiptSubmit = async () => {
padding: 5px 10px;
}
}
:deep(.el-table tr) {
//
&.abolish {
.tabculconte,
.el-tooltip,
.el-button--text,
.el-text {
// color: #e54b4b !important;
color: #f00 !important;
}
}
// &.hover-row {
// .tabculconte,
// .el-tooltip,
// .el-button--text {
// color: var(--el-color-primary) !important;
// }
// }
}
</style>
<style>

2
src/views/waybill/orderDetails.vue

@ -270,7 +270,7 @@ const handleFilterData = debounce(() => {
for (const key in details.query) {
const value = details.query[key];
if (value) _regArr[key] = new RegExp(value, 'i');
if (value) _regArr[key] = new RegExp('^' + value);
}
if (Object.keys(_regArr).length === 0 && Object.keys(details.timeQuery).length === 0)

35
src/views/waybill/orderPackageList.vue

@ -291,7 +291,14 @@ import {
getShowAdvancePackgeCode,
} from '@/api/waybill/orderPackageListDetails.js';
import { showOrderPackgeCode } from '@/api/distribution/distributionStockArticle';
import { downloadXls, setNodeHeight, getHtmls, deepClone, getObjType } from '@/utils/util';
import {
downloadXls,
setNodeHeight,
getHtmls,
deepClone,
getObjType,
handleTranslationDataSeclect,
} from '@/utils/util';
import { packageListColumnList, packageDetailColumnList } from '@/option/waybill/orderPackageList';
import { flowNodeColumnList } from '@/option/waybill/orderPackageListDetails.js';
import { useRouter } from 'vue-router';
@ -423,16 +430,6 @@ onMounted(() => {
}, 100);
});
//
const translationArr = [];
for (let i = 0; i < details.packageListColumnList.length; i++) {
const element = details.packageListColumnList[i];
if (getObjType(element.checkarr) !== 'array' || element.checkarr.length === 0) continue;
translationArr.push(element);
}
/** 请求页面数据 */
const onLoad = async (params = {}) => {
try {
@ -458,21 +455,7 @@ const onLoad = async (params = {}) => {
details.packageListData = data.records;
details.page.total = data.total;
for (let i = 0; i < details.packageListData.length; i++) {
const value = details.packageListData[i];
for (let j = 0; j < translationArr.length; j++) {
const element = translationArr[j];
for (let index = 0; index < element.checkarr.length; index++) {
const val = element.checkarr[index];
if (Number(value[element.prop.replace('Name', '')] || 0) === val.value) {
value[element.prop] = val.label;
}
}
}
}
handleTranslationDataSeclect(details.packageListData, details.packageListColumnList);
} catch (error) {
console.log('error :>> ', error);
} finally {

2
src/views/waybill/orderPackageListDetails.vue

@ -476,7 +476,7 @@ const handleFilterPackageData = debounce(() => {
for (const key in details.query) {
const value = details.query[key];
if (value) _regArr[key] = new RegExp(value, 'i');
if (value) _regArr[key] = new RegExp('^' + value);
}
if (Object.keys(_regArr).length === 0 && Object.keys(details.timeQuery).length === 0)

Loading…
Cancel
Save