装备详情 订单详情页面完善
This commit is contained in:
parent
fe6f641a1b
commit
c26a49e728
|
|
@ -0,0 +1,194 @@
|
||||||
|
<template>
|
||||||
|
<!-- 装备外观 -->
|
||||||
|
<view class="goods-details">
|
||||||
|
<!-- <h4 class="h4-title">装备外观</h4> -->
|
||||||
|
<van-image
|
||||||
|
style="margin-bottom: 6px"
|
||||||
|
fit="cover"
|
||||||
|
position="center"
|
||||||
|
v-for="item in deviceInfo.detailsFileList"
|
||||||
|
:key="item.id"
|
||||||
|
:src="item.fileUrl"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { computed, ref } from 'vue'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { useMemberStore } from '@/stores/index.js'
|
||||||
|
import { getDeviceDetailsAPI } from '@/services/goods/index.js'
|
||||||
|
import { addBookCarAPI, getBookCarDetailsAPI } from '@/services/cart/index.js'
|
||||||
|
const memberStore = useMemberStore()
|
||||||
|
const userCompanyId = ref()
|
||||||
|
const userCompanyName = ref()
|
||||||
|
const images = ref([])
|
||||||
|
const activeIndex = ref(1)
|
||||||
|
const deviceInfo = ref({})
|
||||||
|
const cartCount = ref(0)
|
||||||
|
const props = defineProps({
|
||||||
|
maId: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: () => '',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const goodsLabel = ref([
|
||||||
|
{ goods_label: '装备编号:', label_content: 'code' },
|
||||||
|
{ goods_label: '装备类目:', label_content: 'groupName' },
|
||||||
|
{ goods_label: '装备型号:', label_content: 'typeName' },
|
||||||
|
{ goods_label: '规格:', label_content: '' },
|
||||||
|
{ goods_label: '品牌:', label_content: 'brand' },
|
||||||
|
{ goods_label: '出厂日期:', label_content: 'productionDate' },
|
||||||
|
{ goods_label: '功能特点:', label_content: '' },
|
||||||
|
])
|
||||||
|
const goodsPicCount = computed(() => {
|
||||||
|
return images.value.length
|
||||||
|
})
|
||||||
|
const onSwiperChange = (e) => {
|
||||||
|
activeIndex.value = e + 1
|
||||||
|
}
|
||||||
|
const getDeviceDetailsData = async () => {
|
||||||
|
const { data: res } = await getDeviceDetailsAPI(props.maId)
|
||||||
|
deviceInfo.value = res
|
||||||
|
|
||||||
|
console.log(deviceInfo.value, 'deviceInfo.value----****----')
|
||||||
|
images.value = res.mainFileList
|
||||||
|
}
|
||||||
|
// 获取预约车数量
|
||||||
|
const getBookCarDetailsData = async () => {
|
||||||
|
cartCount.value = 0
|
||||||
|
const { data: res } = await getBookCarDetailsAPI()
|
||||||
|
if (res.length > 0) {
|
||||||
|
res.forEach((e) => {
|
||||||
|
cartCount.value = e.devInfoVoList.length + cartCount.value
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
cartCount.value = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 加入预约车
|
||||||
|
const onAddCart = () => {
|
||||||
|
showConfirmDialog({
|
||||||
|
title: '温馨提示',
|
||||||
|
message: '是否确认加入预约车',
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
console.log(deviceInfo.value, 'deviceInfo')
|
||||||
|
const { companyId, maId } = deviceInfo.value
|
||||||
|
const res = await addBookCarAPI({
|
||||||
|
maId,
|
||||||
|
orderCompany: companyId,
|
||||||
|
})
|
||||||
|
if (res.code === 200) {
|
||||||
|
showSuccessToast('加入成功')
|
||||||
|
getDeviceDetailsData()
|
||||||
|
getBookCarDetailsData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
|
}
|
||||||
|
// 立即承租
|
||||||
|
const onRentNow = () => {
|
||||||
|
uni.navigateTo({ url: `/pages/order/index?id=${deviceInfo.value.maId}` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 跳转预约车
|
||||||
|
const onCartBarPage = () => {
|
||||||
|
uni.switchTab({ url: '/pages/cart/index' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 在线聊
|
||||||
|
const onLineMessage = () => {
|
||||||
|
const { companyId, companyName, ownId } = deviceInfo.value
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/message-pages/index?id=${companyId}&name=${companyName}&ownId=${ownId}&formName=${userCompanyName.value}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
userCompanyId.value = memberStore.userInfo.companyId
|
||||||
|
userCompanyName.value = memberStore.userCompanyName
|
||||||
|
getDeviceDetailsData()
|
||||||
|
getBookCarDetailsData()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.swiper-container {
|
||||||
|
position: relative !important;
|
||||||
|
.count-tip {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 20px;
|
||||||
|
padding: 2px 8px;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: #bcbcbc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.van-swipe {
|
||||||
|
width: 100%;
|
||||||
|
height: 40vh;
|
||||||
|
|
||||||
|
// .van-image {
|
||||||
|
// width: 100%;
|
||||||
|
// height: 100%;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-style {
|
||||||
|
// width: 97%;
|
||||||
|
// margin: 5px auto 0;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
.goods-name {
|
||||||
|
color: #fff;
|
||||||
|
background: linear-gradient(to right, #e8f4f3, #93dad1, #5fb0a5);
|
||||||
|
.box_1 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
|
||||||
|
.no-bold {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-right {
|
||||||
|
margin-top: 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.goods-company text,
|
||||||
|
.goods-details text {
|
||||||
|
margin-right: 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #5c5b5b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.goods-company view,
|
||||||
|
.goods-details view,
|
||||||
|
.goods-company h4 {
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h4-title {
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 5px 0;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prove-container {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #00a288;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -40,10 +40,33 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="card-style goods-details">
|
<view class="card-style goods-details">
|
||||||
<h4>装备详情</h4>
|
<h4 class="h4-title">装备详情</h4>
|
||||||
<view v-for="item in goodsLabel" :key="item.goods_label">
|
<view v-for="item in goodsLabel" :key="item.goods_label">
|
||||||
<text> {{ item.goods_label }}{{ deviceInfo[item.label_content] }}</text>
|
<text> {{ item.goods_label }}{{ deviceInfo[item.label_content] }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
<!-- <h4 class="h4-title">装备外观</h4>
|
||||||
|
<van-image
|
||||||
|
style="margin-bottom: 6px"
|
||||||
|
fit="cover"
|
||||||
|
position="center"
|
||||||
|
v-for="item in deviceInfo.detailsFileList"
|
||||||
|
:key="item.id"
|
||||||
|
:src="item.fileUrl"
|
||||||
|
/>
|
||||||
|
<h4 class="h4-title">证书展示</h4>
|
||||||
|
<view>
|
||||||
|
合格证:
|
||||||
|
<view v-for="item in deviceInfo.insurancePdf" :key="item.id" class="prove-container">
|
||||||
|
{{ item.fileName }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<h4 class="h4-title">出租记录</h4>
|
||||||
|
<van-cell-group inset v-for="(item, index) in deviceInfo.leaseList" :key="index">
|
||||||
|
<van-cell title="订单号" :value="item.orderCode" />
|
||||||
|
<van-cell title="租赁方" :value="item.leaseName" />
|
||||||
|
<van-cell title="租赁开始时间" :value="item.leaseStartTime" />
|
||||||
|
<van-cell title="租赁结束时间" :value="item.leaseEndTime" />
|
||||||
|
</van-cell-group> -->
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<van-action-bar v-if="memberStore.userType === 2">
|
<van-action-bar v-if="memberStore.userType === 2">
|
||||||
|
|
@ -108,7 +131,9 @@ const onSwiperChange = (e) => {
|
||||||
const getDeviceDetailsData = async () => {
|
const getDeviceDetailsData = async () => {
|
||||||
const { data: res } = await getDeviceDetailsAPI(props.maId)
|
const { data: res } = await getDeviceDetailsAPI(props.maId)
|
||||||
deviceInfo.value = res
|
deviceInfo.value = res
|
||||||
images.value = res.detailsFileList
|
|
||||||
|
console.log(deviceInfo.value, 'deviceInfo.value----****----')
|
||||||
|
images.value = res.mainFileList
|
||||||
}
|
}
|
||||||
// 获取预约车数量
|
// 获取预约车数量
|
||||||
const getBookCarDetailsData = async () => {
|
const getBookCarDetailsData = async () => {
|
||||||
|
|
@ -186,10 +211,10 @@ onLoad(() => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 40vh;
|
height: 40vh;
|
||||||
|
|
||||||
.van-image {
|
// .van-image {
|
||||||
width: 100%;
|
// width: 100%;
|
||||||
height: 100%;
|
// height: 100%;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-style {
|
.card-style {
|
||||||
|
|
@ -236,4 +261,15 @@ onLoad(() => {
|
||||||
.goods-company h4 {
|
.goods-company h4 {
|
||||||
padding: 2px 0;
|
padding: 2px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.h4-title {
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 5px 0;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prove-container {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #00a288;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,202 @@
|
||||||
|
<template>
|
||||||
|
<!-- 装备证书展示 -->
|
||||||
|
<view class="goods-details">
|
||||||
|
<!-- <h4 class="h4-title">证书展示</h4> -->
|
||||||
|
<!-- <view>
|
||||||
|
合格证:
|
||||||
|
<view v-for="item in deviceInfo.insurancePdf" :key="item.id" class="prove-container">
|
||||||
|
{{ item.fileName }}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view> -->
|
||||||
|
|
||||||
|
<van-image
|
||||||
|
style="margin-bottom: 6px"
|
||||||
|
fit="cover"
|
||||||
|
position="center"
|
||||||
|
v-for="item in deviceInfo.insurancePdf"
|
||||||
|
:key="item.id"
|
||||||
|
:src="item.fileUrl"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { computed, ref } from 'vue'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { useMemberStore } from '@/stores/index.js'
|
||||||
|
import { getDeviceDetailsAPI } from '@/services/goods/index.js'
|
||||||
|
import { addBookCarAPI, getBookCarDetailsAPI } from '@/services/cart/index.js'
|
||||||
|
const memberStore = useMemberStore()
|
||||||
|
const userCompanyId = ref()
|
||||||
|
const userCompanyName = ref()
|
||||||
|
const images = ref([])
|
||||||
|
const activeIndex = ref(1)
|
||||||
|
const deviceInfo = ref({})
|
||||||
|
const cartCount = ref(0)
|
||||||
|
const props = defineProps({
|
||||||
|
maId: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: () => '',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const goodsLabel = ref([
|
||||||
|
{ goods_label: '装备编号:', label_content: 'code' },
|
||||||
|
{ goods_label: '装备类目:', label_content: 'groupName' },
|
||||||
|
{ goods_label: '装备型号:', label_content: 'typeName' },
|
||||||
|
{ goods_label: '规格:', label_content: '' },
|
||||||
|
{ goods_label: '品牌:', label_content: 'brand' },
|
||||||
|
{ goods_label: '出厂日期:', label_content: 'productionDate' },
|
||||||
|
{ goods_label: '功能特点:', label_content: '' },
|
||||||
|
])
|
||||||
|
const goodsPicCount = computed(() => {
|
||||||
|
return images.value.length
|
||||||
|
})
|
||||||
|
const onSwiperChange = (e) => {
|
||||||
|
activeIndex.value = e + 1
|
||||||
|
}
|
||||||
|
const getDeviceDetailsData = async () => {
|
||||||
|
const { data: res } = await getDeviceDetailsAPI(props.maId)
|
||||||
|
deviceInfo.value = res
|
||||||
|
|
||||||
|
console.log(deviceInfo.value, 'deviceInfo.value----****----')
|
||||||
|
images.value = res.mainFileList
|
||||||
|
}
|
||||||
|
// 获取预约车数量
|
||||||
|
const getBookCarDetailsData = async () => {
|
||||||
|
cartCount.value = 0
|
||||||
|
const { data: res } = await getBookCarDetailsAPI()
|
||||||
|
if (res.length > 0) {
|
||||||
|
res.forEach((e) => {
|
||||||
|
cartCount.value = e.devInfoVoList.length + cartCount.value
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
cartCount.value = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 加入预约车
|
||||||
|
const onAddCart = () => {
|
||||||
|
showConfirmDialog({
|
||||||
|
title: '温馨提示',
|
||||||
|
message: '是否确认加入预约车',
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
console.log(deviceInfo.value, 'deviceInfo')
|
||||||
|
const { companyId, maId } = deviceInfo.value
|
||||||
|
const res = await addBookCarAPI({
|
||||||
|
maId,
|
||||||
|
orderCompany: companyId,
|
||||||
|
})
|
||||||
|
if (res.code === 200) {
|
||||||
|
showSuccessToast('加入成功')
|
||||||
|
getDeviceDetailsData()
|
||||||
|
getBookCarDetailsData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
|
}
|
||||||
|
// 立即承租
|
||||||
|
const onRentNow = () => {
|
||||||
|
uni.navigateTo({ url: `/pages/order/index?id=${deviceInfo.value.maId}` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 跳转预约车
|
||||||
|
const onCartBarPage = () => {
|
||||||
|
uni.switchTab({ url: '/pages/cart/index' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 在线聊
|
||||||
|
const onLineMessage = () => {
|
||||||
|
const { companyId, companyName, ownId } = deviceInfo.value
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/message-pages/index?id=${companyId}&name=${companyName}&ownId=${ownId}&formName=${userCompanyName.value}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
userCompanyId.value = memberStore.userInfo.companyId
|
||||||
|
userCompanyName.value = memberStore.userCompanyName
|
||||||
|
getDeviceDetailsData()
|
||||||
|
getBookCarDetailsData()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.swiper-container {
|
||||||
|
position: relative !important;
|
||||||
|
.count-tip {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 20px;
|
||||||
|
padding: 2px 8px;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: #bcbcbc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.van-swipe {
|
||||||
|
width: 100%;
|
||||||
|
height: 40vh;
|
||||||
|
|
||||||
|
// .van-image {
|
||||||
|
// width: 100%;
|
||||||
|
// height: 100%;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-style {
|
||||||
|
width: 97%;
|
||||||
|
margin: 5px auto 0;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
.goods-name {
|
||||||
|
color: #fff;
|
||||||
|
background: linear-gradient(to right, #e8f4f3, #93dad1, #5fb0a5);
|
||||||
|
.box_1 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
|
||||||
|
.no-bold {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-right {
|
||||||
|
margin-top: 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.goods-company text,
|
||||||
|
.goods-details text {
|
||||||
|
margin-right: 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #5c5b5b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.goods-company view,
|
||||||
|
.goods-details view,
|
||||||
|
.goods-company h4 {
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h4-title {
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 5px 0;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prove-container {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #00a288;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,192 @@
|
||||||
|
<template>
|
||||||
|
<!-- 装备出租记录 -->
|
||||||
|
<view class="goods-details">
|
||||||
|
<!-- <h4 class="h4-title">出租记录</h4> -->
|
||||||
|
<van-cell-group inset v-for="(item, index) in deviceInfo.leaseList" :key="index">
|
||||||
|
<van-cell title="订单号" :value="item.orderCode" />
|
||||||
|
<van-cell title="租赁方" :value="item.leaseName" />
|
||||||
|
<van-cell title="租赁开始时间" :value="item.leaseStartTime" />
|
||||||
|
<van-cell title="租赁结束时间" :value="item.leaseEndTime" />
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<van-empty description="暂无记录" v-if="!deviceInfo.leaseList" />
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { computed, ref } from 'vue'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { useMemberStore } from '@/stores/index.js'
|
||||||
|
import { getDeviceDetailsAPI } from '@/services/goods/index.js'
|
||||||
|
import { addBookCarAPI, getBookCarDetailsAPI } from '@/services/cart/index.js'
|
||||||
|
const memberStore = useMemberStore()
|
||||||
|
const userCompanyId = ref()
|
||||||
|
const userCompanyName = ref()
|
||||||
|
const images = ref([])
|
||||||
|
const activeIndex = ref(1)
|
||||||
|
const deviceInfo = ref({})
|
||||||
|
const cartCount = ref(0)
|
||||||
|
const props = defineProps({
|
||||||
|
maId: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: () => '',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const goodsLabel = ref([
|
||||||
|
{ goods_label: '装备编号:', label_content: 'code' },
|
||||||
|
{ goods_label: '装备类目:', label_content: 'groupName' },
|
||||||
|
{ goods_label: '装备型号:', label_content: 'typeName' },
|
||||||
|
{ goods_label: '规格:', label_content: '' },
|
||||||
|
{ goods_label: '品牌:', label_content: 'brand' },
|
||||||
|
{ goods_label: '出厂日期:', label_content: 'productionDate' },
|
||||||
|
{ goods_label: '功能特点:', label_content: '' },
|
||||||
|
])
|
||||||
|
const goodsPicCount = computed(() => {
|
||||||
|
return images.value.length
|
||||||
|
})
|
||||||
|
const onSwiperChange = (e) => {
|
||||||
|
activeIndex.value = e + 1
|
||||||
|
}
|
||||||
|
const getDeviceDetailsData = async () => {
|
||||||
|
const { data: res } = await getDeviceDetailsAPI(props.maId)
|
||||||
|
deviceInfo.value.leaseList = res.leaseList
|
||||||
|
// images.value = res.mainFileList
|
||||||
|
}
|
||||||
|
// 获取预约车数量
|
||||||
|
const getBookCarDetailsData = async () => {
|
||||||
|
cartCount.value = 0
|
||||||
|
const { data: res } = await getBookCarDetailsAPI()
|
||||||
|
if (res.length > 0) {
|
||||||
|
res.forEach((e) => {
|
||||||
|
cartCount.value = e.devInfoVoList.length + cartCount.value
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
cartCount.value = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 加入预约车
|
||||||
|
const onAddCart = () => {
|
||||||
|
showConfirmDialog({
|
||||||
|
title: '温馨提示',
|
||||||
|
message: '是否确认加入预约车',
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
console.log(deviceInfo.value, 'deviceInfo')
|
||||||
|
const { companyId, maId } = deviceInfo.value
|
||||||
|
const res = await addBookCarAPI({
|
||||||
|
maId,
|
||||||
|
orderCompany: companyId,
|
||||||
|
})
|
||||||
|
if (res.code === 200) {
|
||||||
|
showSuccessToast('加入成功')
|
||||||
|
getDeviceDetailsData()
|
||||||
|
getBookCarDetailsData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {})
|
||||||
|
}
|
||||||
|
// 立即承租
|
||||||
|
const onRentNow = () => {
|
||||||
|
uni.navigateTo({ url: `/pages/order/index?id=${deviceInfo.value.maId}` })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 跳转预约车
|
||||||
|
const onCartBarPage = () => {
|
||||||
|
uni.switchTab({ url: '/pages/cart/index' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 在线聊
|
||||||
|
const onLineMessage = () => {
|
||||||
|
const { companyId, companyName, ownId } = deviceInfo.value
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/message-pages/index?id=${companyId}&name=${companyName}&ownId=${ownId}&formName=${userCompanyName.value}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
userCompanyId.value = memberStore.userInfo.companyId
|
||||||
|
userCompanyName.value = memberStore.userCompanyName
|
||||||
|
getDeviceDetailsData()
|
||||||
|
getBookCarDetailsData()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.swiper-container {
|
||||||
|
position: relative !important;
|
||||||
|
.count-tip {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 20px;
|
||||||
|
padding: 2px 8px;
|
||||||
|
border-radius: 2px;
|
||||||
|
background-color: #bcbcbc;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.van-swipe {
|
||||||
|
width: 100%;
|
||||||
|
height: 40vh;
|
||||||
|
|
||||||
|
// .van-image {
|
||||||
|
// width: 100%;
|
||||||
|
// height: 100%;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-style {
|
||||||
|
width: 97%;
|
||||||
|
margin: 5px auto 0;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
.goods-name {
|
||||||
|
color: #fff;
|
||||||
|
background: linear-gradient(to right, #e8f4f3, #93dad1, #5fb0a5);
|
||||||
|
.box_1 {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
|
||||||
|
.no-bold {
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-right {
|
||||||
|
margin-top: 6px;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.goods-company text,
|
||||||
|
.goods-details text {
|
||||||
|
margin-right: 16px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #5c5b5b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.goods-company view,
|
||||||
|
.goods-details view,
|
||||||
|
.goods-company h4 {
|
||||||
|
padding: 2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h4-title {
|
||||||
|
padding: 12px 0;
|
||||||
|
margin: 5px 0;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.prove-container {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #00a288;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<view class="tabs-container">
|
<view class="tabs-container">
|
||||||
<van-icon name="arrow-left" @click="onHandleBack" />
|
<van-icon name="arrow-left" @click="onHandleBack" />
|
||||||
<van-tabs v-model:active="activeTabs" swipeable color="#00a288" background="#c9ead4">
|
<van-tabs v-model:active="activeTabs" swipeable color="#00a288" background="#c9ead4">
|
||||||
<van-tab v-for="(t, i) in tabList" :title="t.tab_name"> </van-tab>
|
<van-tab v-for="(t, i) in tabList" :title="t.tab_name" />
|
||||||
</van-tabs>
|
</van-tabs>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
@ -14,9 +14,12 @@
|
||||||
:style="{ paddingBottom: actionBarHeight + 'px' }"
|
:style="{ paddingBottom: actionBarHeight + 'px' }"
|
||||||
>
|
>
|
||||||
<DetailsModel v-if="activeTabs === 0" :maId="maId" />
|
<DetailsModel v-if="activeTabs === 0" :maId="maId" />
|
||||||
<view v-else>
|
<DetailsAppearance v-if="activeTabs === 1" :maId="maId" />
|
||||||
|
<DetailsProve v-if="activeTabs === 2" :maId="maId" />
|
||||||
|
<DetailsRecord v-if="activeTabs === 3" :maId="maId" />
|
||||||
|
<!-- <view v-else>
|
||||||
{{ tabList[activeTabs].tab_name }}
|
{{ tabList[activeTabs].tab_name }}
|
||||||
</view>
|
</view> -->
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -24,6 +27,9 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { nextTick, ref } from 'vue'
|
import { nextTick, ref } from 'vue'
|
||||||
import DetailsModel from './components/details-model.vue'
|
import DetailsModel from './components/details-model.vue'
|
||||||
|
import DetailsAppearance from './components/details-appearance.vue'
|
||||||
|
import DetailsProve from './components/details-prove.vue'
|
||||||
|
import DetailsRecord from './components/details-record.vue'
|
||||||
import { onLoad } from '@dcloudio/uni-app'
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
const activeTabs = ref(0)
|
const activeTabs = ref(0)
|
||||||
const maId = ref('')
|
const maId = ref('')
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ const activeSelect = ref(0)
|
||||||
const showBottom = ref(false)
|
const showBottom = ref(false)
|
||||||
const deviceList = ref([])
|
const deviceList = ref([])
|
||||||
const total = ref(0)
|
const total = ref(0)
|
||||||
const activeTypeName = ref('')
|
const activeTypeName = ref('机具')
|
||||||
const searchModelValue = ref('')
|
const searchModelValue = ref('')
|
||||||
const searchParams = ref({
|
const searchParams = ref({
|
||||||
keyWord: '',
|
keyWord: '',
|
||||||
|
|
@ -395,8 +395,11 @@ onLoad((options) => {
|
||||||
if (options.type == 1) {
|
if (options.type == 1) {
|
||||||
activeTypeName.value = '机具'
|
activeTypeName.value = '机具'
|
||||||
}
|
}
|
||||||
searchParams.value.keyWord = options.value
|
searchParams.value.keyWord = options?.value
|
||||||
searchModelValue.value = options.value
|
searchModelValue.value = options?.value
|
||||||
|
searchParams.value.typeId = options?.typeId
|
||||||
|
searchParams.value.companyId = options?.companyId
|
||||||
|
options?.typeId ? (searchParams.value.level = 3) : ''
|
||||||
getDeviceListData(true)
|
getDeviceListData(true)
|
||||||
getTypeListData()
|
getTypeListData()
|
||||||
const companyList = memberStore.companyList.map((e) => {
|
const companyList = memberStore.companyList.map((e) => {
|
||||||
|
|
|
||||||
|
|
@ -52,9 +52,54 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<van-tabs
|
||||||
|
animated
|
||||||
|
color="#22AB9B"
|
||||||
|
v-model:active="activeClass"
|
||||||
|
title-active-color="#22AB9B"
|
||||||
|
>
|
||||||
|
<van-tab title="装备分类">
|
||||||
|
<van-sidebar v-model="activeLevel1">
|
||||||
|
<van-sidebar-item
|
||||||
|
:title="item.name"
|
||||||
|
:key="item.id"
|
||||||
|
v-for="item in classDeviceList"
|
||||||
|
/>
|
||||||
|
</van-sidebar>
|
||||||
|
<van-sidebar v-model="activeLevel2">
|
||||||
|
<van-sidebar-item
|
||||||
|
:title="item.name"
|
||||||
|
:key="item.id"
|
||||||
|
v-for="item in classDeviceList[activeLevel1]?.children"
|
||||||
|
/>
|
||||||
|
</van-sidebar>
|
||||||
|
<view style="flex: 1" class="deviceClass">
|
||||||
|
<view
|
||||||
|
class="van-ellipsis"
|
||||||
|
:key="item.id"
|
||||||
|
v-for="item in classDeviceList3"
|
||||||
|
@click="onClickDevice(item)"
|
||||||
|
>
|
||||||
|
{{ item.name }} ({{ item.maCount ? item.maCount : 0 }})
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="公司分类">
|
||||||
|
<view style="flex: 1" class="companyClass">
|
||||||
|
<view
|
||||||
|
class="van-ellipsis"
|
||||||
|
:key="item.companyId"
|
||||||
|
v-for="item in memberStore.companyList"
|
||||||
|
@click="onClickCompany(item)"
|
||||||
|
>
|
||||||
|
{{ item.companyName }}({{ item.maCount ? item.maCount : 0 }})
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</van-tab>
|
||||||
|
</van-tabs>
|
||||||
|
|
||||||
<view class="order-data">
|
<view class="order-data">
|
||||||
<TitleTip />
|
<TitleTip />
|
||||||
|
|
||||||
<van-cell-group inset>
|
<van-cell-group inset>
|
||||||
<van-grid :column-num="3">
|
<van-grid :column-num="3">
|
||||||
<van-grid-item v-for="(o, i) in orderData" :key="i" @click="onViewMyOrder(o)">
|
<van-grid-item v-for="(o, i) in orderData" :key="i" @click="onViewMyOrder(o)">
|
||||||
|
|
@ -83,7 +128,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
import orderIcon_1 from '@/static/index/order_icon1.png'
|
import orderIcon_1 from '@/static/index/order_icon1.png'
|
||||||
import orderIcon_2 from '@/static/index/order_icon2.png'
|
import orderIcon_2 from '@/static/index/order_icon2.png'
|
||||||
import orderIcon_3 from '@/static/index/order_icon3.png'
|
import orderIcon_3 from '@/static/index/order_icon3.png'
|
||||||
|
|
@ -96,10 +141,11 @@ import TitleTip from '@/components/TitleTip/index'
|
||||||
import { onLoad, onShow } from '@dcloudio/uni-app'
|
import { onLoad, onShow } from '@dcloudio/uni-app'
|
||||||
import { useMemberStore } from '@/stores/index.js'
|
import { useMemberStore } from '@/stores/index.js'
|
||||||
import {
|
import {
|
||||||
getOrderStatusCountAPI,
|
|
||||||
getToDoListAPI,
|
getToDoListAPI,
|
||||||
getNoticeLListAPI,
|
getNoticeLListAPI,
|
||||||
|
getOrderStatusCountAPI,
|
||||||
} from '@/services/index/index.js'
|
} from '@/services/index/index.js'
|
||||||
|
import { getEquipmentTypeAPI } from '@/services/common/index.js'
|
||||||
const activeTypeName = ref('机具')
|
const activeTypeName = ref('机具')
|
||||||
const searchModelValue = ref('')
|
const searchModelValue = ref('')
|
||||||
const memberStore = useMemberStore()
|
const memberStore = useMemberStore()
|
||||||
|
|
@ -109,6 +155,10 @@ const activeUser = ref(1)
|
||||||
const finished = ref(false)
|
const finished = ref(false)
|
||||||
const toDoListMessage = ref([])
|
const toDoListMessage = ref([])
|
||||||
const noticeListMessage = ref([])
|
const noticeListMessage = ref([])
|
||||||
|
const activeClass = ref(0)
|
||||||
|
const activeLevel1 = ref(0)
|
||||||
|
const activeLevel2 = ref(0)
|
||||||
|
const classDeviceList = ref([])
|
||||||
const orderData = ref([
|
const orderData = ref([
|
||||||
{ order_title: '我的订单', order_count: 0, order_status: 0, order_icon: orderIcon_1 },
|
{ order_title: '我的订单', order_count: 0, order_status: 0, order_icon: orderIcon_1 },
|
||||||
{
|
{
|
||||||
|
|
@ -192,6 +242,28 @@ const onViewMore = (item) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getEquipmentTypeData = async () => {
|
||||||
|
const { data: result } = await getEquipmentTypeAPI()
|
||||||
|
classDeviceList.value = result
|
||||||
|
// classDeviceList3.value =
|
||||||
|
// classDeviceList.value[activeLevel1.value].children[activeLevel2.value].children
|
||||||
|
}
|
||||||
|
|
||||||
|
const classDeviceList3 = computed(() => {
|
||||||
|
return classDeviceList.value[activeLevel1.value]?.children[activeLevel2.value].children
|
||||||
|
})
|
||||||
|
|
||||||
|
const onClickDevice = (item) => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/goods-list/index?typeId=${item.id}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const onClickCompany = (item) => {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/goods-list/index?companyId=${item.companyId}`,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onLoad(() => {
|
onLoad(() => {
|
||||||
finished.value = true
|
finished.value = true
|
||||||
userCompanyName.value = memberStore?.userCompanyName
|
userCompanyName.value = memberStore?.userCompanyName
|
||||||
|
|
@ -199,14 +271,13 @@ onLoad(() => {
|
||||||
|
|
||||||
onShow(async () => {
|
onShow(async () => {
|
||||||
activeUser.value = memberStore.userType
|
activeUser.value = memberStore.userType
|
||||||
|
|
||||||
if (activeUser.value === 2) {
|
if (activeUser.value === 2) {
|
||||||
uni.setTabBarItem({
|
uni.setTabBarItem({
|
||||||
index: 2,
|
index: 2,
|
||||||
visible: true,
|
visible: true,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
getEquipmentTypeData()
|
||||||
getOrderStatusCountData()
|
getOrderStatusCountData()
|
||||||
|
|
||||||
const res = await getToDoListAPI()
|
const res = await getToDoListAPI()
|
||||||
|
|
@ -305,4 +376,70 @@ onShow(async () => {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
:deep(.van-tabs__content--animated) {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
:deep(.van-tab__panel) {
|
||||||
|
max-height: 40vh;
|
||||||
|
display: flex;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.companyClass {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
view {
|
||||||
|
width: calc((100% - 20px) / 3);
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 0 6px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 16px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #999999;
|
||||||
|
background-color: #e9e9e9;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
& view:nth-child(3n) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
& view:hover {
|
||||||
|
background-color: #22ab9b !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.deviceClass {
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
padding-left: 10px;
|
||||||
|
view {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 0 6px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 16px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #999999;
|
||||||
|
background-color: #e9e9e9;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
& view:nth-child(2n) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
& view:hover {
|
||||||
|
background-color: #22ab9b !important;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
:deep(.van-sidebar-item--select:before) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -179,13 +179,13 @@ onLoad(async (options) => {
|
||||||
fileList: [],
|
fileList: [],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
lossRecordList.value = res.lossRecordList
|
lossRecordList.value = res.lossRecordList.map((e) => {
|
||||||
fileListAll.value = res.fileInfoList.map((e) => {
|
|
||||||
return {
|
return {
|
||||||
...e,
|
...e,
|
||||||
fileList: [],
|
fileList: [],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
fileListAll.value = res.fileInfoList
|
||||||
orderDetails.value = res
|
orderDetails.value = res
|
||||||
|
|
||||||
fileListAll.value.forEach((e) => {
|
fileListAll.value.forEach((e) => {
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,293 @@
|
||||||
<text style="color: #000"> 订单详情 </text>
|
<text style="color: #000"> 订单详情 </text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<van-cell-group inset style="flex: 1"> </van-cell-group>
|
<!-- <van-cell-group inset style="flex: 1"> </van-cell-group> -->
|
||||||
|
|
||||||
|
<scroll-view scroll-y style="padding: 10px; box-sizing: border-box">
|
||||||
|
<view class="order-set">
|
||||||
|
<van-row>
|
||||||
|
<van-col span="12">
|
||||||
|
<view class="company-box">
|
||||||
|
<van-image width="1.5rem" height="1.2rem" :src="companyImg" />
|
||||||
|
<view class="company-name">
|
||||||
|
<view> 安徽送变电公司 </view>
|
||||||
|
<van-image fit="cover" height="0.5rem" :src="companyBg" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</van-col>
|
||||||
|
<van-col span="10" class="contacts">
|
||||||
|
<!-- <van-tag :type="orderType(orderDetails.orderStatus)">
|
||||||
|
{{ orderText(orderDetails.orderStatus) }}
|
||||||
|
</van-tag> -->
|
||||||
|
</van-col>
|
||||||
|
</van-row>
|
||||||
|
|
||||||
|
<view v-for="goods in orderDetailsList">
|
||||||
|
<van-row>
|
||||||
|
<van-col span="24">
|
||||||
|
<view class="items-info">
|
||||||
|
<van-image
|
||||||
|
fit="cover"
|
||||||
|
height="4rem"
|
||||||
|
width="4rem"
|
||||||
|
:src="goods.url"
|
||||||
|
/>
|
||||||
|
<view class="info">
|
||||||
|
<view style="color: #000">
|
||||||
|
{{ goods.deviceName }}
|
||||||
|
<text style="color: var(--van-submit-bar-price-color)">
|
||||||
|
¥ {{ goods.costs }}
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
<view>
|
||||||
|
装备编号:{{ goods.code }}
|
||||||
|
|
||||||
|
<!-- <van-tag :type="orderType(goods.orderStatus)">
|
||||||
|
{{ orderText(goods.orderStatus) }}
|
||||||
|
</van-tag> -->
|
||||||
|
</view>
|
||||||
|
<view>装备型号:{{ goods.typeName }}</view>
|
||||||
|
<view> 租赁时长: {{ goods.days }}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</van-col>
|
||||||
|
</van-row>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<van-cell-group inset>
|
||||||
|
<TitleTip :title="`订单信息`" />
|
||||||
|
<van-cell title="订单编号:" :value="orderDetails.code" />
|
||||||
|
<van-cell title="下单时间:" :value="orderDetails.orderTime" />
|
||||||
|
<van-cell title="出租单位:" :value="orderDetails.czcompanyName" />
|
||||||
|
<van-cell title="出租人:" :value="orderDetails.person" />
|
||||||
|
<van-cell title="出租人电话:" :value="orderDetails.personPhone" />
|
||||||
|
<van-cell title="承租单位" :value="orderDetails.companyName" />
|
||||||
|
<van-cell title="承租人" :value="orderDetails.nickName" />
|
||||||
|
<van-cell title="承租人电话" :value="orderDetails.phoneNumber" />
|
||||||
|
<van-cell title="收货地址" :value="orderDetails.address" />
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<view v-if="orderDetails.orderStatus == 20">
|
||||||
|
<TitleTip :title="`租赁费用明细`" />
|
||||||
|
<view
|
||||||
|
:key="item.id"
|
||||||
|
class="items-container"
|
||||||
|
v-for="(item, index) in orderDetailDtoList"
|
||||||
|
>
|
||||||
|
<view class="count-title">
|
||||||
|
<text></text>
|
||||||
|
<text style="font-weight: bold">设备{{ index + 1 }}</text>
|
||||||
|
</view>
|
||||||
|
<van-cell-group inset>
|
||||||
|
<van-cell title="装备编号" :value="item.code" />
|
||||||
|
<van-cell title="装备名称" :value="item.deviceName" />
|
||||||
|
<van-cell title="装备型号" :value="item.typeName" />
|
||||||
|
<van-cell title="装备数量" :value="item.num" />
|
||||||
|
<van-cell title="租赁单价(元/天)" :value="item.dayLeasePrice" />
|
||||||
|
<van-cell title="租赁天数" :value="item.dateDays" />
|
||||||
|
<van-cell
|
||||||
|
title="租期"
|
||||||
|
:value="`${item.preOutboundTime}至${item.rentOverTime}`"
|
||||||
|
/>
|
||||||
|
<van-cell title="租赁费用" :value="item.costs" />
|
||||||
|
<van-cell title="改价后费用" :value="item.changeCost" />
|
||||||
|
<!-- <van-cell title="操作改价" /> -->
|
||||||
|
<van-field
|
||||||
|
v-model="item.costs"
|
||||||
|
name="密码"
|
||||||
|
label="操作改价"
|
||||||
|
placeholder="请输入改价后费用"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<van-empty description="暂无数据" v-if="orderDetailDtoList.length === 0" />
|
||||||
|
|
||||||
|
<TitleTip :title="`维修费用明细`" />
|
||||||
|
|
||||||
|
<view
|
||||||
|
:key="item.id"
|
||||||
|
class="items-container"
|
||||||
|
v-for="(item, index) in repairRecordList"
|
||||||
|
>
|
||||||
|
<view class="count-title">
|
||||||
|
<text></text>
|
||||||
|
<text style="font-weight: bold">设备{{ index + 1 }}</text>
|
||||||
|
</view>
|
||||||
|
<van-cell-group inset>
|
||||||
|
<van-cell title="装备编号" :value="item.code" />
|
||||||
|
<van-cell title="装备名称" :value="item.deviceName" />
|
||||||
|
<van-cell title="装备型号" :value="item.typeName" />
|
||||||
|
<van-cell title="维修数量" :value="item.repairNum" />
|
||||||
|
<van-cell title="维修费用(元)" :value="item.repairPrice" />
|
||||||
|
<van-cell title="改价后费用(元)" :value="item.repairChangePrice" />
|
||||||
|
<van-cell title="附件" center>
|
||||||
|
<template #right-icon>
|
||||||
|
<view>
|
||||||
|
<van-text-ellipsis :content="item.fileList[0]?.fileName" />
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-field
|
||||||
|
v-model="item.repairPrice"
|
||||||
|
label="操作改价"
|
||||||
|
placeholder="请输入改价后费用"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
</view>
|
||||||
|
<van-empty description="暂无数据" v-if="repairRecordList.length === 0" />
|
||||||
|
|
||||||
|
<TitleTip :title="`报废费用明细`" />
|
||||||
|
|
||||||
|
<view
|
||||||
|
:key="item.id"
|
||||||
|
class="items-container"
|
||||||
|
v-for="(item, index) in scrapRecordList"
|
||||||
|
>
|
||||||
|
<view class="count-title">
|
||||||
|
<text></text>
|
||||||
|
<text style="font-weight: bold">设备{{ index + 1 }}</text>
|
||||||
|
</view>
|
||||||
|
<van-cell-group inset>
|
||||||
|
<van-cell title="装备编号" :value="item.code" />
|
||||||
|
<van-cell title="装备名称" :value="item.deviceName" />
|
||||||
|
<van-cell title="装备型号" :value="item.typeName" />
|
||||||
|
<van-cell title="报废数量" :value="item.scrapNum" />
|
||||||
|
<van-cell title="报废原因" :value="item.scrapReason" />
|
||||||
|
<van-cell title="报废费用(元)" :value="item.scrapPrice" />
|
||||||
|
<van-cell title="改价后费用(元)" :value="item.scrapChangePrice" />
|
||||||
|
<van-cell title="附件" center>
|
||||||
|
<template #right-icon>
|
||||||
|
<view>
|
||||||
|
<van-text-ellipsis :content="item.fileList[0]?.fileName" />
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-field
|
||||||
|
v-model="item.scrapPrice"
|
||||||
|
name="密码"
|
||||||
|
label="操作改价"
|
||||||
|
placeholder="请输入改价后费用"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
</view>
|
||||||
|
<van-empty description="暂无数据" v-if="scrapRecordList.length === 0" />
|
||||||
|
|
||||||
|
<TitleTip :title="`丢失费用明细`" />
|
||||||
|
<view
|
||||||
|
:key="item.id"
|
||||||
|
class="items-container"
|
||||||
|
v-for="(item, index) in lossRecordList"
|
||||||
|
>
|
||||||
|
<view class="count-title">
|
||||||
|
<text></text>
|
||||||
|
<text style="font-weight: bold">设备{{ index + 1 }}</text>
|
||||||
|
</view>
|
||||||
|
<van-cell-group inset>
|
||||||
|
<van-cell title="装备编号" :value="item.code" />
|
||||||
|
<van-cell title="装备名称" :value="item.deviceName" />
|
||||||
|
<van-cell title="装备型号" :value="item.typeName" />
|
||||||
|
<van-cell title="丢失数量" :value="item.lossNum" />
|
||||||
|
<van-cell title="丢失费用(元)" :value="item.lossPrice" />
|
||||||
|
<van-cell title="改价后费用(元)" :value="item.lossChangePrice" />
|
||||||
|
<van-cell title="附件" center>
|
||||||
|
<template #right-icon>
|
||||||
|
<view>
|
||||||
|
<van-text-ellipsis :content="item.fileList[0]?.fileName" />
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-field
|
||||||
|
v-model="item.lossPrice"
|
||||||
|
name="密码"
|
||||||
|
label="操作改价"
|
||||||
|
placeholder="请输入改价后费用"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
</view>
|
||||||
|
<van-empty description="暂无数据" v-if="lossRecordList.length === 0" />
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { useMemberStore } from '@/stores/index.js'
|
import companyImg from '@/static/goods/company-img.png'
|
||||||
const memberStore = useMemberStore()
|
import companyBg from '@/static/goods/company-bg.png'
|
||||||
|
import TitleTip from '@/components/TitleTip/index'
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import { editOrderDetailsAPI, getOverhaulAPI } from '@/services/order/index.js'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
const orderDetailsList = ref([])
|
||||||
|
const orderDetails = ref({})
|
||||||
|
const orderDetailDtoList = ref([])
|
||||||
|
const repairRecordList = ref([])
|
||||||
|
const scrapRecordList = ref([])
|
||||||
|
const lossRecordList = ref([])
|
||||||
|
const fileListAll = ref([])
|
||||||
const onClickLeft = () => {
|
const onClickLeft = () => {
|
||||||
uni.navigateBack()
|
uni.reLaunch({
|
||||||
|
url: '/pages/order-list/index',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getOverhaulData = async (orderId) => {
|
||||||
|
const { data: res } = await getOverhaulAPI({ orderId })
|
||||||
|
orderDetailDtoList.value = res.orderDetailDtoList
|
||||||
|
repairRecordList.value = res.repairRecordList.map((e) => {
|
||||||
|
return {
|
||||||
|
...e,
|
||||||
|
fileList: [],
|
||||||
|
}
|
||||||
|
})
|
||||||
|
scrapRecordList.value = res.scrapRecordList.map((e) => {
|
||||||
|
return {
|
||||||
|
...e,
|
||||||
|
fileList: [],
|
||||||
|
}
|
||||||
|
})
|
||||||
|
lossRecordList.value = res.lossRecordList.map((e) => {
|
||||||
|
return {
|
||||||
|
...e,
|
||||||
|
fileList: [],
|
||||||
|
}
|
||||||
|
})
|
||||||
|
fileListAll.value = res.fileInfoList
|
||||||
|
fileListAll.value.forEach((e) => {
|
||||||
|
repairRecordList.value.forEach((j) => {
|
||||||
|
if (e.modelId == j.maId && e.fileType == 0) {
|
||||||
|
j.fileList.push({
|
||||||
|
fileName: e.fileName,
|
||||||
|
fileUrl: e.fileUrl,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
scrapRecordList.value.forEach((j) => {
|
||||||
|
if (e.modelId == j.maId && e.fileType == 1) {
|
||||||
|
j.fileList.push({
|
||||||
|
fileName: e.fileName,
|
||||||
|
fileUrl: e.fileUrl,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
lossRecordList.value.forEach((j) => {
|
||||||
|
if (e.modelId == j.maId && e.fileType == 2) {
|
||||||
|
j.fileList.push({
|
||||||
|
fileName: e.fileName,
|
||||||
|
fileUrl: e.fileUrl,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
onLoad(async (options) => {
|
||||||
|
const { data: res } = await editOrderDetailsAPI({ orderId: options?.orderId })
|
||||||
|
orderDetails.value = res
|
||||||
|
orderDetailsList.value = res.detailsList
|
||||||
|
if (res.orderStatus == 20) {
|
||||||
|
getOverhaulData(options?.orderId)
|
||||||
|
}
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
@ -27,6 +304,83 @@ const onClickLeft = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.van-cell-group--inset) {
|
:deep(.van-cell-group--inset) {
|
||||||
padding: 15px 0;
|
padding: 5px 10px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-set {
|
||||||
|
padding: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 6px;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
.van-row {
|
||||||
|
padding: 2px 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.company-box {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
.company-name {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
view {
|
||||||
|
padding-left: 6px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.van-image {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.items-info {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.info {
|
||||||
|
font-size: 14px;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
view {
|
||||||
|
width: 100%;
|
||||||
|
padding: 1px 0 1px 10px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #6f6f6f;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.van-image {
|
||||||
|
margin: 0 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
& view:first-child {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.items-container {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
|
||||||
|
.count-title text:first-child {
|
||||||
|
display: inline-block;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #ff660f;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@
|
||||||
(item.orderStatus == 1 || item.orderStatus == 2) &&
|
(item.orderStatus == 1 || item.orderStatus == 2) &&
|
||||||
orderQueryParams.flag
|
orderQueryParams.flag
|
||||||
"
|
"
|
||||||
@click="onEditOrderStatus(item, parseInt(item.orderStatus))"
|
@click.stop="onEditOrderStatus(item, parseInt(item.orderStatus))"
|
||||||
>
|
>
|
||||||
{{ initBtnText(item.orderStatus) }}
|
{{ initBtnText(item.orderStatus) }}
|
||||||
</van-button>
|
</van-button>
|
||||||
|
|
@ -792,7 +792,7 @@ const onSubmitRepairResult = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const onJumpOrderDetails = (item) => {
|
const onJumpOrderDetails = (item) => {
|
||||||
uni.navigateTo({ url: '/pages/order-details/index' })
|
uni.navigateTo({ url: `/pages/order-details/index?orderId=${item.orderId}` })
|
||||||
}
|
}
|
||||||
|
|
||||||
onLoad((options) => {
|
onLoad((options) => {
|
||||||
|
|
|
||||||
|
|
@ -203,13 +203,13 @@ onLoad(async (options) => {
|
||||||
fileList: [],
|
fileList: [],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
lossRecordList.value = res.lossRecordList
|
lossRecordList.value = res.lossRecordList.map((e) => {
|
||||||
fileListAll.value = res.fileInfoList.map((e) => {
|
|
||||||
return {
|
return {
|
||||||
...e,
|
...e,
|
||||||
fileList: [],
|
fileList: [],
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
fileListAll.value = res.fileInfoList
|
||||||
orderDetails.value = res
|
orderDetails.value = res
|
||||||
|
|
||||||
fileListAll.value.forEach((e) => {
|
fileListAll.value.forEach((e) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue