点检保养调整
parent
94d9013406
commit
5f136605a2
@ -0,0 +1,354 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<u-popup
|
||||||
|
id="popup-content"
|
||||||
|
v-model="showPopup"
|
||||||
|
mode="center"
|
||||||
|
:mask-close-able="false"
|
||||||
|
width="700rpx"
|
||||||
|
height="90%"
|
||||||
|
borderRadius="12rpx"
|
||||||
|
>
|
||||||
|
<view class="page-product-receipt">
|
||||||
|
|
||||||
|
<u-form id="queryFrom" style="margin-top: -40px;" class="queryFrom" ref="form" label-width="180rpx">
|
||||||
|
<u-form-item label="备件类型" label-width="23vw">
|
||||||
|
<jPicker sureColor="#ff0000" @bindpicker="changSpareType" showKey="dictLabel" valKey="dictLabel" :val="query.spareType" :options="spareTypeList" :clearable="true"/>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="备件品类" label-width="23vw">
|
||||||
|
<jPicker sureColor="#ff0000" @bindpicker="changSpareCategory" showKey="dictLabel" valKey="dictLabel" :val="query.spareCategory" :options="spareCategoryList" :clearable="true" />
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="备件号/名称" label-width="23vw">
|
||||||
|
<u-search placeholder="请输入备件号/名称" :focus="true" :show-action="false" v-model="query.materialCode" @search="getList"></u-search>
|
||||||
|
</u-form-item>
|
||||||
|
</u-form>
|
||||||
|
<scroll-view id="list" scroll-y="true" :style="{ height: listHeight + 'px' }" :lower-threshold="50" @touchmove.stop>
|
||||||
|
<!-- 列表 -->
|
||||||
|
<u-form class="list">
|
||||||
|
<view v-if="list.length > 0">
|
||||||
|
<view class="list-item" v-for="(item, index) in list" :key="index" :class="{ active: spareItem && item.materialCode === spareItem.materialCode }" @click="selectItem(item)">
|
||||||
|
<lj-list-row label="备件编码:" :value="item.materialCode" />
|
||||||
|
<lj-list-row label="备件名称:" :value="item.materialDesc" />
|
||||||
|
<lj-list-row label="单价:" :value="item.unitPrice || 0" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view v-else> 暂无数据 </view>
|
||||||
|
</u-form>
|
||||||
|
</scroll-view>
|
||||||
|
|
||||||
|
<!-- 底部按钮区 -->
|
||||||
|
<view class="popup-footer" id="footer" ref="footer">
|
||||||
|
<u-button
|
||||||
|
@click="closePopup"
|
||||||
|
type="default"
|
||||||
|
class="footer-btn cancel-btn"
|
||||||
|
:style="{width: '160rpx'}"
|
||||||
|
>
|
||||||
|
取消
|
||||||
|
</u-button>
|
||||||
|
<u-button
|
||||||
|
type="primary"
|
||||||
|
class="footer-btn confirm-btn"
|
||||||
|
:style="{width: '160rpx'}"
|
||||||
|
@click="confirm"
|
||||||
|
>
|
||||||
|
确认
|
||||||
|
</u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import JPicker from "@/components/J-Picker/jPicker.vue";
|
||||||
|
import LjListRow from "@/components/lanju/lj-list-row/index.vue";
|
||||||
|
import {getDict, getSparePartsList} from "@/components/lanju/lj-choose-spare/model";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SpareSelectPopup',
|
||||||
|
components: {LjListRow, JPicker},
|
||||||
|
props: {
|
||||||
|
show: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
listHeight:400,
|
||||||
|
showPopup: false,
|
||||||
|
spareItem: null,
|
||||||
|
query:{
|
||||||
|
pageSize:9999,
|
||||||
|
spareType:undefined,
|
||||||
|
spareCategory:undefined,
|
||||||
|
materialCode:undefined,
|
||||||
|
},
|
||||||
|
list:[],
|
||||||
|
spareTypeList:[],
|
||||||
|
spareCategoryList:[],
|
||||||
|
spareCategoryObj:{}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
show(newVal) {
|
||||||
|
this.showPopup = newVal;
|
||||||
|
this.resetListHeight();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getList(){
|
||||||
|
getSparePartsList(this.query).then(res=>{
|
||||||
|
this.list = res.rows
|
||||||
|
})
|
||||||
|
},
|
||||||
|
changSpareType(type){
|
||||||
|
this.query.spareType = type.pickerName.dictValue
|
||||||
|
this.spareCategoryList = this.spareCategoryObj[type.pickerName.dictValue]
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
changSpareCategory(type){
|
||||||
|
this.query.spareCategory = type.pickerName.dictValue
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
selectItem(item){
|
||||||
|
item.spareQuantity = 1
|
||||||
|
this.spareItem = item
|
||||||
|
},
|
||||||
|
closePopup() {
|
||||||
|
this.query.spareType = undefined
|
||||||
|
this.query.spareCategory = undefined
|
||||||
|
this.spareItem = undefined
|
||||||
|
this.$emit('close');
|
||||||
|
},
|
||||||
|
confirm(){
|
||||||
|
if (this.spareItem){
|
||||||
|
this.$emit('confirm',this.spareItem);
|
||||||
|
}else {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请选择数据!',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
resetListHeight(){
|
||||||
|
this.$nextTick(() => {
|
||||||
|
let footer = 0;
|
||||||
|
let buttonHeight = 0
|
||||||
|
//获取底部按钮信息
|
||||||
|
const query = uni.createSelectorQuery().in(this);
|
||||||
|
query
|
||||||
|
.select('#popup-content')
|
||||||
|
.boundingClientRect((data) => {
|
||||||
|
if (data){
|
||||||
|
footer = data.height;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.exec();
|
||||||
|
|
||||||
|
query
|
||||||
|
.select('#footer')
|
||||||
|
.boundingClientRect((data) => {
|
||||||
|
//获取列表到顶部距离
|
||||||
|
if (data){
|
||||||
|
|
||||||
|
buttonHeight = data.height * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
.exec();
|
||||||
|
|
||||||
|
//获取列表信息
|
||||||
|
query
|
||||||
|
.select('#list')
|
||||||
|
.boundingClientRect((data) => {
|
||||||
|
//获取列表到顶部距离
|
||||||
|
if (data){
|
||||||
|
const listTop = data.top;
|
||||||
|
console.log(footer)
|
||||||
|
console.log(listTop)
|
||||||
|
console.log(buttonHeight)
|
||||||
|
this.listHeight = footer - listTop - buttonHeight - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
.exec();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
initPickerOptions () {
|
||||||
|
getDict("spare_part_type").then(async res => {
|
||||||
|
this.spareTypeList = res.data
|
||||||
|
|
||||||
|
for (const item of this.spareTypeList) {
|
||||||
|
await getDict(item.dictValue).then(res => {
|
||||||
|
this.spareCategoryObj[item.dictValue] = res.data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
for (const key in this.spareCategoryObj){
|
||||||
|
this.spareCategoryList = this.spareCategoryList.concat(this.spareCategoryObj[key]);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
this.resetListHeight()
|
||||||
|
this.initPickerOptions()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
.list {
|
||||||
|
background-color: #fff;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
padding: 20rpx 20rpx 25rpx;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
|
||||||
|
color: #8d8989;
|
||||||
|
|
||||||
|
.list-item {
|
||||||
|
padding: 20rpx;
|
||||||
|
margin-bottom: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item.active {
|
||||||
|
box-shadow: 0 0 0 3px #0c7bf3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.righttitle {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
|
||||||
|
.boder-icon-rigth {
|
||||||
|
font-size: 30rpx;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1rpx solid #fa3534;
|
||||||
|
text-align: center;
|
||||||
|
background: #fa3534;
|
||||||
|
color: #ffffff;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* 奇数行背景色 */
|
||||||
|
.list-item:nth-child(odd) {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 偶数行背景色 */
|
||||||
|
.list-item:nth-child(even) {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.popup-content {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-scroll {
|
||||||
|
border-radius: 8rpx;
|
||||||
|
background-color: #fafafa;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-header {
|
||||||
|
display: flex;
|
||||||
|
background-color: #e8f4f8;
|
||||||
|
border-radius: 8rpx 8rpx 0 0;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-th {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-body {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-tr {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 100rpx;
|
||||||
|
border-bottom: 1rpx solid #f5f5f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-td {
|
||||||
|
padding: 0 20rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
border: 1rpx solid #e5e5e5;
|
||||||
|
line-height: 75rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-item {
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
border: 1rpx solid #e5e5e5;
|
||||||
|
padding: 0 16rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.delete-icon {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100rpx;
|
||||||
|
background-color: #fafafa;
|
||||||
|
border-radius: 0 0 8rpx 8rpx;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.add-text {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #8c8c8c;
|
||||||
|
margin-left: 16rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 40rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-btn {
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
font-size: 32rpx;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cancel-btn {
|
||||||
|
border: 1rpx solid #e5e5e5;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.confirm-btn {
|
||||||
|
background-color: #1989fa;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
import http from "@/utils/request";
|
||||||
|
import {url} from "@/utils/url";
|
||||||
|
|
||||||
|
export function getSparePartsList(data: any): Promise<any> {
|
||||||
|
return http.get(url.lanjuequipment.product.Repair.list, {
|
||||||
|
params: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDict(type: any): Promise<any> {
|
||||||
|
return http.get(url.wmspda.system.dict+'/'+type, );
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue