qb 5 months ago
parent
commit
b458189f20
  1. 227
      src/components/MultiConditionSearch/MultiConditionSearch.vue
  2. 2
      src/components/Tableexportcomponent/Tableexportcomponent.vue
  3. 1
      src/components/edittablehead/index.vue
  4. 22
      src/option/aftersales/vueTvemp.js
  5. 44
      src/views/aftersales/aftersalesWorkOrder.vue
  6. 70
      src/views/distribution/inventory/delivery/distributionStockArticle.vue
  7. 54
      src/views/waybill/WaybillOrderList.vue
  8. 43
      src/views/waybill/orderPackageList.vue

227
src/components/MultiConditionSearch/MultiConditionSearch.vue

@ -0,0 +1,227 @@
<template>
<!-- 搜索弹窗 -->
<div class="Searchboxpop-upwindow">
<el-dialog
v-model="dialogVisible"
:title="title"
:show-close="false"
:fullscreen="fullscreen"
:close-on-click-modal="false"
:draggable="true"
:overflow="false"
width="50%"
>
<template #header>
<div class="title">
<span>{{ title }}</span>
</div>
<div class="div_icon">
<el-icon @click="minimize"><Minus /></el-icon>
<el-icon @click="maximize"><FullScreen /></el-icon>
<el-icon @click="close"><CloseBold /></el-icon>
</div>
</template>
<el-input
v-model="localInputValue"
style="width: 100%; height: 100%"
:autosize="{ minRows: 24, maxRows: 24 }"
type="textarea"
placeholder="每一行算一个搜索单位“多个请【换行】输入"
/>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="dialogSearchSubmit"> 确认 </el-button>
</div>
</template>
</el-dialog>
</div>
<!-- 最小化窗口 -->
<div class="minimize_windows" v-if="minimizeState">
<div class="title">
<span>{{ title }}</span>
</div>
<div class="div_icon">
<el-icon @click="expandWindow"><FullScreen /></el-icon>
<el-icon @click="destroyWindow"><Close /></el-icon>
</div>
</div>
</template>
<script setup>
import { ref, watch, defineProps, defineEmits } from 'vue';
import { Minus, FullScreen, CloseBold, Close } from '@element-plus/icons-vue';
const props = defineProps({
modelValue: {
type: Boolean,
required: true,
},
title: {
type: String,
required: true,
},
inputValue: {
type: String,
required: false,
default: '',
},
});
const emit = defineEmits(['update:modelValue', 'dialogSearchSubmit', 'update:inputValue']);
const dialogVisible = ref(props.modelValue);
const fullscreen = ref(false);
const minimizeState = ref(false);
const localInputValue = ref(props.inputValue);
watch(
() => props.modelValue,
newVal => {
dialogVisible.value = newVal;
}
);
watch(
() => props.inputValue,
newVal => {
localInputValue.value = newVal;
}
);
const minimize = () => {
minimizeState.value = true;
dialogVisible.value = false;
emit('update:modelValue', false);
};
const maximize = () => {
fullscreen.value = !fullscreen.value;
};
const close = () => {
emit('update:modelValue', false);
};
const expandWindow = () => {
minimizeState.value = false;
dialogVisible.value = true;
emit('update:modelValue', true);
};
const destroyWindow = () => {
minimizeState.value = false;
emit('update:modelValue', false);
};
const dialogSearchSubmit = () => {
const lines = localInputValue.value
.split('\n') //
.map(line => line.trim()) //
.filter(line => line !== ''); //
const joinedLines = lines.join(','); // 使
localInputValue.value = joinedLines;
emit('dialogSearchSubmit', localInputValue.value);
};
</script>
<style scoped lang="scss">
.Searchboxpop-upwindow {
:deep(.el-overlay) {
position: absolute;
.el-dialog {
min-height: 70%;
}
.el-overlay-dialog {
position: absolute;
}
.el-dialog__header {
display: flex !important;
justify-content: space-between;
.title {
position: relative;
padding: 0 10px;
}
.title::after {
content: '*';
color: #172e60;
position: absolute;
font-size: 20px;
top: 0;
left: 0;
}
.div_icon {
width: 100px;
display: flex;
justify-content: space-between;
font-size: 19px;
cursor: pointer;
}
}
.el-dialog__footer {
display: flex;
justify-content: center;
padding: 6px;
.el-button {
width: 160px;
height: 35px;
}
}
}
}
.minimize_windows {
width: 200px;
height: 35px;
border: 1px solid #cccccc82;
position: absolute;
bottom: 5px;
left: 5px;
box-shadow: 2px -1px 0.15625vw #c1c1c187;
display: flex;
align-items: center;
justify-content: space-around;
background-color: #fff;
.title {
height: 100%;
display: flex;
align-items: center;
span {
font-size: 18px;
}
}
span {
font-size: 14px;
}
.div_icon {
display: flex;
align-items: center;
width: 54px;
justify-content: space-between;
font-size: 20px;
}
}
:deep(.el_exportSelection) {
width: 30%;
height: 150px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
.el-dialog__body {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: space-evenly;
border-radius: 12px;
.el-button {
width: 30%;
height: 44%;
}
}
}
</style>

