SmartStorage/pages/exitMaterialDetail/exitMaterialDetail.vue

360 lines
9.7 KiB
Vue
Raw Normal View History

2023-12-20 15:15:23 +08:00
<template>
2024-09-12 15:02:11 +08:00
<view>
<view class="search-bar">
<uni-easyinput
prefixIcon="search"
v-model="inputs"
placeholder="请输入名称"></uni-easyinput>
</view>
<view class="dataInfo">
<view
class="dataList"
v-for="(item, index) in searchData"
:key="index">
<!-- <checkbox-group @change="checkClick(item)">
2023-12-20 15:15:23 +08:00
<checkbox :checked="item.checked" />
2023-12-21 11:01:48 +08:00
</checkbox-group> -->
2024-09-12 15:02:11 +08:00
<view class="details">
<!-- <view class="img">
2023-12-20 15:15:23 +08:00
<image :src="item.url"></image>
</view> -->
2024-09-12 15:02:11 +08:00
<view class="text">
<text>类型名称{{ item.typeName }}</text>
<text>规格编号{{ item.typeCode }}</text>
<text>退料数量{{ item.num }}</text>
</view>
</view>
<!-- <view class="action">
2023-12-20 15:15:23 +08:00
<text @click="reduce(item)">-</text>
<text>{{item.offNum}}</text>
<text @click="add(item)">+</text>
2023-12-21 11:01:48 +08:00
</view> -->
2024-09-12 15:02:11 +08:00
</view>
</view>
<!-- <view class="buy">
2023-12-20 15:15:23 +08:00
<view class="checked">
<checkbox-group @tap="checkAll">
<checkbox :checked="allChecked" />
</checkbox-group>
<text>全选</text>
</view>
<view class="total">
<view class="bill" @click="finishCart">
<text>提交</text>
</view>
</view>
2023-12-21 11:01:48 +08:00
</view> -->
2024-09-12 15:02:11 +08:00
</view>
2023-12-20 15:15:23 +08:00
</template>
<script>
2024-09-12 15:02:11 +08:00
import { basePath } from "../../public";
export default {
data() {
return {
iptVal: "",
allChecked: false,
inputs: "",
list: [],
totalFine: "",
cartList: [],
typeId: "",
};
},
computed: {
totalNum() {
//总计
var str = 0;
for (var i = 0; i < this.searchData.length; i++) {
if (this.searchData[i].checked) {
str += this.searchData[i].num;
}
}
this.totalFine = str;
return str;
},
searchData: function () {
//模糊查询
if (!this.inputs) {
return this.list;
}
return this.list.filter((item) => {
return item.typeName.includes(this.inputs);
});
},
},
methods: {
iconClick() {
console.log(this.iptVal);
},
add(item) {
//加加
let num = item.offNum;
if (num >= item.num) {
uni.showToast({
icon: "none",
title: "退料数量不可大于当前在用量!",
});
} else {
item.offNum = num + 1;
}
},
reduce(item) {
//减减
let num = item.offNum;
if (num > 1) {
num -= 1;
} else if ((num = 1)) {
uni.showToast({
icon: "none",
title: "该器具无法再减少",
});
}
item.offNum = num;
},
// 单个商品的选择
checkClick(item) {
item.checked = !item.checked;
if (!item.checked) {
this.allChecked = false;
} else {
// 判断每一个商品是否是被选择的状态
const goods = this.list.every((item) => {
return item.checked === true;
});
if (goods) {
this.allChecked = true;
} else {
this.allChecked = false;
}
}
},
checkAll() {
this.allChecked = !this.allChecked;
if (this.allChecked) {
this.list.map((item) => {
item.checked = true;
});
} else {
this.list.map((item) => {
item.checked = false;
});
}
},
finishCart() {
let that = this;
that.cartList = that.list.filter((item) => {
return item.checked == true;
});
if (that.cartList.length == 0) {
uni.showToast({
icon: "none",
title: "请选择退料项!",
});
} else {
let subList = [];
for (let i = 0; i < that.cartList.length; i++) {
subList.push(that.cartList[i].offNum);
}
subList = subList.join(",");
console.log(subList, that.typeId);
// 提交退料清单
that.$api.exitMaterial
.subExitMaterial({
typeId: that.typeId,
num: subList,
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
}
},
},
onLoad(params) {
let that = this;
console.log(params.id);
that.typeId = params.typeId;
// 退料详情查看
that.$api.exitMaterial
.exitMaterialDetail({
id: params.id,
})
.then((res) => {
if (res.data.code == 200) {
for (let i = 0; i < res.data.data.length; i++) {
// res.data.data[i].num = Number(res.data.data[i].num.split('.')[0])
res.data.data[i].offNum = 1;
}
console.log(res);
that.list = res.data.data;
}
})
.catch((err) => {
console.log(err);
});
},
};
2023-12-20 15:15:23 +08:00
</script>
2024-09-12 15:02:11 +08:00
2023-12-20 15:15:23 +08:00
<style>
2024-09-12 15:02:11 +08:00
.search-bar {
width: 95%;
margin: 20rpx auto;
}
/deep/uni-checkbox .uni-checkbox-input {
border-radius: 50%;
}
/deep/uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked {
border-color: #ddd;
color: #fff !important;
background-color: #2dcf8c !important;
}
/deep/uni-checkbox .uni-checkbox-input {
border-color: #ddd;
}
/deep/uni-checkbox .uni-checkbox-input:hover {
border-color: #ddd;
}
.search {
padding-top: 20rpx;
}
.search .searchIput {
background-color: #e6e6e6;
width: 95%;
margin: 0 auto;
height: 72rpx;
line-height: 72rpx;
border-radius: 50rpx;
padding: 0 32rpx;
box-sizing: border-box;
display: flex;
align-items: center;
}
.search .searchIput input {
font-size: 26rpx;
width: 100%;
color: grey;
}
.search .searchIput image {
width: 34rpx;
height: 34rpx;
}
.dataInfo {
width: 95%;
margin: 0 auto;
}
.dataInfo .dataList {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 2px solid #f1f1f1;
padding: 25rpx 0;
}
.dataInfo .dataList .details {
display: flex;
align-items: center;
flex: 1;
font-size: 0;
}
.dataInfo .dataList .details .img image {
width: 200rpx;
height: 140rpx;
padding: 0 20rpx;
}
.dataInfo .dataList .details .text text {
color: #000;
font-size: 23rpx;
display: block;
padding: 10rpx 0;
}
.dataInfo .dataList .details .text {
color: red;
font-size: 25rpx;
}
.dataInfo .dataList .action text {
font-size: 25rpx;
color: #000;
border: 1px solid #c8c7cc;
display: inline-block;
line-height: 50rpx;
width: 60rpx;
text-align: center;
box-sizing: border-box;
}
.dataInfo .dataList .action text:nth-child(2) {
border-left: none;
border-right: none;
}
.buy {
display: flex;
align-items: center;
justify-content: space-between;
position: fixed;
left: 50%;
bottom: 0;
width: 95%;
transform: translate(-50%, 0);
}
.buy .checked {
display: flex;
align-items: center;
}
.buy .checked text {
font-size: 25rpx;
color: #000;
padding: 0 12rpx;
}
.buy .total {
display: flex;
align-items: center;
justify-content: space-between;
}
.buy .total .price {
padding-right: 20rpx;
}
.buy .total .price text {
font-size: 27rpx;
color: #c8c7cc;
display: inline-block;
}
.buy .total .price text:last-child {
color: red;
font-weight: bold;
}
.buy .total .bill text {
font-size: 25rpx;
color: #fff;
display: inline-block;
background-color: red;
line-height: 70rpx;
width: 150rpx;
text-align: center;
}
</style>