|
2 | 2 | <view> |
3 | 3 | <view class="form-box"> |
4 | 4 | <u--form ref="uForm" label-width="130rpx" :model="form"> |
5 | | - <u-form-item v-if="orderType == 5" label="售后类型" prop="type" required> |
| 5 | + <u-form-item v-if="orderType == 3" label="售后商品" prop="skuId" required @click="goodsPickerShow = true"> |
| 6 | + <u--input |
| 7 | + v-model="form.skuName" |
| 8 | + readonly |
| 9 | + placeholder="请选择售后商品" |
| 10 | + border="none" |
| 11 | + ></u--input> |
| 12 | + <u-icon slot="right" name="arrow-right"></u-icon> |
| 13 | + <u-picker v-if="orderDetail && orderDetail.goods" :show="goodsPickerShow" :columns="[orderDetail.goods]" keyName="goodsName" @cancel="goodsPickerShow=false" @confirm="goodsPickerSelect"></u-picker> |
| 14 | + </u-form-item> |
| 15 | + <u-form-item v-if="orderType == 3 && curGoods" label="售后数量" required> |
| 16 | + <u-number-box v-model="form.skuNum" :min="1" :max="curGoodsMaxNumber" integer></u-number-box> |
| 17 | + </u-form-item> |
| 18 | + <u-form-item v-if="orderType == 3" label="外包装" prop="packageDesc" required> |
| 19 | + <u-radio-group v-model="form.packageDesc" placement="row"> |
| 20 | + <u-radio :customStyle="{marginBottom: '8rpx', marginRight: '8rpx'}" label="无包装" name="0"> |
| 21 | + </u-radio> |
| 22 | + <u-radio :customStyle="{marginBottom: '8rpx', marginRight: '8rpx'}" label="包装完整" name="10"> |
| 23 | + </u-radio> |
| 24 | + <u-radio :customStyle="{marginBottom: '8rpx', marginRight: '8rpx'}" label="包装破损" name="20"> |
| 25 | + </u-radio> |
| 26 | + </u-radio-group> |
| 27 | + </u-form-item> |
| 28 | + <u-form-item v-if="orderType == 3" v-show="supportAfsTypeList" label="售后类型" prop="type" required> |
| 29 | + <u-radio-group v-model="form.type" placement="row"> |
| 30 | + <u-radio v-for="item in supportAfsTypeList" :key="item.code" :customStyle="{marginBottom: '8rpx', marginRight: '8rpx'}" :label="item.name" :name="item.code"> |
| 31 | + </u-radio> |
| 32 | + </u-radio-group> |
| 33 | + </u-form-item> |
| 34 | + <u-form-item v-else-if="orderType == 5" label="售后类型" prop="type" required> |
6 | 35 | <u-radio-group v-model="form.type" placement="row" @change="typeChange"> |
7 | 36 | <u-radio v-for="item in supportAfsTypeList" :key="item" :customStyle="{marginBottom: '8rpx', marginRight: '8rpx'}" :label="item == 10 ? '退货' : '换货'" :name="item"> |
8 | 37 | </u-radio> |
|
18 | 47 | </u-radio> |
19 | 48 | </u-radio-group> |
20 | 49 | </u-form-item> |
| 50 | + <u-form-item v-if="orderType == 3 && goodsBackTypes" label="寄回方式" prop="goodsBackType" required> |
| 51 | + <u-radio-group v-model="form.goodsBackType" placement="row"> |
| 52 | + <u-radio v-for="item in goodsBackTypes" :key="item.code" :customStyle="{marginBottom: '8rpx', marginRight: '8rpx'}" :label="item.name" :name="item.code"> |
| 53 | + </u-radio> |
| 54 | + </u-radio-group> |
| 55 | + </u-form-item> |
21 | 56 | <u-cell v-if="orderSet && orderSet.afterSaleAddress && (form.type == 1 || form.type == 2)" title="寄回地址" required :label="orderSet.afterSaleAddress" value="复制" isLink clickable @click="cp(orderSet.afterSaleAddress)"></u-cell> |
22 | | - <u-form-item v-if="orderType != 5" label="收货情况" prop="logisticsStatus" required> |
| 57 | + <u-form-item v-if="orderType != 5 && orderType != 3" label="收货情况" prop="logisticsStatus" required> |
23 | 58 | <u-radio-group v-model="form.logisticsStatus" placement="row"> |
24 | 59 | <u-radio :customStyle="{marginBottom: '8rpx', marginRight: '8rpx'}" label="未收到货" :name="0"> |
25 | 60 | </u-radio> |
|
61 | 96 | export default { |
62 | 97 | data() { |
63 | 98 | return { |
| 99 | + orderDetail: undefined, |
| 100 | + goodsPickerShow: false, // 商品选择器 |
| 101 | + curGoods: undefined, // 申请售后的商品信息 |
| 102 | + curGoodsMaxNumber: 0, // 可申请售后的最大商品数量 |
64 | 103 | rules: { |
65 | 104 | type: [{ |
66 | 105 | type: 'number', |
|
88 | 127 | // 可以单个或者同时写两个触发验证方式 |
89 | 128 | trigger: ['change', 'blur'], |
90 | 129 | }], |
| 130 | + skuName: [{ |
| 131 | + required: true, |
| 132 | + message: '不能为空', |
| 133 | + // 可以单个或者同时写两个触发验证方式 |
| 134 | + trigger: ['change', 'blur'], |
| 135 | + }], |
| 136 | + goodsBackType: [{ |
| 137 | + required: true, |
| 138 | + message: '不能为空', |
| 139 | + // 可以单个或者同时写两个触发验证方式 |
| 140 | + trigger: ['change', 'blur'], |
| 141 | + }], |
| 142 | + packageDesc: [{ |
| 143 | + required: true, |
| 144 | + message: '不能为空', |
| 145 | + // 可以单个或者同时写两个触发验证方式 |
| 146 | + trigger: ['change', 'blur'], |
| 147 | + }], |
91 | 148 | }, |
92 | 149 | form: { |
93 | 150 | type: 0, |
94 | 151 | logisticsStatus: 0, |
95 | 152 | orderId: undefined, |
96 | | - reasonId: undefined, |
| 153 | + reasonId: '', |
97 | 154 | reason: undefined, |
98 | | - remark: undefined, |
| 155 | + remark: '', |
| 156 | + skuId: undefined, |
| 157 | + skuName: undefined, |
| 158 | + skuNum: undefined, |
| 159 | + goodsBackType: undefined, |
| 160 | + packageDesc: '10', |
| 161 | + queryType: '10' |
99 | 162 | }, |
100 | 163 | reasons: [ |
101 | 164 | "不喜欢/不想要", |
|
116 | 179 | orderType: 0, // 0 普通订单 1 周期订单 2 扫码点餐订单 3 京东vop订单 4 从区管进货 5 京东权益订单 |
117 | 180 | supportAfsTypeList: undefined, |
118 | 181 | joycityPointsSearchAfsApplyReasonList: undefined, |
119 | | - afsGoodsId: undefined |
| 182 | + afsGoodsId: undefined, |
| 183 | + goodsBackTypes: undefined |
120 | 184 | }; |
121 | 185 | }, |
122 | 186 | onReady() { |
|
127 | 191 | this.supportAfsTypeList = uni.getStorageSync('supportAfsTypeList') // 京东权益订单,支持的售后类型列表 10-退货 20-换货 |
128 | 192 | this.afsGoodsId = uni.getStorageSync('afsGoodsId') // 京东权益订单,售后的商品编号 |
129 | 193 | this.form.orderId = e.orderId |
| 194 | + this._orderDetail(e.orderId) |
130 | 195 | this._orderSet() |
131 | 196 | if(this.orderType == 5) { |
132 | 197 | this.form.type = this.supportAfsTypeList[0] |
|
135 | 200 | }, |
136 | 201 | mounted() {}, |
137 | 202 | methods: { |
| 203 | + async _orderDetail(orderId) { |
| 204 | + // https://www.yuque.com/apifm/nu0f75/oamel8 |
| 205 | + const res = await this.$wxapi.orderDetail(this.token, orderId) |
| 206 | + if (res.code != 0) { |
| 207 | + uni.showToast({ |
| 208 | + title: res.msg, |
| 209 | + icon: 'none' |
| 210 | + }) |
| 211 | + uni.navigateBack() |
| 212 | + return |
| 213 | + } |
| 214 | + this.orderDetail = res.data |
| 215 | + }, |
138 | 216 | async _orderSet() { |
139 | 217 | const res = await this.$wxapi.orderSet() |
140 | 218 | if(res.code == 0) { |
|
199 | 277 | return |
200 | 278 | } |
201 | 279 | } |
| 280 | + if(this.orderType == 3) { |
| 281 | + if(!this.curGoods) { |
| 282 | + uni.showToast({ |
| 283 | + title: '请选择售后商品', |
| 284 | + icon: 'none' |
| 285 | + }) |
| 286 | + return |
| 287 | + } |
| 288 | + } |
202 | 289 | this.$refs.uForm.validate().then(res => { |
203 | 290 | this._submit() |
204 | 291 | }).catch(errors => { |
|
259 | 346 | }) |
260 | 347 | } |
261 | 348 | }); |
| 349 | + }, |
| 350 | + async goodsPickerSelect(e) { |
| 351 | + const curGoods = e.value[0] |
| 352 | + // 判断该商品可售后的数量 |
| 353 | + if(this.orderType == 3) { |
| 354 | + let res = await this.$wxapi.jdvopQueryCanRefundNumber({ |
| 355 | + token: this.token, |
| 356 | + jdOrderId: this.orderDetail.orderInfo.orderNumberOuter, |
| 357 | + skuId: curGoods.supplyGoodsId, |
| 358 | + queryType: 10 |
| 359 | + }) |
| 360 | + if(res.code != 0) { |
| 361 | + uni.showToast({ |
| 362 | + title: res.msg, |
| 363 | + icon: 'none' |
| 364 | + }) |
| 365 | + return |
| 366 | + } |
| 367 | + if(res.data * 1 < 1) { |
| 368 | + uni.showToast({ |
| 369 | + title: '当前商品无法申请售后', |
| 370 | + icon: 'none' |
| 371 | + }) |
| 372 | + return |
| 373 | + } |
| 374 | + this.form.skuNum = res.data * 1 |
| 375 | + this.curGoodsMaxNumber = res.data * 1 |
| 376 | + // 查询支持的售后类型 |
| 377 | + res = await this.$wxapi.jdvopQueryRefundType({ |
| 378 | + token: this.token, |
| 379 | + jdOrderId: this.orderDetail.orderInfo.orderNumberOuter, |
| 380 | + skuId: curGoods.supplyGoodsId, |
| 381 | + queryType: 10 |
| 382 | + }) |
| 383 | + if(res.code != 0) { |
| 384 | + uni.showToast({ |
| 385 | + title: res.msg, |
| 386 | + icon: 'none' |
| 387 | + }) |
| 388 | + return |
| 389 | + } |
| 390 | + this.supportAfsTypeList = res.data // 退货(10)、换货(20)、维修(30), code : name |
| 391 | + this.form.type = res.data[0].code |
| 392 | + // 查询商品退还方式 |
| 393 | + res = await this.$wxapi.jdvopQueryGoodsBackType({ |
| 394 | + token: this.token, |
| 395 | + jdOrderId: this.orderDetail.orderInfo.orderNumberOuter, |
| 396 | + skuId: curGoods.supplyGoodsId, |
| 397 | + queryType: 10 |
| 398 | + }) |
| 399 | + if(res.code != 0) { |
| 400 | + uni.showToast({ |
| 401 | + title: res.msg, |
| 402 | + icon: 'none' |
| 403 | + }) |
| 404 | + return |
| 405 | + } |
| 406 | + this.goodsBackTypes = res.data |
| 407 | + this.form.goodsBackType = res.data[0].code |
| 408 | + } |
| 409 | + this.curGoods = e.value[0] |
| 410 | + this.goodsPickerShow = false |
| 411 | + this.form.skuId = this.curGoods.goodsId |
| 412 | + this.form.skuName = this.curGoods.goodsName |
262 | 413 | } |
263 | 414 | } |
264 | 415 | }; |
|
0 commit comments