Commit 605ed088 authored by Damon's avatar Damon

feat: 备件API

parent 11cf6ca3
...@@ -34,6 +34,10 @@ let partsApiFun = function (vm) { ...@@ -34,6 +34,10 @@ let partsApiFun = function (vm) {
* 查询自己的备件仓 * 查询自己的备件仓
*/ */
let getMyReserve = async (params = {}) => await vm.$u.get(parts + vm.vuex_token + '/items/reserve', params); let getMyReserve = async (params = {}) => await vm.$u.get(parts + vm.vuex_token + '/items/reserve', params);
/**
* 查询工单的配件明细
*/
let getWorkOrderParts = async (params = {}) => await vm.$u.get(parts + vm.vuex_token + '/items/workOrder/', params);
const partsApi = { const partsApi = {
getSiteAddress, getSiteAddress,
...@@ -42,7 +46,8 @@ let partsApiFun = function (vm) { ...@@ -42,7 +46,8 @@ let partsApiFun = function (vm) {
getBrandList, getBrandList,
getPartsList, getPartsList,
applyParts, applyParts,
getMyReserve getMyReserve,
getWorkOrderParts
} }
return partsApi return partsApi
} }
......
<!-- ******************* 配件选择 ******************* --> <!-- ******************* 配件选择 ******************* -->
<template> <template>
<view class="complete-part"> <view>
<view v-if="status === 1"> <view class="list u-flex u-row-between">
<adjust-parts v-for="(item, index) in lists" :key="index" :info="item" @change="partsChange($event, index)" :disabled="disabled"></adjust-parts> <image class="item-image" :src="mixingImage" v-if="item.required"></image>
</view> <view class="u-m-r-20">{{item.fieldsTitle}}</view>
<view class="u-flex select-part" v-else-if="status === 2"> <view class="u-flex-1 add-parts" @click="toParts">
<view class="img"> 添加配件<u-icon name="arrow-right" color="#2979ff" size="30"></u-icon>
<image src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png" class="part-icon" /> </view>
</view> </view>
<view class="u-flex content"> <view class="complete-part">
<text class="title">暂无配件信息</text> <view v-if="status === 1">
<text class="desc">可选择备件仓配件</text> <adjust-parts v-for="(item, index) in lists" :key="index" :info="item" @change="partsChange($event, index)" :disabled="disabled"></adjust-parts>
</view> </view>
<view class="btn"> <view class="u-flex select-part" v-else-if="status === 2">
<u-button shape="circle" :custom-style="customStyle"> <view class="img">
去选择 <image src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png" class="part-icon" />
</u-button> </view>
<view class="u-flex content">
<text class="title">暂无配件信息</text>
<text class="desc">可选择备件仓配件</text>
</view>
<view class="btn">
<u-button shape="circle" :custom-style="customStyle" @click="toParts">
去选择
</u-button>
</view>
</view> </view>
</view> </view>
</view> </view>
...@@ -31,9 +40,9 @@ ...@@ -31,9 +40,9 @@
}, },
mixins: [arrMixin], mixins: [arrMixin],
props: { props: {
status: { orderId: {
type: Number, type: String,
default: 1 default: ''
} }
}, },
data() { data() {
...@@ -42,18 +51,19 @@ ...@@ -42,18 +51,19 @@
{ {
id: 1, id: 1,
name: "正泰漏保", name: "正泰漏保",
num: 1, quantity: 1,
min: 1, min: 1,
max: 100, max: 100,
}, },
{ {
id: 1, id: 1,
name: "挚达广汽充电桩", name: "挚达广汽充电桩",
num: 3, quantity: 3,
min: 1, min: 1,
max: 5, max: 5,
}, },
] ],
status: 1
} }
}, },
computed: { computed: {
...@@ -64,31 +74,62 @@ ...@@ -64,31 +74,62 @@
'color': '#2272FF', 'color': '#2272FF',
'font-size': '32rpx', 'font-size': '32rpx',
} }
},
mixingImage() {
return process.uniEnv.qn_base_url + 'mixing.png'
} }
},
created() {
this.getWorkOrderParts()
}, },
methods: { methods: {
getWorkOrderParts() {
const params = {
workOrderId: this.orderId
}
this.$u.getWorkOrderParts(params).then(res => {
if (res.code === 200) {
const data = res.data
this.status = data.receivedItems.length > 0 ? 1 : 2
this.lists = data.receivedItems || []
}
})
},
partsChange(val, index) { partsChange(val, index) {
console.log("val", val, index) console.log("val", val, index)
this.$set(this.lists[index], 'quantity', val)
}, },
toParts() { toParts() {
// uni.navigateTo({ uni.navigateTo({
// url: '/pages/' url: '/pages/order/parts'
// }) })
}, },
toHandle() { handle(val) {
console.log("val", val)
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.required {
padding-right: 10rpx;
font-size: 28rpx;
line-height: 40rpx;
color: #fa3534;
}
.add-parts {
color: #2272FF;
text-align: right;
}
.complete-part { .complete-part {
.select-part { .select-part {
align-items: center; align-items: center;
height: 240rpx; height: 240rpx;
.img { .img {
margin-right: 20rpx; display: flex;
align-items: center;
margin-right: 30rpx;
.part-icon { .part-icon {
width: 110rpx; width: 110rpx;
height: 110rpx; height: 110rpx;
...@@ -113,7 +154,6 @@ ...@@ -113,7 +154,6 @@
text-align: left; text-align: left;
color: #999; color: #999;
font-size: 26rpx; font-size: 26rpx;
margin-top: 20rpx;
margin-right: auto; margin-right: auto;
} }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</view> </view>
<view class="num"> <view class="num">
<u-number-box v-if="!disabled" v-model="info.quantity" :min="info.min || 0" :max="info.max || info.quantity" @change="numChange"></u-number-box> <u-number-box v-if="!disabled" v-model="info.quantity" :min="info.min || 0" :max="info.max || info.quantity" @change="numChange"></u-number-box>
<text class="nums" v-else>x{{ info.num || 1 }}</text> <text class="nums" v-else>x{{ info.quantity || 1 }}</text>
</view> </view>
</view> </view>
</view> </view>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<view class="class-bd"> <view class="class-bd">
<u-form-item v-for="(item,itemIndex) in groupItem.items" :key="itemIndex" label-position="top" <u-form-item v-for="(item,itemIndex) in groupItem.items" :key="itemIndex" label-position="top"
:prop="item.fieldsName" :border-bottom="false" v-show="item.fieldsName != 'actualPaid' || show200" :id="`item${item.fieldsId}`"> :prop="item.fieldsName" :border-bottom="false" v-show="item.fieldsName != 'actualPaid' || show200" :id="`item${item.fieldsId}`">
<view class="label" v-if="item.formType!=='location'&&item.formType!=='form'&&item.formType!=='label'"> <view class="label" v-if="!hiddenTitle.includes(item.formType)">
<image class="item-image" :src="mixingImage" v-if="item.required"></image> <image class="item-image" :src="mixingImage" v-if="item.required"></image>
{{item.fieldsTitle}} {{item.fieldsTitle}}
</view> </view>
...@@ -49,10 +49,10 @@ ...@@ -49,10 +49,10 @@
</xh-files> </xh-files>
</view> </view>
<xh-location v-else-if="item.formType==='location'" <!-- <xh-location v-else-if="item.formType==='location'"
:groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :value='form[item.fieldsName] || ""' :groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :value='form[item.fieldsName] || ""'
@value-change="fieldValueChange"> @value-change="fieldValueChange">
</xh-location> </xh-location> -->
<xh-scan v-else-if="item.formType==='scan'" <xh-scan v-else-if="item.formType==='scan'"
:groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :value='form[item.fieldsName] || ""' :groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :value='form[item.fieldsName] || ""'
@value-change="fieldValueChange"> @value-change="fieldValueChange">
...@@ -70,9 +70,10 @@ ...@@ -70,9 +70,10 @@
:groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :order-id="orderId" :value='form[item.fieldsName] || ""' :groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :order-id="orderId" :value='form[item.fieldsName] || ""'
@value-change="fieldValueChange"> @value-change="fieldValueChange">
</xh-service-more> </xh-service-more>
<xh-label v-else-if="item.formType==='label'" <xh-label v-else-if="item.formType==='label'" :groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :value='form[item.fieldsName] || ""'>
:groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :value='form[item.fieldsName] || ""'>
</xh-label> </xh-label>
<xh-parts v-else-if="item.formType==='location'" :order-id="orderId" :groupIndex="groupIndex" :itemIndex="itemIndex" :item="item" :value='form[item.fieldsName] || ""'>
</xh-parts>
</template> </template>
</u-form-item> </u-form-item>
</view> </view>
...@@ -110,6 +111,7 @@ ...@@ -110,6 +111,7 @@
import XhServiceMeasure from '@/components/createCom/XhServiceMeasure.vue' import XhServiceMeasure from '@/components/createCom/XhServiceMeasure.vue'
import XhServiceMore from "@/components/createCom/XhServiceMore" import XhServiceMore from "@/components/createCom/XhServiceMore"
import XhLabel from "@/components/createCom/XhLabel" import XhLabel from "@/components/createCom/XhLabel"
import XhParts from "@/components/createCom/XhParts"
import takePhoto from '@/components/take/index.vue' import takePhoto from '@/components/take/index.vue'
import baseFile from '@/components/upload/index' import baseFile from '@/components/upload/index'
...@@ -139,6 +141,7 @@ ...@@ -139,6 +141,7 @@
['date', ['time','text']], ['date', ['time','text']],
['form', ['form','text']], ['form', ['form','text']],
['label', ['label','text']], ['label', ['label','text']],
['parts', ['parts','text']],
]) ])
/** /**
...@@ -209,6 +212,7 @@ ...@@ -209,6 +212,7 @@
export default { export default {
data() { data() {
return { return {
hiddenTitle: ['location', 'form', 'label', 'parts'],
orderId:0, orderId:0,
categoryId:0, categoryId:0,
orderServiceType:'', orderServiceType:'',
...@@ -273,7 +277,8 @@ ...@@ -273,7 +277,8 @@
XhServiceMeasure, XhServiceMeasure,
XhServiceMore, XhServiceMore,
XhLabel, XhLabel,
'take-photo': takePhoto XhParts,
takePhoto
}, },
mixins: [baseFile], mixins: [baseFile],
created() { created() {
......
...@@ -103,6 +103,8 @@ ...@@ -103,6 +103,8 @@
quantity: v.quantity quantity: v.quantity
} }
}) })
prevPage.$vm.handle(lists)
this.$u.route({ type: 'back' })
console.log(lists) console.log(lists)
}, },
qnFile(src) { qnFile(src) {
......
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