Browse Source

Merge remote-tracking branch 'origin/dev' into dev

fix_bug_pro20231227
汤建军 1 year ago
parent
commit
5df02fbf4f
  1. 1
      package.json
  2. 61
      src/api/distribution/createTask.js
  3. 94
      src/components/edittablehead/index.vue
  4. 665
      src/components/newTablecmt/newTablecmt.vue
  5. 11
      src/components/tablecmt/tablecmt.vue
  6. 42
      src/option/aftersales/aftersalesWorkOrder.js
  7. 412
      src/option/distribution/arteryDistrilbutionBillLadingList.js
  8. 47
      src/router/avue-router.js
  9. 1
      src/router/index.js
  10. 60
      src/router/views/index.js
  11. 5
      src/store/getters.js
  12. 98
      src/views/aftersales/aftersalesWorkOrder.vue
  13. 9
      src/views/basic/pda/basicPdaform.vue
  14. 2
      src/views/basicdata/brand/basicClient.vue
  15. 1
      src/views/basicdata/brand/basicClientFrom.vue
  16. 1655
      src/views/distribution/checkInventoryTask/createTaskTemp.vue
  17. 188
      src/views/distribution/deliverylist/distributionDeliveryListmar.vue
  18. 1019
      src/views/distribution/inventory/arteryDistrilbutionBillLadingList.vue
  19. 158
      src/views/distribution/inventory/delivery/distributionStockArticleDiscuss.vue
  20. 247
      src/views/distribution/inventory/distrilbutionBillLadingList.vue
  21. 406
      src/views/factory/snm/staorderPackages.vue
  22. 423
      src/views/factory/snm/stationlinenum.vue
  23. 22
      src/views/warehouse/parcelList/distributionParcelList.vue
  24. 4
      vite.config.js
  25. 637
      yarn.lock

1
package.json

@ -27,6 +27,7 @@
"kr-print-designer": "^1.1.8",
"mockjs": "^1.1.0",
"nprogress": "^0.2.0",
"sortablejs": "^1.15.0",
"vite-plugin-mock": "^2.9.4",
"vue": "^3.2.40",
"vue-baidu-map": "^0.21.22",

61
src/api/distribution/createTask.js

@ -56,6 +56,67 @@ export const postBatchDelete = params => {
});
};
/**
* 盘点详情
*/
export const $_getDetailInfo = params => {
return request({
url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/getDetailInfo',
method:'get',
params,
});
};
/**
* 盘点状态修改
*/
export const $_updateQuestChildInfo = data => {
return request({
url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/updateQuestChildInfo',
method:'put',
data,
});
};
/**
* 盘点详情保存
*/
export const $_updateDetailInfo = data => {
return request({
url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/updateDetailInfo',
method: 'put',
data,
});
};
/**
* 盘点日期延期
*/
export const $_updateDate = data => {
return request({
url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/updateDate',
method: 'put',
data,
});
};
/**
* 盘点对比数据
*/
export const $_getContrastInfo = params => {
return request({
url: '/api/logpm-warehouse/blade-taskQuest/taskQuest/getContrastInfo',
method: 'get',
params,
});
};
// 查看详情
// export const $_AddInfo = data => {
// return request({

94
src/components/edittablehead/index.vue

@ -2,28 +2,17 @@
<el-drawer :model-value="drawerShow" @close="close" title="编辑列表" size="40%">
<!-- <el-checkbox label="12" />
<el-checkbox label="2" /> -->
<el-table :data="columnList" style="width: 100%; height: 700px" border>
<el-table-column
v-for="column in headtop"
:key="column.prop"
:prop="column.prop"
:label="column.label"
:width="column.width"
flexible
>
<el-table :data="columnList" style="width: 100%; height: 700px" border ref="tableEl1">
<el-table-column v-for="column in headtop" :key="column.prop" :prop="column.prop" :label="column.label"
:width="column.width" flexible>
<template #header>
<el-text class="mx-1">{{ column.label }}</el-text>
</template>
<template #default="scope">
<el-text class="mx-1" v-if="column.prop == 'label'">{{ scope.row[column.prop] }}</el-text>
<el-checkbox-group v-else-if="column.label == '隐藏'" v-model="checkList">
<el-checkbox
:key="scope.row['label']"
:label="scope.row['label']"
true-label=""
false-label=""
@change="checkboxitem(1)"
>
<el-checkbox :key="scope.row['label']" :label="scope.row['label']" true-label="" false-label=""
@change="checkboxitem(1)">
<!-- 用于隐藏文字 -->
<template #default="scope">
<!-- {{ scope }} -->
@ -31,13 +20,8 @@
</el-checkbox>
</el-checkbox-group>
<el-checkbox-group v-else-if="column.label == '冻结'" v-model="flexList">
<el-checkbox
:key="scope.row['label']"
:label="scope.row['label']"
true-label=""
false-label=""
@change="checkboxitem(2)"
>
<el-checkbox :key="scope.row['label']" :label="scope.row['label']" true-label="" false-label=""
@change="checkboxitem(2)">
<!-- 用于隐藏文字 -->
<template #default="scope">
<!-- {{ scope }} -->
@ -45,13 +29,8 @@
</el-checkbox>
</el-checkbox-group>
<el-checkbox-group v-else-if="column.label == '排序'" v-model="sortlist">
<el-checkbox
:key="scope.row['label']"
:label="scope.row['label']"
true-label=""
false-label=""
@change="checkboxitem(3)"
>
<el-checkbox :key="scope.row['label']" :label="scope.row['label']" true-label="" false-label=""
@change="checkboxitem(3)">
<!-- 用于隐藏文字 -->
<template #default="scope">
<!-- {{ scope }} -->
@ -67,9 +46,10 @@
</template>
<script lang="ts" setup>
import { ref, watchEffect, onMounted, watch, inject } from 'vue';
import { ref, watchEffect, onMounted, watch, inject, nextTick } from 'vue';
import type { PropType } from 'vue';
const functions = inject('functions') as any;
import Sortable from "sortablejs";
interface TableColumnType {
/** 表格列的key */
prop: string;
@ -122,6 +102,9 @@ interface headtoptype {
const checkList = ref<(string | number)[]>([]);
const flexList = ref<(string | number)[]>([]);
const sortlist = ref<(string | number)[]>([]);
const tableEl1 = ref(null);
if (functions.getStorage(window.location.pathname + 'checkList')) {
checkList.value = functions.getStorage(window.location.pathname + 'checkList');
console.log(checkList.value);
@ -145,6 +128,47 @@ let props = defineProps({
required: true,
},
});
onMounted(() => {
nextTick(() => {
console.log('onMounted')
initSortable();
});
})
watch(
() => props.drawerShow,
(val) => {
if (val)
nextTick(() => {
initSortable();
console.log('watch')
});
}
);
const initSortable = () => {
if (tableEl1.value && tableEl1.value.$el) {
const el1 = tableEl1.value.$el.querySelector('.el-table__body tbody')
console.log(el1)
Sortable.create(el1, {
// handle: '.move-icon',
animation: 150, //
onEnd: ({ newIndex, oldIndex }) => {
console.log(newIndex, oldIndex)
const arr = props.columnList
const currRow = arr.splice(oldIndex, 1)[0]
arr.splice(newIndex, 0, currRow)
// nextTick(() => {
// emit('setcolum', arr, 4);
// })
}
})
}
}
function close() {
emit('closce', false);
}
@ -184,13 +208,7 @@ function close() {
// });
// emit('setcolum', props.columnList);
// });
// onMounted(() => {
// props.columnList.map(item => {
// if (item.head) {
// (checkList.value as string[]).push(item.label);
// }
// });
// });
// watchEffect(()=>{
// props.columnList.map(item => {
// if(item.head){

665
src/components/newTablecmt/newTablecmt.vue

@ -0,0 +1,665 @@
<template>
<div class="maboxhi" id="bodys">
<el-table
:data="tableData"
style="width: 100%"
:show-summary="shownm"
:summary-method="getSummaries"
v-loading="loading"
@selection-change="handleSelectionChange"
border
height="100%"
:row-class-name="tableRowClassName"
ref="selecttable"
>
<el-table-column
:type="column.type == 0 ? 'selection' : ''"
:min-width="column.width"
v-for="(column, index) in newcolumnList"
:key="column.prop"
:prop="column.prop"
:label="column.label"
:fixed="column.fixed"
:sortable="column.sortable"
:selectable="isselectfun"
v-show="column.head"
>
<el-table-column
:type="column.type == 12 ? 'index' : ''"
:min-width="column.width"
:prop="column.prop"
:label="column.label"
v-if="column.type != 0"
flexible
show-overflow-tooltip
>
<template #header>
<!-- <el-text class="mx-1">{{ column.label }}</el-text> -->
<el-input
v-if="column.type == 2"
v-model="column.values"
clearable
:placeholder="`请输入${column.label}`"
@change="inputchange($event, column)"
@blur="inputchange($event, column)"
@clear="inputclear($event, column)"
/>
<el-select
v-if="column.type == 3"
v-model="column.values"
class="m-2 selectbr"
clearable
:placeholder="`请选择${column.label}`"
@change="selectchange($event, column)"
@clear="selectclear($event, column)"
>
<el-option
v-for="item in column.checkarr"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-date-picker
v-model="column.values"
v-if="column.type == 4"
type="date"
clearable
style="width: auto"
:placeholder="`请选择${column.label}`"
@change="timechange($event, column)"
@clear="timeclear($event, column)"
/>
<el-date-picker
v-model="column.values"
v-if="column.type == 5"
type="datetime"
clearable
style="width: auto"
:placeholder="`请选择${column.label}`"
format="YYYY/MM/DD HH:mm:ss"
@change="timechange($event, column)"
@clear="timeclear($event, column)"
/>
</template>
<template #default="scope">
<el-text
class="mx-2 tabculconte"
v-if="Number(column.type) < 6 && Number(column.type) > 0"
>{{ scope.row[column.prop] }}</el-text
>
<el-switch
@change="makeCargo(scope.row, column)"
v-if="column.type == 11"
v-model="scope.row[column.prop]"
/>
<el-text
style=""
class="mx-2 tabculconte colors"
v-if="column.type == 9"
@click="godowns(scope.row[column.downprop])"
>{{ scope.row[column.prop] }}</el-text
>
<el-input
@blur="handleNumberRange(column, scope.row)"
v-if="column.type == 10"
v-model="scope.row[column.prop]"
type="number"
:min="0"
:max="scope.row.residueNumber"
></el-input>
<div class="slotbuts" v-if="column.type == 6">
<slot v-if="column.type == 6" :scope="scope"> </slot>
</div>
<el-image
preview-teleported
v-if="column.type == 7"
style="width: 60px; height: 60px; margin-left: 10px"
:initial-index="index"
:z-index="100"
v-for="(item, index) in scope.row[column.prop].split(',')"
:src="item"
:preview-src-list="scope.row[column.prop].split(',')"
/>
</template>
</el-table-column>
<template #header>
<div style="display: inline-block">
<div class="tilbox">
<el-text class="mx-1 tabtitles" @click.stop @dblclick.stop="copyalls(column)">{{
column.label
}}</el-text>
</div>
</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script lang="ts" setup>
import { computed, ref, watchEffect, getCurrentInstance, onMounted, defineExpose } from 'vue';
import type { PropType } from 'vue';
const { proxy } = getCurrentInstance() as any;
const selecttable = ref(null);
/**
* 对应通知事件
* inputTxt:输入框输入的确认事件
* timeCheck:时间选择器选择事件
* selectCheck:下拉框选中事件
* selection:勾选框事件
*/
onMounted(() => {
function getWinHight() {
var windowHight = 0;
if (document.body.clientHeight && document.documentElement.clientHeight) {
windowHight =
document.body.clientHeight < document.documentElement.clientHeight
? document.body.clientHeight
: document.documentElement.clientHeight;
} else {
// windowHight=(document.body.clientHeight>document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;
}
// return windowHight;
return document.documentElement.clientHeight;
}
var bodyContent = document.querySelectorAll('.maboxhi');
const _height = getWinHight();
console.log('bodyContent :>> ', bodyContent);
//
bodyContent.forEach(val => {
val.style.height = _height - val.getBoundingClientRect().top - 65 + 'px';
});
});
interface TableColumnType {
/** 表格列的key */
prop: string;
/** 表格列的名字 */
label: string;
/**
* 对应列表头的类型
* 0:直接显示为单选proplabel全部传空
* 1:普通表格正常显示
* 2:带输入框表格
* 3:带下拉框表格
* 4:带日期选择器列
* 5:带日期时间选择器
* 6:操作栏proplabel全部传空
* 7:图片
* 8:带背景的文字
* 9:下载附件
* 10.输入框的表格内容
* 11.开关类型
*/
type: number | string;
/** 用于接受表头的值 */
values: number | string;
/** 表头宽度 number string undefined */
width: number | string | undefined;
/** 下拉框可选项 */
checkarr?: {
value: string | number;
label: string | number;
}[];
/**
* true false
* left right
*/
fixed: boolean | string;
/**
* true false 或者直接不写该参数
*/
isshowSummary?: boolean;
/**
* true false 或者直接不写该参数
*/
sortable?: boolean;
/**
* true false 或者直接不写该参数
*/
head?: boolean;
/**
* 默认超出隐藏
* true是不隐藏
* false 隐藏
*/
isextrahide?: boolean;
/** urlkey
*/
downprop?: string;
/**
*/
lessThanNum?: string;
}
interface TableDataType {
[key: string]: any;
}
let props = defineProps({
columnList: {
type: Array as PropType<TableColumnType[]>,
required: true,
},
tableData: {
type: Array as PropType<TableDataType[]>,
required: true,
},
loading: {
type: Boolean as PropType<boolean>,
required: true,
},
//
checkselect: {
type: Array as PropType<TableDataType[]>,
required: false,
},
//
isselectfun: {
type: Function as PropType<(row: TableDataType) => boolean>,
required: false,
default: null,
},
});
let selectarr = ref([]);
const tableRowClassName = ({ row, rowIndex }: { row: TableDataType; rowIndex: number }) => {
let sfcheck = false;
selectarr.value.map(item => {
if (item == row) {
sfcheck = true;
}
});
if (sfcheck) {
return 'table-SelectedRow-bgcolor';
}
return '';
};
let emit = defineEmits(['inputTxt', 'timeCheck', 'selectCheck', 'selection', 'makeCargo']);
let newcolumnList = ref<TableColumnType[]>([]);
watchEffect(() => {
newcolumnList.value = [];
props.columnList.map(item => {
if (!item.head) {
newcolumnList.value.push(item);
}
});
});
onMounted(() => {
if (props.checkselect) {
props.checkselect.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
// a.target = '_blank';
a.download = 'xixi.zip'; //
document.body.appendChild(a); //DOM
a.click();
window.URL.revokeObjectURL(url); // url
document.body.removeChild(a);
}
let shownm = ref(false);
function copyalls(column: TableColumnType) {
const _isReturn = column.type == 1 || column.type == 2 || column.type == 3;
if (!_isReturn) return;
let text = '';
props.tableData.map((item, index) => {
if (index < props.tableData.length - 1) {
if (item[column.prop]) {
text += `${item[column.prop]}\n`;
}
} else {
if (item[column.prop]) {
text += `${item[column.prop]}`;
} else {
}
}
});
copyContent(text);
}
function handleNumberRange(column: TableColumnType, row: TableDataType) {
row[column.prop] = row[column.prop].replace(/[^\.\d]/g, ''); //
if (row[column.prop]) {
//
row[column.prop] = parseInt(row[column.prop]); //
}
// if (column.lessThanNum) {
// if (row[column.prop] > row[column.lessThanNum]) {
// row[column.prop] = row[column.lessThanNum];
// proxy.$message({
// type: 'error',
// message: '',
// });
// }
// }
//
if (row.residueNumber) {
if (row.enterNum > row.residueNumber) {
proxy.$message({
type: 'error',
message: '数量不能大于可上架总数,已调整为最大数量!',
});
row.enterNum = row.residueNumber;
}
}
//
if (row.num) {
if (row.enterNum > row.num) {
proxy.$message({
type: 'error',
message: '数量不能大于可下架总数,已调整为最大数量!',
});
row.enterNum = row.num;
}
}
console.log(row, 'row');
}
function handleEdit(index: number, row: TableDataType) {
console.log(index, row);
}
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[]) => {
// console.log(param)
selectarr.value = param;
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);
}
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] = '总计';
return;
}
tji = 0;
if (props.columnList[index]?.isshowSummary) {
data.map(ite => {
tji += Number(ite[props.columnList[index]?.prop] || 0);
});
newarr[index] = tji;
// shownm.value=true
} else {
newarr[index] = null;
}
});
// console.log(columns)
console.log(newarr);
return newarr;
};
watchEffect(() => {
props.columnList.map(item => {
if (item.isshowSummary) {
shownm.value = true;
}
});
});
//
function copyContent(content: string) {
//
let copyResult = true;
//
const text = content || '让我们一起快乐的敲代码吧~';
// clipboard
if (!!window.navigator.clipboard) {
// clipboardpromise
window.navigator.clipboard
.writeText(text)
.then(res => {
proxy.$message({
type: 'success',
message: '复制成功',
});
//
return copyResult;
})
.catch(err => {
copyResult = false;
console.log('复制失败', err);
proxy.$message({
type: 'error',
message: '复制失败',
});
//
return copyResult;
});
} else {
// clipboard document.execCommand()
// input
let inputDom = document.createElement('textarea');
//
inputDom.setAttribute('readonly', 'readonly');
// input
inputDom.value = text;
// inputbody
document.body.appendChild(inputDom);
// input
inputDom.select();
//
// input
// Input
const result = document.execCommand('copy');
//
if (result) {
proxy.$message({
type: 'success',
message: '复制成功',
});
} else {
console.log('复制失败');
proxy.$message({
type: 'error',
message: '复制失败',
});
copyResult = false;
}
//
document.body.removeChild(inputDom);
//
return copyResult;
}
}
defineExpose({});
</script>
<style lang="scss" scope>
// :root{
// --el-checkbox-checked-bg-color:'#D3832A';
// --el-checkbox-checked-input-border-color:'#D3832A';
// }
.el-table {
//
--el-table-row-hover-bg-color: #d3832a;
}
// .el-table .warning-row {
// --el-table-tr-bg-color: var(--el-color-warning-light-9);
// }
// .el-table .success-row {
// --el-table-tr-bg-color: var(--el-color-success-light-9);
// }
.maboxhi {
width: 100%;
// min-height: 950px;
// height: 841px;
// flex:1;
// min-height: 100%;
}
.on {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-size: 12px !important;
}
.selectbr {
border: none !important;
font-size: 12px !important;
}
.tabtitles {
color: #092c4d !important;
font-size: 12px !important;
margin-right: 5px !important;
}
.el-table .ascending .sort-caret.ascending {
border-bottom-color: #d3832a !important;
font-size: 12px !important;
}
.el-table .descending .sort-caret.descending {
border-top-color: #d3832a !important;
font-size: 12px !important;
}
.tabculconte {
color: #333333 !important;
font-size: 12px !important;
}
.slotbuts {
height: 25px;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px !important;
}
.slotbuts .el-text {
color: #d3832a !important;
margin-right: 10px !important;
cursor: pointer;
font-size: 12px !important;
&:nth-last-child(1) {
margin-right: 0px !important;
}
}
.el-popper.is-pure.is-light.el-dropdown__popper .el-text {
color: #d3832a !important;
margin-right: 10px !important;
cursor: pointer;
font-size: 12px !important;
&:nth-last-child(1) {
margin-right: 0px !important;
}
}
.el-table .el-input__inner {
height: 23px !important;
}
// .el-checkbox__input.is-checked .el-checkbox__inner{
// background-color: #D3832A !important;
// border-color: #D3832A !important;
// }
// .is .el-checkbox__input.is-checked .el-checkbox__inner{
// background-color: #D3832A !important;
// border-color: #D3832A !important;
// }
// .is-checked .el-checkbox__inner:hover{
// border-color: #D3832A !important;
// }
// .el-checkbox__input.is-indeterminate .el-checkbox__inner{
// background-color: #D3832A !important;
// border-color: #D3832A !important;
// }
.el-table .el-table__cell {
padding: 0px !important;
}
.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
border-color: #d3832a !important;
background-color: #d3832a !important;
}
.el-checkbox__input.is-focus .el-checkbox__inner {
border-color: #d3832a !important;
}
//
.el-checkbox__input.is-checked + .el-checkbox__label {
color: #d3832a !important;
}
.el-checkbox__inner:hover {
border-color: #d3832a !important;
font-size: 12px !important;
}
.table-SelectedRow-bgcolor {
> td {
background-color: #f7e8d7 !important;
}
}
.colors {
color: #409eff !important;
cursor: pointer !important;
}
.el-table .cell {
line-height: 22px !important;
}
.el-table .el-input__inner {
font-size: 12px !important;
}
.el-table__body tr.hover-row.current-row > td,
.el-table__body tr.hover-row.el-table__row--striped.current-row > td,
.el-table__body tr.hover-row.el-table__row--striped > td,
.el-table__body tr.hover-row > td {
background-color: #d3d8e1 !important;
}
.el-date-editor.el-input,
.el-date-editor.el-input__wrapper {
height: 23px !important;
}
.copys {
display: inline-block;
margin-left: 5px;
padding-top: 5px;
margin-right: 5px;
}
.tilbox {
display: flex;
align-items: center;
}
.el-table .el-popper {
max-width: 20% !important;
}
.el-input {
// width: 200px !important;
}
</style>

11
src/components/tablecmt/tablecmt.vue

@ -39,7 +39,7 @@
<template #header>
<!-- <el-text class="mx-1">{{ column.label }}</el-text> -->
<el-input
v-if="column.type == 2"
v-if="column.type == 2 || column.type == 13"
v-model="column.values"
clearable
:placeholder="`请输入${column.label}`"
@ -121,8 +121,8 @@
:min="0"
:max="scope.row.residueNumber"
></el-input>
<div class="slotbuts" v-if="column.type == 6">
<slot v-if="column.type == 6" :scope="scope"> </slot>
<div class="slotbuts" v-if="column.type == 6 || column.type == 13">
<slot v-if="column.type == 6 || column.type == 13" :scope="scope"> </slot>
</div>
<el-image
preview-teleported
@ -204,7 +204,10 @@ onMounted(() => {
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';
});
});
interface TableColumnType {
@ -226,6 +229,8 @@ interface TableColumnType {
* 9:下载附件
* 10.输入框的表格内容
* 11.开关类型
* 12.序号
* 13.带搜索的自定义列表
*/
type: number | string;
/** 用于接受表头的值 */

42
src/option/aftersales/aftersalesWorkOrder.js

@ -89,18 +89,12 @@ export default {
hide: true,
},
{
label: "工单异常类型;货损,少货,窜货,加急,其他",
label: "异常类型 ",
prop: "workOrderType",
search: true,
},
{
label: "发起工单标识;PDA,PC",
prop: "initiationIdentification",
display: false,
hide: true,
},
{
label: "发现节点;提货,发货,干线,库内,配送,其他,签收(PC),安装(PC)",
label: "发现节点 ",
prop: "discoveryNode",
search: true,
},
@ -119,7 +113,7 @@ export default {
search: true,
},
{
label: "车次号 (干线卸车环节)",
label: "车次号",
prop: "trainNumber",
},
{
@ -131,7 +125,7 @@ export default {
prop: "secondary",
},
{
label: "车辆路线;车次号、通过车次号自动带出车辆线路",
label: "车辆路线 ",
prop: "vehicleRoute",
},
{
@ -139,11 +133,11 @@ export default {
prop: "deliverGoodsTime",
},
{
label: "发现时间 (库内作业环节,配送装车环节)",
label: "发现时间",
prop: "discoveryTime",
},
{
label: "入库时间(库内作业环节)",
label: "入库时间",
prop: "warehousingTime",
},
{
@ -155,29 +149,21 @@ export default {
prop: "remarks",
},
{
label: "配送时间(配送装车环节)",
label: "配送时间",
prop: "deliveryTime",
},
{
label: "配送司机(配送装车环节)",
label: "配送司机",
prop: "deliveryDriver",
},
{
label: "工单状态",
prop: "workOrderStatus",
},
{
label: "归属客服ID",
prop: "customerServiceId",
},
{
label: "归属客服名称",
prop: "customerServiceName",
},
{
label: "商场ID",
prop: "waybillMallId",
},
{
label: "完结时间",
prop: "overTime",
@ -186,10 +172,6 @@ export default {
label: "异常问题描述",
prop: "problemDescription",
},
{
label: "仓库ID",
prop: "warehouseId",
},
{
label: "责任人 (库内作业环节)",
prop: "personResponsible",
@ -209,12 +191,6 @@ export default {
{
label: "财务入账时间",
prop: "entryTime",
},
{
label: "操作人",
prop: "operator",
display: false,
hide: true,
},
}
]
}

412
src/option/distribution/arteryDistrilbutionBillLadingList.js

@ -1,3 +1,4 @@
/** 自提表格 */
export const columnList = [
{
prop: '',
@ -17,9 +18,9 @@ export const columnList = [
{
prop: 'pickupBatch',
label: '提货批次',
type: 2,
type: 13,
values: '',
width: '130',
width: '180',
checkarr: [],
fixed: true,
sortable: true,
@ -27,7 +28,7 @@ export const columnList = [
},
{
prop: 'serviceNumber',
label: '服务号',
label: '车牌',
type: 2,
values: '',
width: '130',
@ -37,7 +38,7 @@ export const columnList = [
},
{
prop: 'waybillNumber',
label: '运单号',
label: '司机名称',
type: 2,
values: '',
width: '130',
@ -47,7 +48,7 @@ export const columnList = [
},
{
prop: 'consigneeUnit',
label: '收货单位',
label: '司机电话',
type: 2,
values: '',
width: '130',
@ -57,7 +58,7 @@ export const columnList = [
},
{
prop: 'customerName',
label: '收货人',
label: '仓库名称',
type: 2,
values: '',
width: '130',
@ -67,28 +68,27 @@ export const columnList = [
},
{
prop: 'customerTelephone',
label: '联系电话',
type: 2,
label: '线路标题',
type: 1,
values: '',
width: '130',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'warehouse',
label: '仓库',
label: '线路节点数',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
head: true,
},
{
prop: 'warehouseEntryTime',
label: '入库时间',
label: '提货开始时间',
type: 4,
values: '',
width: '130',
@ -98,8 +98,8 @@ export const columnList = [
},
{
prop: 'collectFee',
label: '到付运费',
type: 1,
label: '提货完成时间',
type: 4,
values: '',
width: '130',
checkarr: [],
@ -108,8 +108,8 @@ export const columnList = [
},
{
prop: 'transport',
label: '搬运费',
type: 1,
label: '预计数量',
type: 2,
values: '',
width: '130',
checkarr: [],
@ -118,8 +118,8 @@ export const columnList = [
},
{
prop: 'storageFee',
label: '仓储费',
type: 1,
label: '状态',
type: 3,
values: '',
width: '130',
checkarr: [],
@ -128,8 +128,8 @@ export const columnList = [
},
{
prop: 'forklift',
label: '叉车费',
type: 1,
label: '计费模式',
type: 3,
values: '',
width: '130',
checkarr: [],
@ -138,28 +138,28 @@ export const columnList = [
},
{
prop: 'otherFee',
label: '其他增值费用',
type: 1,
label: '提货费用',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'pickUpTime',
label: '备注',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
// {
// prop: 'pickUpTime',
// label: '总费用',
// type: 1,
// values: '',
// width: '150',
// checkarr: [],
// fixed: false,
// sortable: true,
// },
{
prop: 'totalNumber',
label: '应提件数',
type: 1,
label: '承运商',
type: 2,
values: '',
width: '130',
checkarr: [],
@ -168,8 +168,8 @@ export const columnList = [
},
{
prop: 'stopNum',
label: '实提件数',
type: 1,
label: '数',
type: 2,
values: '',
width: '130',
checkarr: [],
@ -178,7 +178,7 @@ export const columnList = [
},
{
prop: 'brand',
label: '品牌',
label: '件数',
type: 2,
values: '',
width: '130',
@ -188,7 +188,7 @@ export const columnList = [
},
{
prop: 'productInformation',
label: '货品信息',
label: '重量',
type: 2,
values: '',
width: '130',
@ -198,7 +198,7 @@ export const columnList = [
},
{
prop: 'customerTelephone',
label: '提货手机',
label: '体积',
type: 2,
values: '',
width: '130',
@ -208,7 +208,7 @@ export const columnList = [
},
{
prop: 'consignee',
label: '提货人',
label: '创建人',
type: 2,
values: '',
width: '130',
@ -216,67 +216,349 @@ export const columnList = [
fixed: false,
sortable: false,
},
// {
// prop: '',
// label: '操作',
// type: 6,
// values: '',
// width: '200',
// checkarr: [],
// fixed: 'right',
// hide: true,
// },
// 更多列的配置...
];
/** 自提详情内表格 */
export const columnDetailList = [
{
prop: '',
label: '复选框',
type: 0,
width: 55,
fixed: true,
},
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'pickUpPlate',
prop: 'pickupBatch',
label: '提货批次',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'serviceNumber',
label: '提货司机',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'waybillNumber',
label: '提货车牌',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: false,
sortable: true,
},
{
prop: 'deliveryDocument',
label: '提货证件',
prop: 'consigneeUnit',
label: '运单号',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: false,
sortable: true,
},
{
prop: 'certificateTypeName',
label: '证件类型',
type: 3,
prop: 'customerName',
label: '合同号',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: false,
sortable: true,
},
{
prop: 'conditionName',
label: '状态',
type: 1,
prop: 'customerTelephone',
label: '目的地',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'warehouse',
label: '入库类型',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: false,
sortable: true,
},
{
prop: 'totalCost',
label: '费用合计',
type: 1,
prop: 'warehouseEntryTime',
label: '是否齐套',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: false,
sortable: true,
},
{
prop: '',
label: '操作',
type: 6,
prop: 'collectFee',
label: '托盘码',
type: 2,
values: '',
width: '200',
width: '130',
checkarr: [],
fixed: 'right',
hide: true,
fixed: false,
sortable: true,
},
{
prop: 'transport',
label: '一级品类',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'storageFee',
label: '二级品类',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'forklift',
label: '三级品类',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'otherFee',
label: '物料名称',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'pickUpTime',
label: '品牌',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'totalNumber',
label: '操作仓库',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'stopNum',
label: '操作人',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'brand',
label: '提货扫码时间',
type: 4,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
// 更多列的配置...
];
export default { columnList };
/** 新增提货选择运单列表 */
export const columnNewList = [
{
prop: '',
label: '复选框',
type: 0,
width: 55,
fixed: true,
},
{
prop: '',
label: '序号',
type: 12,
values: '',
width: 55,
fixed: true,
},
{
prop: 'pickupBatch',
label: '运单号',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: true,
sortable: true,
head: false,
},
{
prop: 'serviceNumber',
label: '网点',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: true,
sortable: true,
},
{
prop: 'waybillNumber',
label: '发货人',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'consigneeUnit',
label: '客户车次号',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'customerName',
label: '发货单位',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'customerTelephone',
label: '货物名称',
type: 2,
values: '',
width: '180',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'warehouse',
label: '件数',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: true,
},
{
prop: 'warehouseEntryTime',
label: '重量',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: true,
},
{
prop: 'collectFee',
label: '体积',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: true,
},
{
prop: 'transport',
label: '运费',
type: 2,
values: '',
width: '130',
checkarr: [],
fixed: false,
sortable: true,
isshowSummary: true,
},
{
prop: 'storageFee',
label: '运单备注',
type: 2,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
{
prop: 'forklift',
label: '开单时间',
type: 4,
values: '',
width: '150',
checkarr: [],
fixed: false,
sortable: true,
},
];

47
src/router/avue-router.js

@ -54,6 +54,7 @@ RouterPlugin.install = function (option = {}) {
children = oMenu[propsDefault.children],
query = oMenu[propsDefault.query],
meta = oMenu[propsDefault.meta];
if (option.keepAlive) {
meta.keepAlive = option.keepAlive;
}
@ -92,29 +93,29 @@ RouterPlugin.install = function (option = {}) {
// 处理是否为一级路由
children: !isChild
? (() => {
if (first) {
oMenu[propsDefault.path] = `${path}`;
let result = modules[`../${component}.vue`];
if (result) result().then(mod => (mod.default.name = path));
else {
console.log(component + '不存在');
}
return [
{
component: result,
icon: icon,
name: name,
meta: meta,
query: query,
path: '',
},
];
if (first) {
oMenu[propsDefault.path] = `${path}`;
let result = modules[`../${component}.vue`];
if (result) result().then(mod => (mod.default.name = path));
else {
console.log(component + '不存在');
}
return [];
})()
return [
{
component: result,
icon: icon,
name: name,
meta: meta,
query: query,
path: '',
},
];
}
return [];
})()
: (() => {
return this.formatRoutes(children, false);
})(),
return this.formatRoutes(children, false);
})(),
};
if (!isURL(path)) aRouter.push(oRouter);
}
@ -130,7 +131,7 @@ export const formatPath = (ele, first) => {
const propsDefault = website.menu;
const icon = ele[propsDefault.icon];
ele[propsDefault.icon] = !icon ? propsDefault.iconDefault : icon;
ele.meta = { keepAlive: ele.isOpen === 2 };
ele.meta = { keepAlive: ele.isOpen == 2 };
const iframeComponent = 'components/iframe/main';
const iframeSrc = href => {
return href.replace(/&/g, '#');
@ -147,7 +148,7 @@ export const formatPath = (ele, first) => {
ele[propsDefault.children] &&
ele[propsDefault.children].forEach(child => {
child.component = 'views' + child[propsDefault.path];
child.meta = { keepAlive: child.isOpen === 2 };
child.meta = { keepAlive: child.isOpen == 2 };
if (isURL(child[propsDefault.href])) {
let href = child[propsDefault.href];
child[propsDefault.path] = ele[propsDefault.path] + '/' + child.code;

1
src/router/index.js

@ -14,6 +14,7 @@ AvueRouter.install({
store: Store,
router: Router,
i18n: i18n,
keepAlive: true
});
Router.$avueRouter.formatRoutes(Store.getters.menuAll, true);

60
src/router/views/index.js

@ -513,18 +513,7 @@ export default [
},
],
},
{
path: '/distribution/reservation/reservationAddFromByClient',
component: Layout,
redirect: '/distribution/reservation/reservationAddFromByClient',
children: [
{
path: '/distribution/reservation/reservationAddFromByClient',
name: 'name',
component: () => import('@/views/distribution/reservation/reservationAddFromByClient.vue'),
},
],
},
{
path: '/distribution/reservation/atlas',
component: Layout,
@ -699,6 +688,7 @@ export default [
name: '配送查看',
meta: {
i18n: 'dict',
keepAlive:true
},
props: route => ({
name: route.query.name,
@ -931,25 +921,7 @@ export default [
},
],
},
{
path: '/reservation/order_listFrom',
component: Layout,
redirect: '/reservation/order_listFrom',
children: [
{
path: '/distribution/reservation/order_listFrom',
name: '预约编辑',
meta: {
i18n: 'dict',
},
props: route => ({
name: route.query.name,
id: route.query.id,
}),
component: () => import('@/views/reservation/order_listFrom.vue'),
},
],
},
{
path: '/basicdata/warehouse/tray/basicdataTrayedt',
component: Layout,
@ -1080,22 +1052,34 @@ export default [
},
],
},
// 下面的代码为 商场客户端的页面
// 下面的代码为 商场客户端的页面
{
path: '/mail/order/add',
component: Layout,
redirect: '/mail/order/add',
children: [
{
path: '/mail/order/add',
name: '新建商场预约单',
component: () => import('@/views/mail/order/add.vue'),
},
],
},
{
path: '/mail/order/add',
path: '/distribution/checkInventoryTask/createTaskTemp',
component: Layout,
redirect: '/mail/order/add',
redirect: '/distribution/checkInventoryTask/createTaskTemp',
children: [
{
path: '/mail/order/add',
name: '新建商场预约单',
component: () => import('@/views/mail/order/add.vue'),
path: '/distribution/checkInventoryTask/createTaskTemp',
name: '盘点重构',
component: () => import('@/views/distribution/checkInventoryTask/createTaskTemp.vue'),
},
],
},
// {
// path: '/distribution/turndelivery/devtmp',
// component: Layout,

5
src/store/getters.js

@ -15,15 +15,12 @@ const getters = {
lockPasswd: state => state.common.lockPasswd,
tagList: state => state.tags.tagList,
tagsKeep: (state, getters) => {
console.log(getters.tagList,'-----')
return getters.tagList
.filter(ele => {
return (ele.meta || {}).keepAlive;
})
.map(ele => {
console.log('ele :>> ', ele);
const path = ele.path;
const reg = new RegExp(path, 'g');
console.log('reg', reg);
return ele.fullPath;
});
},

98
src/views/aftersales/aftersalesWorkOrder.vue

@ -4,11 +4,23 @@
<el-row :hidden="!search" style="padding:6px 18px">
<!-- 查询模块 -->
<el-form :inline="true" :model="query">
<el-form-item label="工单异常类型;货损,少货,窜货,加急,其他:">
<el-input v-model="query.workOrderType" placeholder="请输入工单异常类型;货损,少货,窜货,加急,其他"></el-input>
</el-form-item>
<el-form-item label="发现节点;提货,发货,干线,库内,配送,其他,签收(PC),安装(PC):">
<el-input v-model="query.discoveryNode" placeholder="请输入发现节点;提货,发货,干线,库内,配送,其他,签收(PC),安装(PC)"></el-input>
<el-form-item label="工单异常类型:">
<!-- <el-input v-model="query.workOrderType" placeholder="请输入工单异常类型;货损,少货,窜货,加急,其他"></el-input>-->
<el-option
v-for="item in this.workOrder"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-form-item>
<el-form-item label="发现节点:">
<!-- <el-input v-model="query.discoveryNode" placeholder="请输入发现节点;提货,发货,干线,库内,配送,其他,签收(PC),安装(PC)"></el-input>-->
<el-option
v-for="item in this.discoveryNode"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-form-item>
<el-form-item label="异常工单号:">
<el-input v-model="query.workOrderNumber" placeholder="请输入异常工单号"></el-input>
@ -27,8 +39,10 @@
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<el-button v-if="this.permissionList.addBtn" type="primary" icon="el-icon-plus" @click="handleAdd"> </el-button>
<el-button v-if="this.permissionList.delBtn" type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>
<!-- <el-button v-if="this.permissionList.addBtn" type="primary" icon="el-icon-plus" @click="handleAdd"> </el-button>-->
<!-- <el-button v-if="this.permissionList.delBtn" type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>-->
<el-button type="primary" icon="el-icon-plus" @click="handleAdd"> </el-button>
<el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
@ -89,9 +103,9 @@
width="50%"
:before-close="beforeClose"
append-to-body>
<el-form :disabled="view" ref="form" :model="form" label-width="80px">
<el-form :disabled="view" ref="form" :model="form" label-width="120px">
<!-- 表单字段 -->
<el-form-item label="工单异常类型;货损,少货,窜货,加急,其他" prop="workOrderType">
<el-form-item label="工单异常类型 " prop="workOrderType">
<el-select v-model="form.workOrderType" clearable placeholder="请选择工单异常类型;货损,少货,窜货,加急,其他">
<el-option
v-for="item in workOrderTypeData"
@ -101,7 +115,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="发现节点;提货,发货,干线,库内,配送,其他,签收(PC),安装(PC)" prop="discoveryNode">
<el-form-item label="发现节点 " prop="discoveryNode">
<el-select v-model="form.discoveryNode" clearable placeholder="请选择发现节点;提货,发货,干线,库内,配送,其他,签收(PC),安装(PC)">
<el-option
v-for="item in discoveryNodeData"
@ -120,7 +134,7 @@
<el-form-item label="订单自编号" prop="orderCode">
<el-input v-model="form.orderCode" placeholder="请输入订单自编号"/>
</el-form-item>
<el-form-item label="车次号 (干线卸车环节)" prop="trainNumber">
<el-form-item label="车次号 " prop="trainNumber">
<el-input v-model="form.trainNumber" placeholder="请输入车次号 (干线卸车环节)"/>
</el-form-item>
<el-form-item label="一级品类" prop="first">
@ -129,16 +143,16 @@
<el-form-item label="二级品类" prop="secondary">
<el-input v-model="form.secondary" placeholder="请输入二级品类"/>
</el-form-item>
<el-form-item label="车辆路线;车次号、通过车次号自动带出车辆线路" prop="vehicleRoute">
<el-form-item label="车辆路线 " prop="vehicleRoute">
<el-input v-model="form.vehicleRoute" placeholder="请输入车辆路线;车次号、通过车次号自动带出车辆线路"/>
</el-form-item>
<el-form-item label="送货时间" prop="deliverGoodsTime">
<el-input v-model="form.deliverGoodsTime" placeholder="请输入送货时间"/>
</el-form-item>
<el-form-item label="发现时间 (库内作业环节,配送装车环节)" prop="discoveryTime">
<el-form-item label="发现时间 " prop="discoveryTime">
<el-input v-model="form.discoveryTime" placeholder="请输入发现时间 (库内作业环节,配送装车环节)"/>
</el-form-item>
<el-form-item label="入库时间(库内作业环节)" prop="warehousingTime">
<el-form-item label="入库时间 " prop="warehousingTime">
<el-input v-model="form.warehousingTime" placeholder="请输入入库时间(库内作业环节)"/>
</el-form-item>
<el-form-item label="运单商场" prop="waybillMall">
@ -147,37 +161,30 @@
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注"/>
</el-form-item>
<el-form-item label="配送时间(配送装车环节)" prop="deliveryTime">
<el-form-item label="配送时间 " prop="deliveryTime">
<el-input v-model="form.deliveryTime" placeholder="请输入配送时间(配送装车环节)"/>
</el-form-item>
<el-form-item label="配送司机(配送装车环节)" prop="deliveryDriver">
<el-form-item label="配送司机 " prop="deliveryDriver">
<el-input v-model="form.deliveryDriver" placeholder="请输入配送司机(配送装车环节)"/>
</el-form-item>
<el-form-item label="工单状态" prop="workOrderStatus">
<!-- <el-form-item label="工单状态" prop="workOrderStatus">
<el-input v-model="form.workOrderStatus" placeholder="请输入工单状态"/>
</el-form-item>
<el-form-item label="归属客服ID" prop="customerServiceId">
<el-input v-model="form.customerServiceId" placeholder="请输入归属客服ID"/>
</el-form-item>
<el-form-item label="归属客服名称" prop="customerServiceName">
</el-form-item>-->
<!-- <el-form-item label="归属客服名称" prop="customerServiceName">
<el-input v-model="form.customerServiceName" placeholder="请输入归属客服名称"/>
</el-form-item>
<el-form-item label="商场ID" prop="waybillMallId">
<el-input v-model="form.waybillMallId" placeholder="请输入商场ID"/>
</el-form-item>
</el-form-item>-->
<el-form-item label="完结时间" prop="overTime">
<el-input v-model="form.overTime" placeholder="请输入完结时间"/>
</el-form-item>
<el-form-item label="异常问题描述" prop="problemDescription">
<el-input v-model="form.problemDescription" placeholder="请输入异常问题描述"/>
</el-form-item>
<el-form-item label="仓库ID" prop="warehouseId">
<el-input v-model="form.warehouseId" placeholder="请输入仓库ID"/>
</el-form-item>
<el-form-item label="责任人 (库内作业环节)" prop="personResponsible">
<el-form-item label="责任人" prop="personResponsible">
<el-input v-model="form.personResponsible" placeholder="请输入责任人 (库内作业环节)"/>
</el-form-item>
<el-form-item label="钉钉流程号" prop="processNumber">
<!-- <el-form-item label="钉钉流程号" prop="processNumber">
<el-input v-model="form.processNumber" placeholder="请输入钉钉流程号"/>
</el-form-item>
<el-form-item label="审核人" prop="reviewedBy">
@ -188,7 +195,7 @@
</el-form-item>
<el-form-item label="财务入账时间" prop="entryTime">
<el-input v-model="form.entryTime" placeholder="请输入财务入账时间"/>
</el-form-item>
</el-form-item>-->
</el-form>
<!-- 表单按钮 -->
<template #footer>
@ -206,6 +213,7 @@
import { getList, getDetail, add, update, remove } from "@/api/aftersales/aftersalesWorkOrder";
import option from "@/option/aftersales/aftersalesWorkOrder";
import { mapGetters } from "vuex";
import { getDictionaryBiz } from '@/api/system/dict';
export default {
data () {
@ -237,6 +245,8 @@ export default {
option: option,
//
data: [],
discoveryNode: [],
workOrder: [],
}
},
mounted() {
@ -264,6 +274,30 @@ export default {
methods: {
init() {
this.height = this.setPx(document.body.clientHeight - 340);
getDictionaryBiz('pc_work_order').then(res => { //
this.workOrder = res.data.data;
console.log("异常工单字典",this.workOrder);
/*this.$functions.checkcColumnList('typeServerName', this.columnList).checkarr =
res.data.data.map(item => {
item.value = item.dictKey;
item.label = item.dictValue;
return item;
});*/
});
getDictionaryBiz('pc_discovery_node').then(res => { //
this.discoveryNode = res.data.data;
console.log("发起环节字典",this.discoveryNode);
/*this.$functions.checkcColumnList('typeServerName', this.columnList).checkarr =
res.data.data.map(item => {
item.value = item.dictKey;
item.label = item.dictValue;
return item;
});*/
});
},
searchHide() {
this.search = !this.search;

9
src/views/basic/pda/basicPdaform.vue

@ -588,9 +588,7 @@ export default {
getDictionaryBiz('yes_no').then(res => {
this.isLiabilityData = res.data.data;
});
// getDictionaryBiz('basic_pad_state').then(res => {
// this.stateData = res.data.data;
// });
},
//
handleViewpda() {
@ -598,10 +596,7 @@ export default {
this.$router.push({
path: '/basic/pda/basicPda',
});
// let str = {
// val: false
// }
// this.$emit("returnpda", str);
},
init() {
// console.log("this.$route.query.edt>>>>>>>",this.$route.query.edt);

2
src/views/basicdata/brand/basicClient.vue

@ -205,7 +205,7 @@
/>
</el-form-item>
<el-form-item label="客户名称" prop="clientName">
<el-input v-model="form.clientName" placeholder="请输入客户名称" style="width: 100%" />
<el-input v-model="form.clientName" disabled placeholder="请输入客户名称" style="width: 100%" />
</el-form-item>
<el-form-item label="客户类型" prop="clientType">
<!-- <el-input v-model="form.clientName" placeholder="请输入客户名称" style="width: 100%"/>-->

1
src/views/basicdata/brand/basicClientFrom.vue

@ -614,7 +614,6 @@ export default {
},
uploadSuccess(fileList) {
console.log('123123123', fileList);
// this.form.fileName =
// this.$set(row, 'imageCos', fileList);
if (this.title == '编辑') {

1655
src/views/distribution/checkInventoryTask/createTaskTemp.vue

File diff suppressed because it is too large Load Diff

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

@ -33,34 +33,14 @@
</el-select>
</el-form-item>
<el-form-item label="配送司机:">
<el-select
v-model="query.driverName"
filterable
placeholder="请输入司机名称"
:loading="loading"
>
<el-option
v-for="item in driverData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictValue"
>
<el-select v-model="query.driverName" filterable placeholder="请输入司机名称" :loading="loading">
<el-option v-for="item in driverData" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="配送车辆:">
<el-select
v-model="query.vehicleName"
filterable
placeholder="请输入司机名称"
:loading="loading"
>
<el-option
v-for="item in vehicleData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictValue"
>
<el-select v-model="query.vehicleName" filterable placeholder="请输入司机名称" :loading="loading">
<el-option v-for="item in vehicleData" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
@ -104,12 +84,9 @@
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left" style="margin-top: 20px">
<el-button type="primary" icon="el-icon-plus" @click="printBatchOrder"
>批量打印</el-button
>
<el-button type="primary" icon="el-icon-plus" @click="printBatchOrder">批量打印</el-button>
<!-- <el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>-->
<el-button type="danger" icon="el-icon-download" @click="handleExportInfo" plain
>导出
<el-button type="danger" icon="el-icon-download" @click="handleExportInfo" plain>导出
</el-button>
</div>
<!-- 头部右侧按钮模块 -->
@ -122,29 +99,15 @@
</el-row>
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="columnList"
:tableData="data"
:loading="loading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionsc"
>
<tablecmt :columnList="columnList" :tableData="data" :loading="loading" @inputTxt="inputsc" @timeCheck="timesc"
@btnCheck="btnsc" @selectCheck="selectsc" @selection="selectionsc">
<template #default="slotProps">
<el-text size="small" @click="printOrder(slotProps.scope.row)"> </el-text>
<el-text size="small" @click="editsolt(slotProps.scope)"> </el-text>
<el-text size="small" @click="editmap(slotProps.scope)"> </el-text>
<el-text
size="small"
v-if="
slotProps.scope.row.deliveryStatusName !== '已完成' ||
slotProps.scope.row.deliveryStatus !== '3'
"
@click="handleEdit(slotProps.scope)"
> </el-text
>
<el-text size="small" v-if="slotProps.scope.row.deliveryStatusName !== '已完成' ||
slotProps.scope.row.deliveryStatus !== '3'
" @click="handleEdit(slotProps.scope)"> </el-text>
<!-- <el-button size="small" @click="costadd(slotProps.scope)"> </el-button>-->
</template>
@ -182,17 +145,9 @@
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<div style="font-size: 14px">勾选数量: {{ selectionList.length }}</div>
<!-- 分页模块 -->
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
>
<el-pagination align="right" background @size-change="sizeChange" @current-change="currentChange"
:current-page="page.currentPage" :page-sizes="[30, 50, 80, 120]" :page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="page.total">
</el-pagination>
</div>
</el-row>
@ -219,80 +174,34 @@
</el-dialog>
</div>
<el-dialog
v-model="dialogVisible"
title="增值服务"
width="30%"
:model="addvalue"
:before-close="handleClose"
>
<el-dialog v-model="dialogVisible" title="增值服务" width="30%" :model="addvalue" :before-close="handleClose">
<el-form-item label="增值服务" prop="freightMark">
<el-checkbox-group v-model="form.addvalueType" @change="handleCheckedCitiesChange">
<el-checkbox
style="width: 100%; margin-bottom: 3%"
v-for="(item, index) in addvalueServeTypeData"
:key="item.dictKey"
:label="item.dictKey"
>{{ item.dictValue }}
<span v-if="index === 0 || index === 6 || index === 2 || index === 4"
>&nbsp;件数:
<el-input
type="number"
v-model="item.f"
:disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 1)"
style="width: 20%; border: none; border-bottom: 2px solid #eee"
/>
<el-checkbox style="width: 100%; margin-bottom: 3%" v-for="(item, index) in addvalueServeTypeData"
:key="item.dictKey" :label="item.dictKey">{{ item.dictValue }}
<span v-if="index === 0 || index === 6 || index === 2 || index === 4">&nbsp;件数:
<el-input type="number" v-model="item.f" :disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 1)" style="width: 20%; border: none; border-bottom: 2px solid #eee" />
</span>
<span v-if="index === 1"
>公里:
<el-input
type="primary"
v-model="item.a"
:disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 2)"
style="width: 20%; border: none; border-bottom: 2px solid #eee"
/>
<span v-if="index === 1">公里:
<el-input type="primary" v-model="item.a" :disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 2)" style="width: 20%; border: none; border-bottom: 2px solid #eee" />
</span>
<span v-if="index === 3"
>距离:
<el-input
type="number"
v-model="item.b"
:disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 3)"
style="width: 20%; border: none; border-bottom: 2px solid #eee"
/>
<span v-if="index === 3">距离:
<el-input type="number" v-model="item.b" :disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 3)" style="width: 20%; border: none; border-bottom: 2px solid #eee" />
</span>
<span v-if="index === 5"
>人数:
<el-input
type="number"
v-model="item.c"
:disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 4)"
style="width: 20%; border: none; border-bottom: 2px solid #eee"
/>
<span v-if="index === 5">人数:
<el-input type="number" v-model="item.c" :disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 4)" style="width: 20%; border: none; border-bottom: 2px solid #eee" />
</span>
<span v-if="index === 0"
>楼层:
<el-input
type="number"
v-model="item.d"
:disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 5)"
style="width: 20%; border: none; border-bottom: 2px solid #eee"
/>
<span v-if="index === 0">楼层:
<el-input type="number" v-model="item.d" :disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 5)" style="width: 20%; border: none; border-bottom: 2px solid #eee" />
</span>
<span v-if="item"
>预计费用:
<el-input
type="number"
v-model="item.e"
:disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 6)"
style="width: 20%; border: none; border-bottom: 2px solid #eee"
/>
<span v-if="item">预计费用:
<el-input type="number" v-model="item.e" :disabled="this.form?.freightMark?.indexOf(item.dictKey) == -1"
@change="textbox($event, index, 6)" style="width: 20%; border: none; border-bottom: 2px solid #eee" />
</span>
</el-checkbox>
</el-checkbox-group>
@ -305,12 +214,8 @@
</template>
</el-dialog>
</basic-container>
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="columnList"
></edittablehead>
<edittablehead @setcolum="setnewcolum" @closce="showdrawer" :drawerShow="drawerShow" :columnList="columnList">
</edittablehead>
</template>
<script>
@ -732,6 +637,7 @@ export default {
return new Promise((rv, rev) => {
getVehicleList(1, 10, '').then(res => {
const data = res.data.data;
if (!data.records) return
let po = [];
data.records.forEach(item => {
let a = {
@ -877,7 +783,7 @@ export default {
.then(_ => {
done();
})
.catch(_ => {});
.catch(_ => { });
},
editsolt(scope) {
const { row } = scope;
@ -1205,6 +1111,7 @@ export default {
width: fit-content;
}
}
.order-info {
ul {
list-style: none;
@ -1218,10 +1125,12 @@ export default {
display: flex;
align-items: center;
font-weight: 500;
img {
margin-right: 4px;
}
}
li::after {
content: '';
display: block;
@ -1233,55 +1142,68 @@ export default {
left: 0px;
}
}
li:first-child::after {
content: none;
}
li:first-child {
padding-left: 0;
}
}
.avue-crud__header {
// align-items: flex-end !important;
}
//
.el-times {
:deep(.el-tooltip__trigger) {
height: 30px !important;
}
}
.el-btn {
min-width: 200px;
margin-right: 0 !important;
:deep(.el-form-item__content) {
width: 180px;
justify-content: flex-end;
}
}
.avue-crud__right {
display: flex;
align-items: center;
}
.fr-fo {
display: flex;
}
:deep(.avue-crud__header) {
.avue-crud__left {
margin-top: 0 !important;
}
}
:deep(.avue-crud) {
display: flex;
height: 100%;
flex-direction: column;
}
:deep(.el-card__body) {
height: 100%;
}
:deep(.el-card) {
height: 100%;
display: flex;
flex-direction: column;
}
.el-fy {
flex: 1;
display: flex;

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

File diff suppressed because it is too large Load Diff

158
src/views/distribution/inventory/delivery/distributionStockArticleDiscuss.vue

@ -14,16 +14,8 @@
</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="datetimerange"
unlink-panels
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
:shortcuts="shortcuts"
:default-time="defaultTime2"
/>
<el-date-picker v-model="stockupDate" type="datetimerange" unlink-panels range-separator=""
start-placeholder="开始时间" end-placeholder="结束时间" :shortcuts="shortcuts" :default-time="defaultTime2" />
</el-form-item>
<!-- <el-form-item label="货物名称:">-->
<!-- <el-input v-model="query.descriptionGoods" placeholder="请输入货物名称"></el-input>-->
@ -75,28 +67,14 @@
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<el-button type="primary" icon="el-icon-plus" @click="handleAdd" v-if="handler"
>创建异常</el-button
>
<el-button type="primary" icon="el-icon-plus" @click="handleAdd" v-if="handler">创建异常</el-button>
<!-- <el-button type="danger" icon="el-icon-delete" @click="handleMoke" v-if = "handler">转预约单</el-button>-->
<!-- <el-button type="primary" icon="el-icon-plus" @click="handleStockList" v-if = "handler">批量加配转库存品</el-button>-->
<el-button
type="danger"
icon="el-icon-delete"
@click="handleCallDelivery('3')"
v-if="handler"
>修改客户信息</el-button
>
<el-button
type="danger"
icon="el-icon-delete"
@click="handleCallDelivery('2')"
v-if="handler"
>修改服务类型</el-button
>
<el-button type="danger" icon="el-icon-plus" @click="handleExport" plain
> </el-button
>
<el-button type="danger" icon="el-icon-delete" @click="handleCallDelivery('3')"
v-if="handler">修改客户信息</el-button>
<el-button type="danger" icon="el-icon-delete" @click="handleCallDelivery('2')"
v-if="handler">修改服务类型</el-button>
<el-button type="danger" icon="el-icon-plus" @click="handleExport" plain> </el-button>
</div>
<!-- <div class="avue-crud__left">
<el-button type="primary" icon="el-icon-plus" @click="handlebill" v-if = "!handler">创建提货单</el-button>
@ -113,27 +91,12 @@
</el-row>
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="columnList"
:tableData="data"
:loading="loading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<tablecmt :columnList="columnList" :tableData="data" :loading="loading" @inputTxt="inputsc" @timeCheck="timesc"
@btnCheck="btnsc" @selectCheck="selectsc" @selection="selectionChange">
<template #default="slotProps">
<el-text type="primary" text icon="el-icon-view" @click="handleView(slotProps.scope)"
>查看</el-text
>
<el-text
type="primary"
text
icon="el-icon-edit"
@click="handleCallDeliveryOwn(slotProps.scope)"
>修改客户信息</el-text
>
<el-text type="primary" text icon="el-icon-view" @click="handleView(slotProps.scope)">查看</el-text>
<el-text type="primary" text icon="el-icon-edit"
@click="handleCallDeliveryOwn(slotProps.scope)">修改客户信息</el-text>
</template>
</tablecmt>
</el-row>
@ -141,17 +104,9 @@
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<div style="font-size: 14px">勾选数量: {{ selectionList.length }}</div>
<!-- 分页模块 -->
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
>
<el-pagination align="right" background @size-change="sizeChange" @current-change="currentChange"
:current-page="page.currentPage" :page-sizes="[30, 50, 80, 120]" :page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="page.total">
</el-pagination>
</div>
</el-row>
@ -167,12 +122,7 @@
<el-input v-model="formCall.waybill" autocomplete="off" />
</el-form-item>
<el-form-item label="跟进记录" :label-width="formLabelWidth">
<el-input
v-model="formCall.followUpRecord"
:rows="2"
type="textarea"
placeholder="请填写内容"
/>
<el-input v-model="formCall.followUpRecord" :rows="2" type="textarea" placeholder="请填写内容" />
</el-form-item>
<el-form-item label="历史跟进" :label-width="formLabelWidth"> </el-form-item>
</el-form>
@ -189,12 +139,8 @@
<el-form-item label="服务类型" :label-width="formLabelWidth">
<!-- <el-input v-model="formService.typeService" autocomplete="off" />-->
<el-select v-model="formService.typeService" clearable placeholder="请选择服务类型">
<el-option
v-for="item in distributionType"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
<el-option v-for="item in distributionType" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
@ -202,12 +148,7 @@
<el-input v-model="formService.cost" autocomplete="off" />
</el-form-item>
<el-form-item label="原因" :label-width="formLabelWidth">
<el-input
v-model="formService.cause"
:rows="2"
type="textarea"
placeholder="请填写原因"
/>
<el-input v-model="formService.cause" :rows="2" type="textarea" placeholder="请填写原因" />
</el-form-item>
</el-form>
<template #footer>
@ -227,12 +168,7 @@
<el-input v-model="formCustomer.phone" autocomplete="off" />
</el-form-item>
<el-form-item label="地址" :label-width="formLabelWidth">
<el-input
v-model="formCustomer.address"
:rows="2"
type="textarea"
placeholder="请填写地址"
/>
<el-input v-model="formCustomer.address" :rows="2" type="textarea" placeholder="请填写地址" />
</el-form-item>
</el-form>
<template #footer>
@ -244,13 +180,7 @@
</template>
</el-dialog>
<!-- 表单模块 -->
<el-dialog
:title="title"
v-model="box"
width="50%"
:before-close="beforeClose"
append-to-body
>
<el-dialog :title="title" v-model="box" width="50%" :before-close="beforeClose" append-to-body>
<el-form :disabled="view" ref="form" :model="form" label-width="80px">
<!-- 表单字段 -->
<el-form-item label="服务号" prop="serviceNumber">
@ -270,13 +200,8 @@
</el-form-item>
<el-form-item label="入库时间" prop="warehouseEntryTime">
<!-- <el-input v-model="form.warehouseEntryTime" placeholder="请输入入库时间"/>-->
<el-date-picker
v-model="form.warehouseEntryTime"
type="datetime"
placeholder="请输入入库时间"
format="YYYY-MM-DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss"
/>
<el-date-picker v-model="form.warehouseEntryTime" type="datetime" placeholder="请输入入库时间"
format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" />
</el-form-item>
<el-form-item label="在库时长" prop="storeTime">
<el-input v-model="form.storeTime" placeholder="请输入在库时长" />
@ -352,21 +277,15 @@
<!-- 表单按钮 -->
<template #footer>
<span v-if="!view" class="dialog-footer">
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit"
> </el-button
>
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit"> </el-button>
<el-button icon="el-icon-circle-close" @click="box = false"> </el-button>
</span>
</template>
</el-dialog>
</div>
</basic-container>
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="columnList"
></edittablehead>
<edittablehead @setcolum="setnewcolum" @closce="showdrawer" :drawerShow="drawerShow" :columnList="columnList">
</edittablehead>
</template>
<script>
@ -424,7 +343,7 @@ export default {
sortable: true,
head: false,
},
{
prop: 'orderCode',
label: '订单自编号',
@ -495,7 +414,7 @@ export default {
fixed: false,
sortable: true,
},
{
prop: 'consigneeUnit',
label: '收货单位',
@ -515,8 +434,8 @@ export default {
checkarr: [],
fixed: false,
sortable: true,
},
{
},
{
prop: 'totalNumber',
label: '订单总件数',
type: 1,
@ -1590,23 +1509,29 @@ export default {
.el-button--text {
margin-right: 15px;
}
.el-select {
width: 300px;
}
.el-input {
width: 300px;
}
.dialog-footer button:first-child {
margin-right: 10px;
}
.el-fr {
width: 100%;
display: flex;
justify-content: space-between;
.asterisk-left:last-child {
margin-right: 0;
}
}
.el-input {
margin-left: 8px;
}
@ -1614,31 +1539,38 @@ export default {
:deep(.el-form-item__content) {
margin-left: 8px;
}
.el-times {
width: auto;
:deep(.el-tooltip__trigger) {
height: 30px !important;
}
}
:deep(.el-form-item__label) {
padding: 0;
}
:deep(.avue-crud) {
display: flex;
height: 100%;
flex-direction: column;
}
:deep(.el-card__body) {
height: 100%;
}
:deep(.el-card) {
height: 100%;
display: flex;
flex-direction: column;
}
.el-fy {
flex: 1;
display: flex;
align-items: flex-end;
align-items: flex-end;
}
</style>

247
src/views/distribution/inventory/distrilbutionBillLadingList.vue

@ -10,15 +10,8 @@
</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="datetimerange"
unlink-panels
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
:shortcuts="shortcuts"
/>
<el-date-picker v-model="stockupDate" type="datetimerange" unlink-panels range-separator=""
start-placeholder="开始时间" end-placeholder="结束时间" :shortcuts="shortcuts" />
</el-form-item>
</div>
<!-- 查询按钮 -->
@ -36,8 +29,7 @@
</el-col>
<el-col :span="10">
<span style="margin-bottom: 2%; font-size: 16px">
已提货{{ stopNum }}/{{ numBill }}</span
>
已提货{{ stopNum }}/{{ numBill }}</span>
</el-col>
</el-row>
<el-row>
@ -46,15 +38,16 @@
<div class="avue-crud__left">
<!-- <el-button type="primary" icon="el-icon-plus" @click="handleAdd"> </el-button>
<el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>-->
<el-button type="primary" icon="el-icon-plus" @click="handleBillAdd"
>创建自提</el-button
>
<el-button type="primary" icon="el-icon-plus" @click="handleSign(null, 2)"
>自提签收</el-button
>
<el-button type="danger" icon="el-icon-delete" @click="handleExportInfo" plain
>导出
<el-button type="primary" icon="el-icon-plus" v-if="permission.distrilbutionBillLadingList_add"
@click="handleBillAdd">创建自提</el-button>
<el-button type="primary" icon="el-icon-plus" v-if="permission.distrilbutionBillLadingList_sign"
@click="handleSign(null, 2)">自提签收</el-button>
<el-button type="danger" icon="el-icon-delete" v-if="permission.distrilbutionBillLadingList_export"
@click="handleExportInfo" plain>导出
</el-button>
<el-button type="primary" @click="printBatchOrder">批量打印</el-button>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
@ -66,66 +59,35 @@
</el-row>
<el-row>
<!-- 列表模块 -->
<tablecmt
:columnList="columnList"
:tableData="data"
:loading="loading"
@inputTxt="inputsc"
@timeCheck="timesc"
@btnCheck="btnsc"
@selectCheck="selectsc"
@selection="selectionChange"
>
<tablecmt :columnList="columnList" :tableData="data" :loading="loading" @inputTxt="inputsc" @timeCheck="timesc"
@btnCheck="btnsc" @selectCheck="selectsc" @selection="selectionChange">
<template #default="slotProps">
<!-- <el-button size="small" @click="editsolt(slotProps.scope)">修改</el-button>-->
<el-text size="small" text @click="handleLike(slotProps.scope)">查看</el-text>
<el-text
size="small"
type="danger"
icon="el-icon-edit"
text
@click="handleSign(slotProps.scope, 1)"
v-if="slotProps.scope.row.conditions < 30"
>签收</el-text
>
<el-text
type="primary"
text
icon="el-icon-edit"
@click="handleEdits(slotProps.scope)"
v-if="slotProps.scope.row.conditions < 20"
>编辑提货信息</el-text
>
<el-text size="small" text v-if="permission.distrilbutionBillLadingList_view"
@click="handleLike(slotProps.scope)">查看</el-text>
<el-text size="small" type="danger" icon="el-icon-edit" text @click="handleSign(slotProps.scope, 1)"
v-if="permission.distrilbutionBillLadingList_qs && slotProps.scope.row.conditions < 30">签收</el-text>
<el-text type="primary" text icon="el-icon-edit" @click="handleEdits(slotProps.scope)"
v-if="permission.distrilbutionBillLadingList_edit && slotProps.scope.row.conditions < 20">编辑提货信息</el-text>
<!-- <el-button size="small" type="danger" icon="el-icon-edit" text @click="handleDeleteOwn(slotProps.scope)">删除</el-button>-->
<el-text size="small" text
@click="handlePreview(slotProps.scope.row)">打印</el-text>
</template>
</tablecmt>
</el-row>
<el-row class='el-fy'>
<el-row class='el-fy'>
<div class="avue-crud__pagination flex-c-sb" style="width: 100%">
<div style="font-size: 14px">勾选数量: {{ selectionList.length }}</div>
<!-- 分页模块 -->
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
>
<el-pagination align="right" background @size-change="sizeChange" @current-change="currentChange"
:current-page="page.currentPage" :page-sizes="[30, 50, 80, 120]" :page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="page.total">
</el-pagination>
</div>
</el-row>
<!-- 表单模块 -->
<el-dialog
:title="title"
v-model="box"
width="50%"
:before-close="beforeClose"
append-to-body
>
<el-dialog :title="title" v-model="box" width="50%" :before-close="beforeClose" append-to-body>
<el-form :disabled="view" ref="form" :model="form" label-width="80px">
<!-- 表单字段 -->
<el-form-item label="提货时间" prop="pickUpTime">
@ -142,12 +104,8 @@
</el-form-item>
<el-form-item label="证件类型" prop="certificateType">
<el-select v-model="form.certificateType" clearable placeholder="请选择证件类型">
<el-option
v-for="item in certificateTypeData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
<el-option v-for="item in certificateTypeData" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey">
</el-option>
</el-select>
</el-form-item>
@ -158,13 +116,36 @@
<!-- 表单按钮 -->
<template #footer>
<span v-if="!view" class="dialog-footer">
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit"
> </el-button
>
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit"> </el-button>
<el-button icon="el-icon-circle-close" @click="box = false"> </el-button>
</span>
</template>
</el-dialog>
<!-- 打印模块 -->
<el-dialog title="二维码" :visible.sync="isShow" width="780px" v-model="isShow">
<div>
<div v-html="html"></div>
<!-- <div v-for="(item,index) in qrCodeObj">
<el-row>
<el-col :span="24" >
<el-image width="10" height="10" w-full :key="index" :src="item " alt="Preview Image"/>
</el-col>
</el-row>
</div> -->
</div>
<span slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="ddd"> </el-button>-->
<el-button type="primary" @click="printTemplate"> </el-button>
<el-button type="primary" @click="isShow = false"> </el-button>
<el-button @click="isShow = false"> </el-button>
</span>
</el-dialog>
</div>
<!-- <div class="avue-crud" :style="`height:`+ height ">
<el-form :disabled="view" ref="form" :model="form" label-width="80px">
@ -318,12 +299,8 @@
</div>
</div>-->
</basic-container>
<edittablehead
@setcolum="setnewcolum"
@closce="showdrawer"
:drawerShow="drawerShow"
:columnList="columnList"
></edittablehead>
<edittablehead @setcolum="setnewcolum" @closce="showdrawer" :drawerShow="drawerShow" :columnList="columnList">
</edittablehead>
</template>
<script>
@ -338,6 +315,9 @@ import {
getListOwnNUm,
getBillLadingExport,
} from '@/api/distribution/distrilbutionBillLading';
import {
printBatch,
} from '@/api/distribution/distributionDeliveryList';
import option from '@/option/distribution/distrilbutionBillLading';
import { mapGetters } from 'vuex';
import { getDictionaryBiz } from '@/api/system/dict';
@ -363,7 +343,7 @@ export default {
label: '提货批次',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: true,
sortable: true,
@ -384,7 +364,7 @@ export default {
label: '运单号',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -394,7 +374,7 @@ export default {
label: '收货单位',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -414,7 +394,7 @@ export default {
label: '联系电话',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -435,7 +415,7 @@ export default {
label: '入库时间',
type: 4,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -445,7 +425,7 @@ export default {
label: '到付运费',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -482,10 +462,10 @@ export default {
},
{
prop: 'otherFee',
label: '其他增值费用',
label: '增值费用',
type: 1,
values: '',
width: '150',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -505,7 +485,7 @@ export default {
label: '应提件数',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -515,7 +495,7 @@ export default {
label: '实提件数',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -525,7 +505,7 @@ export default {
label: '品牌',
type: 2,
values: '',
width: '130',
width: '120',
checkarr: [],
fixed: false,
sortable: true,
@ -535,7 +515,7 @@ export default {
label: '货品信息',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
@ -545,7 +525,7 @@ export default {
label: '提货手机',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: false,
@ -565,7 +545,7 @@ export default {
label: '提货车牌',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: false,
@ -575,7 +555,7 @@ export default {
label: '提货证件',
type: 2,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: false,
@ -585,7 +565,7 @@ export default {
label: '证件类型',
type: 3,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: false,
@ -595,7 +575,7 @@ export default {
label: '状态',
type: 1,
values: '',
width: '130',
width: '100',
checkarr: [],
fixed: false,
sortable: false,
@ -605,7 +585,7 @@ export default {
label: '费用合计',
type: 1,
values: '',
width: '130',
width: '140',
checkarr: [],
fixed: false,
sortable: false,
@ -627,6 +607,10 @@ export default {
height: 0,
//
title: '',
//
html: '',
//
isShow: false,
//
box: false,
//
@ -774,6 +758,8 @@ export default {
} else if (type == 3) {
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname + 'sortlist', headarr);
} else if (type == 4) {
this.columnList = newarr;
}
},
selectionsc(value) {
@ -820,9 +806,7 @@ export default {
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
textbox(e, index) {
console.log('e,index', e, index);
this.costList[index + 1] = e;
@ -882,9 +866,7 @@ export default {
return;
}
for (let a = 0; a < clientType.length; a++) {
// console.log("",clientType[a].dictKey , costListName[i]);
if (clientType[a].dictKey == costListName[i]) {
// console.log("",clientType[a].dictKey , costListName[i]);
let zhi = costList[costListName[i]];
if (!zhi) {
this.pan = true;
@ -979,7 +961,6 @@ export default {
ids = this.ids;
break;
}
console.log('签收!!', ids);
await getBillLadingDetail(ids);
},
//
@ -995,6 +976,50 @@ export default {
},
});
},
//
async handlePreview(row){
console.log('row :>> ', row);
const res = await printBatch({ ids: row.id, type: 3 });
console.log('res :>> ', res);
const {
data: { code, data },
} = res;
if (code === 200) {
//
this.html = '';
data.forEach(item => {
this.html += item.templateHtml;
});
this.isShow = true;
}
},
/**
* 批量打印
*/
async printBatchOrder() {
if (this.selectionList.length === 0) {
this.$message.warning('请选择至少一条数据');
return;
}
this.isShow = true;
const res = await printBatch({ ids: Array.from(this.selectionList).join(','), type: 3 });
console.log('res :>> ', res);
const {
data: { code, data },
} = res;
if (code === 200) {
//
this.html = '';
data.forEach(item => {
this.html += item.templateHtml;
});
}
},
handleEdits(row) {
this.$router.push({
path: '/distribution/inventory/distrilbutionBillLading',
@ -1161,10 +1186,12 @@ export default {
z-index: 999;
height: 60px;
}
.foot .dialog-footer {
margin-bottom: 130px;
text-align: center;
}
.ca .el-radio__inner {
top: -18px;
left: -19px;
@ -1187,23 +1214,28 @@ export default {
.el-input {
margin-left: 8px;
}
:deep(.el-form-item__content) {
margin-left: 8px;
}
.el-fr-d {
width: 100%;
display: flex;
justify-content: space-between;
}
.el-btn {
margin-right: 0;
}
//
.el-times {
:deep(.el-tooltip__trigger) {
height: 30px !important;
}
}
:deep(.el-form-item__label) {
padding: 0;
}
@ -1215,17 +1247,20 @@ export default {
height: 100%;
flex-direction: column;
}
:deep(.el-card__body) {
height: 100%;
}
:deep(.el-card) {
height: 100%;
display: flex;
flex-direction: column;
}
.el-fy {
flex: 1;
display: flex;
align-items: flex-end;
align-items: flex-end;
}
</style>

406
src/views/factory/snm/staorderPackages.vue

@ -1,33 +1,18 @@
<template>
<basic-container>
<avue-crud :option="option"
v-model:search="search"
v-model:page="page"
v-model="form"
:table-loading="loading"
:data="data"
:permission="permissionList"
:before-open="beforeOpen"
ref="crud"
@row-update="rowUpdate"
@row-save="rowSave"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad">
<avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
:data="data" :permission="permissionList" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate"
@row-save="rowSave" @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
<template #menu-left>
<!-- <el-button type="danger"-->
<!-- icon="el-icon-delete"-->
<!-- plain-->
<!-- v-if="permission.staorderPackages_delete"-->
<!-- @click="handleDelete"> -->
<!-- </el-button>-->
<el-button type="primary"
@click="handleVie">
<!-- <el-button type="danger"-->
<!-- icon="el-icon-delete"-->
<!-- plain-->
<!-- v-if="permission.staorderPackages_delete"-->
<!-- @click="handleDelete"> -->
<!-- </el-button>-->
<el-button type="primary" @click="handleVie">
</el-button>
</template>
</avue-crud>
@ -35,216 +20,215 @@
</template>
<script>
import {getList, getDetail, add, update, remove} from "@/api/factory/snm/staorderPackages";
import option from "@/option/factory/snm/staorderPackages";
import {mapGetters} from "vuex";
import {exportBlob} from "@/api/common";
import {getToken} from '@/utils/auth';
import {downloadXls} from "@/utils/util";
import {dateNow} from "@/utils/date";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { getList, getDetail, add, update, remove } from "@/api/factory/snm/staorderPackages";
import option from "@/option/factory/snm/staorderPackages";
import { mapGetters } from "vuex";
import { exportBlob } from "@/api/common";
import { getToken } from '@/utils/auth';
import { downloadXls } from "@/utils/util";
import { dateNow } from "@/utils/date";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
export default {
data() {
export default {
data() {
return {
form: {},
query: {},
search: {},
loading: true,
page: {
pageSize: 30,
currentPage: 1,
total: 0
},
selectionList: [],
option: option,
data: []
};
},
computed: {
...mapGetters(["permission"]),
permissionList() {
return {
form: {},
query: {},
search: {},
loading: true,
page: {
pageSize: 30,
currentPage: 1,
total: 0
},
selectionList: [],
option: option,
data: []
addBtn: this.validData(this.permission.staorderPackages_add, false),
viewBtn: this.validData(this.permission.staorderPackages_view, false),
delBtn: this.validData(this.permission.staorderPackages_delete, false),
editBtn: this.validData(this.permission.staorderPackages_edit, false)
};
},
computed: {
...mapGetters(["permission"]),
permissionList() {
return {
addBtn: this.validData(this.permission.staorderPackages_add, false),
viewBtn: this.validData(this.permission.staorderPackages_view, false),
delBtn: this.validData(this.permission.staorderPackages_delete, false),
editBtn: this.validData(this.permission.staorderPackages_edit, false)
};
},
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
}
},
watch: {
// eslint-disable-next-line no-unused-vars
'$route'(to, from) {
// this.isadd =false;
// this.query.masterId = null;
// this.masterId = null;
if (!!this.$route.query.data) {
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
}
},
watch: {
// eslint-disable-next-line no-unused-vars
'$route'(to, from) {
// this.isadd =false;
// this.query.masterId = null;
// this.masterId = null;
if (!!this.$route.query.data) {
// //
// // this.isadd =true;
// this.query.masterId = this.$route.query.data;
// this.masterId = this.$route.query.data;
//
this.onLoad(this.page);
} else {
}
//
this.onLoad(this.page);
} else {
}
}
},
methods: {
rowSave(row, done, loading) {
add(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
window.console.log(error);
});
},
methods: {
rowSave(row, done, loading) {
add(row).then(() => {
//
handleVie() {
// this.$store.dispatch(this.$route.path, this.$route);
this.$router.push({
path: '/factory/snm/stationOrder'
});
},
rowUpdate(row, index, done, loading) {
update(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
console.log(error);
});
},
rowDel(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
window.console.log(error);
});
},
//
handleVie() {
// this.$store.dispatch(this.$route.path, this.$route);
this.$router.push({
path: '/factory/snm/stationOrder'
});
},
rowUpdate(row, index, done, loading) {
update(row).then(() => {
},
handleDelete() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
return;
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(this.ids);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
console.log(error);
this.$refs.crud.toggleSelection();
});
},
rowDel(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
},
handleDelete() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
return;
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
},
handleExport() {
let downloadUrl = `/logpm-factory/staorderPackages/export-staorderPackages?${this.website.tokenHeader}=${getToken()}`;
const {
} = this.query;
let values = {
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `运单包件信息${dateNow()}.xlsx`);
NProgress.done();
})
.then(() => {
return remove(this.ids);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
this.$refs.crud.toggleSelection();
});
},
handleExport() {
let downloadUrl = `/logpm-factory/staorderPackages/export-staorderPackages?${this.website.tokenHeader}=${getToken()}`;
const {
} = this.query;
let values = {
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `运单包件信息${dateNow()}.xlsx`);
NProgress.done();
})
});
},
beforeOpen(done, type) {
if (["edit", "view"].includes(type)) {
getDetail(this.form.id).then(res => {
this.form = res.data.data;
});
},
beforeOpen(done, type) {
if (["edit", "view"].includes(type)) {
getDetail(this.form.id).then(res => {
this.form = res.data.data;
});
}
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
currentChange(currentPage){
this.page.currentPage = currentPage;
},
sizeChange(pageSize){
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
const {
orderId,
} = this.query;
}
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
const {
orderId,
} = this.query;
if (!!this.$route.query.data) {
this.query.orderId = this.$route.query.data;
}
let values = {
orderId : this.$route.query.data,
};
getList(page.currentPage, page.pageSize, values).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
});
if (!!this.$route.query.data) {
this.query.orderId = this.$route.query.data;
}
let values = {
orderId: this.$route.query.data,
};
getList(page.currentPage, page.pageSize, values).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
});
}
};
}
};
</script>
<style>
</style>
<style></style>

423
src/views/factory/snm/stationlinenum.vue

@ -1,266 +1,249 @@
<template>
<basic-container>
<avue-crud :option="option"
v-model:search="search"
v-model:page="page"
v-model="form"
:table-loading="loading"
:data="data"
:permission="permissionList"
:before-open="beforeOpen"
ref="crud"
@row-update="rowUpdate"
@row-save="rowSave"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad">
<template #id-header="{column}">
<span>{{ column.label }}</span>
<el-input size="autosize" v-model="query.id" placeholder="请输入内容" suffix-icon="el-icon-search" />
<!-- <el-tag>{{(column || {}).label}}-{{(column || {}).prop}}</el-tag> -->
</template>
<avue-crud :option="option" v-model:search="search" v-model:page="page" v-model="form" :table-loading="loading"
:data="data" :permission="permissionList" :before-open="beforeOpen" ref="crud" @row-update="rowUpdate"
@row-save="rowSave" @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad">
<template #id-header="{ column }">
<span>{{ column.label }}</span>
<el-input size="autosize" v-model="query.id" placeholder="请输入内容" suffix-icon="el-icon-search" />
<!-- <el-tag>{{(column || {}).label}}-{{(column || {}).prop}}</el-tag> -->
</template>
<template #logisticsLineNumber-header="{column}">
<span>{{ column.label }}</span>
<el-input size="autosize" v-model="query.logisticsLineNumber" placeholder="请输入内容" suffix-icon="el-icon-search" />
<!-- <el-tag>{{(column || {}).label}}-{{(column || {}).prop}}</el-tag> -->
</template>
<template #logisticsLineNumber-header="{ column }">
<span>{{ column.label }}</span>
<el-input size="autosize" v-model="query.logisticsLineNumber" placeholder="请输入内容" suffix-icon="el-icon-search" />
<!-- <el-tag>{{(column || {}).label}}-{{(column || {}).prop}}</el-tag> -->
</template>
<template #logisticsLineName-header="{column}">
<span>{{ column.label }}</span>
<el-input size="autosize" v-model="query.logisticsLineName" placeholder="请输入内容" suffix-icon="el-icon-search" />
<!-- <el-tag>{{(column || {}).label}}-{{(column || {}).prop}}</el-tag> -->
</template>
<template #logisticsLineName-header="{ column }">
<span>{{ column.label }}</span>
<el-input size="autosize" v-model="query.logisticsLineName" placeholder="请输入内容" suffix-icon="el-icon-search" />
<!-- <el-tag>{{(column || {}).label}}-{{(column || {}).prop}}</el-tag> -->
</template>
<template #menu-left>
<el-button type="danger"
icon="el-icon-delete"
plain
v-if="permission.stationlinenum_delete"
@click="handleDelete">
<el-button type="danger" icon="el-icon-delete" plain v-if="permission.stationlinenum_delete"
@click="handleDelete">
</el-button>
<el-button type="warning"
plain
icon="el-icon-download"
@click="handleExport">
<el-button type="warning" plain icon="el-icon-download" @click="handleExport">
</el-button>
</template>
</avue-crud>
</basic-container>
</template>
<script>
import {getList, getDetail, add, update, remove} from "@/api/factory/snm/stationlinenum";
import option from "@/option/factory/snm/stationlinenum";
import {mapGetters} from "vuex";
import {exportBlob} from "@/api/common";
import {getToken} from '@/utils/auth';
import {downloadXls} from "@/utils/util";
import {dateNow} from "@/utils/date";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { getList, getDetail, add, update, remove } from "@/api/factory/snm/stationlinenum";
import option from "@/option/factory/snm/stationlinenum";
import { mapGetters } from "vuex";
import { exportBlob } from "@/api/common";
import { getToken } from '@/utils/auth';
import { downloadXls } from "@/utils/util";
import { dateNow } from "@/utils/date";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
export default {
data() {
return {
form: {},
query: {},
search: {},
loading: true,
page: {
pageSize: 30,
currentPage: 1,
total: 0
},
selectionList: [],
option: option,
data: []
};
},
computed: {
...mapGetters(["permission"]),
permissionList() {
export default {
data() {
return {
form: {},
query: {},
search: {},
loading: true,
page: {
pageSize: 30,
currentPage: 1,
total: 0
},
selectionList: [],
option: option,
data: []
addBtn: this.validData(this.permission.stationlinenum_add, false),
viewBtn: this.validData(this.permission.stationlinenum_view, false),
delBtn: this.validData(this.permission.stationlinenum_delete, false),
editBtn: this.validData(this.permission.stationlinenum_edit, false)
};
},
computed: {
...mapGetters(["permission"]),
permissionList() {
return {
addBtn: this.validData(this.permission.stationlinenum_add, false),
viewBtn: this.validData(this.permission.stationlinenum_view, false),
delBtn: this.validData(this.permission.stationlinenum_delete, false),
editBtn: this.validData(this.permission.stationlinenum_edit, false)
};
},
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
}
},
methods: {
rowSave(row, done, loading) {
add(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
return ids.join(",");
}
done();
}, error => {
loading();
window.console.log(error);
});
},
rowUpdate(row, index, done, loading) {
update(row).then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
console.log(error);
});
},
methods: {
rowSave(row, done, loading) {
add(row).then(() => {
rowDel(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
window.console.log(error);
});
},
rowUpdate(row, index, done, loading) {
update(row).then(() => {
},
handleDelete() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
return;
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(this.ids);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
done();
}, error => {
loading();
console.log(error);
this.$refs.crud.toggleSelection();
});
},
rowDel(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return remove(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
},
handleDelete() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
return;
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
},
handleExport() {
let downloadUrl = `/logpm-factory/snm/stationlinenum/export-stationlinenum?${this.website.tokenHeader}=${getToken()}`;
const {
logisticsLineNumber,
logisticsLineName,
} = this.query;
let values = {
logisticsLineNumber_equal: logisticsLineNumber,
logisticsLineName_like: logisticsLineName,
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `诗尼曼线路${dateNow()}.xlsx`);
NProgress.done();
})
.then(() => {
return remove(this.ids);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
this.$refs.crud.toggleSelection();
});
},
handleExport() {
let downloadUrl = `/logpm-factory/snm/stationlinenum/export-stationlinenum?${this.website.tokenHeader}=${getToken()}`;
const {
logisticsLineNumber,
logisticsLineName,
} = this.query;
let values = {
logisticsLineNumber_equal: logisticsLineNumber,
logisticsLineName_like: logisticsLineName,
};
this.$confirm("是否导出数据?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
NProgress.start();
exportBlob(downloadUrl, values).then(res => {
downloadXls(res.data, `诗尼曼线路${dateNow()}.xlsx`);
NProgress.done();
})
});
},
beforeOpen(done, type) {
if (["edit", "view"].includes(type)) {
getDetail(this.form.id).then(res => {
this.form = res.data.data;
});
},
beforeOpen(done, type) {
if (["edit", "view"].includes(type)) {
getDetail(this.form.id).then(res => {
this.form = res.data.data;
});
}
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
currentChange(currentPage){
this.page.currentPage = currentPage;
},
sizeChange(pageSize){
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
}
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
const {
logisticsLineNumber,
logisticsLineName,
} = this.query;
const {
logisticsLineNumber,
logisticsLineName,
} = this.query;
let values = {
logisticsLineNumber_equal: logisticsLineNumber,
logisticsLineName_like: logisticsLineName,
};
let values = {
logisticsLineNumber_equal: logisticsLineNumber,
logisticsLineName_like: logisticsLineName,
};
getList(page.currentPage, page.pageSize, values).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
});
}
getList(page.currentPage, page.pageSize, values).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
});
}
};
}
};
</script>
<style scoped lang='scss'>
:deep(.no-print){
margin-left:auto;
.el-button{
margin-right:0
:deep(.no-print) {
margin-left: auto;
.el-button {
margin-right: 0
}
}
:deep(.avue-form__row){
max-width:300px!important;
:deep(.avue-form__row) {
max-width: 300px !important;
}
:deep(.el-form-item__label){
width:auto !important;
:deep(.el-form-item__label) {
width: auto !important;
}
</style>

22
src/views/warehouse/parcelList/distributionParcelList.vue

@ -136,6 +136,8 @@ import {
remove,
$_distributionParcelList,
} from '@/api/distribution/distributionParcelList';
import { getDictionaryBiz } from '@/api/system/dict';
import option from '@/option/distribution/distributionParcelList';
import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
@ -264,7 +266,7 @@ export default {
{
prop: 'orderPackageStatusName',
label: '包件状态',
type: 2,
type: 3,
values: '',
width: '130',
checkarr: [],
@ -482,8 +484,6 @@ export default {
btnsc() {},
//
selectsc(value, row) {
console.log('value :>> ', value);
console.log('row :>> ', row);
this.query[row.prop] = value;
//
if (row.prop === 'conditionsType') {
@ -495,6 +495,13 @@ export default {
this.query.orderPackageGroundingStatus = value;
if (value === '') delete this.query.orderPackageGroundingStatus;
}
if (row.prop === 'orderPackageStatusName') {
this.query.orderPackageStatus = value;
if (value === '') delete this.query.orderPackageStatus;
}
if (value === '') {
delete this.query[row.prop];
}
@ -509,7 +516,6 @@ export default {
* 固定搭配只需要更换 columnList
*/
setnewcolum(newarr, headarr, type) {
// console.log(newarr,'+++++++++++')
if (type == 1) {
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname + 'checkList', headarr);
@ -524,7 +530,7 @@ export default {
init() {
this.height = this.setPx(document.body.clientHeight - 340);
getDictionaryBiz('order_package_code').then(res => {
getDictionaryBiz('order_package_status').then(res => {
this.distributionType = res.data.data;
this.$functions.checkcColumnList('orderPackageStatusName', this.columnList).checkarr =
res.data.data.map(item => {
@ -532,12 +538,6 @@ export default {
item.label = item.dictValue;
return item;
});
// this.columnList[26].checkarr =res.data.data.map(item=>{
// item.value=item.dictKey
// item.label=item.dictValue
// return item
// });
});
},
searchHide() {

4
vite.config.js

@ -18,9 +18,9 @@ export default ({ mode, command }) => {
// lmy
// target: 'http://192.168.10.123:8889',
// target: 'http://192.168.10.101:8888',
target: 'http://192.168.10.75:8777',
target: 'http://192.168.10.200:13000',
// tjj
// target: 'http://192.168.10.29:13000',
// target: 'http://192.168.10.25:13000',
// sst
// target: 'http://192.168.10.94:8888',
// target: 'http://test.api.huitongys.com',

637
yarn.lock

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