Browse Source

Merge branch 'dev' into pre-production

master
pref_mail@163.com 10 months ago
parent
commit
be5d78f805
  1. 2
      src/api/distribution/distributionStockArticle.js
  2. 44
      src/api/distribution/zeroAdditionalRecording.js
  3. 5
      src/views/aftersales/aftersalesWorkOrder.vue
  4. 58
      src/views/aftersales/aftersalesWorkOrderAdd.vue
  5. 162
      src/views/aftersales/aftersalesWorkOrderInfo.vue
  6. 10
      src/views/distribution/artery/zeroAdditionalRecording.vue
  7. 75
      src/views/distribution/inventory/distrilbutionBillLading.vue
  8. 4795
      src/views/distribution/reservation/reservationAddFrom.vue

2
src/api/distribution/distributionStockArticle.js

@ -305,7 +305,7 @@ export const getPackageListByStockArticleId = (current, size, orderId) => {
url: '/api/logpm-distribution/distributionStockArticle/getPackageListByStockArticleId',
method: 'get',
params: {
orderId,
...orderId,
current,
size,
},

44
src/api/distribution/zeroAdditionalRecording.js

@ -11,3 +11,47 @@ export const postloadZeroSuppleList = (data = {}) => {
});
};
/** 在调度池的零担列表 */
export const postUseZeroList = (data = {}) => {
return request({
url: '/api/logpm-trunkline/carsLoad/useZeroList',
method: 'post',
data,
});
};
/** 添加零担补录 */
export const postAddZeroSupple = (data = {}) => {
return request({
url: '/api/logpm-trunkline/carsLoad/addZeroSupple',
method: 'post',
data,
});
};
/** 更新零担补录的数量 */
export const postUpdateZeroSuppleNum = (data = {}) => {
return request({
url: '/api/logpm-trunkline/carsLoad/updateZeroSuppleNum',
method: 'post',
data,
});
};
/** 通过id删除零担补录 */
export const postDeleteZeroSuppleById = (data = {}) => {
return request({
url: '/api/logpm-trunkline/carsLoad/DeleteZeroSuppleById',
method: 'post',
data,
});
};
/** 查询当前节点以后的节点id */
export const postFindNextNodeList = (data = {}) => {
return request({
url: '/api/logpm-trunkline/carsLoad/findNextNodeList',
method: 'post',
data,
});
};

5
src/views/aftersales/aftersalesWorkOrder.vue

