|
|
- <template>
- <view class="content">
- <navbar title="订单详情" leftClick @leftClick="$utils.navigateBack" />
-
- <!-- 头部图片 -->
- <view class="head">
- <image v-if="orderDetail.headerImage" class="head" :src="orderDetail.headerImage" mode="scaleToFill" />
- <image v-else class="head" src="/static/re/center.png" mode="scaleToFill" />
- </view>
-
- <!-- 计划信息 -->
- <view class="item-card b-relative">
- <view class="title">
- <label class="title-span">·</label>计划信息
- </view>
- <view class="tips" style="line-height:48rpx;font-size:28rpx">
- <view>到场时间:{{ orderDetail.arrivalTime }}</view>
- <view>计划数量:{{ orderDetail.quantity }} 立方或者趟</view>
- <view>合同类型:{{ orderDetail.contractType }}</view>
- <view @click="openMap">
- <label>施工地址:{{ orderDetail.address }}</label>
- <image src="/static/icons/icon1.png" class="square40" style="margin:0 0 -8rpx" />
- </view>
- </view>
- <view class="tips ti">{{ orderDetail.publisher }}发布</view>
- </view>
-
- <!-- 车辆信息 -->
- <view class="item-card">
- <view class="title">
- <label class="title-span">·</label>车辆信息
- </view>
- <view class="tips" style="line-height:48rpx;font-size:28rpx">
- <view>车辆牌照:{{ orderDetail.plateNumber }}</view>
- <view>车辆轴数:{{ orderDetail.axleCount }}</view>
- <view @click="viewCertificates">
- <label>证照信息:点击查看证件信息</label>
- <image src="/static/icons/icon1.png" class="square40" style="margin:0 0 -8rpx" />
- </view>
- </view>
- </view>
-
- <!-- 接单须知 -->
- <view class="item-card">
- <view class="title">
- <label class="title-span">·</label>接单须知
- </view>
- <view class="tips">
- <view>1.您需要预交保证金进行接单,接单后如有特殊情况请及时与平台沟通协调,可通过个人中心-我要拒单联系客服</view>
- <view>2.为了保障工作顺利开展建议您提前一定时间到达现场,请规划您的合理出行时间</view>
- <view>3.施工完成、取车前后请您按照平台要求及时准确的拍摄报,以便出现合同争议时通过您提交的信息保证您的利益</view>
- </view>
- </view>
-
- <!-- 确认接单按钮 -->
- <view v-if="showConfirmBtn" class="re-end-pand">
- <button @click="confirmOrder">确认接单</button>
- </view>
- </view>
- </template>
-
- <script>
- import navbar from '@/components/base/navbar.vue'
-
- export default {
- name: 'UserOrderd',
- components: {
- navbar
- },
- data() {
- return {
- orderId: '',
- showConfirmBtn: true,
- orderDetail: {
- headerImage: '',
- arrivalTime: '2024-01-15 08:00',
- quantity: '200',
- contractType: '按方计费',
- address: '长沙市雨花区建设工地A区',
- publisher: '湖南建设集团',
- plateNumber: '湘A12345',
- axleCount: '4轴',
- longitude: 112.9388,
- latitude: 28.2282
- }
- }
- },
- onLoad(options) {
- if (options.id) {
- this.orderId = options.id;
- this.loadOrderDetail();
- }
- uni.setNavigationBarTitle({
- title: '订单详情'
- });
- },
- methods: {
- // 加载订单详情
- loadOrderDetail() {
- // 模拟加载订单详情数据
- console.log('加载订单详情:', this.orderId);
- // 这里可以调用API获取真实数据
- },
-
- // 打开地图
- openMap() {
- uni.openLocation({
- latitude: this.orderDetail.latitude,
- longitude: this.orderDetail.longitude,
- name: '施工地址',
- address: this.orderDetail.address,
- success: () => {
- console.log('打开地图成功');
- },
- fail: (err) => {
- console.error('打开地图失败:', err);
- uni.showToast({
- title: '打开地图失败',
- icon: 'none'
- });
- }
- });
- },
-
- // 查看证件信息
- viewCertificates() {
- uni.navigateTo({
- url: '/pages_order/base/showcar?id=' + this.orderId
- });
- },
-
- // 确认接单
- confirmOrder() {
- uni.showModal({
- title: '确认接单',
- content: '确定要接取这个订单吗?接单后需要按时到达现场。',
- success: (res) => {
- if (res.confirm) {
- this.submitOrder();
- }
- }
- });
- },
-
- // 提交接单
- submitOrder() {
- uni.showLoading({
- title: '接单中...'
- });
-
- // 模拟接单请求
- setTimeout(() => {
- uni.hideLoading();
- uni.showToast({
- title: '接单成功',
- icon: 'success'
- });
-
- // 跳转到我的订单页面
- setTimeout(() => {
- uni.navigateTo({
- url: '/pages_order/user/orders'
- });
- }, 1500);
- }, 2000);
- },
-
- goBack() {
- uni.navigateBack();
- }
- }
- }
- </script>
-
- <style scoped lang="scss">
- .content {
- min-height: 100vh;
- background-color: #f5f5f5;
- }
-
- .head {
- height: 460rpx;
- width: 100vw;
- }
-
- .item-card {
- width: calc(100vw - 40rpx);
- min-height: 176rpx;
- padding: 30rpx 20rpx;
- background-color: #fff;
- margin-bottom: 10rpx;
- }
-
- .title {
- font-size: 30rpx;
- font-weight: 400;
- line-height: 36rpx;
- letter-spacing: 0px;
- color: #000000;
- margin-bottom: 20rpx;
- }
-
- .title-span {
- font-size: 30rpx;
- font-weight: bolder;
- margin-right: 10rpx;
- color: #F40000;
- }
-
- .tips {
- font-size: 24rpx;
- font-weight: 350;
- line-height: 36rpx;
- letter-spacing: 0px;
- color: #333333;
- padding: 20rpx;
-
- &.ti {
- position: absolute;
- top: 10rpx;
- right: 20rpx;
- color: #999;
- padding: 0;
- }
-
- view {
- margin-bottom: 10rpx;
-
- &:last-child {
- margin-bottom: 0;
- }
- }
- }
-
- .square40 {
- width: 40rpx;
- height: 40rpx;
- vertical-align: middle;
- margin-left: 10rpx;
- }
-
- .re-end-pand {
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100vw;
- padding: 30rpx;
- background-color: #fff;
- box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.1);
-
- button {
- width: 100%;
- height: 88rpx;
- line-height: 88rpx;
- background-color: #F40000;
- color: #fff;
- border-radius: 44rpx;
- font-size: 32rpx;
- font-weight: bold;
- border: none;
- }
- }
-
- .b-relative {
- position: relative;
- }
-
- .placeholder-icon {
- font-size: 120rpx;
- margin-bottom: 30rpx;
- }
-
- .placeholder-title {
- font-size: 36rpx;
- font-weight: bold;
- color: #333;
- margin-bottom: 20rpx;
- }
-
- .placeholder-text {
- font-size: 28rpx;
- color: #666;
- margin-bottom: 40rpx;
- }
-
- .back-btn {
- padding: 20rpx 40rpx;
- background-color: #007AFF;
- color: #fff;
- border-radius: 25rpx;
- font-size: 28rpx;
- border: none;
- }
- </style>
|