2
src/components/Tableexportcomponent/Tableexportcomponent.vue

@ -11,7 +11,7 @@
<el-tabs v-model="radio" class="el_TablePage_radio">
<el-tab-pane label="当前页全部导出" name="1"></el-tab-pane>
<el-tab-pane label="当前页勾选导出" name="2"></el-tab-pane>
<el-tab-pane label="全部数据导出" name="3"></el-tab-pane>
<!-- <el-tab-pane label="全部数据导出" name="3"></el-tab-pane> -->
</el-tabs>
<el-transfer

1
src/components/edittablehead/index.vue

@ -50,7 +50,6 @@ import { getTableSeting, postSaveTableSeting } from '@/api/basic/table';
const functions = inject('functions') as any;
import Sortable from 'sortablejs';
import { getObjType, handleClearTableQuery } from '@/utils/util';
import { it } from 'element-plus/es/locale';
interface TableColumnType {
/** 表格列的key */
prop: string;

22
src/option/aftersales/vueTvemp.js

@ -41,17 +41,17 @@ export const columnList = [
sortable: true,
head: false,
},
// {
// prop: 'a',
// label: '工单创建仓',
// type: 1,
// values: '',
// width: '140',
// checkarr: [],
// fixed: false,
// sortable: true,
// head: false,
// },
{
prop: 'warehouseName',
label: '工单创建仓',
type: 1,
values: '',
width: '140',
checkarr: [],
fixed: false,
sortable: true,
head: false,
},
{
prop: 'workOrderNumber',
label: '异常工单号',

44
src/views/aftersales/aftersalesWorkOrder.vue

@ -388,7 +388,7 @@
<el-input
v-model="TopQuery.inputAll"
style="width: 100%; height: 100%"
:autosize="{ minRows: 24 }"
:autosize="{ minRows: 24, maxRows: 24 }"
type="textarea"
placeholder="每一行算一个搜索单位“多个请【换行】输入"
/>
@ -1007,7 +1007,7 @@ const details = reactive({
/** 时间选择器数据 */
stockupDate: [],
/** 列表 */
columnListPublic:columnList, //
columnListPublic: columnList, //
/** 列表数据 */
data: [],
/** 页面loading */
@ -1023,7 +1023,7 @@ const details = reactive({
/** 分页参数 */
page: {
currentPage: 1,
pageSize: 2,
pageSize: 30,
total: 0,
},
@ -2494,25 +2494,25 @@ const exportReport = () => {
if (details.selectionList.length) {
dataID.ids = details.selectionList.map(item => item.id).join(',');
}
JExportAll(dataID);
// switch (TabPermissions.value) {
// case 0:
// ExportAll(dataID); //
// break;
// case 1:
// ExportingDuringProcessing(dataID);
// break;
// case 2:
// ProcessedExported(dataID);
// break;
// case 4:
// //
// ExportClaimAmount(dataID);
// break;
// default:
// ExportAll(dataID);
// break;
// }
// JExportAll(dataID);
switch (TabPermissions.value) {
case 0:
ExportAll(dataID); //
break;
case 1:
ExportingDuringProcessing(dataID);
break;
case 2:
ProcessedExported(dataID);
break;
case 4:
//
ExportClaimAmount(dataID);
break;
default:
ExportAll(dataID);
break;
}
})
.catch(() => {});
};

70
src/views/distribution/inventory/delivery/distributionStockArticle.vue

@ -6,15 +6,26 @@
<!-- 查询模块 -->
<el-form :inline="true" :model="query" class="header_search">
<el-form-item label="订单自编号:">
<el-input
v-model="query.orderCodeNum"
placeholder="请输入订单自编号"
clearable
></el-input>
<div class="el_div_input">
<el-input
v-model="query.orderCodeNum"
placeholder="请输入订单自编号"
clearable
></el-input>
<el-icon class="el_dy_icon" @click="openDialog('订单自编号搜索', query.orderCodeNum)"
><CirclePlusFilled
/></el-icon>
</div>
</el-form-item>
<el-form-item label="运单:">
<el-input v-model="query.waybillNum" placeholder="请输入运单编号" clearable />
<el-form-item label="运单号:">
<div class="el_div_input">
<el-input v-model="query.waybillNum" placeholder="请输入运单编号" clearable />
<el-icon class="el_dy_icon" @click="openDialog('运单号搜索', query.waybillNum)"
><CirclePlusFilled
/></el-icon>
</div>
</el-form-item>
<el-form-item label="入库时间:" class="el-times">
@ -675,6 +686,13 @@
</div>
</template>
</el-dialog>
<multi-condition-search
v-model:modelValue="dialogVisible"
:title="popupTitle"
v-model:inputValue="searchInput"
@dialogSearchSubmit="handleSearchSubmit"
/>
</basic-container>
<edittablehead
@closce="showdrawer"
@ -714,11 +732,18 @@ import { downloadXls, getObjType, handleClearTableQuery, isNumber } from '@/util
import { columnList } from '@/option/distribution/distributionStockArticleSelf';
import { deepClone, setNodeHeight, hanleTextLineFeed } from '@/utils/util.js';
import { ElMessage, ElMessageBox } from 'element-plus';
import MultiConditionSearch from '@/components/MultiConditionSearch/MultiConditionSearch.vue';
const _newCol = deepClone(columnList);
export default {
components: {
MultiConditionSearch
},
data() {
return {
dialogVisible: false,
popupTitle: '',
searchInput: '',
excelForm: {},
excelBox: false,
tcloading: false,
@ -1479,6 +1504,29 @@ export default {
callback();
}
},
openDialog(title, input) {
this.popupTitle = title;
console.log(input, 'input');
if (input) {
const formattedInput = input.split(',').join('\n');
this.searchInput = formattedInput; // inputAll
} else {
this.searchInput = '';
}
console.log(this.searchInput,'输入框值');
this.dialogVisible = true;
},
handleSearchSubmit(value) {
if (this.popupTitle == '订单自编号搜索') {
this.query.orderCodeNum = value; //
}else if(this.popupTitle == '运单号搜索'){
this.query.waybillNum = value; //
}
this.dialogVisible = false;
},
//
Splittheorder(row) {
console.log(row);
@ -2394,4 +2442,12 @@ export default {
.el_textBtn {
font-weight: bold;
}
.el_div_input {
width: 100%;
display: flex;
align-items: center;
.el_dy_icon {
font-size: 1.5em;
}
}
</style>

54
src/views/waybill/WaybillOrderList.vue

@ -13,11 +13,16 @@
</el-form-item> -->
<el-form-item label="运单号:" class="el-times">
<el-input
v-model="query.waybillNoList"
clearable
placeholder="支持多运单查询,逗号拼接"
></el-input>
<div class="el_div_input">
<el-input
v-model="query.waybillNoList"
clearable
placeholder="支持多运单查询,逗号拼接"
></el-input>
<el-icon class="el_dy_icon" @click="openDialog('运单号搜索', query.waybillNoList)"
><CirclePlusFilled
/></el-icon>
</div>
</el-form-item>
<el-form-item label="目的仓:">
@ -279,7 +284,13 @@
:html="details.html"
width="fit-content"
/>
<MultiConditionSearch
v-model:modelValue="dialogVisible"
:title="popupTitle"
v-model:inputValue="searchInput"
@dialogSearchSubmit="handleSearchSubmit"
>
</MultiConditionSearch>
<!-- 列表配置显示 -->
<edittablehead
@closce="showdrawer"
@ -306,6 +317,7 @@ import {
postExport,
} from '@/api/waybill/WaybillOrderList.js';
import { compressImageBlob } from '@/components/IMGcompressor/imgcompressor.js';
import MultiConditionSearch from '@/components/MultiConditionSearch/MultiConditionSearch.vue';
import {
downloadXls,
setNodeHeight,
@ -458,7 +470,26 @@ const permissionObj = reactive({
return $store.getters.permission.WaybillOrderList_uploadReceipt;
}),
});
const dialogVisible = ref(false);
const popupTitle = ref('搜索弹窗');
const searchInput = ref('');
const openDialog = (title, input) => {
popupTitle.value = title;
console.log(input, 'input');
if (input) {
const formattedInput = input.split(',').join('\n');
searchInput.value = formattedInput; // inputAll
} else {
searchInput.value = '';
}
dialogVisible.value = true;
};
const handleSearchSubmit = value => {
if (popupTitle.value == '运单号搜索') {
query.value.waybillNoList = value; //
}
dialogVisible.value = false;
};
/** 请求页面数据 */
const onLoad = async (page?: any, params = {}) => {
try {
@ -1066,6 +1097,14 @@ getListName({ name: '' }).then(res => {
:deep(.header_search) {
align-items: start;
}
.el_div_input {
width: 100%;
display: flex;
align-items: center;
.el_dy_icon {
font-size: 1.5em;
}
}
</style>
<style>
@ -1076,4 +1115,5 @@ getListName({ name: '' }).then(res => {
.imgDialogVisible .el-dialog__body {
padding: 0;
}
</style>

43
src/views/waybill/orderPackageList.vue

@ -11,11 +11,18 @@
:label="item.label"
>
<template v-if="item.type === 'input'">
<el-input
<div class="el_div_input">
<el-input
v-model.trim="query[item.prop]"
:placeholder="`请输入${item.label}`"
clearable
></el-input>
<!-- <el-icon class="el_dy_icon" @click="openDialog('运单号搜索', query.waybillNoList)"
><CirclePlusFilled
/></el-icon> -->
</div>
</template>
<template v-else-if="item.type === 'time'">
@ -51,7 +58,7 @@
<el-button type="primary" icon="Printer" @click="handleBatchBarcode">
批量打印
</el-button>
<el-button @click="openDialog">打开搜索弹窗</el-button>
<!-- 批量入库 -->
<el-button
type="primary"
@ -273,7 +280,13 @@
width="780px"
:html="details.html"
/>
<MultiConditionSearch
v-model:modelValue="dialogVisible"
:title="popupTitle"
v-model:inputValue="searchInput"
@dialogSearchSubmit="handleSearchSubmit"
>
</MultiConditionSearch>
<Tableexportcomponent
:menuData="details.packageListColumnList"
:data="details.packageListData"
@ -298,6 +311,7 @@ import { mapGetters, useStore } from 'vuex';
/** 获取字典 */
import { getDictionaryBiz } from '@/api/system/dict';
import { getopenOrderAdvancePageList } from '@/api/waybill/TemporaryStorageList';
import MultiConditionSearch from '@/components/MultiConditionSearch/MultiConditionSearch.vue';
import {
postFindOrderDetails,
postFinaPackageTrackLogList,
@ -325,6 +339,21 @@ const Tableexportcomponent = defineAsyncComponent(
() => import('@/components/Tableexportcomponent/Tableexportcomponent.vue')
);
const tcTableexport = ref(false);
const dialogVisible = ref(false);
const popupTitle = ref('搜索弹窗');
const searchInput = ref('');
const openDialog = () => {
dialogVisible.value = true;
};
const handleSearchSubmit = value => {
console.log('搜索内容:', value);
dialogVisible.value = false;
};
//
const $router = useRouter();
const $store = useStore();
@ -895,4 +924,12 @@ const handleShowFlowNode = async ({ row }) => {
:deep(.el-range-editor.el-input__wrapper) {
height: 100% !important;
}
.el_div_input {
width: 100%;
display: flex;
align-items: center;
.el_dy_icon {
font-size: 1.5em;
}
}
</style>

Loading…
Cancel
Save