From 46e6a2b43b042963953b4d1d6a36e0cee69962b0 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 27 四月 2026 20:03:16 +0800
Subject: [PATCH] 小程序端和PC端bug修复
---
admin/src/components/business/OperaDispatch.vue | 138 ++++++++++++++++++++++++++++++++--------------
1 files changed, 96 insertions(+), 42 deletions(-)
diff --git a/admin/src/components/business/OperaDispatch.vue b/admin/src/components/business/OperaDispatch.vue
index 24f5aae..a81122a 100644
--- a/admin/src/components/business/OperaDispatch.vue
+++ b/admin/src/components/business/OperaDispatch.vue
@@ -2,7 +2,7 @@
<GlobalWindow
title="鎵嬪姩娲惧崟"
:visible.sync="visible"
- width="700px"
+ width="60%"
@confirm="handleConfirm"
@close="handleClose"
>
@@ -10,60 +10,72 @@
<div class="info-row">
<div class="info-item">
<span class="label">璁㈠崟缂栧彿锛�</span>
- <span class="value">{{ orderInfo.orderNo }}</span>
+ <span class="value" v-if="orderInfo.order">{{ orderInfo.order.code || '' }}</span>
</div>
<div class="info-item">
<span class="label">瀹炰粯閲戦锛�</span>
- <span class="value">楼{{ (orderInfo.payAmount / 100).toFixed(2) }}</span>
+ <span class="value" v-if="orderInfo.order">楼{{ ((orderInfo.order.payAmount ||0) / 100).toFixed(2) }}</span>
</div>
<div class="info-item">
<span class="label">閰嶉�佹柟寮忥細</span>
- <span class="value">
- <span v-if="orderInfo.deliveryType === 1">鏅�氶厤閫�</span>
- <span v-else-if="orderInfo.deliveryType === 2">鎬ラ�熻揪</span>
- <span v-else-if="orderInfo.deliveryType === 3">寮傚湴瀵勯��</span>
- <span v-else>-</span>
+ <span class="value" v-if="orderInfo.order">
+ <span v-if="orderInfo.order.type === 0">灏卞湴瀵勫瓨</span>
+ <span v-if="orderInfo.order.type === 1">鍚屽煄閰嶉��</span>
+ <span style="margin-left: 20px;border: 1px solid #0c6ce3;border-radius: 5px;font-size: 12px;padding:2px 10px;color: #0c6ce3 " v-if="orderInfo.order.type === 1 && orderInfo.order.isUrgent === 0">鏅�氶厤閫�</span>
+ <span style="margin-left: 20px;border: 1px solid orange;border-radius: 5px;font-size: 12px;padding:2px 10px;color: orange " v-if="orderInfo.order.type === 1 && orderInfo.order.isUrgent === 1">鎬ラ�熻揪</span>
</span>
+ </div>
+ <div class="info-item">
+ <el-button type="primary" @click="showLogList" >鍔犳�ユ棩蹇�</el-button>
</div>
</div>
</div>
-
- <el-table :data="orderInfo.goodsList" stripe class="goods-table">
- <el-table-column prop="goodsName" label="鐗╁搧鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="goodsSize" label="鐗╁搧灏哄" min-width="80px"></el-table-column>
+ <el-table style="border: 1px solid #f2f2f2;" :data="orderInfo.detailList" stripe class="goods-table">
+ <el-table-column prop="luggageName" label="鐗╁搧鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column prop="luggageDetail" label="鐗╁搧灏哄" min-width="80px"></el-table-column>
<el-table-column label="閰嶉�佷环锛堝厓锛�" min-width="100px">
- <template slot-scope="{row}">楼{{ (row.deliveryPrice / 100).toFixed(2) }}</template>
+ <template slot-scope="{row}"><span >楼{{ ((row.unitPrice||0) / 100).toFixed(2) }}</span></template>
</el-table-column>
- <el-table-column prop="quantity" label="鏁伴噺" min-width="60px"></el-table-column>
+ <el-table-column prop="num" label="鏁伴噺" min-width="60px"></el-table-column>
<el-table-column label="灏忚锛堝厓锛�" min-width="100px">
- <template slot-scope="{row}">楼{{ ((row.deliveryPrice * row.quantity) / 100).toFixed(2) }}</template>
+ <template slot-scope="{row}"><span class="yellowstate">楼{{ (((row.subtotal || 0)) / 100).toFixed(2) }}</span></template>
</el-table-column>
</el-table>
-
- <el-form ref="form" :model="form" :rules="rules" label-width="100px" class="dispatch-form">
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px" class="dispatch-form" inline>
<el-form-item label="閰嶉�佸徃鏈�" prop="driverId">
- <el-select v-model="form.driverId" placeholder="璇烽�夋嫨閰嶉�佸徃鏈�" style="width: 100%">
- <el-option label="鍙告満A" :value="1"></el-option>
- <el-option label="鍙告満B" :value="2"></el-option>
+ <el-select v-model="form.driverId" placeholder="璇烽�夋嫨閰嶉�佸徃鏈�" filterable style="width: 400px;">
+ <el-option v-for="item in driverList" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="鍔犳�ヨ垂" prop="urgentFee">
- <el-input-number v-model="form.urgentFee" :min="0" :precision="2" controls-position="right" style="width: 100%"></el-input-number>
+ <el-input-number v-model="form.urgentFee" :min="0" :precision="2" controls-position="right" style="width: 400px;"></el-input-number>
</el-form-item>
<el-form-item label="澶囨敞璇存槑" prop="remark">
- <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ュ娉ㄨ鏄�" :rows="3"></el-input>
+ <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ュ娉ㄨ鏄�" style="width: 400px;" :rows="3"></el-input>
</el-form-item>
</el-form>
+ <orderProgress ref ='orderProgress'></orderProgress>
</GlobalWindow>
</template>
-
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById, dispatch as dispatchOrder, logListPage } from '@/api/business/orderManagement'
+import { paidDepositList } from '@/api/business/driver'
+import orderProgress from '@/components/business/orderProgress'
export default {
name: 'OperaDispatch',
- components: { GlobalWindow },
+ components: { GlobalWindow, orderProgress },
data () {
+ const numRule = (rule, value, callBack) => {
+ if (value ==='') {
+ callBack(new Error('鍔犳�ヨ垂涓嶈兘涓虹┖'))
+ } else if (value < 0.1) {
+ callBack(new Error('璇疯緭鍏ユ纭殑鍔犳�ヨ垂'))
+ } else {
+ callBack()
+ }
+ }
return {
visible: false,
orderInfo: {
@@ -72,30 +84,70 @@
deliveryType: '',
goodsList: []
},
+ driverList: [],
form: {
- driverId: '',
- urgentFee: 0,
- remark: ''
+ driverId: 0,
+ orderId: 0,
+ remark: '',
+ urgentFee: 10
},
rules: {
- driverId: [{ required: true, message: '璇烽�夋嫨閰嶉�佸徃鏈�', trigger: 'change' }]
+ urgentFee: [{ required: true,validator:numRule, trigger: 'change' }]
}
}
},
methods: {
open (row) {
- this.orderInfo = {
- orderNo: row.orderNo,
- payAmount: row.payAmount || 0,
- deliveryType: row.deliveryType || '',
- goodsList: row.goodsList || []
- }
+ var that = this
this.form = {
- driverId: '',
- urgentFee: 0,
- remark: ''
+ driverId: null,
+ orderId: row.id,
+ remark: '',
+ urgentFee: 0
}
+ this.orderInfo = { order: row }
+ that.orderInfo.detailList = that.orderInfo.detailList || []
+ getById(row.id).then(res => {
+ res = res || {}
+ res.detailList = res.detailList || []
+ res.order = res.order || {}
+ that.orderInfo = res
+ that.orderInfo.order = that.orderInfo.order || {}
+ that.loadDriverList()
+ }).catch(e => {
+ this.$tip.apiFailed(e)
+ this.visible = false
+ })
this.visible = true
+ },
+ showLogList () {
+ var that = this
+ if (!this.orderInfo.order || !this.orderInfo.order.id) {
+ return
+ }
+ logListPage({
+ capacity: 10000,
+ model: {
+ objTypeList: [2, 3],
+ orderId: this.orderInfo.order.id
+ },
+ page: 1
+ }).then(res => {
+ var orderLogList = res.records || []
+ if (orderLogList.length) {
+ this.$refs.orderProgress.open('璁㈠崟娲惧崟鏃ュ織', orderLogList || [])
+ } else {
+ this.$message.warning('鏈煡璇㈠埌浠讳綍娲惧崟璁板綍锛�')
+ }
+ }).catch(e => {
+ })
+ },
+ loadDriverList () {
+ var that = this
+ paidDepositList().then(res => {
+ that.driverList = res || []
+ }).catch(e => {
+ })
},
handleClose () {
this.visible = false
@@ -103,11 +155,13 @@
handleConfirm () {
this.$refs.form.validate(valid => {
if (!valid) return
- this.$emit('confirm', {
- orderId: this.orderInfo.id,
- ...this.form
+ dispatchOrder(this.form).then(res => {
+ this.$tip.apiSuccess(res || '娲惧崟鎴愬姛')
+ this.$emit('success')
+ this.visible = false
+ }).catch(e => {
+ this.$tip.apiFailed(e)
})
- this.visible = false
})
}
}
@@ -126,7 +180,7 @@
border-radius: 4px;
}
.info-item {
- display: flex;
+ /*display: flex;*/
font-size: 14px;
}
.info-item .label {
--
Gitblit v1.9.3