@ -1366,7 +1366,7 @@ const ButtonPermissions = computed(() => {
batchReject: UserPermissions.value == '职能客服', //
assignment: UserPermissions.value == '客服经理', //
applyArbitration: UserPermissions.value == '仓库客服', //
batchFinish: UserPermissions.value == '职能客服', //
batchFinish: UserPermissions.value != '仓库客服', //
appeal: false, //
};
case 1: //
@ -1390,7 +1390,7 @@ const ButtonPermissions = computed(() => {
case 3: //
return {
add: false, //
batchReject: UserPermissions.value == '仓库客服', //
batchReject: UserPermissions.value == '职能客服', //
assignment: UserPermissions.value == '客服经理', //
applyArbitration: false, //
batchFinish: false, //
@ -1737,6 +1737,7 @@ const view = val => {
workOrderNumber: val.row.workOrderNumber, //
businessId: val.row.businessId,
ProcessType: TabPermissions.value == 2 ? '2' : TabPermissions.value == 3 ? '1' : '', // 1 2
RouteIndexs:TabPermissions.value,//
},
});
return;

58
src/views/aftersales/aftersalesWorkOrderAdd.vue

@ -159,7 +159,7 @@
<el-option
v-for="item in DeliveryDriver"
:key="item.value"
:label="item.driverName + '-'+ item.trainNumber"
:label="item.driverName + '-' + item.trainNumber"
:value="item.id"
/>
</el-select>
@ -185,7 +185,6 @@
clearable
@change="DeliveryTrainnumber"
/>
</el-form-item>
<el-form-item
@ -273,8 +272,6 @@
<el-input v-model="Indexform.processNumber" placeholder="请输入钉钉流程号" />
</el-form-item> -->
<!-- 必填 -->
<el-form-item label="异常问题描述">
<el-input v-model="Indexform.problemDescription" placeholder="请输入异常问题" clearable />
@ -653,7 +650,6 @@ const ImgSuccess = (response, uploadFile) => {
console.log(response);
console.log(Indexform.value['packList'], '图片列表');
amplifysrcList.value.push(response.data.link);
}
};
@ -672,9 +668,9 @@ const beforeAvatarUpload = rawFile => {
//
const pictureList = val => {
console.log(val, '图片列表');
dialogImgList.value=true;
dialogImgList.value = true;
console.log(val, '图片列表');
amplifyurl.value=val.url;
amplifyurl.value = val.url;
};
//
const ImgListRemove = val => {
@ -745,7 +741,7 @@ const DiscoveringNodesChange = val => {
function DeliveryTrainnumber() {
let data = {
trainNumber: Indexform.value.trainNumber,
taskTime:Indexform.value.deliveryTime
taskTime: Indexform.value.deliveryTime,
};
data.current = 1; //
data.size = 999; //
@ -848,7 +844,20 @@ const ConfirmForm = () => {
});
}
}
if (SelectType.value == 1 && DataSubmit['decreaseImageEntityList'].length < 2) {
ElMessage({
message: '货损至少提供2张图片附件',
type: 'warning',
});
return;
}
if (SelectType.value == 3 && !DataSubmit['decreaseImageEntityList'].length) {
ElMessage({
message: '窜货必须提供图片附件',
type: 'warning',
});
return;
}
console.log(DataSubmit['decreaseImageEntityList'], '处理好的图片');
//
if (Indexform.value.deliveryDriver) {
@ -1027,12 +1036,12 @@ const ConfirmForm = () => {
});
};
//
const changeDeliveryDriver=(val)=>{
console.log(val);
console.log(DeliveryDriver.value,'司机信息');
Indexform.value.trainNumber= DeliveryDriver.value.find(res=>res.id==val).trainNumber;//
Indexform.value.deliveryTime= DeliveryDriver.value.find(res=>res.id==val).taskTime;//
}
const changeDeliveryDriver = val => {
console.log(val);
console.log(DeliveryDriver.value, '司机信息');
Indexform.value.trainNumber = DeliveryDriver.value.find(res => res.id == val).trainNumber; //
Indexform.value.deliveryTime = DeliveryDriver.value.find(res => res.id == val).taskTime; //
};
//
const ShortageTtems = val => {
ShortageList.value = []; //
@ -1152,12 +1161,12 @@ const ChangePackageInfo = (val, index) => {
PackageInfo.value[index].orderId = packageData.orderId; //
PackageInfo.value[index].brandName = packageData.brandName; //
PackageInfo.value[index].state = false; //
res.data.data.find(item=>{
if(item.workOrderId && item.workOrderNumber){
res.data.data.find(item => {
if (item.workOrderId && item.workOrderNumber) {
HistoricalPackageList.value = res.data.data;
PackageInfo.value[index].state = true; //
PackageInfo.value[index].state = true; //
}
})
});
}
// packageCode; //
// //
@ -1216,7 +1225,7 @@ const ViewPackageDetails = val => {
flex-wrap: wrap;
justify-content: flex-start;
border: 1px solid #ccc;
border-bottom: none;
border-bottom: none;
.el-form-item {
height: 46px;
display: flex;
@ -1351,11 +1360,11 @@ const ViewPackageDetails = val => {
width: 80%;
display: flex;
justify-content: space-between;
.el_zb{
.el_zb {
width: 140px;
margin-right: 50px;
text-align: right;
:deep(.el-input){
:deep(.el-input) {
margin-left: 10px;
text-align: right;
}
@ -1443,11 +1452,10 @@ const ViewPackageDetails = val => {
border-bottom: 1px solid #e4e7ed !important;
}
:deep(.topClass) {
border-bottom:none;
border-bottom: none;
.el-tabs__content {
padding: 0;
}
}
.foot_btn {
position: fixed;
@ -1471,7 +1479,7 @@ const ViewPackageDetails = val => {
align-items: center;
justify-content: center;
}
.box-card{
.box-card {
height: 100% !important;
overflow-y: scroll;
}

162
src/views/aftersales/aftersalesWorkOrderInfo.vue

@ -432,26 +432,26 @@
<el-icon><Plus /></el-icon>
</el-upload>
<el-dialog v-model="dialogImgList" width="30%">
<el-image
:src="amplifyurl"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="amplifysrcList"
:initial-index="4"
fit="cover"
/>
<el-dialog v-model="dialogImgList" width="30%">
<el-image
:src="amplifyurl"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="amplifysrcList"
:initial-index="4"
fit="cover"
/>
</el-dialog>
</div>
<div class="foot_btn">
<el-button type="primary" @click="addireply">回复</el-button>
<el-button type="primary" @click="addingRecord">处理结果</el-button>
<el-button type="primary" @click="EndJump">完结 </el-button>
<el-button type="primary" @click="BatchReturn">打回 </el-button>
<el-button type="primary" @click="CustomerServiceCompleted">客服仲裁完结 </el-button>
<el-button type="primary" @click="EditInformation">信息编辑</el-button>
<el-button type="primary" v-if="ButtonPermissions.reply" @click="addireply">回复</el-button>
<el-button type="primary" v-if="ButtonPermissions.ProcessingResults" @click="addingRecord">处理结果</el-button>
<el-button type="primary" v-if="ButtonPermissions.end" @click="EndJump">完结 </el-button>
<el-button type="primary" v-if="ButtonPermissions.repulse" @click="BatchReturn">打回 </el-button>
<el-button type="primary" v-if="ButtonPermissions.ArbitrationCompleted" @click="CustomerServiceCompleted">客服仲裁完结 </el-button>
<el-button type="primary" v-if="ButtonPermissions.edit" @click="EditInformation">信息编辑</el-button>
</div>
</el-card>
<!-- 批量打回弹窗 -->
@ -495,14 +495,12 @@
</template>
<script setup>
import { ElMessage } from 'element-plus';
import { ElMessageBox } from 'element-plus';
import { useRouter, useRoute } from 'vue-router';
import { getDictionaryBiz } from '@/api/system/dict'; //
import { getDetailWarehouse, getDeptWarehouse } from '@/api/basicdata/basicdataWarehouse'; //
import {AddressClosed} from '@/utils/util'
import { AddressClosed } from '@/utils/util';
import {
$_getList,
$_submit,
@ -522,7 +520,7 @@ const Indexform = ref({
packList: [],
decreaseImageEntityList: [], //
}); //
const dialogImgList=ref(false)
const dialogImgList = ref(false);
const IndexException = ref([]); //
const DiscoveringNodes = ref([]); //
const ProcessingResults = ref([]); //
@ -552,8 +550,10 @@ const HistorIndex = ref(0); //历史包件索引
const TotalClaimAmount = ref(0); //
const dialogReturn = ref(false); //
const repulse = ref(false); //
const amplifyurl= ref('');//
const amplifysrcList = ref([]);//
const amplifyurl = ref(''); //
const amplifysrcList = ref([]); //
const RouteIndexs = ref(''); //
const UserPermissions = ref('');//
const PackageInfo = ref([
//
{ packageCode: '', orderCode: '', waybillNumber: '', brandName: '' },
@ -606,6 +606,24 @@ function updateDictionary(targetArray, dictionaryType) {
});
});
}
//
getDictionaryBiz('after_sales_visits').then(res => {
console.log(res, '角色字典');
const matchingItem = res.data.data.find(
item => item.dictValue == JSON.parse(localStorage.getItem('TWMS-userInfo')).content.role_name
);
if (matchingItem) {
UserPermissions.value = matchingItem.dictValue;
} else {
UserPermissions.value = '仓库客服';
}
console.log(UserPermissions.value, '当前角色权限');
});
// TOKEN
const headers = computed(() => {
return { 'Blade-Auth': 'Bearer ' + getToken() };
@ -627,6 +645,94 @@ const ImgSuccess = (response, uploadFile) => {
console.log(Indexform.value['packList'], '图片列表');
}
};
//
const ButtonPermissions = computed(() => {
// TabPermissions
switch (RouteIndexs.value !='null') {
case RouteIndexs.value == 0: //
return {
reply: true, //()
ProcessingResults: UserPermissions.value == '仓库客服', //
end: UserPermissions.value == '职能客服', //
repulse: UserPermissions.value == '客服经理', //
ArbitrationCompleted: UserPermissions.value == '职能客服', //
edit: UserPermissions.value != '仓库客服', //
};
case RouteIndexs.value == 1: //
return {
reply: false, //
ProcessingResults: false, //
end: false, //
repulse: false, //
ArbitrationCompleted: false, //
edit: false, //
};
case RouteIndexs.value == 2: //
return {
reply: false, //
ProcessingResults: false, //
end: UserPermissions.value == '职能客服', //
repulse: UserPermissions.value == '客服经理', //
ArbitrationCompleted: UserPermissions.value == '职能客服', //
edit: false, //
};
case RouteIndexs.value == 3: //
return {
reply: UserPermissions.value == '仓库客服', //
ProcessingResults: UserPermissions.value == '仓库客服', //
end: UserPermissions.value == '职能客服', //
repulse: UserPermissions.value == '职能客服', //
ArbitrationCompleted: UserPermissions.value == '职能客服', //
edit: false, //
};
case RouteIndexs.value == 4: //
return {
reply: false, //
ProcessingResults: false, //
end: false, //
repulse: false, //
ArbitrationCompleted: false, //
edit: false, //
};
case RouteIndexs.value == 5: //
return {
reply: false, //
ProcessingResults: false, //
end: false, //
repulse: false, //
ArbitrationCompleted: UserPermissions.value == '职能客服', //
edit: false, //
};
case RouteIndexs.value == 6: //
return {
reply: false, //
ProcessingResults: false, //
end: false, //
repulse: false, //
ArbitrationCompleted: false, //
edit: false, //
};
case RouteIndexs.value == 7: //
return {
reply: false, //
ProcessingResults: false, //
end: false, //
repulse: false, //
ArbitrationCompleted: false, //
edit: false, //
};
//
default:
return {
reply: false, //
ProcessingResults: false, //
end: false, //
repulse: false, //
ArbitrationCompleted: false, //
edit: false, //
};
}
});
//
const beforeAvatarUpload = rawFile => {
@ -641,9 +747,9 @@ const beforeAvatarUpload = rawFile => {
};
//
const pictureList = val => {
dialogImgList.value=true;
dialogImgList.value = true;
console.log(val, '图片列表');
amplifyurl.value=val.url;
amplifyurl.value = val.url;
};
//
const ImgListRemove = val => {
@ -712,6 +818,10 @@ const ResponsiblePartychange = (val, index) => {
});
};
const onLoad = () => {
if($route.query.RouteIndexs!='null'){
RouteIndexs.value = $route.query.RouteIndexs;//
}
console.log($route.query.id, '页面初始化');
routerState.value = $route.query.routerState;
updateDictionary(IndexException.value, 'pc_work_order'); //
@ -1096,7 +1206,6 @@ const addingRecord = () => {
};
//
const CustomerServiceCompleted = () => {
$router.push({
path: '/aftersales/aftersalesWorkOrdermodify',
query: {
@ -1109,7 +1218,6 @@ const CustomerServiceCompleted = () => {
index: '1',
},
});
};
//
const EditInformation = () => {
@ -1473,7 +1581,7 @@ const EndJump = () => {
height: 30px !important;
}
}
:deep(.el-image){
:deep(.el-image) {
width: 100% !important;
height: 300px !important;
}

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

@ -208,7 +208,14 @@ import dayjs from 'dayjs';
import { mapGetters } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { postloadZeroSuppleList } from '@/api/distribution/zeroAdditionalRecording';
import {
postloadZeroSuppleList,
postUseZeroList,
postAddZeroSupple,
postUpdateZeroSuppleNum,
postDeleteZeroSuppleById,
postFindNextNodeList,
} from '@/api/distribution/zeroAdditionalRecording';
import { downloadXls } from '@/utils/util';
import { oldColumnList, newColumnList } from '@/option/distribution/zeroAdditionalRecording';
import { ElMessage } from 'element-plus';
@ -338,6 +345,7 @@ const onLoad = async (params = {}) => {
const submitData = {
...details.page,
...details.query,
orderCodes: details.orderCodeList,
...params,
};

75
src/views/distribution/inventory/distrilbutionBillLading.vue

@ -91,9 +91,9 @@
</el-col>
</el-row>
<el-row :gutter="20" class="toscontent">
<el-col :span="24" >
<el-form-item label="物品明细" prop="certificateType" >
<el-tabs type="border-card" @tab-click="handleChlickTab" style="width: 100%;">
<el-col :span="24">
<el-form-item label="物品明细" prop="certificateType">
<el-tabs type="border-card" @tab-click="handleChlickTab" style="width: 100%">
<el-tab-pane label="定制品">
<el-button
type="primary"
@ -179,7 +179,7 @@
</el-tabs>
</el-form-item>
</el-col>
<el-col v-if = !view :span="8">
<el-col v-if="!view" :span="8">
<el-form-item label="提货证件" label-width="120px">
<el-upload
v-model:file-list="fileListSell"
@ -202,8 +202,8 @@
</template>
</el-upload>
</el-form-item>
</el-col >
<el-col v-if = !view :span="8">
</el-col>
<el-col v-if="!view" :span="8">
<el-form-item label="文员确定图片" label-width="120px">
<el-upload
v-model:file-list="fileListClerk"
@ -227,7 +227,7 @@
</el-upload>
</el-form-item>
</el-col>
<el-col v-if = !view :span="8">
<el-col v-if="!view" :span="8">
<el-form-item label="库管签收图片" label-width="120px">
<el-upload
v-model:file-list="fileListLibrary"
@ -253,7 +253,7 @@
</el-col>
</el-row>
</el-form>
<div v-if = view>
<div v-if="view">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="提货证件" label-width="120px">
@ -306,7 +306,6 @@
<el-col :span="8">
<el-form-item label="库管签收图片" label-width="120px">
<el-upload
v-model:file-list="fileListLibrary"
class="upload-demo"
:action="action"
@ -321,7 +320,7 @@
:on-remove="handleRemove"
list-type="picture"
>
<el-button type="primary" :disabled = "!view">上传</el-button>
<el-button type="primary" :disabled="!view">上传</el-button>
<template #tip>
<div class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
</template>
@ -331,8 +330,8 @@
</el-row>
</div>
<!-- &lt;!&ndash; 表单按钮 &ndash;&gt; v-if="!view || viewSC"-->
<div class="foot" :disabled="view" >
<!-- &lt;!&ndash; 表单按钮 &ndash;&gt; v-if="!view || viewSC"-->
<div class="foot" :disabled="view">
<div class="dialog-footer">
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit('form')"
> </el-button
@ -575,7 +574,6 @@
<img w-full :src="Imgurl" alt="Preview Image" />
</el-dialog>
</div>
</basic-container>
</template>
@ -602,8 +600,8 @@ import { nextTick, ref } from 'vue';
export default {
data() {
return {
dialogImg:false,
Imgurl:undefined,
dialogImg: false,
Imgurl: undefined,
OrdercolumnList: [
{
prop: 'serviceNumber',
@ -1824,7 +1822,7 @@ export default {
this.onLoad(this.page);
} else if (this.$route.query.type == '3') {
this.onLoadCj();
}else if (this.$route.query.type == '4') {
} else if (this.$route.query.type == '4') {
//
this.view = true;
this.getDetailOen();
@ -2135,6 +2133,7 @@ export default {
},
//
callFordeliveryOrder() {
console.log('111 :>> ', 111);
let st = false;
let sts = false;
let ad = false;
@ -2142,9 +2141,11 @@ export default {
let consigneeMobile = '';
this.selectionList.some(i => {
if (this.dataList.length > 0) {
let w = this.dataList.find(
c => c.consigneeMobile == i.consigneeMobile && c.consigneePerson == i.consigneePerson
);
let w = this.dataList.find(c => {
console.log('i :>> ', i);
console.log('c :>> ', c);
return c.consigneeMobile == i.consigneeMobile && c.consigneePerson == i.consigneePerson;
});
if (!w) {
ad = true;
}
@ -2346,8 +2347,8 @@ export default {
},
handlePreview(file) {
console.log(file);
this.Imgurl =file.url;
this.dialogImg =true;
this.Imgurl = file.url;
this.dialogImg = true;
},
textbox(e, index) {
let nu = index + 1;
@ -3117,23 +3118,23 @@ export default {
.el-input-number {
width: 100%;
}
:deep(.maboxhi){
height: 100% !important;
:deep(.maboxhi) {
height: 100% !important;
}
.toscontent{
:deep(.el-form-item__content){
height: 400px;
overflow-y: scroll;
align-items: flex-start;
}
:deep(.el-tabs){
height: 100% !important;
}
.toscontent {
:deep(.el-form-item__content) {
height: 400px;
overflow-y: scroll;
align-items: flex-start;
}
:deep(.el-tabs) {
height: 100% !important;
}
}
.LoadIMG{
img{
width: 100%;
height: 100%;
}
.LoadIMG {
img {
width: 100%;
height: 100%;
}
}
</style>

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

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