|
@@ -4,20 +4,27 @@
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="14" class="leftView">
|
|
|
<div class="btns">
|
|
|
- <el-button :class="selectedType == 'default' ? 'activeBtn' : ''" @click="setSelectedType('default')"
|
|
|
- type="primary" plain>全 部</el-button>
|
|
|
- <el-button :class="selectedType == 'no' ? 'activeBtn' : ''" @click="setSelectedType('no')" type="primary"
|
|
|
- plain>不符合</el-button>
|
|
|
- <el-button :class="selectedType == 'yes' ? 'activeBtn' : ''" @click="setSelectedType('yes')" type="primary"
|
|
|
- plain>符 合</el-button>
|
|
|
-
|
|
|
+ <!-- <el-button :class="selectedType == 'default' ? 'activeBtn' : ''" @click="setSelectedType('default')"
|
|
|
+ type="primary" plain>全 部</el-button> -->
|
|
|
+ <el-button :class="selectedType == 'yes' ? 'activeBtn' : ''" @click="setSelectedType('yes')"
|
|
|
+ :disabled="disabled" type="primary" plain>符 合</el-button>
|
|
|
+ <el-button :class="selectedType == 'no' ? 'activeBtn' : ''" @click="setSelectedType('no')"
|
|
|
+ :disabled="disabled" type="primary" plain>不符合</el-button>
|
|
|
<div class="submitBox">
|
|
|
- <el-button type="primary" @click="close" v-if="!bingdingStatus" plain>关 闭</el-button>
|
|
|
- <el-button type="primary" style="background-color: #f9bf5c90" v-if="!bingdingStatus" @click="binding"
|
|
|
- plain>绑 定</el-button>
|
|
|
- <el-button @click="cancelBingding" type="primary" v-if="bingdingStatus" plain>取 消</el-button>
|
|
|
+ <el-button type="primary" @click="close" v-if="!bingdingStatus && !outboundStatus" plain>关 闭</el-button>
|
|
|
+ <el-button type="primary" style="background-color: #f9bf5c90"
|
|
|
+ v-if="!bingdingStatus && selectedType == 'yes'" @click="binding" plain>绑 定</el-button>
|
|
|
+
|
|
|
+ <el-button @click="cancelBingding" type="primary" v-if="bingdingStatus || outboundStatus" plain>取
|
|
|
+ 消</el-button>
|
|
|
+ <el-button type="primary" style="background-color: #f9bf5c90" v-if="!bingdingStatus &&
|
|
|
+ selectedType == 'no' &&
|
|
|
+ outboundStatus == false
|
|
|
+ " @click="outboundFnc" plain>出 库</el-button>
|
|
|
<el-button type="primary" @click="submit" style="background-color: #f9bf5c90; color: white; border: 0px"
|
|
|
v-if="bingdingStatus" plain>确 认</el-button>
|
|
|
+ <el-button type="primary" @click="submit" style="background-color: #f9bf5c90; color: white; border: 0px"
|
|
|
+ v-if="outboundStatus" plain>确 认</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="selectInfoBox">
|
|
@@ -47,12 +54,19 @@
|
|
|
</el-scrollbar>
|
|
|
</div>
|
|
|
<el-scrollbar class="scrollbar">
|
|
|
- <template v-for="(item, index) in materialData" @click="setSelectIndex(index)">
|
|
|
- <div :class="item.selected == true ? 'item active' : 'item'" v-if="itemShowStatus(item)">
|
|
|
+ <template v-for="(item, index) in materialData">
|
|
|
+ <div :class="index == outboundIndex
|
|
|
+ ? 'item bound'
|
|
|
+ : item.selected == true
|
|
|
+ ? 'item active'
|
|
|
+ : 'item'
|
|
|
+ " v-if="itemShowStatus(item)" @click="setSelectIndex(index)">
|
|
|
+ <div>料箱名称:</div>
|
|
|
<div>{{ item.name }}</div>
|
|
|
+ <div>料箱编号:</div>
|
|
|
+ <div>{{ item.code }}</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
-
|
|
|
<Empty v-if="materialData.length < 1" />
|
|
|
</el-scrollbar>
|
|
|
</el-col>
|
|
@@ -63,7 +77,6 @@
|
|
|
<el-table-column prop="materialNo" label="物料编号" />
|
|
|
<el-table-column prop="num" label="出入库数量" />
|
|
|
<el-table-column prop="coordinate" label="储位坐标" />
|
|
|
-
|
|
|
<template #empty>
|
|
|
<Empty />
|
|
|
</template>
|
|
@@ -72,28 +85,38 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
- <Bangding v-model="showStatus" />
|
|
|
+ <Bangding v-model="showStatus" :title="bindingTitle" @submit="submitData" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import Bangding from "./bangding.vue";
|
|
|
+import { vehicleBiding, outBox } from "@/api/prepare";
|
|
|
const props = defineProps({
|
|
|
modelValue: {
|
|
|
type: Boolean,
|
|
|
default: false,
|
|
|
},
|
|
|
+ workOrderCode: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
+ operationId: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
});
|
|
|
-const emits = defineEmits(["update:modelValue"]);
|
|
|
-const selectedType = ref("default");
|
|
|
+const emits = defineEmits(["update:modelValue", "resetOptionsData"]);
|
|
|
+const selectedType = ref("yes");
|
|
|
+const disabled = ref(false);
|
|
|
const materialData = inject("materialData");
|
|
|
-const selectMaterialData = inject("selectMaterialData");
|
|
|
const selectRowData = inject("selectRowData");
|
|
|
const showStatus = ref(false);
|
|
|
+const outboundIndex = ref();
|
|
|
+const bindingTitle = ref("");
|
|
|
+const bingdingStatus = ref(false);
|
|
|
+const outboundStatus = ref(false);
|
|
|
+const selectIndex = ref(0);
|
|
|
const itemShowStatus = (item: any) => {
|
|
|
- if (selectedType.value == "default") {
|
|
|
- return true;
|
|
|
- } else if (selectedType.value == "yes") {
|
|
|
+ if (selectedType.value == "yes") {
|
|
|
if (item.isEnable == 1) {
|
|
|
return true;
|
|
|
} else {
|
|
@@ -107,11 +130,13 @@ const itemShowStatus = (item: any) => {
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
-const bingdingStatus = ref(false);
|
|
|
-const selectIndex = ref(0);
|
|
|
const setSelectedType = (type: string) => {
|
|
|
selectedType.value = type;
|
|
|
};
|
|
|
+const outboundFnc = () => {
|
|
|
+ outboundStatus.value = true;
|
|
|
+ disabled.value = true;
|
|
|
+};
|
|
|
const selectIndexInfoData = computed(() => {
|
|
|
if (materialData.value.length > 0) {
|
|
|
return materialData.value[selectIndex.value].list;
|
|
@@ -119,15 +144,30 @@ const selectIndexInfoData = computed(() => {
|
|
|
return [];
|
|
|
}
|
|
|
});
|
|
|
+//盒子点击事件
|
|
|
const setSelectIndex = (index: number) => {
|
|
|
selectIndex.value = index;
|
|
|
- if (bingdingStatus.value) {
|
|
|
- if (materialData.value[selectIndex.value].selected == true) {
|
|
|
- materialData.value[selectIndex.value].selected = false;
|
|
|
- } else {
|
|
|
- materialData.value[selectIndex.value].selected = true;
|
|
|
+ if (selectedType.value == "yes") {
|
|
|
+ if (bingdingStatus.value) {
|
|
|
+ if (materialData.value[selectIndex.value].selected == true) {
|
|
|
+ materialData.value[selectIndex.value].selected = false;
|
|
|
+ } else {
|
|
|
+ materialData.value[selectIndex.value].selected = true;
|
|
|
+ }
|
|
|
+ materialData.value[selectIndex.value].selectedIndex = index;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (bingdingStatus.value) {
|
|
|
+ if (materialData.value[selectIndex.value].selected == true) {
|
|
|
+ materialData.value[selectIndex.value].selected = false;
|
|
|
+ } else {
|
|
|
+ materialData.value[selectIndex.value].selected = true;
|
|
|
+ }
|
|
|
+ materialData.value[selectIndex.value].selectedIndex = index;
|
|
|
+ }
|
|
|
+ if (outboundStatus.value) {
|
|
|
+ outboundIndex.value = selectIndex.value;
|
|
|
}
|
|
|
- materialData.value[selectIndex.value].selectedIndex = index;
|
|
|
}
|
|
|
};
|
|
|
const closeTopItem = (index: number) => {
|
|
@@ -142,15 +182,51 @@ const close = () => {
|
|
|
};
|
|
|
const binding = () => {
|
|
|
bingdingStatus.value = true;
|
|
|
+ disabled.value = true;
|
|
|
};
|
|
|
const cancelBingding = () => {
|
|
|
bingdingStatus.value = false;
|
|
|
+ outboundStatus.value = false;
|
|
|
+ disabled.value = false;
|
|
|
};
|
|
|
const submit = () => {
|
|
|
+ if (outboundStatus.value == true) {
|
|
|
+ bindingTitle.value = "确认出库";
|
|
|
+ } else {
|
|
|
+ bindingTitle.value = "绑定确认";
|
|
|
+ }
|
|
|
showStatus.value = true;
|
|
|
};
|
|
|
const reset = () => {
|
|
|
- selectedType.value = "default";
|
|
|
+ selectedType.value = "yes";
|
|
|
+};
|
|
|
+//提交函数(包含绑定、出库)
|
|
|
+const submitData = async () => {
|
|
|
+ if (bingdingStatus.value == true) {
|
|
|
+ const codes = [];
|
|
|
+ materialData.value.forEach((item) => {
|
|
|
+ if (item.selected == true) {
|
|
|
+ codes.push(item.code);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ const { data, code } = await vehicleBiding({
|
|
|
+ codes,
|
|
|
+ operationId: props.operationId,
|
|
|
+ workOrderCode: props.workOrderCode,
|
|
|
+ });
|
|
|
+ if (code == "200") {
|
|
|
+ ElMessage.success("绑定成功!");
|
|
|
+ emits("resetOptionsData");
|
|
|
+ close();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //出库
|
|
|
+ const { data, code } = await outBox({
|
|
|
+ vehicleNo: codes,
|
|
|
+ taskId: 0,
|
|
|
+ houseNo: "",
|
|
|
+ });
|
|
|
+ }
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -159,6 +235,11 @@ const reset = () => {
|
|
|
width: 0 !important;
|
|
|
}
|
|
|
|
|
|
+.bound {
|
|
|
+ background-color: #a52a2a80 !important;
|
|
|
+ color: white;
|
|
|
+}
|
|
|
+
|
|
|
.leftView {
|
|
|
width: calc(100vw);
|
|
|
|
|
@@ -240,7 +321,7 @@ const reset = () => {
|
|
|
width: 100%;
|
|
|
height: 70px;
|
|
|
display: flex;
|
|
|
- justify-content: space-between;
|
|
|
+ justify-content: space-evenly;
|
|
|
padding-bottom: 10px;
|
|
|
|
|
|
.submitBox {
|
|
@@ -272,6 +353,9 @@ const reset = () => {
|
|
|
background-color: #ffffff60;
|
|
|
display: inline-block;
|
|
|
margin: $p20;
|
|
|
+ padding: $p20;
|
|
|
+ cursor: pointer;
|
|
|
+ box-sizing: border-box;
|
|
|
}
|
|
|
}
|
|
|
}
|