| | |
| | | export function orderPlanCancelOrder (data) { |
| | | return request.post('/business/goodsorder/orderPlanCancelOrder', data) |
| | | } |
| | | export function orderRefund (data) { |
| | | return request.post('/business/goodsorder/orderRefund', data) |
| | | } |
| | | export function orderSendOutGoods (data) { |
| | | return request.post('/business/goodsorder/orderSendOutGoods', data) |
| | | } |
| | |
| | | <div v-if="info.status ==4" class="header-grey">å·²å
³é</div> |
| | | <div v-if="info.status ==6" class="header-grey">已鿬¾</div> |
| | | <div style="text-align: right;"> |
| | | <div class="header-red-btn" v-if="info.status == 0" @click="$refs.OperaOrderCancelWindow.open('åæ¶è®¢å', info)">åæ¶è®¢å</div> |
| | | <div class="header-red-btn" v-if="info.status == 3" @click="$refs.OperaOrderCancelWindow.open('订å鿬¾', info)">订å鿬¾</div> |
| | | <div class="header-red-btn" v-if="info.status == 0 || info.status == 1" @click="$refs.OperaOrderCancelWindow.open('åæ¶è®¢å', info)">åæ¶è®¢å</div> |
| | | <div class="header-red-btn" v-if="info.status == 3" @click="$refs.OperaOrderRefundWindow.open('订å鿬¾', info)">订å鿬¾</div> |
| | | <div class="header-blue-btn" @click="showChangeRecord">åæ´è®°å½</div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="info-item" > |
| | | <div class="info-item-a">åæ¶æ¶é´ï¼<span >{{info.cancelDate}}</span></div> |
| | | <div class="info-item-a">åæ¶äººåï¼<span>{{info.cancelUserName }}</span></div> |
| | | <div class="info-item-a">åæ¶äººåï¼<span>{{info.cancelUser !=null?info.cancelUserName:'ç¨æ·ä¸»å¨åæ¶'}}</span></div> |
| | | <div class="info-item-a">åæ¶è¯´æï¼<span>{{info.cancelInfo }}</span></div> |
| | | </div> |
| | | <div class="info-item"></div> |
| | |
| | | <el-table-column prop="name" label="åååç§°" align="center" min-width="150px"> </el-table-column> |
| | | <el-table-column prop="categoryName" label="åååç±»" align="center" min-width="150px"> </el-table-column> |
| | | <el-table-column prop="goodsWeight" label="éé(kg)" align="center" min-width="150px"></el-table-column> |
| | | <el-table-column prop="price" label="éå®ä»·(å
)" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column prop="price" label="éå®ä»·(å
)" align="center" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span>ï¿¥{{(row.price || 0).toFixed(2)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="goodsNum" label="æ°é" align="center" min-width="150px"></el-table-column> |
| | | <el-table-column prop="totalPrice" label="å°è®¡" align="center" min-width="150px"></el-table-column> |
| | | <el-table-column prop="totalPrice" label="å°è®¡(å
)" align="center" min-width="150px"> |
| | | <template slot-scope="{row}"> |
| | | <span class="orange">ï¿¥{{(row.totalPrice || 0).toFixed(2)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="info-item" > |
| | | <div class="info-item-a">å忻价ï¼<span> ï¿¥{{((info.totalPrice||0)-(info.mailPrice || 0)).toFixed(2)}}</span></div> |
| | | <div class="info-item-a">å¿«éè´¹ï¼<span>ï¿¥{{(info.mailPrice||0).toFixed(2)}}</span></div> |
| | | <div class="info-item-a">è®¢åæ»ä»·ï¼<span > ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div> |
| | | <div class="info-item-a">è®¢åæ»ä»·ï¼<span> ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div> |
| | | </div> |
| | | <div class="info-item" > |
| | | <div class="info-item-a">伿 å
±åï¼<span> -ï¿¥{{((info.integral||0) + (info.couponPrice||0)).toFixed(2) }}</span> |
| | | <span style="margin-left: 20px;" > |
| | | <el-button type="text" @click="showCouponPrice">æ¥ç</el-button> |
| | | <span v-if="((info.integral||0) + (info.couponPrice||0)).toFixed(2)>0"> |
| | | <el-popover |
| | | style="margin-left: 20px;" |
| | | placement="right-start" |
| | | width="360px" |
| | | @show="visible2=true" |
| | | @hide="visible2=false" |
| | | trigger="click" > |
| | | <div style="margin-top: 10px;font-size: 12px;"> |
| | | <div style="margin-bottom: 20px;font-weight: 600;"> 伿 å
±åï¼<span class="red"> -ï¿¥{{((info.integral||0) + (info.couponPrice||0)).toFixed(2) }}</span></div> |
| | | <div style="margin-bottom: 10px;display: flex;align-items: baseline;" v-if="(info.integral||0)>0"> |
| | | <span style="border-left: 3px solid red;font-size: 10px;margin-right: 10px;height: 10px;"></span> |
| | | ç§¯åæµæ£ï¼-ï¿¥{{(info.integral||0).toFixed(2) +' '}}使ç¨{{(info.useIntegral||0)}}ç§¯åæµæ£ï¿¥{{(info.integral||0).toFixed(2) +' '}}å
|
| | | </div> |
| | | <div style="margin-bottom: 10px;display: flex;align-items: baseline;" v-if="(info.couponPrice||0)>0"> |
| | | <span style="border-left: 3px solid red;font-size: 10px;margin-right: 10px;height: 10px;"></span> |
| | | {{' ä¼ æ å¸ '}}ï¼{{' '}}-ï¿¥{{(info.couponPrice||0).toFixed(2) +' '}}使ç¨{{info.couponName}} |
| | | </div> |
| | | </div> |
| | | <el-button slot="reference" type="text">{{visible2?'æ¶èµ·':'æ¥ç'}}</el-button> |
| | | </el-popover> |
| | | </span> |
| | | </div> |
| | | </div> |
| | |
| | | <OperaChangeIntegralWindow ref="OperaChangeIntegralWindow" @success="successBiz"/> |
| | | <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="successBiz"/> |
| | | <OperaOrderCancelWindow ref="OperaOrderCancelWindow" @success="successBiz"/> |
| | | <OperaOrderRefundWindow ref="OperaOrderRefundWindow" @success="successBiz"/> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | |
| | | import OperaOrderCancelWindow from '@/components/business/OperaOrderCancelWindow' |
| | | import OperaOrderMarkWindow from '@/components/business/OperaOrderMarkWindow' |
| | | import OperaShipmentsWindow from '@/components/business/OperaShipmentsWindow' |
| | | import OperaOrderRefundWindow from '@/components/business/OperaOrderRefundWindow' |
| | | export default { |
| | | name: 'OperaShopGoodsWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow,OperaOrderMarkWindow,OperaShipmentsWindow ,OperaOrderCancelWindow}, |
| | | components: { OperaOrderRefundWindow, GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow, OperaOrderMarkWindow, OperaShipmentsWindow, OperaOrderCancelWindow }, |
| | | data () { |
| | | return { |
| | | title: '', |
| | | visible2: false, |
| | | visible: false, |
| | | tabelHeight: null, |
| | | info: {}, |
| | |
| | | this.loadInfo() |
| | | this.$emit('success') |
| | | }, |
| | | showCouponPrice(){ |
| | | showCouponPrice () { |
| | | |
| | | }, |
| | | loadInfo () { |
| | |
| | | |
| | | } |
| | | .info-item-a span{ |
| | | font-weight: 600; |
| | | //font-weight: 500; |
| | | } |
| | | .info-item-a .btn{ |
| | | font-size: 12px !important; |
| | |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" label-width="120px" label-suffix="ï¼" :rules="rules" inline> |
| | | <p class="tip-warn" style="margin: 30px;"> |
| | | <p class="tip-warn" style="margin: 30px;font-size: 14px;"> |
| | | <i class="el-icon-warning"></i> |
| | | æä½è¯´æï¼æ¨æ£å¨åæ¶è®¢å<span class="red">{{ form.code }} </span>ï¼è¯·è°¨æ
æä½ï¼ï¼</p> |
| | | <el-form-item label="夿³¨" prop="cancelInfo"> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="100%" |
| | | :visible.sync="visible" |
| | | > |
| | | <div class="detail-box" > |
| | | <p class="tip-warn" style="margin-bottom: 30px;font-size: 14px;"> |
| | | <i class="el-icon-warning"></i> |
| | | æä½è¯´æï¼æ¨æ£é对订å<span class="red">{{ info.code }} </span>è¿è¡é款æä½ï¼è¯¥æä½ä¸å¯é请谨æ
æä½ï¼ï¼</p> |
| | | <div class="header"> |
| | | <div class="header-b">ååä¿¡æ¯</div> |
| | | </div> |
| | | <div class="info-item" > |
| | | <el-table :data="info.goodsorderDetailList||[]" stripe border > |
| | | <el-table-column prop="imgurl" label="ååå¾" min-width="80px" align="center"> |
| | | <template slot-scope="{row}"> |
| | | <el-image style="width: 50px;height: 50px;" v-if="row.imgurl && row.imgurl!=''" :src="row.imgurl" :preview-src-list="[row.imgurl]"></el-image> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="åååç§°" align="center" min-width="150px"> </el-table-column> |
| | | <el-table-column prop="categoryName" label="åååç±»" align="center" min-width="150px"> </el-table-column> |
| | | <el-table-column prop="goodsWeight" label="éé(kg)" align="center" min-width="150px"></el-table-column> |
| | | <el-table-column prop="price" label="éå®ä»·(å
)" align="center" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span>ï¿¥{{(row.price || 0).toFixed(2)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="goodsNum" label="æ°é" align="center" min-width="150px"></el-table-column> |
| | | <el-table-column prop="totalPrice" label="å°è®¡(å
)" align="center" min-width="150px"> |
| | | <template slot-scope="{row}"> |
| | | <span class="orange">ï¿¥{{(row.totalPrice || 0).toFixed(2)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="info-item" > |
| | | <div class="info-item-a">å忻价ï¼<span> ï¿¥{{((info.totalPrice||0)-(info.mailPrice || 0)).toFixed(2)}}</span></div> |
| | | <div class="info-item-a">å¿«éè´¹ï¼<span>ï¿¥{{(info.mailPrice||0).toFixed(2)}}</span></div> |
| | | <div class="info-item-a">è®¢åæ»ä»·ï¼<span> ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div> |
| | | </div> |
| | | <div class="info-item" > |
| | | <div class="info-item-a">ç§¯åæµæ£ï¼<span v-if="(info.integral||0)>0">-ï¿¥{{(info.integral||0).toFixed(2) +' '}}使ç¨{{(info.useIntegral||0)}}ç§¯åæµæ£ï¿¥{{(info.integral||0).toFixed(2) +' '}}å
</span></div> |
| | | <div class="info-item-a">伿 å¸ï¼<span v-if="(info.couponPrice||0)>0">-ï¿¥{{(info.couponPrice||0).toFixed(2) +' '}} 使ç¨{{info.couponName}}</span></div> |
| | | <div class="info-item-a">ç»éåç»ç®ï¼<span> ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div> |
| | | </div> |
| | | <div class="info-item" > |
| | | <div class="info-item-a">å®ä»éé¢ï¼<span class="red"> ï¿¥{{(info.price||0).toFixed(2)}}</span></div> |
| | | <div class="info-item-a">è¿è¿ç¨æ·ç§¯åï¼<span class="orange"> {{(info.returnMemberIntegral||0)}}</span></div> |
| | | <div class="info-item-a">è¿è¿ç»éå积åï¼<span class="orange">ï¿¥{{(info.shopSettlement || 0).toFixed(2) }}</span></div> |
| | | </div> |
| | | <div class="header"> |
| | | <div class="header-b">鿬¾å
容</div> |
| | | <div class="info-item" > |
| | | <el-form :model="form" ref="form" label-width="120px" label-suffix="ï¼" :rules="rules" inline> |
| | | <el-form-item label="鿬¾éé¢" prop="price" style="display: block;"> |
| | | <el-input type="number" v-model="form.price" placeholder="请è¾å
¥é款éé¢" v-trim> <template slot="append"> å
</template> </el-input> |
| | | <span class="tip-warn" style="margin-bottom: 30px;font-size: 14px;"> <i class="el-icon-warning"></i> |
| | | æç¤ºï¼å½å订åæå¤å¯ééé¢ä¸º<span class="red">{{(info.price||0).toFixed(2)}}</span></span> |
| | | </el-form-item> |
| | | <div style="display:flex;"> |
| | | <el-form-item label="éè¿" prop="refundInfo" style="display: inline;"> |
| | | <el-checkbox style="border: none;" v-model="checked1" label="éè¿å®¢æ·ä¼æ å¸" border></el-checkbox> |
| | | </el-form-item> |
| | | <el-form-item label="" prop="refundInfo" style="display: inline;"> |
| | | <el-checkbox style="border: none" v-model="checked1" label="éè¿å®¢æ·ç§¯å" border></el-checkbox> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="display:flex;"> |
| | | <el-form-item label="æ£é¤" prop="refundInfo" style="display: inline;"> |
| | | <el-checkbox style="border: none" v-model="checked1" label="æ£é¤ç»éåå·²ç»ç®éé¢" border></el-checkbox> |
| | | </el-form-item> |
| | | <el-form-item label="" prop="refundInfo" style="display: inline;"> |
| | | <el-checkbox style="border: none" v-model="checked1" label="æ£é¤å·²è¿å®¢æ·ç§¯å" border></el-checkbox> |
| | | </el-form-item> |
| | | <el-form-item label="" prop="refundInfo" style="display: inline;"> |
| | | <el-checkbox style="border: none" v-model="checked1" label="æ£é¤å·²è¿ç»éå积å" border></el-checkbox> |
| | | </el-form-item> |
| | | </div> |
| | | <el-form-item label="夿³¨" prop="refundInfo" style="display: block;"> |
| | | <el-input type="textarea" :autosize="{ minRows: 4, maxRows:4 }" style="width: 500px;" v-model="form.cancelInfo" placeholder="请è¾å
¥åæ¶è¯´æ" v-trim/> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <template v-slot:footer> |
| | | <el-button type="primary" @click="confirm">确认</el-button> |
| | | <el-button @click="visible=false">è¿å</el-button> |
| | | </template> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import { shopDetail } from '@/api/business/shop' |
| | | export default { |
| | | name: 'OperaOrderRefundWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | title: '', |
| | | visible2: false, |
| | | visible: false, |
| | | tabelHeight: null, |
| | | info: {}, |
| | | shopInfo: {}, |
| | | rules: { |
| | | price: [ |
| | | { required: true, message: '请è¾å
¥é款éé¢', tigger: 'blur' } |
| | | ] |
| | | }, |
| | | // æç´¢ |
| | | form: { |
| | | id: '', |
| | | checked1:false, |
| | | price: 0, |
| | | type: null |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: '订åä¿¡æ¯è¡¨', |
| | | api: '/business/goodsorder', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | successBiz () { |
| | | this.loadInfo() |
| | | this.$emit('success') |
| | | }, |
| | | loadInfo () { |
| | | shopDetail(this.info.distributionShopId).then(res => { |
| | | this.shopInfo = res || this.shopInfo |
| | | }) |
| | | }, |
| | | open (title, info) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.info = info || {} |
| | | this.form.price = '' |
| | | |
| | | if (this.info.distributionShopId != null) { |
| | | this.loadInfo() |
| | | } |
| | | }, |
| | | confirm () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | this.$dialog.messageWaring(`ç¡®å®è¿è¡é款该订åï¼${this.info.code}ï¼`) |
| | | .then(() => { |
| | | this.isWorking = true |
| | | this.api.orderRefund(this.form) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('鿬¾æå') |
| | | this.$emit('success') |
| | | }).catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | }) |
| | | |
| | | // è°ç¨æ°å»ºæ¥å£ |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | .table-pagination{ |
| | | position: fixed !important; |
| | | bottom: 50px; |
| | | } |
| | | .header-b{ |
| | | display: inline-block; |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | .header-red-btn{ |
| | | display: inline-block; |
| | | font-size: 12px; |
| | | background-color: red; |
| | | padding: 2px 10px 3px 10px; |
| | | margin-left: 20px; |
| | | color: white; |
| | | cursor: pointer; |
| | | border-radius: 5px ; |
| | | } |
| | | .header-blue-btn{ |
| | | display: inline-block; |
| | | font-size: 12px; |
| | | background-color: #216EEE; |
| | | padding: 2px 10px 3px 10px; |
| | | margin-left: 20px; |
| | | color: white; |
| | | cursor: pointer; |
| | | border-radius: 5px ; |
| | | } |
| | | .header-grey{ |
| | | display: inline-block; |
| | | font-size: 12px; |
| | | border: 1px solid grey; |
| | | padding: 2px 10px; |
| | | margin-left: 20px; |
| | | color: grey; |
| | | border-radius: 5px ; |
| | | } |
| | | .header-orange{ |
| | | display: inline-block; |
| | | font-size: 12px; |
| | | border: 1px solid orange; |
| | | padding: 2px 10px; |
| | | margin-left: 20px; |
| | | color: orange; |
| | | border-radius: 5px ; |
| | | } |
| | | .header-btn{ |
| | | display: inline-block; |
| | | border: none; |
| | | padding: 2px 10px; |
| | | margin-left: 20px; |
| | | } |
| | | .info-item{ |
| | | display: flex; |
| | | width: 100%; |
| | | margin: 15px; |
| | | } |
| | | .info-item-a{ |
| | | flex: 1; |
| | | font-size: 14px; |
| | | |
| | | } |
| | | .info-item-a span{ |
| | | } |
| | | .info-item-a .btn{ |
| | | font-size: 12px !important; |
| | | cursor: pointer !important; |
| | | } |
| | | </style> |
| | |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="ï¼" inline> |
| | | <p class="tip-warn" style="margin: 30px;"><i class="el-icon-warning"></i>æä½è¯´æï¼æ¨æ£å¨é对订åï¼<span class="red">{{ form.code }} </span>è¿è¡{{ form.status==2?'å¿«éåæ´':'åè´§' }}æä½ï¼</p> |
| | | <p class="tip-warn" style="margin: 30px;font-size: 14px;"><i class="el-icon-warning"></i>æä½è¯´æï¼æ¨æ£å¨é对订åï¼<span class="red">{{ form.code }} </span>è¿è¡{{ form.status==2?'å¿«éåæ´':'åè´§' }}æä½ï¼</p> |
| | | <el-form-item label="å¿«éå
¬å¸" prop="kdId"> |
| | | <el-select |
| | | v-model="form.kdId" |
| | |
| | | <span v-if="item.status ==1" class="orange">{{item.receiveType==1?'å¾
èªæ':'å¾
åè´§'}}</span> |
| | | <span v-if="item.status ==2" class="orange">å¾
æ¶è´§</span> |
| | | <span v-if="item.status ==3" class="grey">交æå®æ</span> |
| | | <span v-if="item.status ==4" class="grey">å·²å
³é</span> |
| | | <span v-if="item.status ==4" class="grey">已忶</span> |
| | | <span v-if="item.status ==6" class="grey">已鿬¾</span> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="action"> |
| | | <el-button v-if="item.status==1 && item.receiveType!=1" style=" width: 80%;" type="primary" @click="$refs.operaShipmentsWindow.open('åè´§', item)">åè´§</el-button> |
| | | <div></div> |
| | | <el-button v-if="item.status == 0" style="color: red; " type="text" @click="$refs.OperaOrderCancelWindow.open('åæ¶è®¢å', item)">åæ¶è®¢å</el-button> |
| | | <el-button v-if="item.status == 0 || item.status==1" style="color: red; " type="text" @click="$refs.OperaOrderCancelWindow.open('åæ¶è®¢å', item)">åæ¶è®¢å</el-button> |
| | | <div></div> |
| | | <el-button v-if="item.status == 3" style="color: red " type="text" @click="cancelOrder(item)">订å鿬¾</el-button> |
| | | <el-button v-if="item.status == 3" style="color: red " type="text" @click="$refs.OperaOrderRefundWindow.open('订å鿬¾', item)">订å鿬¾</el-button> |
| | | <div></div> |
| | | <el-button v-if="item.status==2 && item.receiveType!=1" style="color: #666; " type="text" @click="$refs.operaShipmentsWindow.open('å¿«éä¿¡æ¯åæ´', item)">å¿«éåæ´</el-button> |
| | | <div></div> |
| | |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaShipmentsWindow ref="operaShipmentsWindow" @success="search"/> |
| | | <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="handlePageChange"/> |
| | | <OperaOrderRefundWindow ref="OperaOrderRefundWindow" @success="handlePageChange"/> |
| | | <OperaOrderCancelWindow ref="OperaOrderCancelWindow" @success="handlePageChange"/> |
| | | <OperaGoodsOrderDetail ref="operaGoodsOrderDetail" @success="handlePageChange"/> |
| | | </TableLayout> |
| | |
| | | import OperaOrderMarkWindow from '@/components/business/OperaOrderMarkWindow' |
| | | import OperaOrderCancelWindow from '@/components/business/OperaOrderCancelWindow' |
| | | import OperaGoodsOrderDetail from '@/components/business/OperaGoodsOrderDetail' |
| | | import OperaOrderRefundWindow from "@/components/business/OperaOrderRefundWindow"; |
| | | export default { |
| | | name: 'Goodsorder', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaShipmentsWindow, OperaOrderMarkWindow, OperaGoodsOrderDetail,OperaOrderCancelWindow }, |
| | | components: {OperaOrderRefundWindow, TableLayout, Pagination, OperaShipmentsWindow, OperaOrderMarkWindow, OperaGoodsOrderDetail,OperaOrderCancelWindow }, |
| | | data () { |
| | | return { |
| | | status: '10', |
| | |
| | | { name: '2', label: 'å¾
æ¶è´§', count: 0 }, |
| | | { name: '3', label: '交æå®æ', count: 0 }, |
| | | { name: '6', label: '已鿬¾', count: 0 }, |
| | | { name: '4', label: '交æå
³é', count: 0 }], |
| | | { name: '4', label: '已忶', count: 0 }], |
| | | // æç´¢ |
| | | searchForm: { |
| | | id: '', |
| | |
| | | goodsorderService.orderPlanCancelOrder(goodsorder); |
| | | return ApiResponse.success(null); |
| | | } |
| | | @ApiOperation("订å鿬¾") |
| | | @PostMapping("/orderRefund") |
| | | @RequiresPermissions("business:goodsorder:update") |
| | | public ApiResponse orderRefund(@RequestBody Goodsorder goodsorder) { |
| | | goodsorderService.orderRefund(goodsorder); |
| | | return ApiResponse.success(null); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("ç©æµæ¥è¯¢") |
| | |
| | | @ApiModelProperty(value = "ç¨æ·å§å") |
| | | @TableField(exist = false) |
| | | private String memberName; |
| | | @ApiModelProperty(value = "伿 å¸åç§°") |
| | | @TableField(exist = false) |
| | | private String couponName; |
| | | @ApiModelProperty(value = "åæ¶äººåå§å") |
| | | @TableField(exist = false) |
| | | private String cancelUserName; |
| | |
| | | PageData<Goodsorder> shopOrderPage(PageWrap<ShopOrderRequest> pageWrap); |
| | | |
| | | |
| | | |
| | | void orderRefund(Goodsorder goodsorder); |
| | | } |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),ResponseStatus.DATA_EMPTY.getMessage()); |
| | | } |
| | | |
| | | cancelOrder( query.getId(), user.getId(),goodsorder.getCancelInfo() ); |
| | | cancelOrderNew( query.getId(), user.getId(),goodsorder.getCancelInfo() ); |
| | | |
| | | } |
| | | |
| | |
| | | .selectAs(Member::getNickname,Goodsorder::getNickName) |
| | | .selectAs(Member::getPhone,Goodsorder::getPhone) |
| | | .selectAs(Member::getName,Goodsorder::getMemberName) |
| | | .selectAs(SystemUser::getRealname,Goodsorder::getKdUserName) |
| | | .selectAs(MemberCoupon::getName,Goodsorder::getCouponName) |
| | | .select("t4.realname",Goodsorder::getKdUserName) |
| | | .select("t5.realname",Goodsorder::getCancelUserName) |
| | | .select("t6.realname",Goodsorder::getRefundUserName) |
| | | .selectAs(Shop::getName,Goodsorder::getShopName) |
| | | .leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId) |
| | | .leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId) |
| | | .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getKdUser) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getCancelUser) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getRefundUserId) |
| | | .eq(Goodsorder::getId,id); |
| | | Goodsorder result=goodsorderJoinMapper.selectJoinOne(Goodsorder.class,q); |
| | | if(Objects.nonNull(result)){ |
| | | MPJLambdaWrapper<GoodsorderDetail> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(GoodsorderDetail.class) |
| | | .selectAs(Labels::getName,GoodsorderDetail::getCategoryName) |
| | | .eq(GoodsorderDetail::getIsdeleted,Constants.ZERO) |
| | | .leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId) |
| | | .leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId) |
| | | .leftJoin(Labels.class,Labels::getId,Goods::getCategoryId) |
| | | .eq(GoodsorderDetail::getOrderId,result.getId()) ; |
| | | List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailMapper.selectList(queryWrapper); |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() |
| | |
| | | if(StringUtils.isNotBlank(model.getImgurl())){ |
| | | model.setImgurl(path+ model.getImgurl()); |
| | | } |
| | | //å°è®¡ |
| | | model.setTotalPrice(Constants.formatBigdecimal(model.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(model.getGoodsNum())))); |
| | | } |
| | | result.setGoodsorderDetailList(goodsorderDetailList); |
| | | } |
| | |
| | | queryWrapper.selectAll(Goodsorder.class); |
| | | queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName); |
| | | initPageQueryWrapper(queryWrapper,pageWrap); |
| | | queryWrapper.selectAs(MemberCoupon::getName,Goodsorder::getCouponName); |
| | | queryWrapper.leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId); |
| | | queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus()); |
| | | queryWrapper.orderByDesc(Goodsorder::getCreateDate); |
| | | |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(!(Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_PAY.getKey()) |
| | | || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey()) |
| | | || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey()) )){ |
| | | || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey()) |
| | | || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey()) )){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订ååæ¶å¤±è´¥ï¼è®¢åç¶æå·²æµè½¬ï¼"); |
| | | } |
| | | if(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO){ |
| | | if(Constants.formatBigdecimal(goodsorder.getPrice()).compareTo(BigDecimal.ZERO)>Constants.ZERO |
| | | && Constants.equalsObject(goodsorder.getPayStatus(),Constants.ONE) ){ |
| | | //微信ç°é鿬¾ |
| | | String refundCode = WxMiniUtilService.wxRefund(goodsorder.getCode().toString(), goodsorder.getPrice(), goodsorder.getPrice()); |
| | | Fund fund = new Fund(); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void orderComment(OrderCommentRequest orderCommentRequest){ |
| | |
| | | goodsorder.setIsComment(Constants.ONE); |
| | | goodsorderMapper.updateById(goodsorder); |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void orderRefund(Goodsorder param){ |
| | | Goodsorder goodsorder = goodsorderMapper.selectById(param.getId()); |
| | | if(!goodsorder.getMemberId().equals(goodsorder.getMemberId())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æä½å¤±è´¥ï¼ç¨æ·ä¿¡æ¯å¹é
失败ï¼"); |
| | | } |
| | | if(!goodsorder.getStatus().equals(Constants.OrderStatus.DONE.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æä½å¤±è´¥ï¼è®¢åæªå®æï¼æ æ³é款ï¼"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |