|
|
@@ -157,16 +157,26 @@
|
|
|
</template>
|
|
|
</el-alert>
|
|
|
<el-form :model="shipForm" label-width="90px">
|
|
|
- <el-form-item label="物流公司">
|
|
|
+ <el-form-item label="物流公司" v-if="shipForm.shipType !== 'selfpickup'">
|
|
|
<el-input v-model="shipForm.expressCompany" placeholder="如:顺丰、中通" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="物流单号">
|
|
|
+ <el-form-item label="物流单号" v-if="shipForm.shipType !== 'selfpickup'">
|
|
|
<el-input v-model="shipForm.trackingNumber" placeholder="请输入物流单号" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="快递费(元)">
|
|
|
+ <el-form-item label="快递费(元)" v-if="shipForm.shipType !== 'selfpickup'">
|
|
|
<el-input v-model.number="shipForm.shippingCost" type="number" placeholder="0" />
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="发货方式">
|
|
|
+ <el-radio-group v-model="shipForm.shipType">
|
|
|
+ <el-radio label="express">快递发货</el-radio>
|
|
|
+ <el-radio label="selfpickup">用户自提</el-radio>
|
|
|
+ <el-radio label="local">同城配送</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
+ <el-alert v-if="shipTarget" title="提示" type="info" :closable="false" style="margin-top:8px">
|
|
|
+ 默认根据配送方式自动选择;如选错可手动覆盖。用户自提无需填写物流信息。
|
|
|
+ </el-alert>
|
|
|
<span slot="footer">
|
|
|
<el-button @click="shipDialogVisible = false">取消</el-button>
|
|
|
<el-button type="primary" @click="confirmShip" :loading="shipLoading">确认发货</el-button>
|
|
|
@@ -218,7 +228,7 @@ export default {
|
|
|
shipDialogVisible: false,
|
|
|
shipTarget: null,
|
|
|
shipLoading: false,
|
|
|
- shipForm: { expressCompany: '', trackingNumber: '', shippingCost: '' },
|
|
|
+ shipForm: { expressCompany: '', trackingNumber: '', shippingCost: '', shipType: 'express' },
|
|
|
refundDialogVisible: false,
|
|
|
refundTarget: null,
|
|
|
refundLoading: false,
|
|
|
@@ -275,17 +285,42 @@ export default {
|
|
|
},
|
|
|
showShipDialog(row) {
|
|
|
this.shipTarget = row
|
|
|
- this.shipForm = { expressCompany: '', trackingNumber: '', shippingCost: '' }
|
|
|
+ this.shipForm = {
|
|
|
+ expressCompany: '',
|
|
|
+ trackingNumber: '',
|
|
|
+ shippingCost: '',
|
|
|
+ shipType: this.defaultShipType(row && row.deliveryMethod)
|
|
|
+ }
|
|
|
this.shipDialogVisible = true
|
|
|
},
|
|
|
+ // 发货方式默认值:1快递 / 2自提 / 4线上服务 / 6同城 / 3、5及NULL 订单层面无法判定 → 默认快递,可手动覆盖
|
|
|
+ defaultShipType(deliveryMethod) {
|
|
|
+ var dm = deliveryMethod === null || deliveryMethod === undefined ? null : Number(deliveryMethod)
|
|
|
+ if (dm === 2 || dm === 4) return 'selfpickup'
|
|
|
+ if (dm === 6) return 'local'
|
|
|
+ return 'express'
|
|
|
+ },
|
|
|
async confirmShip() {
|
|
|
- if (!this.shipForm.trackingNumber.trim()) {
|
|
|
+ var isSelfPickup = this.shipForm.shipType === 'selfpickup'
|
|
|
+ if (!isSelfPickup && !this.shipForm.trackingNumber.trim()) {
|
|
|
return this.$message.warning('请填写物流单号')
|
|
|
}
|
|
|
+ if (!isSelfPickup && !this.shipForm.expressCompany.trim()) {
|
|
|
+ return this.$message.warning('请填写物流公司')
|
|
|
+ }
|
|
|
this.shipLoading = true
|
|
|
try {
|
|
|
const shippingCost = this.shipForm.shippingCost ? Math.round(parseFloat(this.shipForm.shippingCost) * 100) : null
|
|
|
- await shipOrder(this.shipTarget.orderNo, this.shipForm.trackingNumber, this.shipForm.expressCompany, { shippingCost })
|
|
|
+ // 自提订单后端要求不带物流信息(否则报"自提订单无需填写物流信息"),故显式传空
|
|
|
+ await shipOrder(
|
|
|
+ this.shipTarget.orderNo,
|
|
|
+ isSelfPickup ? '' : this.shipForm.trackingNumber,
|
|
|
+ isSelfPickup ? '' : this.shipForm.expressCompany,
|
|
|
+ {
|
|
|
+ shippingCost: isSelfPickup ? null : shippingCost,
|
|
|
+ shipType: this.shipForm.shipType
|
|
|
+ }
|
|
|
+ )
|
|
|
this.$message.success('发货成功')
|
|
|
this.shipDialogVisible = false
|
|
|
this.loadList()
|
|
|
@@ -406,7 +441,7 @@ export default {
|
|
|
return total - disc - pts;
|
|
|
},
|
|
|
deliveryMethodLabel(method) {
|
|
|
- var map = { 1: '快递配送', 2: '到店自提', 3: '快递/自提', 4: '线上服务', 5: '线上预约' }
|
|
|
+ var map = { 1: '快递配送', 2: '到店自提', 3: '快递/自提', 4: '线上服务', 5: '线上预约', 6: '同城配送' }
|
|
|
return map[method] || '快递'
|
|
|
},
|
|
|
getJsonField(snapshot, field) {
|