You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2709 lines
70 KiB
2709 lines
70 KiB
<template> |
|
<div class="maxContent" v-loading="loadingObj.pageLoading"> |
|
<!-- 搜索功能 --> |
|
<div> |
|
<div class="avue-crud__right"> |
|
<div> |
|
<el-button type="primary" @click="InventoryTask" |
|
><el-icon> |
|
<Plus /> |
|
</el-icon> |
|
创建盘点任务</el-button |
|
> |
|
<el-button type="primary" @click="discard"> 废弃</el-button> |
|
<el-button type="primary" @click="DelayButton"> 延期</el-button> |
|
</div> |
|
<div> |
|
<el-button icon="el-icon-refresh" @click="Refresh" circle></el-button> |
|
<el-button icon="el-icon-search" @click="searchSo = !searchSo" circle></el-button> |
|
</div> |
|
</div> |
|
|
|
<tablecmt |
|
:columnList="menuData" |
|
:tableData="details.data" |
|
:loading="loading" |
|
@inputTxt="inputsc" |
|
@selectCheck="selectsc" |
|
@selection="selectionChange" |
|
> |
|
<template #default="slotProps"> |
|
<template v-if="slotProps.scope.column.label === '盘点任务编号'"> |
|
<span class="mr10" @click="ViewEvent(slotProps.scope.row)">{{ |
|
slotProps.scope.row.questNum |
|
}}</span> |
|
<el-text @click="ExportDC(slotProps.scope.row)">导出</el-text> |
|
</template> |
|
|
|
<template v-else-if="slotProps.scope.column.label === '操作'"> |
|
<el-text @click="ViewEvent(slotProps.scope.row)">已盘点明细</el-text> |
|
<el-text @click="DetailsNotCounted(slotProps.scope.row)">未盘点明细</el-text> |
|
<el-text @click="comparativeData(slotProps.scope.row)">对比数据</el-text> |
|
</template> |
|
</template> |
|
</tablecmt> |
|
</div> |
|
<!-- 表格翻页功能 --> |
|
<div class="demo-pagination-block TCdemo-pagination-block"> |
|
<el-pagination |
|
v-model:current-page="currentPage" |
|
v-model:page-size="pageSize" |
|
:page-sizes="pageList" |
|
:disabled="disabled" |
|
:background="background" |
|
layout="total, sizes, prev, pager, next, jumper" |
|
:total="total" |
|
@size-change="PageSizeChange" |
|
@current-change="SizeChange" |
|
/> |
|
</div> |
|
<!-- 弹窗详情 --> |
|
|
|
<el-dialog |
|
v-model="PopupDetails" |
|
:title="!InventoryState ? '盘点数据' : '未盘点数据'" |
|
width="80%" |
|
:before-close="handleClose" |
|
:fullscreen="fullScreen" |
|
> |
|
<div style="margin-bottom: 10px"> |
|
<div style="display: flex"> |
|
<!-- v-if="TcMInventoryStatus" --> |
|
<div> |
|
<!-- v-if="!NotCounted" --> |
|
<el-button type="primary" @click="BatchdeletePackages">删 除</el-button> |
|
<el-button type="primary" @click="TcAddData" v-if="Statusjudgment">新 增</el-button> |
|
<el-button type="primary" @click="InventoryModification">提交修改</el-button> |
|
<el-button type="primary" @click="ModifyingStatus">修改状态</el-button> |
|
<el-button |
|
icon="Download" |
|
v-if="InventoryState" |
|
type="primary" |
|
@click="handleUncountedExport" |
|
> |
|
导出 |
|
</el-button> |
|
</div> |
|
<div style="margin-left: 10px"> |
|
<!-- v-if="NotCounted" --> |
|
<el-button type="primary" @click="NotInventoried">盘点</el-button> |
|
</div> |
|
|
|
<div class="fullScreen" @click="BtnfullScreen"> |
|
<el-icon><FullScreen /></el-icon> |
|
</div> |
|
</div> |
|
</div> |
|
<!-- 表格开始 --> |
|
<el-table |
|
v-loading="TcPdloading" |
|
element-loading-text="数据正在更新中..." |
|
:data="TcPD" |
|
row-key="name" |
|
border |
|
:height="eightyPercentHeight + 'px'" |
|
style="width: 100%" |
|
@select-all="TcselectAll" |
|
@select="TcselectChange" |
|
> |
|
<el-table-column type="selection" width="55" fixed /> |
|
<el-table-column type="index" fixed width="50" height="100" label="#" align="center" /> |
|
<el-table-column |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:fixed="item.fixed" |
|
align="center" |
|
v-for="(item, index) in InventoryDetails" |
|
:key="item.label" |
|
> |
|
<el-table-column |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:fixed="item.fixed" |
|
align="center" |
|
> |
|
<template #header> |
|
<el-input |
|
@change="() => InputSo(item)" |
|
clearable |
|
v-if="item.type == 5 || item.prop == 'categoryName' || item.prop == 'materialCode'" |
|
v-model="item.values" |
|
:placeholder="`请输入${item.label}`" |
|
/> |
|
|
|
<el-select |
|
v-model="TcFrom[item.prop]" |
|
class="m-2" |
|
placeholder="请选择" |
|
size="large" |
|
v-if="item.type == 6" |
|
@change="TcChenge($event, item)" |
|
:clearable="true" |
|
> |
|
<el-option |
|
v-for="item in item.checkarr" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
|
|
<!-- 日期搜索 --> |
|
<el-date-picker |
|
v-if="item.type == 8" |
|
v-model="TcFrom[item.prop]" |
|
type="datetimerange" |
|
format="YYYY-MM-DD HH:mm:ss" |
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
range-separator="至" |
|
start-placeholder="开始时间" |
|
end-placeholder="结束时间" |
|
@change="TcChenge($event, item)" |
|
/> |
|
</template> |
|
<template #default="props"> |
|
<span v-if="item.type == 1 && item.prop == 'questStatus'"> |
|
{{ |
|
props.row[item.prop] == 0 |
|
? '待盘点' |
|
: props.row[item.prop] == 1 |
|
? '已盘' |
|
: props.row[item.prop] == 2 |
|
? '未盘点' |
|
: props.row[item.prop] == 3 |
|
? '已排除' |
|
: '/' |
|
}} |
|
</span> |
|
|
|
<span v-if="item.type == 6 && item.prop === 'questTarget'"> |
|
{{ |
|
props.row[item.prop] == 1 |
|
? '定制品' |
|
: props.row[item.prop] == 2 |
|
? '零担' |
|
: props.row[item.prop] == 3 |
|
? '库存品' |
|
: '/' |
|
}}</span |
|
> |
|
|
|
<span v-if="item.type == 10 && item.prop != 'materialCode'"> |
|
<el-input |
|
clearable |
|
:disabled="props.row.Checkbox" |
|
v-model="props.row[item.prop]" |
|
:placeholder="`请输入${item.label}`" |
|
/> |
|
</span> |
|
|
|
<span v-if="item.type == 10 && item.prop == 'materialCode'"> |
|
<!-- 下拉搜索 --> |
|
<el-select |
|
v-if="props.row.wLinputState" |
|
v-model="props.row.Input" |
|
filterable |
|
placeholder="请输入物料编码" |
|
> |
|
<el-option |
|
v-for="item in Wloptions" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
<el-input |
|
v-else |
|
@change="wLcheng(props.row, props.row)" |
|
clearable |
|
:disabled="props.row.Checkbox" |
|
v-model="props.row.Input" |
|
:placeholder="`请输入${item.label}`" |
|
/> |
|
</span> |
|
<div :class="ElBtnClass" v-if="item.type == 3 && !NotCounted"> |
|
<el-button |
|
:link="ElButtonS[2].link" |
|
:class="ElButtonS[2].class" |
|
:auto-insert-space="ElButtonS[2].space" |
|
:size="ElButtonS[2].size" |
|
:icon="ElButtonS[2].icon" |
|
@click="InventoryEditing(props.row)" |
|
>编辑</el-button |
|
> |
|
</div> |
|
|
|
<span v-if="item.type == 4">{{ |
|
props.row[item.prop] ? props.row[item.prop] : '/' |
|
}}</span> |
|
</template> |
|
</el-table-column> |
|
</el-table-column> |
|
</el-table> |
|
<template #footer> |
|
<!-- 表格翻页功能 --> |
|
<div class="demo-pagination-blockPD demo-pagination-block TCdemo-pagination-block"> |
|
<el-pagination |
|
v-model:current-page="TccurrentPage" |
|
v-model:page-size="TcpageSize" |
|
:page-sizes="pageList" |
|
:disabled="disabled" |
|
:background="background" |
|
layout="total, sizes, prev, pager, next, jumper" |
|
:total="Tctotal" |
|
@size-change="TcPageSizeChange" |
|
@current-change="TcSizeChange" |
|
/> |
|
</div> |
|
<span class="dialog-footer"> |
|
<el-button @click="PopupDetails = false">取消</el-button> |
|
<el-button type="primary">确定</el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
|
|
<!-- 弹窗里面的详情 --> |
|
|
|
<!-- 状态选择 --> |
|
<el-dialog |
|
v-model="InventoryStatus" |
|
title="状态选择" |
|
width="70%" |
|
style="display: flex; flex-direction: column" |
|
> |
|
<!-- 定制品单选框 --> |
|
<el-radio-group v-model="WrapBarEditing.radio" class="tcradiogroup" v-if="!TcStateSwitching"> |
|
<template v-for="(item, index) in radioList" :key="item.label"> |
|
<div class="Tcstate"> |
|
<el-radio @change="TcReac" :label="item.label">{{ item.txt }} </el-radio> |
|
<el-input-number |
|
v-model="counting[item.input]" |
|
:disabled="item.disabled" |
|
placeholder="数量" |
|
:min="0" |
|
/> |
|
</div> |
|
</template> |
|
</el-radio-group> |
|
|
|
<!-- 多选框 --> |
|
<el-checkbox-group v-model="readList" @change="Tcmultiple" v-else> |
|
<template v-for="(item, index) in radioList" :key="item.label"> |
|
<div class="Tcstate TcstateS"> |
|
<el-checkbox :label="item.txt" @change="Tclist(index + 1)" /><el-input-number |
|
v-model="counting[item.input]" |
|
:disabled="item.disabled" |
|
placeholder="数量" |
|
:min="0" |
|
/> |
|
</div> |
|
</template> |
|
</el-checkbox-group> |
|
|
|
<span class="Tcstdialog-footer"> |
|
<el-button @click="InventoryStatus = false">取消</el-button> |
|
<el-button type="primary" @click="StatusDetermination">确定</el-button> |
|
</span> |
|
</el-dialog> |
|
|
|
<el-dialog v-model="PopupEditing" title="信息编辑" width="60%" @close="closeInformationediting"> |
|
<el-form :model="WrapBarEditing" label-position="right" label-width="100px"> |
|
<el-form-item label="包条:"> |
|
<el-input v-model="WrapBarEditing.orderPackageCode" disabled placeholder="包条" /> |
|
</el-form-item> |
|
<el-form-item label="订单自编号:"> |
|
<el-input v-model="WrapBarEditing.orderCode" placeholder="请输入订单自编号" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="异常状态:"> |
|
<!-- 定制品单选框 --> |
|
<el-radio-group |
|
v-model="WrapBarEditing.radio" |
|
class="tcradiogroup" |
|
v-if="!TcStateSwitching" |
|
> |
|
<template v-for="(item, index) in radioList" :key="item.label"> |
|
<div class="Tcstate"> |
|
<el-radio @change="TcReac" :label="item.label">{{ item.txt }} </el-radio> |
|
<el-input-number |
|
v-model="counting[item.input]" |
|
:disabled="item.disabled" |
|
placeholder="数量" |
|
:min="0" |
|
/> |
|
</div> |
|
</template> |
|
</el-radio-group> |
|
|
|
<!-- 多选框 --> |
|
<el-checkbox-group v-model="readList" @change="Tcmultiple" v-else> |
|
<template v-for="(item, index) in radioList" :key="item.label"> |
|
<div class="Tcstate TcstateS"> |
|
<el-checkbox :label="item.txt" @change="Tclist(index + 1)" /><el-input-number |
|
v-model="counting[item.input]" |
|
:disabled="item.disabled" |
|
placeholder="数量" |
|
:min="0" |
|
/> |
|
</div> |
|
</template> |
|
</el-checkbox-group> |
|
</el-form-item> |
|
|
|
<el-form-item label="新的货位"> |
|
<el-select-v2 |
|
v-model="WrapBarEditing.groundingPositionCode" |
|
style="width: 240px" |
|
filterable |
|
remote |
|
:remote-method="remoteMethod" |
|
clearable |
|
:options="optionss" |
|
placeholder="请输入货位" |
|
/> |
|
</el-form-item> |
|
</el-form> |
|
|
|
<template #footer> |
|
<span class="dialog-footer"> |
|
<el-button @click="PopupEditing = false">取消</el-button> |
|
<el-button type="primary" @click="InformationEditing">提交</el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
|
|
<!-- 新增弹窗 --> |
|
<el-dialog |
|
v-model="TcDataaddition" |
|
title="新增" |
|
width="70%" |
|
style="display: flex; flex-direction: column" |
|
> |
|
<el-form |
|
:model="Fromnewlyadded" |
|
label-position="right" |
|
label-width="100px" |
|
style="margin-top: 40px" |
|
> |
|
<el-form-item label="SKU:"> |
|
<el-input v-model="Fromnewlyadded.sku" placeholder="请输入SKU" /> |
|
</el-form-item> |
|
<el-form-item label="货物名称:"> |
|
<el-input v-model="Fromnewlyadded.name" placeholder="请输入货物名称" /> |
|
</el-form-item> |
|
<el-form-item label="货物单位:"> |
|
<el-select v-model="Fromnewlyadded.logpmUnit" class="m-2" placeholder="选择货物单位"> |
|
<el-option |
|
v-for="item in classification" |
|
:key="item.value" |
|
:label="item.label" |
|
:value="item.value" |
|
/> |
|
</el-select> |
|
</el-form-item> |
|
|
|
<el-form-item label="规格:"> |
|
<el-input v-model="Fromnewlyadded.specification" placeholder="请输入规格" /> |
|
</el-form-item> |
|
<el-form-item label="物料编码:"> |
|
<el-input v-model="Fromnewlyadded.packingSpecification" placeholder="请输入物料编码" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="产品编码:"> |
|
<el-input v-model="Fromnewlyadded.productCode" placeholder="请输入产品编码" /> |
|
</el-form-item> |
|
<el-form-item label="包装数量:"> |
|
<el-input v-model="Fromnewlyadded.packageNum" placeholder="请输入包装数量" /> |
|
</el-form-item> |
|
</el-form> |
|
|
|
<span class="Tcstdialog-footer"> |
|
<el-button @click="TcDataaddition = false">取消</el-button> |
|
<el-button type="primary" @click="TcDataadditionsubmit">确定</el-button> |
|
</span> |
|
</el-dialog> |
|
<!-- 创建盘点弹窗 --> |
|
<el-dialog v-model="InventoryPopup" title="创建盘点任务" width="30%"> |
|
<el-form :model="formInventory" label-width="120px"> |
|
<el-form-item label="商场名称"> |
|
<el-select |
|
multiple |
|
v-model="formInventory.scname" |
|
filterable |
|
placeholder="请选择商场" |
|
@change="formInventoryChange" |
|
> |
|
<el-option |
|
v-for="item in formInventory.select" |
|
:key="item.id" |
|
:label="item.clientName" |
|
:value="item.id" |
|
/> |
|
</el-select> |
|
</el-form-item> |
|
|
|
<el-form-item label="品牌"> |
|
<el-input v-model="formInventory.brandName" disabled placeholder="品牌名称" /> |
|
</el-form-item> |
|
|
|
<el-form-item label="盘点时间" class="pdsj"> |
|
<el-date-picker |
|
v-model="formInventory.time" |
|
type="datetimerange" |
|
range-separator="至" |
|
start-placeholder="盘点开始时间" |
|
format="YYYY-MM-DD HH:mm:ss" |
|
date-format="YYYY/MM/DD ddd" |
|
value-format="YYYY/MM/DD HH:mm:ss" |
|
end-placeholder="盘点结束时间" |
|
> |
|
</el-date-picker> |
|
</el-form-item> |
|
</el-form> |
|
<template #footer> |
|
<span class="dialog-footer"> |
|
<el-button @click="InventoryPopup = false">取消</el-button> |
|
<el-button type="primary" @click="InventorySubmit"> 提交 </el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
|
|
<!-- 延期弹窗 --> |
|
<el-dialog v-model="dialogTabData" width="780px" title="选择延期时间"> |
|
<el-date-picker |
|
class="w100" |
|
v-model="TcData" |
|
type="date" |
|
placeholder="请选择延期时间" |
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
/> |
|
<template #footer> |
|
<span class="dialog-footer"> |
|
<el-button @click="dialogTabData = false">取消</el-button> |
|
<el-button type="primary" @click="InventoryDate"> 提交 </el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
|
|
<!-- 对比信息弹窗 --> |
|
<el-dialog v-model="dialogcontrast" title="对比信息" width="70%"> |
|
<div class="dbExPo"> |
|
<el-button type="primary" @click="MXexport">导出</el-button> |
|
</div> |
|
<!-- 表格开始 --> |
|
<el-table |
|
v-loading="contrastloading" |
|
element-loading-text="数据正在更新中..." |
|
:data="contrastData" |
|
row-key="name" |
|
border |
|
height="600" |
|
style="width: 100%" |
|
@select-all="contrastselectAll" |
|
@select="contrastselectChange" |
|
> |
|
<el-table-column type="selection" width="55" fixed /> |
|
<el-table-column type="index" fixed width="50" height="100" label="#" align="center" /> |
|
<!-- |
|
Type ===1 普通文本 |
|
Type ===2 图片显示 |
|
Type ===3 操作功能 |
|
label: 标题 |
|
width: 宽度 |
|
prop: 数据字段 |
|
--> |
|
<el-table-column |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:fixed="item.fixed" |
|
align="center" |
|
v-for="(item, index) in contrast" |
|
:key="item.label" |
|
> |
|
<el-table-column |
|
:prop="item.prop" |
|
:label="item.label" |
|
:width="item.width" |
|
:fixed="item.fixed" |
|
align="center" |
|
> |
|
<template #header> |
|
<!-- <el-input |
|
@change="InputSo(item)" |
|
clearable |
|
v-if="item.type == 4" |
|
v-model="item.values" |
|
:placeholder="`请输入${item.label}`" |
|
/> --> |
|
</template> |
|
|
|
<template #default="props"> |
|
<div :class="ElBtnClass" v-if="item.type == 3"> |
|
<!-- 按钮 --> |
|
</div> |
|
<span v-if="item.type == 4">{{ |
|
props.row[item.prop] != null ? props.row[item.prop] : '/' |
|
}}</span> |
|
<span v-if="item.type == 6">{{ |
|
props.row[item.prop] == null ? 0 : props.row[item.prop] |
|
}}</span> |
|
</template> |
|
</el-table-column> |
|
</el-table-column> |
|
</el-table> |
|
</el-dialog> |
|
<!-- 数据对比结束 --> |
|
</div> |
|
</template> |
|
|
|
<script setup> |
|
import { |
|
$_getContrastInfo, |
|
$_getDetailInfo, |
|
$_updateDate, |
|
$_updateDetailInfo, |
|
$_updateQuestChildInfo, |
|
$_getQuestChildInfo, |
|
getDictList, |
|
getTaskQuestPage, |
|
postAddtaskQuest, |
|
$_materialList, |
|
$_submit, |
|
$_questDetailIds, |
|
$_exportGetContrastInfo, |
|
$_getList, |
|
$_postBatchDelete, |
|
postExportContrastStockInfo, |
|
} from '@/api/distribution/createTask'; |
|
import { ElMessageBox } from 'element-plus'; |
|
import { ElMessage } from 'element-plus'; |
|
import { downloadXls } from '@/utils/util'; |
|
import { getDictionaryBiz } from '@/api/system/dict'; |
|
import { ref, reactive } from 'vue'; |
|
import { off } from 'dom7'; |
|
const wLinput = ref(null); //物料编码搜索框 |
|
const wLinputState = ref(false); //标记是否显示下拉框 |
|
const SoInfoData = ref({}); //搜索框参数 |
|
const searchSo = ref(false); //搜索框 |
|
const ElData = ref([]); //表格的值 |
|
const TcPD = ref([]); //弹窗盘点表格得值 |
|
const currentPage = ref(1); // 默认页码 |
|
const pageSize = ref(40); // 默认每一页几条 |
|
const dialogTabData = ref(false); //延期弹窗 |
|
const TccurrentPage = ref(1); // 默认页码 |
|
const TcpageSize = ref(50); // 默认每一页几条 |
|
const Tctotal = ref(null); //明细页码总数 |
|
const TcData = ref(null); //延期时间 |
|
const pageList = ref([50, 100, 200, 500, 1000]); // 选择每页显示多少条 |
|
const background = ref(true); // 是否开启背景颜色 |
|
const disabled = ref(false); // 是否禁止使用页码功能 |
|
const total = ref(0); //页码总数 |
|
const loading = ref(false); //表格加载Load |
|
const PopupDetails = ref(false); //弹窗详情是否展示 |
|
const InventoryPopup = ref(false); //创建判断任务弹窗 |
|
const formInventory = ref({}); //盘点任务表单_ |
|
const TcPdloading = ref(false); //弹窗盘点数据 |
|
const PdRow = ref(null); //盘点任务选中 |
|
const TcFrom = ref({}); //弹窗搜索 |
|
const row = ref({}); //选择当前列 |
|
const Tcrow = ref(); //弹窗当前行 |
|
const WrapBarEditing = ref({}); //弹窗数据编辑 |
|
const PopupEditing = ref(false); //弹窗编辑 |
|
const ElBtnClass = ref(null); |
|
const DiskStatus = ref(true); //已盘、未盘状态 |
|
const UncountedDetails = ref(); //未盘点明细盘点必须参数 |
|
const contrastData = ref([]); //对比数据表格 |
|
const dialogcontrast = ref(false); //对比数据弹窗 |
|
const contrastloading = ref(false); //对比数据表格加载 |
|
const Inventoryrow = ref({}); //详情编辑响应式临时数据 |
|
const NotCounted = ref(false); //为盘点信息 |
|
const UncheckedRow = ref({}); //未盘点当前行存储数据 |
|
const InventoryStatus = ref(false); //盘点中的状态修改 |
|
const InventoryInput = ref(null); //用来存储盘点状态定制品选怎的第几个input |
|
const InventoryState = ref(false); //盘带状态修改保存的数据 |
|
const TcMInventoryStatus = ref(true); //盘点弹窗按钮权限控制 |
|
const TcStatusModification = ref(false); //表示当前在修改状态 |
|
const TcStateSwitching = ref(false); //默认表示定制品状态 |
|
const TcnumStatu = ref(false); //表示零担,库存品,初始化状态 |
|
const readList = ref([]); //多选框 |
|
const TcReaJoin = ref([]); //零担库存品状态10,20,30... |
|
const TcDataaddition = ref(false); //数据新增弹唱 |
|
const Fromnewlyadded = ref({}); //数据新增 |
|
const screenHeight = ref(0); // 屏幕高度 |
|
const HomepageDelay = ref(null); //首页延期 |
|
const eightyPercentHeight = ref(0); // 80% 高度 |
|
const Statusjudgment = ref(false); //新增按钮 |
|
const DbEx = ref(null); //对比明细导出 |
|
const fullScreen = ref(false); //是否全屏 |
|
const BatchAbandonment = ref([]); //首页废弃 |
|
/** loading */ |
|
const loadingObj = reactive({ |
|
/** 页面loading */ |
|
pageLoading: false, |
|
}); |
|
/** 未盘点query */ |
|
const uncountedQuery = reactive({}); |
|
const radioList = ref([ |
|
{ label: 0, txt: '在库', input: 'stockNum', disabled: true }, |
|
{ label: 1, txt: '破损', input: 'wornNum', disabled: true }, |
|
{ label: 2, txt: '丢失', input: 'lossNum', disabled: true }, |
|
{ label: 3, txt: '不可修复', input: 'noRepairNum', disabled: true }, |
|
{ label: 4, txt: '已配送', input: 'deliveNum', disabled: true }, |
|
{ label: 5, txt: '未入库', input: 'noReceivedNum', disabled: true }, |
|
]); |
|
const counting = ref({}); |
|
const options = [ |
|
{ |
|
value: 1, |
|
label: '定制品', |
|
}, |
|
{ |
|
value: 2, |
|
label: '零担', |
|
}, |
|
{ |
|
value: 3, |
|
label: '库存品', |
|
}, |
|
]; |
|
// 新增物品分类 |
|
const classification = ref([]); |
|
// 菜单表头 |
|
const menuData = ref([ |
|
{ |
|
prop: '', |
|
label: '复选框', |
|
type: 0, |
|
values: '', |
|
width: 55, |
|
checkarr: [], |
|
fixed: true, |
|
}, |
|
{ |
|
prop: '', |
|
label: '序号', |
|
type: 12, |
|
values: '', |
|
width: 55, |
|
checkarr: [], |
|
fixed: true, |
|
}, |
|
{ |
|
prop: 'questNum', |
|
label: '盘点任务编号', |
|
type: 13, |
|
values: '', |
|
width: '250', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'warehouseName', |
|
label: '仓库名称', |
|
type: 1, |
|
values: '', |
|
width: '130', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'marketName', |
|
label: '商城名称', |
|
type: 1, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'marketName', |
|
label: '收货单位', |
|
type: 1, |
|
values: '', |
|
width: '200', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'brandName', |
|
label: '品牌名称', |
|
type: 1, |
|
values: '', |
|
width: '200', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'startTime', |
|
label: '任务开始时间', |
|
type: 1, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'endTime', |
|
label: '任务结束时间', |
|
type: 1, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'stockNum', |
|
label: '数量', |
|
type: 2, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'questTypeName', |
|
label: '类型', |
|
type: 3, |
|
values: '', |
|
width: '150', |
|
checkarr: [ |
|
{ |
|
value: 1, |
|
label: '全部', |
|
}, |
|
{ |
|
value: 2, |
|
label: '全仓', |
|
}, |
|
], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: 'questStatusName', |
|
label: '状态', |
|
type: 3, |
|
values: '', |
|
width: '150', |
|
checkarr: [ |
|
{ |
|
value: 0, |
|
label: '创建全部', |
|
}, |
|
{ |
|
value: 1, |
|
label: '开始', |
|
}, |
|
{ |
|
value: 2, |
|
label: '暂停', |
|
}, |
|
{ |
|
value: 3, |
|
label: '结束', |
|
}, |
|
], |
|
fixed: false, |
|
sortable: true, |
|
}, |
|
{ |
|
prop: '', |
|
label: '操作', |
|
type: 6, |
|
values: '', |
|
width: '230', |
|
checkarr: [], |
|
fixed: 'right', |
|
sortable: true, |
|
}, |
|
]); //表头结构 |
|
|
|
// 弹窗盘点 |
|
const InventoryDetails = ref([ |
|
{ |
|
prop: 'orderCode', |
|
label: '订单自编号', |
|
type: 5, |
|
values: '', |
|
width: '230', |
|
checkarr: [], |
|
fixed: true, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'orderPackageCode', |
|
label: '包条', |
|
type: 5, |
|
values: '', |
|
width: '200', |
|
checkarr: [], |
|
fixed: true, |
|
search: true, |
|
head: true, |
|
}, |
|
|
|
{ |
|
prop: 'questTarget', |
|
label: '品类', |
|
type: 6, |
|
values: '', |
|
width: '100', |
|
checkarr: [ |
|
{ |
|
value: 1, |
|
label: '定制品', |
|
}, |
|
{ |
|
value: 2, |
|
label: '零担', |
|
}, |
|
{ |
|
value: 3, |
|
label: '库存品', |
|
}, |
|
], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'questStatus', |
|
label: '盘点状态', |
|
type: 1, |
|
values: '', |
|
width: '100', |
|
checkarr: [ |
|
{ |
|
value: 0, |
|
label: '待盘点', |
|
}, |
|
{ |
|
value: 1, |
|
label: '已盘', |
|
}, |
|
{ |
|
value: 2, |
|
label: '未盘点', |
|
}, |
|
{ |
|
value: 3, |
|
label: '已排除', |
|
}, |
|
], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'positionCode', |
|
label: '货位', |
|
type: 5, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'materialName', |
|
label: '物料名称', |
|
type: 5, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'stockNum', |
|
label: '数量', |
|
type: 5, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'trayCode', |
|
label: '托盘码', |
|
type: 5, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'trayName', |
|
label: '托盘名称', |
|
type: 5, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'inventoryPerson', |
|
label: '盘点人', |
|
type: 5, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'inventoryDate', |
|
label: '盘点时间', |
|
type: 8, |
|
values: '', |
|
width: '350', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'firsts', |
|
label: '一级品类', |
|
type: 10, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'second', |
|
label: '二级品类', |
|
type: 10, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'thirdProduct', |
|
label: '三级品类', |
|
type: 10, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
|
|
{ |
|
prop: 'categoryName', |
|
label: '产品名称', |
|
type: 10, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'materialCode', |
|
label: '物料编码', |
|
type: 10, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'brandName', |
|
label: '品牌', |
|
type: 5, |
|
values: '', |
|
width: '250', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: '', |
|
label: '操作', |
|
type: 3, |
|
values: '', |
|
width: '120', |
|
checkarr: [], |
|
fixed: 'right', |
|
search: false, |
|
head: true, |
|
}, |
|
]); |
|
// 对比数据表格结构 |
|
const contrast = ref([ |
|
{ |
|
prop: 'orderCode', |
|
label: '订单自编号', |
|
type: 4, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: true, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'orderPackageCode', |
|
label: '包条', |
|
type: 5, |
|
values: '', |
|
width: '260', |
|
checkarr: [], |
|
fixed: true, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'trayCode', |
|
label: '托盘码', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'trayName', |
|
label: '托盘名称', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'brandName', |
|
label: '品牌', |
|
type: 4, |
|
values: '', |
|
width: '250', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'mallName', |
|
label: '商场名称', |
|
type: 4, |
|
values: '', |
|
width: '250', |
|
checkarr: [], |
|
fixed: false, |
|
search: true, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'customerName', |
|
label: '客户名称', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'thirdProduct', |
|
label: '三级品', |
|
type: 4, |
|
values: '', |
|
width: '350', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'materialName', |
|
label: '物料名称', |
|
type: 4, |
|
values: '', |
|
width: '200', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'totalNumber', |
|
label: '总件数', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'handQuantity', |
|
label: '在库件数', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'positionCode', |
|
label: '货区-货架-货位', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'inventoryPerson', |
|
label: '盘点人', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'inventoryDate', |
|
label: '盘点时间', |
|
type: 8, |
|
values: '', |
|
width: '350', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'questNum', |
|
label: '盘点件数', |
|
type: 6, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'differenceNum', |
|
label: '差异数', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
|
|
{ |
|
prop: 'groundingPositionCode', |
|
label: '新货位', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
{ |
|
prop: 'questStatusName', |
|
label: '货物状态', |
|
type: 4, |
|
values: '', |
|
width: '150', |
|
checkarr: [], |
|
fixed: false, |
|
search: false, |
|
head: true, |
|
}, |
|
]); |
|
// 按钮配置 |
|
const ElButtonS = ref([ |
|
// 1.link 切换按钮样式(文本模式-false ,按钮模式-tre) |
|
// 2.class 按钮样式名(用于切换按钮样式) |
|
// 3.space 是否开启按钮文子直接间距(true开启 ,false关闭) |
|
// 4.size 按钮尺寸默认小尺寸('large'| 'default'| 'small') |
|
// 5.icon 按钮图标 |
|
// 6.table 按钮名称 |
|
{ |
|
link: false, |
|
class: 'el-btn-view', |
|
space: true, |
|
size: 'small', |
|
icon: 'el-icon-view', |
|
table: '详情', |
|
}, |
|
{ |
|
link: false, |
|
class: 'el-btn-view', |
|
space: true, |
|
size: 'small', |
|
icon: 'el-icon-view', |
|
table: '延期', |
|
}, |
|
{ |
|
link: false, |
|
class: 'el-btn-view', |
|
space: true, |
|
size: 'small', |
|
icon: 'el-icon-view', |
|
table: '编辑', |
|
}, |
|
{ |
|
link: false, |
|
class: 'el-btn-view', |
|
space: true, |
|
size: 'small', |
|
icon: 'el-icon-view', |
|
table: '对比数据', |
|
}, |
|
]); |
|
|
|
const details = reactive({ |
|
/** 盘点数据 */ |
|
data: [], |
|
/** 被选中数据 */ |
|
selectionList: [], |
|
query: {}, |
|
}); |
|
// 页面初始化请求 |
|
|
|
const IndexPd = val => { |
|
let Data = { |
|
current: currentPage.value, //页码 |
|
size: pageSize.value, //条数 |
|
...val, |
|
}; |
|
getTaskQuestPage(Data).then(res => { |
|
console.log(res, '获取盘点列表'); |
|
if (res.data.code == 200) { |
|
total.value = res.data.data.total; |
|
loading.value = false; //关闭表格加载 |
|
res.data.data.records; //初始化盘点列表 |
|
if (res.data.data.records) { |
|
res.data.data.records.forEach(items => { |
|
items.marketName = items.list.map(item => item.refName).join(','); //商场名称 |
|
items.brandName = items.list.map(item => item.brandName).join(','); //品牌名称 |
|
}); |
|
console.log(ElData.value, 'ElData.value'); |
|
} |
|
ElData.value = res.data.data.records; |
|
details.data = res.data.data.records; |
|
} |
|
}); |
|
}; |
|
// 弹窗全屏 |
|
const BtnfullScreen = () => { |
|
fullScreen.value = !fullScreen.value; |
|
}; |
|
|
|
function onLoad() { |
|
// 在组件挂载后获取屏幕高度 |
|
screenHeight.value = window.innerHeight; |
|
// 计算80%的高度 |
|
eightyPercentHeight.value = screenHeight.value * 0.8; |
|
getDictionaryBiz('logpm_unit').then(res => { |
|
//异常类型 |
|
console.log(res, '字典返回值'); |
|
|
|
if (res.data.data.length) { |
|
res.data.data.forEach(item => { |
|
classification.value.push({ |
|
value: item.dictKey, |
|
label: item.dictValue, |
|
}); |
|
}); |
|
} |
|
}); |
|
|
|
// loading.value = true; //开启表格加载 |
|
// IndexPd(); |
|
} |
|
// 调用页面初始化获取数据 |
|
onLoad(); |
|
|
|
async function initTableData(params = {}) { |
|
try { |
|
loading.value = true; // 开启加载 |
|
|
|
let submitData = { |
|
current: currentPage.value, //页码 |
|
size: pageSize.value, //条数 |
|
...details.query, |
|
}; |
|
const res = await getTaskQuestPage(submitData); |
|
const { code, data } = res.data; |
|
console.log(res, '获取盘点列表'); |
|
if (code !== 200) return; |
|
|
|
total.value = data.total; |
|
data.records; //初始化盘点列表 |
|
if (!data.records) return (details.data = []); |
|
const _typeArr = menuData.value.filter(item => item.type === 3); |
|
|
|
for (let i = 0; i < data.records.length; i++) { |
|
const value = data.records[i]; |
|
|
|
const _marketNameArr = []; |
|
const _brandNameArr = []; |
|
|
|
for (let j = 0; j < value.list.length; j++) { |
|
const item = value.list[j]; |
|
|
|
_marketNameArr.push(item.refName); |
|
_brandNameArr.push(item.brandName); |
|
} |
|
value.marketName = _marketNameArr.join(','); //商场名称 |
|
value.brandName = _brandNameArr.join(','); //品牌名称 |
|
|
|
// 转译码值 |
|
for (let j = 0; j < _typeArr.length; j++) { |
|
const item = _typeArr[j]; |
|
|
|
const _prop = item.prop.replace('Name', ''); |
|
|
|
for (let index = 0; index < item.checkarr.length; index++) { |
|
const val = item.checkarr[index]; |
|
|
|
if (Number(val.value) !== Number(value[_prop])) continue; |
|
value[item.prop] = val.label || '/'; |
|
break; |
|
} |
|
} |
|
} |
|
details.data = data.records; |
|
} catch (error) { |
|
console.log('error :>> ', error); |
|
} finally { |
|
loading.value = false; // 关闭表格加载 |
|
} |
|
} |
|
|
|
initTableData(); |
|
|
|
/** 盘点任务表头输入框 */ |
|
const inputsc = (value, row) => { |
|
console.log('value :>> ', value); |
|
console.log('row :>> ', row); |
|
details.query[row.prop] = value; |
|
if (!value) delete details.query[row.prop]; |
|
initTableData(); |
|
}; |
|
|
|
/** 表头下拉搜索 */ |
|
const selectsc = (value, row) => { |
|
const _key = row.prop.replace('Name', ''); |
|
|
|
details.query[_key] = value; |
|
if (!value) delete details.query[_key]; |
|
initTableData(); |
|
}; |
|
|
|
/** 复选框勾选变化 */ |
|
const selectionChange = list => { |
|
details.selectionList = list; |
|
}; |
|
|
|
// 首页搜索框 |
|
const InInputSo = (values, val) => { |
|
console.log(values, val); |
|
let data = { |
|
[val.prop]: values, |
|
}; |
|
console.log(data); |
|
IndexPd(data); |
|
}; |
|
|
|
// 搜索框 |
|
const InputSo = val => { |
|
TcPdloading.value = true; |
|
console.log(val, '搜索框接收的值'); |
|
let data = {}; |
|
console.log(row.value, 'row.value'); |
|
data.current = TccurrentPage.value; |
|
data.size = TcpageSize.value; |
|
|
|
let dataS = { |
|
questNum: UncountedDetails.value.questNum, |
|
questId: UncountedDetails.value.id, |
|
current: TccurrentPage.value, //页码 |
|
size: TcpageSize.value, //条数 |
|
[val.prop]: val.values, |
|
}; |
|
if (DiskStatus.value) { |
|
dataS.questStatus = 1; |
|
} else { |
|
dataS.questStatus = 0; |
|
} |
|
console.log(dataS, '要提交的数据'); |
|
$_getDetailInfo(dataS).then(res => { |
|
Tctotal.value = res.data.data.total; |
|
res.data.data.records.forEach(item => { |
|
item.Checkbox = true; |
|
item.wLinputState = false; |
|
item.Input = null; |
|
}); |
|
TcPdloading.value = false; |
|
console.log(res, '明细返回值222'); |
|
TcPD.value = res.data.data.records; |
|
}); |
|
// } |
|
}; |
|
// 点击新增按钮 |
|
const TcAddData = () => { |
|
TcDataaddition.value = true; //新增弹窗显示 |
|
}; |
|
// 对比数据导出公共函数 |
|
const DbExTc = async data => { |
|
try { |
|
loading.value = true; |
|
|
|
const res = await $_exportGetContrastInfo({ |
|
id: data.id, |
|
questNum: data.questNum, |
|
}); |
|
if (res.status !== 200) return; |
|
console.log(res, '导出'); |
|
downloadXls(res.data, `${data.questNum}对比明细.xlsx`); |
|
} catch (error) { |
|
console.log('error :>> ', error); |
|
} finally { |
|
loading.value = false; |
|
} |
|
}; |
|
// 盘点对比导出 |
|
const ExportDC = val => { |
|
// 触发下载函数 |
|
console.log(val); |
|
DbExTc(val); |
|
}; |
|
// 对比数据导出 |
|
const MXexport = () => { |
|
// 触发下载函数 |
|
DbExTc(DbEx.value); |
|
}; |
|
|
|
// 新增任务按钮(搜索不到出现此按钮) |
|
const TcDataadditionsubmit = () => { |
|
console.log(Fromnewlyadded.value); |
|
const validations = [ |
|
{ property: 'sku', message: 'SKU为空' }, |
|
{ property: 'name', message: '货物名称为空' }, |
|
{ property: 'logpmUnit', message: '货物单位为空' }, |
|
{ property: 'specification', message: '规格为空' }, |
|
{ property: 'packingSpecification', message: '物料编码为空' }, |
|
{ property: 'productCode', message: '产品编码为空' }, |
|
{ property: 'packageNum', message: '包装数量为空' }, |
|
]; |
|
|
|
for (const validation of validations) { |
|
if (!Fromnewlyadded.value[validation.property]) { |
|
ElMessage({ |
|
message: validation.message, |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
} |
|
TcDataaddition.value = false; //关闭弹窗 |
|
$_submit({ ...Fromnewlyadded.value }).then(res => { |
|
console.log(res, '添加物品返回值'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
} |
|
}); |
|
Statusjudgment.value = false; //点击确定之后关闭按钮 |
|
}; |
|
|
|
// 盘点任务单选 |
|
const selectChange = (select, val) => { |
|
HomepageDelay.value = val; //首页延期 |
|
console.log('首页触发了选择'); |
|
BatchAbandonment.value = select; //批量废弃 |
|
console.log(select, val); |
|
PdRow.value = select; |
|
}; |
|
// 表格筛选 |
|
const selectAll = val => { |
|
console.log(val, '触发了选择'); |
|
}; |
|
// 弹窗详情选中(全选) |
|
const TcselectAll = (selectAll, val) => { |
|
Tcrow.value = selectAll; |
|
if (!selectAll.length) { |
|
TcPD.value.forEach(item => { |
|
item.Checkbox = !item.Checkbox; |
|
}); |
|
} else { |
|
selectAll.forEach(item => { |
|
item.Checkbox = !item.Checkbox; |
|
}); |
|
} |
|
console.log(Tcrow.value, '全选复选框'); |
|
// 状态修改 |
|
}; |
|
// 弹窗详情单选 |
|
const TcselectChange = (selectAll, val) => { |
|
console.log(val, '当前选中的'); |
|
console.log(Tcrow.value); |
|
val.Checkbox = !val.Checkbox; //开启修改 |
|
Tcrow.value = selectAll; |
|
}; |
|
|
|
// 批量删除盘点任务 |
|
const BatchDelete = () => {}; |
|
|
|
// 延期提交 |
|
const InventoryDate = async () => { |
|
try { |
|
if (!TcData.value) return ElMessage.warning('请选择延期时间'); |
|
|
|
loadingObj.pageLoading = true; |
|
dialogTabData.value = false; |
|
|
|
const _value = details.selectionList[0]; |
|
|
|
const res = await $_updateDate({ |
|
id: _value.id, |
|
startTime: _value.startTime, |
|
endTime: TcData.value, |
|
}); |
|
|
|
const { code, msg } = res.data; |
|
|
|
if (code !== 200) return; |
|
ElMessage.success(msg); |
|
initTableData(); |
|
} catch (error) { |
|
console.log('error :>> ', error); |
|
} finally { |
|
loadingObj.pageLoading = false; |
|
} |
|
}; |
|
|
|
// 提交修改 |
|
const InventoryModification = () => { |
|
console.log(Tcrow.value, 'Tcrow.value'); |
|
if (!Tcrow.value) { |
|
ElMessage({ |
|
showClose: true, |
|
message: '暂未选择信息', |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
let data = []; |
|
Tcrow.value.forEach(item => { |
|
data.push({ |
|
id: item.id, |
|
firsts: item.firsts, |
|
second: item.second, |
|
thirdProduct: item.thirdProduct, |
|
categoryName: item.categoryName, |
|
questId: item.questId, |
|
questNum: row.value.questNum, |
|
name: item.Input, |
|
questStatus: 1, |
|
}); |
|
}); |
|
console.log(data, '要提交的数据'); |
|
$_updateDetailInfo(data).then(res => { |
|
TcViewEvent(row.value); //修改之后刷新页面 |
|
console.log(res, '修改成功之后的返回值'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
showClose: true, |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
} |
|
}); |
|
}; |
|
// 对比数据按钮 |
|
const comparativeData = val => { |
|
dialogcontrast.value = true; //显示对比数据表格 |
|
contrastloading.value = true; //开启表格加载 |
|
console.log(val, '对比数据当前行'); |
|
DbEx.value = val; //存储当前行数据用于导出 |
|
let data = {}; |
|
data.questNum = val.questNum; |
|
data.questId = val.id; |
|
$_getContrastInfo(data).then(res => { |
|
console.log(res, '对比数据返回值'); |
|
contrastData.value = res.data.data; |
|
contrastloading.value = false; //关闭表格加载 |
|
}); |
|
}; |
|
// 重置搜索表单 |
|
const searchReset = () => { |
|
SoInfoData.value = {}; |
|
}; |
|
|
|
const TcViewEvent = (val, Inso) => { |
|
Statusjudgment.value = false; //关闭新增按钮 |
|
TcPdloading.value = true; |
|
console.log(val, '要传递的对象'); |
|
let data = { |
|
questNum: val.questNum, |
|
questId: val.id, |
|
current: TccurrentPage.value, //页码 |
|
size: TcpageSize.value, //条数 |
|
questStatus: 1, |
|
...Inso, |
|
}; |
|
console.log(data, '要提交的数据'); |
|
|
|
$_getDetailInfo(data).then(res => { |
|
Tctotal.value = res.data.data.total; |
|
res.data.data.records.forEach(item => { |
|
item.Checkbox = true; |
|
item.wLinputState = false; |
|
item.Input = null; |
|
}); |
|
TcPdloading.value = false; |
|
console.log(res, '明细返回值'); |
|
TcPD.value = res.data.data.records; |
|
}); |
|
}; |
|
// 点击详情按钮 |
|
const ViewEvent = val => { |
|
DiskStatus.value = true; //表示当前在已盘点列表 |
|
InventoryDetails.value.forEach(item => { |
|
item.values = null; |
|
}); |
|
InventoryState.value = false; //修改标题(盘点数据) |
|
TccurrentPage.value = 1; //重置页码 |
|
NotCounted.value = false; //关闭未盘点 |
|
row.value = val; |
|
PopupDetails.value = true; |
|
TcPdloading.value = true; |
|
console.log(val, '明细'); |
|
if (val.questStatus != 1) { |
|
TcMInventoryStatus.value = false; //表示当前盘点任务不属于盘点中,关闭所有按钮权限 |
|
} else { |
|
TcMInventoryStatus.value = true; |
|
} |
|
TcViewEvent(row.value); |
|
}; |
|
// 废弃按钮 |
|
const Discard = val => { |
|
console.log(val); |
|
let data = []; |
|
data.push(val.id); |
|
let ids = data.join(','); |
|
console.log(data); |
|
ElMessageBox.confirm('是否废弃该盘点任务?') |
|
.then(() => { |
|
$_postBatchDelete({ ids }).then(res => { |
|
console.log(res, '删除成功'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
message: '删除成功.', |
|
type: 'success', |
|
}); |
|
} |
|
IndexPd(); |
|
}); |
|
}) |
|
.catch(() => { |
|
// catch error |
|
}); |
|
}; |
|
// 未盘点数据请求 |
|
const NotCountedFn = (row, Inso, type = 0) => { |
|
TcPdloading.value = true; |
|
let dataInfo = { |
|
...Inso, |
|
}; |
|
dataInfo.questStatus = type; |
|
dataInfo.questNum = row.questNum; |
|
dataInfo.questId = row.id; |
|
dataInfo.current = TccurrentPage.value; //页码 |
|
dataInfo.size = TcpageSize.value; //条数 |
|
if (!DiskStatus.value) { |
|
dataInfo.questStatus = 0; |
|
} //表示当前在未盘点列表) |
|
$_getDetailInfo(dataInfo).then(res => { |
|
TcPdloading.value = false; |
|
console.log(res, '未盘点明细返回值'); |
|
res.data.data.records.forEach(item => { |
|
item.Checkbox = true; |
|
item.wLinputState = false; |
|
item.Input = null; |
|
}); |
|
TcPD.value = res.data.data.records; |
|
Tctotal.value = res.data.data.total; //总页码 |
|
}); |
|
}; |
|
|
|
// 未盘点明细 |
|
const DetailsNotCounted = row => { |
|
DiskStatus.value = false; //表示当前在未盘点列表 |
|
InventoryDetails.value.forEach(item => { |
|
item.values = null; |
|
}); |
|
|
|
UncountedDetails.value = row; |
|
row.value = row; |
|
InventoryState.value = true; //修改弹窗标题(未盘点数据), |
|
TcFrom.value = {}; //重置搜索 |
|
TccurrentPage.value = 1; //重置页码 |
|
UncheckedRow.value = row; //存储当前点击行的数据 |
|
console.log(row.value, '存储好的数据'); |
|
NotCounted.value = true; //展开未盘点 |
|
TcPdloading.value = true; |
|
PopupDetails.value = true; |
|
NotCountedFn(row); |
|
|
|
console.log(row.value, '未盘点明细存储值'); |
|
}; |
|
|
|
// 未盘点转已盘点按钮 |
|
const NotInventoried = val => { |
|
if (!Tcrow.value) { |
|
ElMessage({ |
|
showClose: true, |
|
message: '暂未选择信息', |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
let data = []; |
|
console.log(UncheckedRow.value, '提交盘点了'); |
|
Tcrow.value.forEach(item => { |
|
data.push({ |
|
id: item.id, |
|
questStatus: (item.questStatus = 1), |
|
questId: item.questId, |
|
questNum: UncheckedRow.value.questNum, |
|
}); |
|
}); |
|
console.log(data, '未盘点处理好的值'); |
|
$_updateDetailInfo(data).then(res => { |
|
console.log(res, '未盘点转为已盘点'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
showClose: true, |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
NotCountedFn(UncheckedRow.value); |
|
} |
|
}); |
|
}; |
|
// 对盘点中的参数,修改状态 |
|
const ModifyingStatus = () => { |
|
if (!Tcrow.value) { |
|
ElMessage({ |
|
showClose: true, |
|
message: '暂未选择信息', |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
counting.value = {}; //重置数据值对象 |
|
// 修改过的参数回显 |
|
$_getQuestChildInfo({ |
|
questNum: row.value.questNum, |
|
id: Tcrow.value[0].id, |
|
}).then(res => { |
|
console.log(res, '数量回显'); |
|
if (res.data.data.length) { |
|
res.data.data.forEach((item, index) => { |
|
counting.value[radioList.value[index].input] = item.questNum; |
|
}); |
|
} |
|
}); |
|
|
|
InventoryStatus.value = true; //展开状态选择 |
|
if (Tcrow.value[0].questTarget == 1) { |
|
//表示当前是定制品 |
|
TcStateSwitching.value = false; |
|
} else { |
|
TcStateSwitching.value = true; //表示当前是零担,库存品 |
|
} |
|
}; |
|
|
|
// 删除盘点任务包件(只能删除已盘) |
|
const BatchdeletePackages = () => { |
|
const invalidQuestStatusIndex = Tcrow.value.findIndex(item => item.questStatus !== 1); |
|
if (invalidQuestStatusIndex !== -1) { |
|
// 存在状态不为1的元素 |
|
ElMessage({ |
|
message: '只能删除已盘', |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
|
|
const data = { |
|
questDetailIds: Tcrow.value.map(item => item.id), |
|
questId: Tcrow.value[0]?.questId, |
|
questNum: row.value.questNum, |
|
}; |
|
console.log(data, '要删除处理好的数据'); |
|
$_questDetailIds(data).then(res => { |
|
TcViewEvent(row.value); |
|
console.log(res, '删除后的返回值'); |
|
if (res.data.code === 200) { |
|
ElMessage({ |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
} |
|
}); |
|
}; |
|
|
|
// 信息编辑弹窗关闭的时候重置保存的数据 |
|
const closeInformationediting = () => { |
|
Tcrow.value = null; |
|
}; |
|
// 盘点状态选择 |
|
const TcReac = val => { |
|
console.log(val); |
|
InventoryInput.value = val; //存储当前选择的是第几个input |
|
if (!TcStateSwitching.value) { |
|
//定制品规则 可以批量操作 |
|
radioList.value.forEach(item => { |
|
item.disabled = true; |
|
counting.value[item.input] = 0; |
|
}); |
|
radioList.value[val].disabled = false; |
|
counting.value[radioList.value[val].input] = 1; //定制品选中的值默认为1 |
|
} else { |
|
//零担,库存品规则 |
|
if (!TcnumStatu.value) { |
|
radioList.value.forEach(item => { |
|
item.disabled = true; |
|
counting.value[item.input] = 0; |
|
}); |
|
TcnumStatu.value = true; //表示当前零担库存品已经初始化了 |
|
} else { |
|
radioList.value[val].disabled = false; |
|
} |
|
} |
|
}; |
|
// 零担,库存品多选处理 |
|
function updateFlag(ids, contents, newFlag) { |
|
contents.forEach((content, index) => { |
|
if (ids.includes(content.txt)) { |
|
content.disabled = newFlag; |
|
counting.value[content.input] = 1; |
|
} else { |
|
content.disabled = !newFlag; |
|
counting.value[content.input] = 0; |
|
} |
|
}); |
|
console.log(radioList.value); |
|
} |
|
// 状态多选操作 |
|
const Tcmultiple = val => { |
|
updateFlag(val, radioList.value, false); //吧选中的状态设为可以修改 |
|
}; |
|
|
|
// 盘点状态确认修改 |
|
const StatusDetermination = () => { |
|
console.log(row.value, 'row.value'); |
|
if (!TcStateSwitching.value) { |
|
//为假表示当前走定制品规则 |
|
//定制品规则 |
|
let InputMax = counting.value[radioList.value[InventoryInput.value].input]; //存储当前输入框最大值 |
|
if (InputMax > Tcrow.value[0].questTarget) { |
|
ElMessage({ |
|
showClose: true, |
|
message: `总数[${InputMax}]不能超过在库数量[${Tcrow.value[0].questTarget}]`, |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
console.log(counting.value, '状态输入框的值'); |
|
let start = Tcrow.value.questTarget; |
|
let data = []; |
|
const filteredData = Tcrow.value.filter(item => item.name == start); // |
|
filteredData.forEach(item => { |
|
console.log(item); |
|
data.push({ |
|
stockNum: counting.value.stockNum, //在库数量 |
|
lossNum: counting.value.lossNum, //丢失数量 |
|
deliveNum: counting.value.deliveNum, //配送数量 |
|
wornNum: counting.value.wornNum, //破损数量 |
|
noRepairNum: counting.value.noRepairNum, //不可修复数量 |
|
noReceivedNum: counting.value.noReceivedNum, //未入库数量 |
|
questNum: row.value.questNum, //任务编号 |
|
questId: item.questId, |
|
allocationId: item.allocationId, //上架后的库位id |
|
id: item.id, |
|
cargoName: Number(InventoryInput.value + 1 + '0'), //状态 |
|
}); |
|
}); |
|
console.log(data, '处理好的数据'); |
|
|
|
$_updateQuestChildInfo(data).then(res => { |
|
console.log(res, '盘点状态修改完成的返回值'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
showClose: true, |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
InventoryStatus.value = false; //关闭状态选择 |
|
TcViewEvent(row.value); |
|
} |
|
}); |
|
} else { |
|
// 零担,库存品规则 |
|
console.log(counting.value, 'input输入框的数据'); |
|
console.log(Tcrow.value, 'questId'); |
|
let data = [ |
|
{ |
|
stockNum: counting.value.stockNum, //在库数量 |
|
wornNum: counting.value.wornNum, //破损数量 |
|
lossNum: counting.value.lossNum, //丢失数量 |
|
noRepairNum: counting.value.noRepairNum, //不可修复数量 |
|
deliveNum: counting.value.deliveNum, //配送数量 |
|
noReceivedNum: counting.value.noReceivedNum, //未入库数量 |
|
questNum: row.value.questNum, //任务编号 |
|
questId: Tcrow.value[0].questId, //零担和库存品一次只能操作第一条数据,这里暂取第一个选中的数据,后续的数据无效操作 |
|
allocationId: Tcrow.value[0].allocationId, //上架后的库位id |
|
id: Tcrow.value[0].id, |
|
cargoName: TcReaJoin.value.join(), //状态 |
|
}, |
|
]; |
|
let sum = |
|
data[0].stockNum + |
|
data[0].wornNum + |
|
data[0].lossNum + |
|
data[0].noRepairNum + |
|
data[0].deliveNum + |
|
data[0].noReceivedNum; |
|
if (sum > Tcrow.value[0].stockNum) { |
|
ElMessage({ |
|
showClose: true, |
|
message: `总数[${sum}]不能超过在库数量[${Tcrow.value[0].stockNum}]`, |
|
type: 'error', |
|
}); |
|
return; |
|
} |
|
console.log(data, '处理好的数据'); |
|
$_updateQuestChildInfo(data).then(res => { |
|
console.log(res, '盘点状态修改完成的返回值'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
showClose: true, |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
InventoryStatus.value = false; //关闭状态选择 |
|
TcViewEvent(row.value); |
|
} |
|
}); |
|
} |
|
}; |
|
|
|
const optionss = ref([]); |
|
const list = ref([]); |
|
const remoteMethod = query => { |
|
if (query !== '') { |
|
optionss.value = list.value.filter(item => { |
|
return item.label.toLowerCase().includes(query.toLowerCase()); |
|
}); |
|
} else { |
|
optionss.value = []; |
|
} |
|
}; |
|
// 多选数据状态处理 |
|
const Tclist = val => { |
|
console.log(val); |
|
if (val >= 1 && val <= 6 && !radioList.value[val - 1].disabled) { |
|
if (!TcReaJoin.value.includes(val * 10)) { |
|
TcReaJoin.value.push(val * 10); |
|
} |
|
} else { |
|
const index = TcReaJoin.value.indexOf(val * 10); |
|
if (index !== -1) { |
|
TcReaJoin.value.splice(index, 1); |
|
} |
|
} |
|
console.log(TcReaJoin.value, '处理好的数据'); |
|
}; |
|
// 物料编码 |
|
|
|
const Wllist = ref([]); |
|
const WLCode = query => { |
|
if (query !== '') { |
|
optionss.value = Wllist.value.filter(item => { |
|
return item.label.toLowerCase().includes(query.toLowerCase()); |
|
}); |
|
} else { |
|
optionss.value = []; |
|
} |
|
}; |
|
// 物料列表 |
|
const Wloptions = ref([]); |
|
// 物料信息搜索 |
|
const wLcheng = (val, info) => { |
|
console.log(val.undefined); |
|
console.log(info, '信息'); |
|
$_materialList({ |
|
name: val.undefined, |
|
}).then(res => { |
|
console.log(res, '物料查询'); |
|
if (!res.data.data.records.length) { |
|
ElMessageBox.confirm('暂无数据是否新增?') |
|
.then(() => { |
|
TcDataaddition.value = true; |
|
}) |
|
.catch(() => { |
|
// catch error |
|
}); |
|
} else { |
|
// productCode |
|
// wLinputState.value=true;//开启下拉选择 |
|
|
|
info.wLinputState = true; |
|
// Wloptions.value 下拉选择变量 |
|
res.data.data.records.forEach(item => { |
|
Wloptions.value.push({ |
|
label: item.name, |
|
value: item.name, |
|
}); |
|
}); |
|
} |
|
}); |
|
}; |
|
|
|
// 盘点详情编辑 |
|
const InventoryEditing = val => { |
|
$_getList({ |
|
current: 1, //页码 |
|
size: 10000, //条数 |
|
warehouseId: val.warehouseId, |
|
}).then(res => { |
|
console.log(res); |
|
|
|
if (res.data.data.records) { |
|
list.value = res.data.data.records.map(item => { |
|
return { value: `${item.id}`, label: `${item.qrCode}` }; |
|
}); |
|
console.log(list.value); |
|
} |
|
}); |
|
|
|
counting.value = {}; //重置数据值对象 |
|
WrapBarEditing.value.radio = null; |
|
readList.value = []; |
|
// 修改过的参数回显 |
|
$_getQuestChildInfo({ |
|
questNum: row.value.questNum, |
|
id: val.id, |
|
}).then(res => { |
|
console.log(res, '数量回显'); |
|
if (res.data.data.length) { |
|
res.data.data.forEach((item, index) => { |
|
counting.value[radioList.value[index].input] = item.questNum; |
|
}); |
|
} |
|
}); |
|
|
|
Tcrow.value = val; |
|
if (val.questTarget == 1) { |
|
TcStateSwitching.value = false; //定制品规则 |
|
} else { |
|
TcStateSwitching.value = true; //库存品,零担规则 |
|
} |
|
PopupEditing.value = true; |
|
Inventoryrow.value = val; //存一份响应式数据 |
|
const copiedObject = Object.assign({}, val); |
|
console.log(val, '盘点详情编辑'); |
|
WrapBarEditing.value.orderPackageCode = copiedObject.orderPackageCode; //包条 |
|
WrapBarEditing.value.orderCode = copiedObject.orderCode; //订单自编号 |
|
WrapBarEditing.value.positionCode = copiedObject.positionCode; //货位 |
|
}; |
|
// 信息编辑弹窗提交 |
|
const InformationEditing = () => { |
|
TcPdloading.value = true; |
|
console.log(WrapBarEditing.value, 'WrapBarEditing.value'); |
|
let data = [ |
|
{ |
|
orderCode: WrapBarEditing.value.orderCode, //订单编号 |
|
groundingPositionCode: WrapBarEditing.value.groundingPositionCode, //新的货位 |
|
stockNum: counting.value.stockNum, //在库数量 |
|
lossNum: counting.value.lossNum, //丢失数量 |
|
deliveNum: counting.value.deliveNum, //配送数量 |
|
wornNum: counting.value.wornNum, //破损数量 |
|
noRepairNum: counting.value.noRepairNum, //不可修复数量 |
|
noReceivedNum: counting.value.noReceivedNum, //未入库数量 |
|
allocationId: Tcrow.value.allocationId, //上架后的库位id |
|
questId: Tcrow.value.questId, |
|
questNum: row.value.questNum, //任务编号 |
|
id: Tcrow.value.id, |
|
}, |
|
]; |
|
if (WrapBarEditing.value.groundingPositionCode) { |
|
let val = list.value.find(obj => obj.value == WrapBarEditing.value.groundingPositionCode); |
|
console.log(data, '货位处理好的数据'); |
|
data[0].groundingAllocationId = val.value; |
|
data[0].groundingPositionCode = val.label; |
|
} |
|
if (!TcStateSwitching.value) { |
|
//为假表示当前走定制品规则 |
|
let InputMax = counting.value[radioList.value[InventoryInput.value].input]; //存储当前输入框最大值 |
|
if (InputMax > Tcrow.value.questTarget) { |
|
ElMessage({ |
|
showClose: true, |
|
message: `总数[${InputMax}]不能超过在库数量[${Tcrow.value.questTarget}]`, |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
|
|
console.log(data, '处理好的数据'); |
|
} else { |
|
let sum = |
|
data[0].stockNum + |
|
data[0].wornNum + |
|
data[0].lossNum + |
|
data[0].noRepairNum + |
|
data[0].deliveNum + |
|
data[0].noReceivedNum; |
|
if (sum > Tcrow.value.stockNum) { |
|
ElMessage({ |
|
showClose: true, |
|
message: `总数[${sum}]不能超过在库数量[${Tcrow.value.stockNum}]`, |
|
type: 'error', |
|
}); |
|
return; |
|
} |
|
(data[0].cargoName = TcReaJoin.value.join()), //状态 //状态 |
|
console.log(data, '处理好的数据d'); |
|
} |
|
$_updateQuestChildInfo(data).then(res => { |
|
console.log(res, '盘点状态修改完成的返回值'); |
|
if (res.data.code == 200) { |
|
ElMessage({ |
|
showClose: true, |
|
message: res.data.msg, |
|
type: 'success', |
|
}); |
|
WrapBarEditing.value = {}; //重置提交表单 |
|
InventoryStatus.value = false; //关闭状态选择 |
|
TcViewEvent(row.value); |
|
} |
|
}); |
|
PopupEditing.value = false; //关闭弹窗 |
|
TcFrom.value = {}; //重置搜索对象 |
|
}; |
|
|
|
// 弹窗品类搜索 |
|
const TcChenge = (event, val) => { |
|
// 开始时间 startTime |
|
// 结束时间 endTime |
|
console.log(event, val); |
|
TcPdloading.value = true; |
|
console.log(row.value, '必须参数'); |
|
console.log(UncountedDetails.value.questNum, 'questNum'); |
|
let quest = UncountedDetails.value.questNum; |
|
let qstId = UncountedDetails.value.id; |
|
let data = { |
|
current: TccurrentPage.value, //页码 |
|
size: TcpageSize.value, //条数 |
|
...TcFrom.value, |
|
questNum: quest, |
|
questId: qstId, |
|
}; |
|
console.log(event, 'event'); |
|
if (event) { |
|
if (event.length == 2) { |
|
//时间 |
|
data.startTime = event[0]; |
|
data.endTime = event[1]; |
|
delete data.inventoryDate; |
|
} |
|
} |
|
console.log(DiskStatus.value, 'DiskStatus.value'); |
|
if (DiskStatus.value) { |
|
data.questStatus = 1; |
|
} else { |
|
data.questStatus = 0; |
|
} |
|
$_getDetailInfo(data).then(res => { |
|
Tctotal.value = res.data.data.total; |
|
res.data.data.records.forEach(item => { |
|
item.Checkbox = true; |
|
item.wLinputState = false; |
|
item.Input = null; |
|
}); |
|
TcPdloading.value = false; |
|
console.log(res, '明细返回值'); |
|
TcPD.value = res.data.data.records; |
|
}); |
|
}; |
|
// 弹窗明细,每一页多少条 |
|
const TcPageSizeChange = val => { |
|
console.log('每一页多少条'); |
|
TcpageSize.value = val; |
|
if (NotCounted.value) { |
|
//表示当前是未盘点翻页 |
|
NotCountedFn(UncheckedRow.value, TcFrom.value); |
|
} else { |
|
console.log(val); |
|
TcViewEvent(row.value, TcFrom.value); |
|
} |
|
}; |
|
|
|
// 弹窗明细,选择了多少页 |
|
const TcSizeChange = val => { |
|
console.log('翻页'); |
|
TccurrentPage.value = val; |
|
if (NotCounted.value) { |
|
//表示当前是未盘点翻页 |
|
|
|
NotCountedFn(UncheckedRow.value, TcFrom.value); |
|
} else { |
|
console.log(val); |
|
TcViewEvent(row.value, TcFrom.value); |
|
} |
|
}; |
|
// 弹窗翻页 |
|
const TcpageList = val => { |
|
console.log(val, '弹窗翻页'); |
|
}; |
|
// 条数 |
|
const SizeChange = val => { |
|
console.log(val, '条数'); |
|
currentPage.value = val; |
|
onLoad(); |
|
}; |
|
// 翻页··························· |
|
const PageSizeChange = val => { |
|
console.log(val, '每页50条'); |
|
pageSize.value = val; |
|
onLoad(); |
|
}; |
|
// 对比数据单选按钮 |
|
const contrastselectChange = (select, val) => { |
|
console.log(select, val, '对比数据1'); |
|
}; |
|
// 对比数据全选按钮 |
|
const contrastselectAll = (select, val) => { |
|
console.log(select, val, '对比数据2'); |
|
}; |
|
|
|
// 关闭弹窗关闭回调 |
|
const handleClose = () => { |
|
PopupDetails.value = false; |
|
}; |
|
// 刷新页面按钮(初始化页面参数) |
|
const Refresh = () => { |
|
onLoad(); //初始化表格数据 |
|
}; |
|
|
|
// 获取盘点列表 |
|
// 搜索盘点任务 |
|
// const searchChange=()=>{ |
|
// console.log('触发搜索'); |
|
// $_getDetailInfo({...SoInfoData.value}).then(res=>{ |
|
// console.log(res,'搜索框的值'); |
|
// }) |
|
// } |
|
|
|
// 创建盘点任务 |
|
const InventoryTask = () => { |
|
formInventory.value = {}; |
|
formInventory.value.scname = []; |
|
let select = []; |
|
InventoryPopup.value = true; //开启创建盘点任务弹窗 |
|
getDictList().then(res => { |
|
console.log('创建盘点返回值', res); |
|
if (res.data.code == 200) { |
|
res.data.data.forEach(item => { |
|
console.log(item, '盘点任务返回值'); |
|
select.push({ |
|
clientName: item.clientName, // 商城名称 |
|
id: item.id, // 商场id |
|
brandName: item.brandName, // 商场下品牌名 |
|
}); |
|
}); |
|
formInventory.value.select = select; |
|
console.log(formInventory.value, '处理好的商场名称'); |
|
} |
|
}); |
|
}; |
|
|
|
// 处理商场名称函数根据传入ID读取列表中的商场 |
|
function matchInfoById(idArray, infoArray) { |
|
const matchedInfo = []; |
|
idArray.forEach(id => { |
|
const matchedItem = infoArray.find(item => item.id === id); |
|
if (matchedItem) { |
|
matchedInfo.push(matchedItem); |
|
} |
|
}); |
|
return matchedInfo; |
|
} |
|
|
|
// 商场名称选择回调 |
|
const formInventoryChange = val => { |
|
console.log('选择了商场名称'); |
|
formInventory.value.id = val; |
|
const matchedInfo = matchInfoById(val, formInventory.value.select); |
|
console.log(matchedInfo, '处理好的参数'); |
|
formInventory.value.brandName; |
|
let name = []; |
|
matchedInfo.forEach(item => { |
|
name.push(item.brandName); |
|
}); |
|
formInventory.value.brandName = name.join(','); //处理品牌名称显示 |
|
}; |
|
|
|
// 创建盘点任务弹窗关闭回调 |
|
const InventoryPopupClose = () => { |
|
console.log('创建盘点任务关闭弹窗回调'); |
|
}; |
|
// 盘点提交 |
|
const InventorySubmit = async () => { |
|
try { |
|
loadingObj.pageLoading = true; |
|
|
|
if (!formInventory.value.time) { |
|
ElMessage({ |
|
message: '请选择盘点任务时间', |
|
type: 'warning', |
|
}); |
|
return; |
|
} |
|
console.log(formInventory.value, '盘点选择好的参数'); |
|
// 创建提交表单 |
|
let SubData = {}; |
|
SubData.list = []; |
|
console.log(formInventory.value.scname, 'formInventory.value.scname.length'); |
|
if (!formInventory.value.scname.length && !formInventory.value.brandName) { |
|
// |
|
SubData.list = []; |
|
// 结束时间 |
|
SubData.endTime = formInventory.value.time[1]; |
|
// 开始时间 |
|
SubData.startTime = formInventory.value.time[0]; |
|
InventoryPopup.value = false; //关闭创建盘点任务弹窗 |
|
console.log(SubData, '处理好的数据'); |
|
const res = await postAddtaskQuest(SubData); |
|
if (res.data.code !== 200) return; |
|
|
|
ElMessage.success(res.data.msg); |
|
initTableData(); //体积之后初始化页面 |
|
|
|
console.log(res, '盘点计划提交成功'); |
|
|
|
return; |
|
} |
|
|
|
// 处理商场名称和商场ID |
|
const matchedInfo = matchInfoById(formInventory.value.id, formInventory.value.select); |
|
console.log(matchedInfo, 'matchedInfo'); |
|
console.log(matchedInfo, 'matchedInfo提交处理数据'); |
|
if (matchedInfo) { |
|
matchedInfo.forEach(item => { |
|
SubData.list.push({ |
|
refId: item.id, |
|
refName: item.clientName, |
|
}); |
|
}); |
|
} |
|
|
|
// 结束时间 |
|
SubData.endTime = formInventory.value.time[1]; |
|
// 开始时间 |
|
SubData.startTime = formInventory.value.time[0]; |
|
console.log(SubData, '处理好要提交的数据'); |
|
InventoryPopup.value = false; //关闭创建盘点任务弹窗 |
|
const res = await postAddtaskQuest(SubData); |
|
if (res.data.code !== 200) return; |
|
|
|
ElMessage.success(res.data.msg); |
|
initTableData(); //体积之后初始化页面 |
|
} catch (error) { |
|
console.log('error :>> ', error); |
|
} finally { |
|
loadingObj.pageLoading = false; |
|
} |
|
}; |
|
// 顶部废弃按钮 |
|
const discard = () => { |
|
if (details.selectionList.length === 0) return ElMessage.warning('请选择需要废弃的盘点任务'); |
|
|
|
const ids = details.selectionList.map(val => val.id).join(','); |
|
ElMessageBox.confirm('是否废弃该盘点任务?') |
|
.then(async () => { |
|
try { |
|
loadingObj.pageLoading = true; |
|
|
|
const res = await $_postBatchDelete({ ids }); |
|
const { code, msg } = res.data; |
|
if (code !== 200) return; |
|
ElMessage.success(msg || '废弃成功'); |
|
|
|
initTableData(); |
|
} catch (error) { |
|
console.log('error :>> ', error); |
|
} finally { |
|
loadingObj.pageLoading = false; |
|
} |
|
}) |
|
.catch(() => { |
|
// catch error |
|
}); |
|
}; |
|
|
|
// 顶部延期(延期只能单个延期) |
|
const DelayButton = () => { |
|
console.log('延期'); |
|
const _length = details.selectionList.length; |
|
if (_length === 0) return ElMessage.warning('请选择需要延期的数据(单选操作)'); |
|
else if (_length > 1) return ElMessage.warning('暂不支持批量操作'); |
|
TcData.value = details.selectionList[0].endTime; |
|
dialogTabData.value = true; |
|
}; |
|
|
|
/** 未盘点数据导出 */ |
|
const handleUncountedExport = () => { |
|
ElMessageBox.confirm('是否导出未盘点数据?').then(async () => { |
|
try { |
|
TcPdloading.value = true; |
|
const res = await postExportContrastStockInfo({ questNum: UncountedDetails.value.questNum }); |
|
if (res.status !== 200) return; |
|
|
|
downloadXls(res.data, '未盘点数据.xlsx'); |
|
} catch (error) { |
|
console.log('error :>> ', error); |
|
} finally { |
|
TcPdloading.value = false; |
|
} |
|
}); |
|
}; |
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
.maxContent { |
|
width: 100%; |
|
box-sizing: border-box; |
|
height: 100%; |
|
display: flex; |
|
flex-direction: column; |
|
} |
|
|
|
.SoInput { |
|
display: flex; |
|
justify-content: space-between; |
|
padding: 0 10px; |
|
margin-top: 10px; |
|
|
|
form { |
|
display: flex; |
|
flex-wrap: wrap; |
|
margin-top: 5px; |
|
|
|
:deep(.el-form-item) { |
|
margin-bottom: 0; |
|
} |
|
} |
|
|
|
.SoBtn { |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
} |
|
} |
|
|
|
.avue-crud__right { |
|
margin-top: 5px; |
|
display: flex; |
|
justify-content: space-between; |
|
margin-bottom: 5px; |
|
padding: 0 10px; |
|
} |
|
|
|
.demo-pagination-block { |
|
flex: 1; |
|
display: flex; |
|
align-items: flex-end; |
|
margin-bottom: 8px; |
|
justify-content: flex-end; |
|
margin-right: 6px; |
|
} |
|
|
|
.demo-pagination-blockPD { |
|
justify-content: space-between; |
|
} |
|
|
|
:deep(.el-table-column--selection) { |
|
text-align: center; |
|
} |
|
|
|
:deep(.el-dialog__footer) { |
|
display: flex; |
|
} |
|
|
|
:deep(.el-dialog__body) { |
|
padding-top: 0; |
|
} |
|
|
|
:deep(.el-dialog) { |
|
position: absolute; |
|
top: 50%; |
|
left: 50%; |
|
transform: translate(-50%, -50%); |
|
margin-top: 0; |
|
} |
|
|
|
.Tcstdialog-footer { |
|
display: flex; |
|
justify-content: flex-end; |
|
margin-top: 80px; |
|
} |
|
|
|
.Tcstate { |
|
display: flex; |
|
margin-bottom: 20px; |
|
|
|
.el-radio { |
|
width: 54px; |
|
} |
|
} |
|
|
|
.TcstateS { |
|
margin: 0 2%; |
|
margin-bottom: 30px; |
|
|
|
label { |
|
width: 80px; |
|
} |
|
} |
|
|
|
.tcradiogroup { |
|
display: inline-flex; |
|
align-items: flex-start; |
|
font-size: 0; |
|
flex-direction: row; |
|
flex-wrap: wrap; |
|
justify-content: space-between; |
|
} |
|
|
|
.el-checkbox-group { |
|
display: flex; |
|
flex-wrap: wrap; |
|
justify-content: space-between; |
|
} |
|
|
|
.el-input__inner { |
|
text-align: center; |
|
} |
|
|
|
.dbExPo { |
|
display: flex; |
|
justify-content: flex-end; |
|
margin-bottom: 10px; |
|
} |
|
.el-exDc { |
|
margin-left: 20px; |
|
color: #10d070; |
|
cursor: pointer; |
|
} |
|
:deep(.el-dialog) { |
|
display: flex; |
|
flex-direction: column; |
|
justify-content: flex-start; |
|
.el-dialog__footer { |
|
flex: 1; |
|
} |
|
.dialog-footer { |
|
display: flex; |
|
align-items: flex-end; |
|
} |
|
} |
|
.fullScreen { |
|
display: flex; |
|
margin-left: auto; |
|
align-items: center; |
|
justify-content: center; |
|
i { |
|
width: 20px; |
|
height: 20px; |
|
svg { |
|
height: 100%; |
|
width: 100%; |
|
} |
|
} |
|
} |
|
:deep(.el-input__wrapper) { |
|
height: 30px; |
|
} |
|
:deep(.el-input__inner) { |
|
height: 100% !important; |
|
} |
|
.pdsj { |
|
:deep(.el-input__wrapper) { |
|
height: 30px !important; |
|
} |
|
} |
|
.ElBtnClass { |
|
.el-button { |
|
padding: 0; |
|
border: none; |
|
background-color: transparent; |
|
} |
|
} |
|
|
|
.w100 { |
|
width: 100% !important; |
|
} |
|
</style>
|
|
|