<template>
|
<div class="wmsRecordTrans-container">
|
<el-dialog v-model="dialogVisible" :title="dialogType == 'add'
|
? '添加盘点单'
|
: dialogType == 'edit'
|
? '编辑盘点单'
|
: '盘点单详情'
|
" width="60%" @close="closeDialog">
|
<el-form :model="addForm" label-width="110px" ref="dialogRef" :rules="formRules">
|
<el-row>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
<el-form-item label="盘点方式" prop="checkMode">
|
<el-select :disabled="dialogType == 'detail'" v-model="addForm.checkMode" placeholder="请选择盘点方式" style="width: 100%">
|
<el-option v-for="item in getEnumCheckModeData_Index" :key="item.value" :value="item.value" :label="`${item.describe}`" />
|
</el-select>
|
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="计划盘点时间" prop="CreateDate">
|
<el-date-picker :disabled="dialogType == 'detail'" v-model="addForm.CreateDate" type="datetimerange" range-separator="至"
|
start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD HH:mm:ss" :default-time="[
|
new Date(2000, 1, 1, 0, 0, 0),
|
new Date(2000, 1, 1, 23, 59, 59),
|
]" value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
|
</el-form-item>
|
</el-col>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
<el-form-item label="备注">
|
<el-input v-model="addForm.remarks" clearable :disabled="dialogType == 'detail'" placeholder="请输入备注" />
|
</el-form-item>
|
</el-col>
|
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
|
<el-form-item label="选择库区">
|
<el-select v-model="addForm.areaName" :disabled="dialogType == 'detail'" clearable placeholder="请选择需要盘点的库区" multiple
|
collapse-tags style="width: 100%">
|
<el-option v-for="item in arrTdpArea" :key="item.value" :label="item.title" :value="item.value" />
|
</el-select>
|
<el-tag type="success" v-show="addForm.areaName && addForm.areaName.length > 0"
|
style="margin-top: 10px;">{{ addForm.areaName }}</el-tag>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<!-- 盘点物料 -->
|
<div class="msi-content" style="margin-top: 0">
|
<div class="header">
|
<div>
|
<el-button type="primary" icon="el-icon-plus" @click="addMaterialDialog" v-if="dialogType != 'detail'">新增物料</el-button>
|
<el-button icon="el-icon-delete" plain :disabled="checkedDetails.length == 0"
|
@click="delCheckedDetails" v-if="dialogType != 'detail'">删除选中行</el-button>
|
<!-- <el-button icon="el-icon-download" plain @click="getMaterialTemplate"
|
>下载导入模板</el-button
|
>
|
<el-button icon="el-icon-upload2" plain @click="openUploadDialog"
|
>批量导入</el-button
|
> -->
|
</div>
|
<br />
|
</div>
|
<el-table :data="warehousOrderDetails" border style="width: 100%" row-key="wareMaterialCode" ref="detailRef"
|
@selection-change="detailsCheckChange" max-height="480">
|
<el-table-column align="center" width="60" type="selection" />
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column label="物料编号" min-width="140" prop="materialCode" align="center" show-overflow-tooltip />
|
<el-table-column label="物料名称" min-width="140" prop="materialName" align="center" show-overflow-tooltip />
|
|
<!-- <el-table-column label="数量" align="center" width="180">
|
<template #default="scope">
|
<el-input-number :precision="3" min="0" v-model="scope.row.quantity" size="small" />
|
</template>
|
</el-table-column> -->
|
</el-table>
|
</div>
|
<template #footer>
|
<span class="dialog-footer">
|
<!-- <el-button @click="planBl" v-if="addForm.CheckType == 0 && dialogType != 'detail'">计算比例</el-button> -->
|
<el-button @click="dialogVisible = false">取消</el-button>
|
<el-button v-if="dialogType != 'detail'" type="primary" :disabled="disabled_btn" @click="confirm">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<!-- 添加物料 -->
|
<el-dialog v-model="addMaterialVisible" title="添加物料详情" width="60%" @close="closeMaterialDialog">
|
<div class="msi-form" style="padding-top: 0px">
|
<el-form :model="materialForm" label-width="90px">
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="物料编号">
|
<el-input v-model="materialForm.MaterialCode" placeholder="请输入物料编号" clearable></el-input>
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="8">
|
<el-form-item label="物料名称:">
|
<el-input v-model="materialForm.MaterialName" placeholder="请输入物料名称" clearable></el-input>
|
</el-form-item>
|
</el-col>
|
|
<!-- <el-col :span="8">
|
<el-form-item label="批次:">
|
<el-input v-model="materialForm.BatchNo" placeholder="请输入物料批次" clearable></el-input>
|
</el-form-item>
|
</el-col> -->
|
|
<el-col :span="8">
|
<el-form-item>
|
<el-button type="primary" icon="el-icon-search" @click="getMaterialList">查询</el-button>
|
<!-- <el-button icon="el-icon-refresh-right" @click="resetMaterialForm"
|
>重置</el-button
|
> -->
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<br />
|
<div class="msi-content" style="padding-top: 0; margin-top: 0px">
|
<el-table :data="materialList" border style="width: 100%" row-key="wareMaterialCode" ref="materialRef"
|
@selection-change="materialSelectionChange">
|
<el-table-column align="center" width="60" type="selection" />
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column label="物料编号" prop="materialCode" align="center" min-width="140" show-overflow-tooltip />
|
<el-table-column label="物料名称" prop="materialName" align="center" min-width="140" show-overflow-tooltip />
|
<el-table-column label="采购单位" prop="poUnit" align="center" min-width="140" show-overflow-tooltip />
|
</el-table>
|
<Pagination :total="materialTotal" v-model:page="materialForm.Page" v-model:limit="materialForm.PageSize"
|
@pagination="getMaterialList" style="margin-top: 20px; text-align: center"></Pagination>
|
</div>
|
<template #footer>
|
<span class="dialog-footer">
|
<el-button @click="addMaterialVisible = false">取消</el-button>
|
<el-button type="primary" @click="confirmAddMaterial">确认</el-button>
|
</span>
|
</template>
|
</el-dialog>
|
<!-- 盘点计划范围 -->
|
<el-drawer v-model="drawerVisible" title="计划范围" direction="rtl" size="80%" @close="handleDrawerClose">
|
<template #title>
|
<div class="slot_title">
|
<div class="title_orderNo">{{ orderNo }}</div>
|
<div>计划范围</div>
|
</div>
|
</template>
|
<el-table :data="deltailList" border striped style="width: 96%; margin: 10px auto">
|
<el-table-column label="序号" align="center" width="60" type="index" />
|
<el-table-column label="物料编号" prop="wareMaterialCode" align="center" />
|
<el-table-column label="物料名称" prop="wareMaterialName" align="center" />
|
<el-table-column label="数量" prop="quantity" align="right" />
|
<el-table-column label="单价" prop="price" align="center">
|
<template #default="scope">
|
{{ amountFormat(scope.row.price + "", 2, false) }}
|
</template>
|
</el-table-column>
|
<el-table-column label="总价" align="center">
|
<template #default="scope">
|
{{ amountFormat(scope.row.price * scope.row.quantity + "", 2, false) }}
|
</template>
|
</el-table-column>
|
<el-table-column label="批次" prop="batchNo" align="center" />
|
<el-table-column label="仓库" prop="wareStorehouseName" align="center" />
|
<el-table-column label="库区" prop="wareRegionName" align="center" />
|
<el-table-column label="库位名称" prop="wareLocationName" align="center" />
|
<el-table-column label="容器编号" prop="wareContainerCode" align="center" />
|
</el-table>
|
<Pagination :total="detailCount" v-model:page="detailForm.Page" v-model:limit="detailForm.PageSize"
|
@pagination="getDetail" style="margin-top: 20px; text-align: center"></Pagination>
|
</el-drawer>
|
|
</div>
|
</template>
|
|
<script lang="ts" setup>
|
import { ref, nextTick, computed, watch, onMounted } from "vue";
|
import {
|
getCheckPlanPage,
|
getCheckPlanOrder,
|
addCheckPlan,
|
editCheckPlan,
|
deleteCheckPlan,
|
getMaterialPage,
|
getCheckPlanDetail,
|
getCheckPlanRange,
|
getCatList,
|
getTemplate,
|
passCheckTjPlan,
|
passCheckChPlan,
|
getCheckPlanBl,
|
getCheckPlanBlBj,
|
getCheckPlanTimeOrder,
|
getCheckPlanOpen,
|
} from "/@/api/main/Check/checkOrder";
|
import { getCheckRulesOrder, getCheckRulesPage } from "/@/api/main/Check/checkRules";
|
import { addWmsInventoryCheckPlan, updateWmsInventoryCheckPlan, detailWmsInventoryCheckPlan } from "/@/api/main/Check/wmsInventoryCheckPlan";
|
// import { getAreaInfoList } from "/@/api/main/warehouse";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
import { addWmsInventoryCheckOrder, updateWmsInventoryCheckOrder, detailWmsInventoryCheckOrder } from "/@/api/main/WmsInventory/wmsInventoryCheckOrder";
|
|
import { pageWmsInventoryCheckRange, deleteWmsInventoryCheckRange,importExcelWmsInventoryCheckRange,downloadExcelTemplateWmsInventoryCheckRange,listWmsInventoryCheckRange } from '/@/api/main/WmsInventory/wmsInventoryCheckRange';
|
|
import { getAPI } from '/@/utils/axios-utils';
|
import { SysEnumApi } from '/@/api-services/api';
|
import commonFunction from '/@/utils/commonFunction';
|
import Pagination from "/@/components/Pagination/index.vue";
|
const loading = ref(false);
|
import {
|
addDate,
|
amountFormat,
|
formatUtcToData,
|
getTypeStatus,
|
formatDecimalData,
|
} from "/@/utils/formate";
|
import { pageWmsInventoryCheckPlan } from "/@/api/main/Check/wmsInventoryCheckPlan";
|
|
import {
|
formatDate,
|
formatDate_T_Date,
|
formatDate_T_Time,
|
defaultTimeRange,
|
} from "/@/utils/formatTime";
|
import { pageWmsMaterial } from "/@/api/main/WmsBase/wmsMaterial";
|
import { handleSlectDataWmsArea } from "/@/utils/selectData";
|
import { pageWmsInventoryCheckPlanDetails } from "/@/api/main/Check/wmsInventoryCheckPlanDetails";
|
|
|
const emits = defineEmits(["getTabelData"]);
|
|
// import MsiUpload from "/@/common-ui/upLoad/MsiUpload.vue";
|
// import { ExcellTableDataExport } from "/@/hooks/exportTableDataExcell";
|
// import { expandMore } from "/@/hooks/expandMore";
|
// 上传窗口
|
const uploadVisible = ref(false);
|
//打开导入窗口
|
const openUploadDialog = () => {
|
uploadVisible.value = true;
|
};
|
//关闭窗口
|
const closeUploadDialog = () => {
|
getTabelData();
|
};
|
|
|
const getEnumCheckModeData_Index = ref<any>([]);
|
|
|
const store = {
|
state: {
|
login: {
|
enums: {},
|
},
|
},
|
};
|
|
const checkTypeEnum100 = ref<any[]>([{ value: 2, title: "静态盘点" }]);
|
|
//计划类型枚举
|
const checkMarkEnum = computed(
|
() => {
|
[];
|
}
|
|
// store.state.login.enums.checkMarkEnum
|
);
|
|
//当亲仓库下的库区枚举
|
const wareRegionEnum = ref<{ value: string; title: string }[]>([]);
|
|
//获取物料大类
|
const catListEnum = ref<{ value: string; title: string }[]>([]);
|
|
|
// --------------查询-----------------------
|
//查询
|
const formModel = ref({
|
OrderNo: "",
|
Status: "",
|
Page: 1,
|
PageSize: 10,
|
BeginDate: "",
|
checkType: "",
|
checkMark: "",
|
regionName: "",
|
ruleCheckTypeName: "",
|
checkTypeName: "",
|
EndDate: "",
|
IsQueryAll: false,
|
OrderMenuType: 43, //盘点计划创建
|
CreateTime: [],
|
});
|
|
//盘点计划列表
|
let tableData = ref([]);
|
|
//列表的数据条数
|
const totalItems = ref<number>(0);
|
const tableRef = ref([]);
|
|
const loadingWmsInventoryCheckPlan = ref(false);
|
const disabled_btnWmsInventoryCheckPlan = ref(false);
|
const tableDataWmsInventoryCheckPlan = ref<any>([]);
|
const queryParamsWmsInventoryCheckPlan = ref<any>({});
|
|
|
|
//选中的行
|
const checkRows = ref<{ id: number }[]>([]);
|
|
// 选择
|
const handleSelectionChange = (val: any) => {
|
checkRows.value = val;
|
};
|
// ------------封装导出功能1--前端导出--根据搜索条件导出---------------
|
// const jsonExcellTableExport = {
|
// titleName: "", //导出表格名称
|
// interfaceListName: "", //导出接口名称
|
// };
|
// const {
|
// getExportTitle,
|
// handleExportExcell,
|
// formExport,
|
// entozhExcell,
|
// } = ExcellTableDataExport(jsonExcellTableExport);
|
// --------------end 封装导出功能1--根据搜索条件导出-----------------
|
//导出
|
const handExport = () => {
|
//导出调用接口
|
const { Page, PageSize, ...rest } = formModel.value;
|
getCheckPlanPage({ Page: 1, PageSize: 1000000, ...rest }).then((res) => {
|
if (res.code == 200) {
|
res.data.rows.forEach((item) => {
|
// item.orderStatus = getStatusStr(item.orderStatus)
|
item.checkMark = checkMarkEnum.value.filter(
|
(v: any) => v.value == item.checkMark
|
)[0]?.title;
|
item.ruleRate = item.ruleRate + "%";
|
// item.orderSortStatus = OrderSortStatusEnum_List.value.filter((v: any) => v.value == item.orderSortStatus)[0].title;
|
});
|
// exportExcel(
|
// res.data.rows,
|
// entozhExcell,
|
// "xlsx",
|
// `盘点计划信息表${formatUtcToData(new Date().toString(), "YYYY-MM-DD hh:mm:ss")}`
|
// );
|
}
|
});
|
};
|
|
|
//-------------------------盘点计划范围-------------------------
|
//入库单下物料详情请求
|
const detailForm = ref({
|
orderId: "",
|
CheckType: "",
|
Page: 1,
|
PageSize: 10,
|
});
|
|
// 物料详情抽屉
|
const drawerVisible = ref(false);
|
|
//单据号
|
const orderNo = ref("");
|
|
//打开抽屉
|
const openDrawer = (scope: any = {}) => {
|
//当前入库单号id
|
detailForm.value.orderId = scope.id;
|
detailForm.value.CheckType = scope.checkType;
|
//计划号
|
orderNo.value = scope.orderNo;
|
//获取物料列表
|
getDetail();
|
drawerVisible.value = true;
|
};
|
|
//关闭抽屉
|
const handleDrawerClose = () => {
|
detailForm.value = {
|
orderId: "",
|
CheckType: "",
|
Page: 1,
|
PageSize: 10,
|
};
|
|
deltailList.value = [];
|
detailCount.value = 0;
|
};
|
|
//盘点计划范围列表
|
const deltailList = ref<any[]>([]);
|
|
//盘点计划范围数据条数
|
const detailCount = ref(0);
|
|
//盘点计划范围
|
const getDetail = () => {
|
getCheckPlanRange(detailForm.value)
|
.then((res) => {
|
if (res.code == 200) {
|
const { data } = res;
|
const result = data;
|
deltailList.value = result.rows;
|
detailCount.value = result.totalRows;
|
} else {
|
ElMessage.error(
|
JSON.stringify(`获取计划范围失败${res.code}:${JSON.stringify(res.message)}`)
|
);
|
}
|
})
|
.catch((err) => ElMessage.error(JSON.stringify(err)));
|
};
|
// ---------------添加编辑逻辑-------------------------
|
//获取规则单号
|
const getPlanOrder = () => {
|
getCheckPlanOrder()
|
.then((res) => {
|
if (res.code == 200) {
|
addForm.value.orderNo = res.data;
|
} else {
|
return ElMessage.error(`获取单盘点规则序列号失败${res.code}:${res.message}`);
|
}
|
})
|
.catch((err) => ElMessage.error(`获取盘点规则单号失败${err}`));
|
};
|
|
//窗口类型
|
const dialogType = ref("add");
|
|
const dialogVisible = ref(false);
|
|
//操作表单ref
|
const dialogRef = ref();
|
|
const showAdvanceQueryUIWmsInventoryCheckPlanDetails = ref(false);
|
const tableRefWmsInventoryCheckPlanDetails = ref(null);
|
const printDialogRefWmsInventoryCheckPlanDetails = ref();
|
const editDialogRefWmsInventoryCheckPlanDetails = ref();
|
const loadingWmsInventoryCheckPlanDetails = ref(false);
|
const disabled_btnWmsInventoryCheckPlanDetails = ref(false);
|
const tableDataWmsInventoryCheckPlanDetails = ref<any>([]);
|
const queryParamsWmsInventoryCheckPlanDetails = ref<any>({});
|
const tableParamsWmsInventoryCheckPlanDetails = ref({
|
page: 1,
|
pageSize: 100000,
|
total: 0,
|
});
|
|
//获取盘点计划明细
|
const getPlanDetail = async (id: number, checkType: number) => {
|
loadingWmsInventoryCheckPlanDetails.value = true;
|
disabled_btnWmsInventoryCheckPlanDetails.value = true;
|
var res = await listWmsInventoryCheckRange({
|
orderId:id
|
});
|
if (res.data.type == "success") {
|
warehousOrderDetails.value = res.data.result ?? [];
|
}
|
loadingWmsInventoryCheckPlanDetails.value = false;
|
disabled_btnWmsInventoryCheckPlanDetails.value = false;
|
|
};
|
|
//打开窗口
|
const openDialog = async (type: number, scope: any = {}) => {
|
dialogVisible.value = true;
|
debugger;
|
handleQueryTdpArea();
|
|
getEnumCheckModeData_Index.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('CheckModeEnum')).data.result ?? [];
|
|
|
if (type == 1) {
|
// getPlanOrder();
|
// getRulesOrder();
|
dialogType.value = "add";
|
} else if (type == 2) {
|
dialogType.value = "edit";
|
addForm.value =JSON.parse(JSON.stringify(scope));
|
if(addForm.value.areaName){
|
debugger
|
addForm.value.areaName = addForm.value.areaName.split(",");
|
addForm.value.areaCode = addForm.value.areaCode.split(",");
|
|
}
|
addForm.value.CreateDate = [scope.planStartDate, scope.planEndDate];
|
getPlanDetail(scope.id, scope.checkType);
|
|
} else if (type == 3) {
|
dialogType.value = "detail";
|
addForm.value =JSON.parse(JSON.stringify(scope));
|
if(addForm.value.areaName){
|
debugger
|
addForm.value.areaName = addForm.value.areaName.split(",");
|
addForm.value.areaCode = addForm.value.areaCode.split(",");
|
|
}
|
addForm.value.CreateDate = [scope.planStartDate, scope.planEndDate];
|
getPlanDetail(scope.id, scope.checkType);
|
}
|
|
nextTick(() => {
|
if (dialogRef) {
|
dialogRef.value.clearValidate();
|
}
|
});
|
};
|
|
//添加/编辑
|
let addForm = ref({
|
checkMode: "",
|
planDate: "",
|
remarks: "",
|
areaName:[],
|
areaCode:[],
|
materials: [] as { wareMaterialCode: string; }[]
|
});
|
|
//监视库区的选择变化,获取当前仓库下的库区列表
|
// watch(
|
// () => addForm.value.storehouse.wareStorehouseCode,
|
// (value) => {
|
// addForm.value.storehouse.wareRegionCode = [];
|
// if (value) {
|
// getwareRegion();
|
// } else {
|
// //如果清空了库区,库位信息为空
|
// wareRegionEnum.value = [];
|
// }
|
// }
|
// );
|
|
//监视盘点维度的变化,如果选择盘点物料,默认勾选一个指定的全盘
|
// watch(
|
// () => addForm.value.checkType,
|
// (val) => {
|
// if (val == 1) {
|
// //盘点物料
|
// addForm.value.ruleNo = "386109304414277";
|
// addForm.value.ruleName = "盘点物料";
|
// addForm.value.rate = 100;
|
// } else {
|
// addForm.value.ruleNo = "";
|
// addForm.value.ruleName = "";
|
// getRulesOrder();
|
// }
|
// }
|
// );
|
|
//时间选择不能大于当前时间
|
const disabledDate = (time: Date) => {
|
return time.getTime() < Date.now();
|
};
|
|
//rules
|
const formRules = {
|
checkMode: [{ required: true, message: "盘点方式不能为空", trigger: "blur" }],
|
CreateDate: [{ required: true, message: "计划盘点时间不能为空", trigger: "blur" }]
|
};
|
const disabled_btn = ref(false);
|
//操作提交
|
const confirm = () => {
|
dialogRef.value.validate(async (vali: any) => {
|
if (vali) {
|
addForm.value.materials = warehousOrderDetails.value;
|
|
if (addForm.value.CreateDate && addForm.value.CreateDate.length > 0) {
|
addForm.value.PlanStartDate = addForm.value.CreateDate[0];
|
addForm.value.PlanEndDate = addForm.value.CreateDate[1]; //日期查询 结束时间 需要加一天
|
} else {
|
// 日历清空 再查询bug
|
if (addForm.value.PlanStartDate || addForm.value.PlanEndDate) {
|
addForm.value.PlanStartDate = "";
|
addForm.value.PlanEndDate = "";
|
}
|
}
|
|
|
console.log(addForm.value);
|
|
var param = JSON.parse(JSON.stringify(addForm.value));
|
|
if(addForm.value.areaName && addForm.value.areaName.length>0){
|
addForm.value.areaCode = [];
|
arrTdpArea.value.forEach((item)=>{
|
let strArr = addForm.value.areaName.filter((v: any) => v == item.areaName)
|
if(strArr.length > 0){
|
addForm.value.areaCode.push(item.areaCode);
|
}
|
})
|
debugger
|
param.areaName = addForm.value.areaName.join(",");
|
param.areaCode = addForm.value.areaCode.join(",");
|
}else{
|
param.areaName = "";
|
param.areaCode = "";
|
}
|
|
debugger
|
//添加
|
if (dialogType.value == "add") {
|
disabled_btn.value = true;
|
loading.value = true;
|
let ret = {};
|
ret = await addWmsInventoryCheckOrder({
|
...param
|
});
|
loading.value = false;
|
disabled_btn.value = false;
|
if (ret.data.type == "success") {
|
ElMessage.success("新增成功");
|
emits('getTabelData');
|
dialogVisible.value = false;
|
}
|
|
} else if (dialogType.value == "edit") {
|
|
loading.value = true;
|
disabled_btn.value = true;
|
let ret = {};
|
ret = await updateWmsInventoryCheckOrder({
|
...param
|
});
|
loading.value = false;
|
disabled_btn.value = false;
|
if (ret.data.type == "success") {
|
ElMessage.success("编辑成功");
|
emits('getTabelData');
|
dialogVisible.value = false;
|
}
|
|
} else {
|
dialogVisible.value = false;
|
}
|
} else {
|
ElMessage.warning("表单验证失败");
|
}
|
});
|
|
};
|
|
//关闭窗口
|
const closeDialog = () => {
|
addForm.value = {
|
checkMode: "",
|
planDate: "",
|
remarks: "",
|
areaName:[],
|
areaCode:[],
|
materials: [] as { wareMaterialCode: string; }[]
|
};
|
warehousOrderDetails.value = [];
|
checkedDetails.value = [];
|
disabled_btn.value = false;
|
detailRef.value.clearSelection();
|
};
|
|
// ---------------材料盘点列表-------------------------
|
//物料详情的table ref
|
const detailRef = ref();
|
|
//添加编辑窗口物料列表
|
const warehousOrderDetails = ref<any[]>([]);
|
|
//物料详情列表选中的物料
|
const checkedDetails = ref<any[]>([]);
|
|
//物料详情列表中勾选事件
|
const detailsCheckChange = (val: any) => {
|
checkedDetails.value = val;
|
};
|
|
//删除选中的物料详情
|
const delCheckedDetails = () => {
|
ElMessageBox.confirm("是否确认删除?", "提示", {
|
confirmButtonText: "确认",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
checkedDetails.value.forEach((item) => {
|
const index = warehousOrderDetails.value.findIndex(
|
(detail) => detail.wareMaterialCode == item.wareMaterialCode
|
);
|
warehousOrderDetails.value.splice(index, 1);
|
});
|
})
|
.catch(() => ElMessage.info("已取消删除"));
|
};
|
|
// -----------------添加物料操作-------------------------
|
//物料基础数据窗口
|
const addMaterialVisible = ref(false);
|
|
//物料基础数据列表
|
const materialList = ref([]);
|
|
//物料基础数据条数
|
const materialTotal = ref(0);
|
|
//物料基础数据form
|
const materialForm = ref({
|
WareMaterialCode: "",
|
WareMaterialName: "",
|
BatchNo: "",
|
Page: 1,
|
PageSize: 10,
|
});
|
|
//获取物料基础列表
|
const getMaterialList = async () => {
|
debugger;
|
|
loading.value = true;
|
// var res = await pageWmsMaterial(Object.assign(queryParams.value, tableParams.value));
|
var res = await pageWmsMaterial(Object.assign(materialForm.value));
|
|
materialList.value = res.data.result?.items ?? [];
|
//tableParams.value.total = res.data.result?.total;
|
materialTotal.value = res.data.result?.total;
|
loading.value = false;
|
|
};
|
|
//重置物料
|
const resetMaterialForm = () => {
|
materialForm.value = {
|
WareMaterialCode: "",
|
WareMaterialName: "",
|
BatchNo: "",
|
Page: 1,
|
PageSize: 10,
|
};
|
getMaterialList();
|
};
|
|
//选中的基础物料数据
|
const checkedMaterial = ref<any[]>([]);
|
|
//物料基础数据勾选
|
const materialSelectionChange = (val: any) => {
|
checkedMaterial.value = val;
|
};
|
|
//打开新增物料窗口
|
const addMaterialDialog = () => {
|
getMaterialList();
|
addMaterialVisible.value = true;
|
};
|
|
//基础物料table的ref对象
|
const materialRef = ref();
|
|
//确认添加材料
|
const confirmAddMaterial = () => {
|
//物料列表没数据,直接添加
|
if (warehousOrderDetails.value.length == 0) {
|
warehousOrderDetails.value.push(...checkedMaterial.value);
|
} else {
|
for (let i = 0; i < checkedMaterial.value.length; i++) {
|
let idx = warehousOrderDetails.value.findIndex(
|
(item: any) =>
|
item.materialCode == checkedMaterial.value[i].materialCode
|
);
|
if (idx > -1) {
|
return ElMessage.warning(
|
`物料编号${checkedMaterial.value[i].materialCode}在物料列表中已存在,请去除勾选`
|
);
|
}
|
}
|
warehousOrderDetails.value.push(...checkedMaterial.value);
|
}
|
|
addMaterialVisible.value = false;
|
};
|
|
//关闭新增物料窗口
|
const closeMaterialDialog = () => {
|
materialForm.value = {
|
WareMaterialCode: "",
|
WareMaterialName: "",
|
BatchNo: "",
|
Page: 1,
|
PageSize: 10,
|
};
|
materialList.value = [];
|
checkedMaterial.value = [];
|
materialRef.value.clearSelection();
|
};
|
|
//提交
|
const pass = (orderNo: string) => {
|
ElMessageBox.confirm("是否确认提交?", "提示", {
|
confirmButtonText: "确认",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
passCheckTjPlan({ OrderNo: orderNo })
|
.then()
|
.then((res) => {
|
if (res.code == 200) {
|
ElMessage.success("提交成功");
|
getTabelData();
|
dialogVisible.value = false;
|
} else {
|
ElMessage.error(`失败${res.code}:${JSON.stringify(res.message)}`);
|
}
|
})
|
.catch((err) => ElMessage.error(JSON.stringify(err)));
|
})
|
.catch(() => ElMessage.info("已取消"));
|
};
|
//撤回
|
const passCh = (orderNo: string) => {
|
ElMessageBox.confirm("是否确认撤回?", "提示", {
|
confirmButtonText: "确认",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
passCheckChPlan({ OrderNo: orderNo })
|
.then()
|
.then((res) => {
|
if (res.code == 200) {
|
ElMessage.success("撤回成功");
|
getTabelData();
|
dialogVisible.value = false;
|
} else {
|
ElMessage.error(`失败${res.code}:${JSON.stringify(res.message)}`);
|
}
|
})
|
.catch((err) => ElMessage.error(JSON.stringify(err)));
|
})
|
.catch(() => ElMessage.info("已取消"));
|
};
|
|
// 计划比例
|
const planBl = (orderNo: string) => {
|
dialogRef.value.validate((vali: any) => {
|
if (vali) {
|
addForm.value.materials = warehousOrderDetails.value;
|
addForm.value.materials.map((item) => {
|
item.jsonData = JSON.stringify(item);
|
return item;
|
});
|
// if (addForm.value.checkType == 2) {
|
// if (addForm.value.category.length == 0) {
|
// return ElMessage.warning("请选择需要盘点的物料大类");
|
// }
|
addForm.value.categoryList = [];
|
addForm.value.category.forEach((item) => {
|
addForm.value.categoryList.push({ category: item });
|
});
|
// }
|
|
if (addForm.value.CreateDate && addForm.value.CreateDate.length > 0) {
|
addForm.value.CheckRuleStartDate = addForm.value.CreateDate[0];
|
addForm.value.CheckRuleEndDate = addForm.value.CreateDate[1]; //日期查询 结束时间 需要加一天
|
} else {
|
// 日历清空 再查询bug
|
if (addForm.value.CheckRuleStartDate || addForm.value.CheckRuleEndDate) {
|
addForm.value.CheckRuleStartDate = "";
|
addForm.value.CheckRuleEndDate = "";
|
}
|
}
|
console.log(addForm.value);
|
if (dialogType.value == "add") {
|
getCheckPlanBl(addForm.value).then((res: any) => {
|
if (res.code == 200) {
|
if (res.data) {
|
addForm.value.totalCheckRateValue = res.data.totalCheckRateValue;
|
addForm.value.planCheckRateValue = res.data.planCheckRateValue;
|
}
|
} else {
|
ElMessage.error(`${res.code}:${JSON.stringify(res.message)}`);
|
}
|
});
|
}
|
if (dialogType.value == "edit") {
|
getCheckPlanBlBj(addForm.value).then((res: any) => {
|
if (res.code == 200) {
|
if (res.data) {
|
addForm.value.totalCheckRateValue = res.data.totalCheckRateValue;
|
addForm.value.planCheckRateValue = res.data.planCheckRateValue;
|
}
|
} else {
|
ElMessage.error(`${res.code}:${JSON.stringify(res.message)}`);
|
}
|
});
|
}
|
} else {
|
ElMessage.warning("表单验证失败");
|
}
|
});
|
};
|
|
// 时间范围
|
// const showName = ref(1);
|
// watch(
|
// () => addForm.value.CheckType,
|
// (newVal) => {
|
// getTimeOrder(newVal);
|
// if (newVal == 2) {
|
// //全盘
|
// showName.value = 0;
|
// addForm.value.timeFrame = "";
|
// } else {
|
// showName.value = 1;
|
// //addForm.value.timeFrame = 30
|
// }
|
// }
|
// );
|
|
//获取规则单号
|
const getRulesOrder = () => {
|
getCheckRulesOrder()
|
.then((res) => {
|
if (res.code == 200) {
|
console.log(res);
|
addForm.value.ruleNo = res.data;
|
} else {
|
return ElMessage.error(`获取单盘点规则序列号失败${res.code}:${res.message}`);
|
}
|
})
|
.catch((err) => ElMessage.error(`获取盘点规则单号失败${err}`));
|
};
|
|
//时间
|
const detailTimeArr = ref([]);
|
|
const showAdvanceQueryUI = ref(false);
|
// 改变高级查询的控件显示状态
|
const changeAdvanceQueryUI = () => {
|
showAdvanceQueryUI.value = !showAdvanceQueryUI.value;
|
};
|
|
//-----------------远程搜索 库区编号----------------
|
const arrTdpArea = ref<any[]>([]);
|
const queryParamsWArea = ref<any>({});
|
const tableParamsWArea = ref({
|
page: 1,
|
pageSize: 1000,
|
total: 0,
|
areaCode: "",
|
});
|
|
const handleQueryTdpArea = async () => {
|
var res = await handleSlectDataWmsArea(
|
Object.assign(queryParamsWArea.value, tableParamsWArea.value)
|
);
|
arrTdpArea.value = res ?? [];
|
};
|
|
const changeXmbhArea = async (query?: any) => {
|
loading.value = true;
|
var res = await handleSlectDataWmsArea({
|
page: 1,
|
pageSize: 200,
|
areaCode: query,
|
});
|
loading.value = false;
|
arrTdpArea.value = res ?? [];
|
};
|
// 远程搜索 输入关键字以从远程服务器中查找数据。
|
const remoteMethodArea = async (query: string) => {
|
loading.value = true;
|
var res = await handleSlectDataWmsArea({
|
page: 1,
|
pageSize: 200,
|
areaCode: query,
|
});
|
loading.value = false;
|
arrTdpArea.value = res ?? [];
|
};
|
|
|
// 开启盘点
|
// const openWmsWarehouse = (row: any) => {
|
// ElMessageBox.confirm(`确定要开启盘点吗?`, "提示", {
|
// confirmButtonText: "确定",
|
// cancelButtonText: "取消",
|
// type: "warning",
|
// })
|
// .then(async () => {
|
// var res = await getCheckPlanOpen({
|
// OrderNo:checkRows.value[0].orderNo
|
// });
|
// if(res.data && res.data.code==200){
|
// getTabelData();
|
// ElMessage.success("开启盘点成功");
|
// }
|
// })
|
// .catch(() => {});
|
// };
|
|
|
const getEnumCheckStageData_Index = ref<any>([]);
|
const getEnumIsAuditData_Index = ref<any>([]);
|
|
const { getEnumDesc } = commonFunction();
|
|
onMounted(async () => {
|
|
});
|
|
|
// 暴露方法
|
defineExpose({ openDialog, openDrawer });
|
|
|
</script>
|
<style lang="less">
|
.el-dialog__title {
|
color: white !important;
|
font-size: 14px;
|
}
|
|
.under_line {
|
color: #F18201;
|
text-decoration: underline;
|
cursor: pointer;
|
}
|
</style>
|