Commit 201f9695 authored by Damon's avatar Damon

feat: 物料减到0提示

parent f3ab7678
<!-- ******************* 物料选择 ******************* -->
<template>
<view>
<view>
<view class="list u-flex u-row-between">
<image class="item-image" :src="mixingImage" v-if="item.required"></image>
<view class="u-m-r-20">{{item.fieldsTitle}}</view>
<view class="u-flex-1 add-parts" @click="toParts" v-if="!disabled && lists.length > 0">
添加物料<u-icon name="arrow-right" color="#2979ff" size="30"></u-icon>
</view>
</view>
<image class="item-image" :src="mixingImage" v-if="item.required"></image>
<view class="u-m-r-20">{{ item.fieldsTitle }}</view>
<view
class="u-flex-1 add-parts"
@click="toParts"
v-if="!disabled && lists.length > 0"
>
添加物料<u-icon name="arrow-right" color="#2979ff" size="30"></u-icon>
</view>
</view>
<view class="complete-part">
<view v-if="lists.length > 0">
<adjust-parts v-for="(item, index) in lists" :key="index" :info="item" @change="partsChange($event, index)" :disabled="disabled"></adjust-parts>
<adjust-parts
v-for="(item, index) in lists"
:key="index"
:info="item"
@change="partsChange($event, index)"
@minusValue="minusValue($event, index)"
:disabled="disabled"
></adjust-parts>
</view>
<view class="u-flex select-part" v-else>
<view class="u-flex select-part" v-else>
<view class="img">
<image :src="noPartsImage" class="part-icon" />
</view>
......@@ -27,141 +38,152 @@
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import adjustParts from "@/components/select-parts/adjust"
import stringMixin from './stringMixin'
export default {
name: 'XhParts',
components: {
adjustParts
import adjustParts from '@/components/select-parts/adjust'
import stringMixin from './stringMixin'
export default {
name: 'XhParts',
components: {
adjustParts,
},
mixins: [stringMixin],
props: {
orderId: {
type: String,
default: '',
},
mixins: [stringMixin],
props: {
orderId: {
type: String,
default: ''
},
categoryId: {
type: String,
default: ''
},
brandId: {
type: String,
default: ''
}
},
data() {
return {
lists: []
}
},
computed: {
customStyle() {
return {
'width': '200rpx',
'height': '80rpx',
'color': '#2272FF',
'font-size': '32rpx',
}
},
mixingImage() {
return process.uniEnv.qn_base_url + 'mixing.png'
},
noPartsImage() {
return process.uniEnv.qn_base_url + 'no_parts.png'
},
selectedParts() {
return this.lists.filter((item) => {
return item.quantity > 0
})
}
categoryId: {
type: String,
default: '',
},
mounted() {
this.getWorkOrderParts()
brandId: {
type: String,
default: '',
},
methods: {
getWorkOrderParts() {
// this.lists = JSON.parse(this.dataValue) || []
this.lists = this.dataValue ? JSON.parse(this.dataValue) : []
},
partsChange(val, index) {
this.$set(this.lists[index], 'quantity', val)
this.valueChange(JSON.stringify(this.selectedParts))
},
valChange(val) {
val.forEach(v => {
const index = this.lists.findIndex(k => k.part_id === v.part_id)
if (index < 0) {
this.lists.push(v)
} else {
this.$set(this.lists, index, v)
}
})
this.valueChange(JSON.stringify(this.selectedParts))
},
toParts() {
uni.navigateTo({
url: `/pages/order/parts?workOrderId=${this.orderId}&brandId=${this.brandId}&categoryId=${this.categoryId}`
})
},
data() {
return {
lists: [],
}
},
computed: {
customStyle() {
return {
width: '200rpx',
height: '80rpx',
color: '#2272FF',
'font-size': '32rpx',
}
}
}
},
mixingImage() {
return process.uniEnv.qn_base_url + 'mixing.png'
},
noPartsImage() {
return process.uniEnv.qn_base_url + 'no_parts.png'
}
},
mounted() {
this.getWorkOrderParts()
},
methods: {
getWorkOrderParts() {
// this.lists = JSON.parse(this.dataValue) || []
this.lists = this.dataValue ? JSON.parse(this.dataValue) : []
},
partsChange(val, index) {
this.$set(this.lists[index], 'quantity', val)
console.log("this.lists", this.lists)
this.valueChange(this.lists)
},
minusValue(val, index) {
if (val === 0) {
uni.showModal({
title: '温馨提示',
content: '确定要删除该物料?',
success: (res) => {
if (res.confirm) {
this.lists.splice(index, 1)
} else if (res.cancel) {
this.partsChange(1, index)
}
},
})
}
},
valChange(val) {
val.forEach((v) => {
const index = this.lists.findIndex((k) => k.part_id === v.part_id)
if (index < 0) {
this.lists.push(v)
} else {
this.$set(this.lists, index, v)
}
})
this.valueChange(this.lists)
},
toParts() {
uni.navigateTo({
url: `/pages/order/parts?workOrderId=${this.orderId}&brandId=${this.brandId}&categoryId=${this.categoryId}`,
})
},
},
}
</script>
<style lang="scss" scoped>
.item-image {
width: 24rpx;
height: 24rpx;
margin-right: 10rpx;
}
.required {
padding-right: 10rpx;
font-size: 28rpx;
line-height: 40rpx;
color: #fa3534;
}
.add-parts {
color: #2272FF;
text-align: right;
}
.complete-part {
.select-part {
.item-image {
width: 24rpx;
height: 24rpx;
margin-right: 10rpx;
}
.required {
padding-right: 10rpx;
font-size: 28rpx;
line-height: 40rpx;
color: #fa3534;
}
.add-parts {
color: #2272ff;
text-align: right;
}
.complete-part {
.select-part {
align-items: center;
height: 240rpx;
.img {
display: flex;
align-items: center;
height: 240rpx;
.img {
display: flex;
align-items: center;
margin-right: 30rpx;
.part-icon {
width: 110rpx;
height: 110rpx;
border-radius: 50%;
}
margin-right: 30rpx;
.part-icon {
width: 110rpx;
height: 110rpx;
border-radius: 50%;
}
.content {
padding-right: 8px;
flex: 1;
color: #3b4144;
flex-direction: column;
justify-content: space-between;
overflow: hidden;
.title {
text-align: left;
color: #2272FF;
font-size: 38rpx;
font-weight: bold;
margin-right: auto;
}
.desc {
text-align: left;
color: #999;
font-size: 26rpx;
margin-right: auto;
}
}
.content {
padding-right: 8px;
flex: 1;
color: #3b4144;
flex-direction: column;
justify-content: space-between;
overflow: hidden;
.title {
text-align: left;
color: #2272ff;
font-size: 38rpx;
font-weight: bold;
margin-right: auto;
}
.desc {
text-align: left;
color: #999;
font-size: 26rpx;
margin-right: auto;
}
}
}
}
</style>
......@@ -5,7 +5,7 @@
{{info.name}}
</view>
<view class="num">
<u-number-box v-if="!disabled" v-model="info.quantity" :min="info.min || 0" :max="info.max || 9999" @change="numChange"></u-number-box>
<u-number-box v-if="!disabled" v-model="info.quantity" :min="info.min || 0" :max="info.max || 9999" @change="numChange" @minus="minusValue"></u-number-box>
<text class="nums" v-else>x{{ info.quantity || 1 }}</text>
</view>
</view>
......@@ -37,6 +37,9 @@
methods: {
numChange(event) {
this.$emit('change', event.value)
},
minusValue(event) {
this.$emit('minusValue', event.value)
}
}
}
......
......@@ -26,6 +26,7 @@
:info="row"
:show-checked="false"
@change="numChange($event, index)"
@minusValue="minusValue($event, index)"
></select-parts>
</view>
</view>
......@@ -161,6 +162,21 @@ export default {
numChange(val, index) {
this.$set(this.parts[index], 'quantity', val)
},
minusValue(val, index) {
if (val === 0) {
uni.showModal({
title: '温馨提示',
content: '确定要删除该物料?',
success: (res) => {
if (res.confirm) {
this.parts.splice(index, 1)
} else if (res.cancel) {
this.$set(this.parts[index], 'quantity', 1)
}
},
})
}
},
updateParts(parts) {
// if(this.$u.test.isEmpty(parts)) {
// this.parts = []
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment