admin/src/api/business/goodsorder.js
@@ -34,6 +34,9 @@ export function orderRemark (data) { return request.post('/business/goodsorder/orderRemark', data) } export function orderPlanCancelOrder (data) { return request.post('/business/goodsorder/orderPlanCancelOrder', data) } export function orderSendOutGoods (data) { return request.post('/business/goodsorder/orderSendOutGoods', data) } admin/src/assets/style/style.scss
@@ -118,3 +118,7 @@ top: 1px; } } .detail-box{ display: block; margin: 20px; } admin/src/components/business/OperaChangeOrderRecordWindow.vue
@@ -70,6 +70,7 @@ this.title = title this.visible = true this.searchForm.memberId = goods.id this.tableData.list =[] this.search() } } admin/src/components/business/OperaGoodsOrderDetail.vue
@@ -4,7 +4,7 @@ width="100%" :visible.sync="visible" > <div style="display: block"> <div class="detail-box"> <div class="header"> <div class="header-b">订å详æ </div> <div v-if="info.status ==0" class="header-orange">å¾ æ¯ä»</div> @@ -13,7 +13,11 @@ <span v-if="info.status ==3" class="header-grey ">交æå®æ</span> <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-blue-btn" @click="showChangeRecord">åæ´è®°å½</div> </div> </div> <div class="info-item"> <div class="info-item-a">订åç¼å·ï¼<span>{{info.code}}</span></div> @@ -30,7 +34,11 @@ <div class="info-item-a" style="flex: 3">å½å±ç»éåï¼<span >{{ info.shopName }}</span></div> </div> <div class="info-item"> <div class="info-item-a" style="flex: 3">夿³¨ï¼<span v-if="info.sysInfo" class="red">{{info.sysInfo}}</span></div> <div class="info-item-a" style="flex: 3">夿³¨ï¼<span v-if="info.sysInfo" class="red">{{info.sysInfo}}</span> <span style="margin-left: 20px;" > <el-button type="text" @click="$refs.operaOrderMarkWindow.open(info.sysInfo && info.sysInfo.length?'ç¼è¾å¤æ³¨':'æ·»å 夿³¨', info)"> {{ info.sysInfo && info.sysInfo.length?'ä¿®æ¹å¤æ³¨':'æ·»å 夿³¨' }}</el-button> </span></div> </div> <div class="info-item"></div> <div class="header"> @@ -45,6 +53,8 @@ <template v-if="info.receiveType!=1"> <div class="header"> <div class="header-b">å¿«éä¿¡æ¯</div> <div class="header-blue-btn" v-if="info.status==1 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('åè´§',info)">åè´§</div> <div class="header-blue-btn" v-if="info.status==2 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('å¿«éåæ´',info)">å¿«éåæ´</div> </div> <div class="info-item" > <div class="info-item-a">æ¶è´§äººï¼<span class="el-icon-user">{{info.linkname}}</span></div> @@ -58,17 +68,88 @@ </div> <div class="info-item" > <div class="info-item-a">åè´§æ¶é´ï¼<span >{{info.kdDate }}</span></div> <div class="info-item-a" style="flex: 2">å¿«é夿³¨ï¼<span>{{info.kdInfo }}</span></div> <div class="info-item-a" style="flex: 2;">å¿«é夿³¨ï¼<span>{{info.kdInfo }}</span></div> </div> <div class="info-item"></div> </template> <template v-if="info.status ==6"> <div class="header"> <div class="header-b">鿬¾ä¿¡æ¯</div> <div class="header-blue-btn" v-if="info.status==1 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('åè´§',info)">åè´§</div> <div class="header-blue-btn" v-if="info.status==2 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('å¿«éåæ´',info)">å¿«éåæ´</div> </div> <div class="info-item" > <div class="info-item-a">鿬¾éé¢ï¼<span class="orange">ï¿¥{{(info.refundMoney||0).toFixed(2)}}</span></div> <div class="info-item-a" >æä½äººï¼<span>{{info.refundUserName }}</span></div> <div class="info-item-a" >鿬¾æ¶é´ï¼<span>{{info.refundTime }}</span></div> </div> <div class="info-item" > <div class="info-item-a" >鿬¾å¤æ³¨ï¼<span>{{info.kdInfo }}</span></div> </div> <div class="info-item"></div> </template> <template v-if="info.status == 4"> <div class="header"> <div class="header-b">åæ¶ä¿¡æ¯</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.cancelInfo }}</span></div> </div> <div class="info-item"></div> </template> <div class="header"> <div class="header-b">è¿ç§¯åä¿¡æ¯</div> </div> <div class="info-item" > <div class="info-item-a">è¿è¿ç¨æ·ç§¯åï¼<span class="orange"> {{(info.returnMemberIntegral||0)}}</span></div> <div class="info-item-a">è¿è¿ç»éå积åï¼<span class="orange">{{info.returnCustomerIntegral || 0 }}</span></div> <div class="info-item-a"></div> </div> <div class="info-item"></div> <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"></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> </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> -ï¿¥{{((info.integral||0) + (info.couponPrice||0)).toFixed(2) }}</span> <span style="margin-left: 20px;" > <el-button type="text" @click="showCouponPrice">æ¥ç</el-button> </span> </div> </div> <div class="info-item" > <div class="info-item-a">å®ä»éé¢ï¼<span class="red"> ï¿¥{{(info.price||0).toFixed(2)}}</span></div> </div> </div> <template v-slot:footer> <el-button @click="visible=false">è¿å</el-button> </template> <OperaChangeOrderRecordWindow ref="OperaChangeOrderRecordWindow"/> <OperaShipmentsWindow ref="operaShipmentsWindow" @success="successBiz"/> <OperaChangeIntegralWindow ref="OperaChangeIntegralWindow" @success="successBiz"/> <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="successBiz"/> <OperaOrderCancelWindow ref="OperaOrderCancelWindow" @success="successBiz"/> </GlobalWindow> </template> @@ -77,10 +158,13 @@ import BaseOpera from '@/components/base/BaseOpera' import OperaChangeOrderRecordWindow from '@/components/business/OperaChangeOrderRecordWindow' import OperaChangeIntegralWindow from '@/components/business/OperaChangeIntegralWindow' import OperaOrderCancelWindow from '@/components/business/OperaOrderCancelWindow' import OperaOrderMarkWindow from '@/components/business/OperaOrderMarkWindow' import OperaShipmentsWindow from '@/components/business/OperaShipmentsWindow' export default { name: 'OperaShopGoodsWindow', extends: BaseOpera, components: { GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow }, components: { GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow,OperaOrderMarkWindow,OperaShipmentsWindow ,OperaOrderCancelWindow}, data () { return { title: '', @@ -95,7 +179,6 @@ } } }, created () { this.config({ module: 'ç¨æ·ä¿¡æ¯è¡¨', @@ -106,9 +189,11 @@ }, methods: { successBiz () { this.handlePageChange() this.loadInfo() this.$emit('success') }, showCouponPrice(){ }, loadInfo () { this.api.detail(this.info.id).then(res => { @@ -146,11 +231,21 @@ 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; padding: 2px 10px 3px 10px; margin-left: 20px; color: white; cursor: pointer; admin/src/components/business/OperaMemberDetail.vue
@@ -4,7 +4,7 @@ width="100%" :visible.sync="visible" > <div style="display: block"> <div class="detail-box"> <div class="header"> <div class="header-b">ç¨æ·ä¿¡æ¯</div> <div v-if="info.phone!=null && info.phone!=''" class="header-blue">å·²ææææºå·</div> @@ -21,7 +21,7 @@ </div> <div class="info-item"></div> </div> <div style="display: block;margin-bottom: 50px;"> <div class="detail-box" style="margin-bottom: 50px;"> <div class="header"> <div class="header-b">积åæç»</div> <div class="header-btn"> admin/src/components/business/OperaOrderCancelWindow.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,85 @@ <template> <GlobalAlertWindow v-loading="isUploading" :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" > <el-form :model="form" ref="form" label-width="120px" label-suffix="ï¼" :rules="rules" inline> <p class="tip-warn" style="margin: 30px;"> <i class="el-icon-warning"></i> æä½è¯´æï¼æ¨æ£å¨åæ¶è®¢å<span class="red">{{ form.code }} </span>ï¼è¯·è°¨æ æä½ï¼ï¼</p> <el-form-item label="夿³¨" prop="cancelInfo"> <el-input type="textarea" :autosize="{ minRows: 4, maxRows:4 }" v-model="form.cancelInfo" placeholder="请è¾å ¥åæ¶è¯´æ" :maxlength="50" v-trim/> </el-form-item> </el-form> </GlobalAlertWindow> </template> <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalAlertWindow from '@/components/common/GlobalAlertWindow' export default { name: 'OperaOrderCancelWindow', extends: BaseOpera, components: { GlobalAlertWindow }, data () { return { isUploading: false, // è¡¨åæ°æ® form: { id: null, cancelInfo: '', code: null }, // éªè¯è§å rules: { cancelInfo: [ { required: false, message: '请è¾å ¥å¤æ³¨ä¿¡æ¯', tigger: 'blur' } ] } } }, created () { this.config({ api: '/business/goodsorder', 'field.id': 'id' }) }, methods: { confirm () { this.$refs.form.validate((valid) => { if (!valid) { return } this.$dialog.messageWaring(`ç¡®å®åæ¶è®¢åï¼${this.form.code}ï¼`) .then(() => { this.isWorking = true this.api.orderPlanCancelOrder(this.form) .then(() => { this.visible = false this.$tip.apiSuccess('åæ¶æå') this.$emit('success') }).catch(e => { this.$tip.apiFailed(e) }) .finally(() => { this.isWorking = false }) }) // è°ç¨æ°å»ºæ¥å£ }) } } } </script> <style lang="scss" scoped> @import "@/assets/style/alertstyle.scss"; </style> admin/src/components/business/OperaOrderMarkWindow.vue
@@ -8,7 +8,7 @@ > <el-form :model="form" ref="form" label-width="120px" label-suffix="ï¼" :rules="rules" inline> <el-form-item label="夿³¨" prop="sysInfo"> <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 12}" v-model="form.sysInfo" placeholder="请è¾å ¥å¤æ³¨" :maxlength="50" v-trim/> <el-input type="textarea" :autosize="{ minRows: 4, maxRows:4 }" v-model="form.sysInfo" placeholder="请è¾å ¥å¤æ³¨" :maxlength="50" v-trim/> </el-form-item> </el-form> @@ -55,7 +55,7 @@ this.api.orderRemark(this.form) .then(() => { this.visible = false this.$tip.apiSuccess('åè´§æå') this.$tip.apiSuccess('æ·»å æå') this.$emit('success') }).catch(e => { this.$tip.apiFailed(e) admin/src/components/business/OperaShipmentsWindow.vue
@@ -22,7 +22,7 @@ <el-input v-model="form.kdCode" placeholder="请è¾å ¥å¿«éåå·" v-trim/> </el-form-item> <el-form-item label="åè´§å¤æ³¨" prop="kdInfo"> <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 12}" v-model="form.kdInfo" placeholder="请è¾å ¥åè´§å¤æ³¨" v-trim/> <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 4}" v-model="form.kdInfo" placeholder="请è¾å ¥åè´§å¤æ³¨" v-trim/> </el-form-item> </el-form> admin/src/components/business/OperaShopInfoWindow.vue
@@ -4,7 +4,7 @@ width="100%" :visible.sync="visible" > <div style="display: block;"> <div class="detail-box"> <div class="platgroup_tabs"> <div class="tab" :class="{ active: activeGroup === item.id }" @click="groupClick(item)" v-for="(item, i) in groupList" :key="i"> @@ -13,7 +13,7 @@ </div> </div> <template v-if="activeGroup ==0"> <div style="display: block;"> <div class="detail-box"> <div class="header"> <div class="header-b">åºæ¬ä¿¡æ¯</div> <div v-if="info.status !=1" class="header-green">æ£å¸¸</div> @@ -48,7 +48,7 @@ </div> <div class="info-item"></div> </div> <div style="display: block"> <div class="detail-box"> <div class="header"> <div class="header-b">èµè´¨ä¿¡æ¯</div> </div> @@ -79,7 +79,7 @@ </div> <div class="info-item"></div> </div> <div style="display: block;margin-bottom: 50px;"> <div class="detail-box" style="display: block;margin-bottom: 50px;"> <div class="header"> <div class="header-b">é宿¨¡å¼åæ´è®°å½</div> </div> @@ -110,7 +110,7 @@ </div> </template> <template v-else-if="activeGroup == 1"> <div style="display: block;"> <div class="detail-box"> <el-form ref="searchForm1" :model="searchForm1" style="display: block;" > <el-form-item label="" prop="code" style="display: inline-block;margin-right: 30px;"> <el-input v-model="searchForm1.code" placeholder="请è¾å ¥è®¢åå·" @keypress.enter.native="handlePageChange1(1)"></el-input> @@ -221,13 +221,15 @@ </div> </template> <template v-else-if="activeGroup == 2"> <div style="display: block;margin-bottom: 50px;"> <div class="detail-box"> <div class="header"> <div class="header-b">积åæç»</div> <div class="header-btn"> <el-button style="display: inline" type="primary" @click="changeIntegral">积åè°æ´</el-button> </div> </div> </div> <div style="display: block;margin-bottom: 50px;"> <TableLayout > <!-- è¡¨æ ¼åå页 --> <template v-slot:table-wrap> admin/src/components/business/OperaWithdrawRecordWindow.vue
@@ -4,7 +4,7 @@ width="100%" :visible.sync="visible" > <div style="display: block;"> <div class="detail-box"> <div class="header"> <div class="header-b">åºæ¬ä¿¡æ¯</div> <div v-if="form.status ==0" class="header-orange">å¾ å®¡æ¹</div> @@ -18,7 +18,7 @@ </div> <div class="info-item"></div> </div> <div style="display: block;"> <div class="detail-box"> <div class="header"> <div class="header-b">æç°ä¿¡æ¯</div> </div> @@ -28,13 +28,13 @@ <div class="info-item-a"> </div> </div> <div class="info-item"> <div class="info-item-a">æ·åï¼<span class="orange">{{ form.name||'' }}</span> </div> <div class="info-item-a">è´¦å·ï¼<span class="orange">{{ form.bankAccount||'' }}</span> </div> <div class="info-item-a">é¶è¡ï¼<span class="orange">{{ form.bankName||'' }}</span> </div> <div class="info-item-a">æ·åï¼<span >{{ form.name||'' }}</span> </div> <div class="info-item-a">è´¦å·ï¼<span >{{ form.bankAccount||'' }}</span> </div> <div class="info-item-a">é¶è¡ï¼<span >{{ form.bankName||'' }}</span> </div> </div> <div class="info-item"></div> </div> <div style="display: block"> <div class="detail-box"> <div class="header"> <div class="header-b">å®¡æ ¸æµç¨</div> </div> admin/src/views/business/goodsorder.vue
@@ -107,8 +107,8 @@ <div class="mark" v-if="item.sysInfo&& item.sysInfo.length" >夿³¨ï¼{{item.sysInfo}}</div> </div> <div class="member-message right-border"> <div class="el-icon-user" style="padding: 5px 5px;">{{ item.linkname }}</div> <div class="el-icon-phone-outline" style="padding: 10px 5px;color: #777;font-size: 13px;">{{ item.linkphone }}</div> <div class="el-icon-user" style="padding: 5px 5px;width: 100%;">{{ item.linkname }}</div> <div class="el-icon-phone-outline" style="padding: 10px 5px;width: 100%;color: #777;font-size: 13px;">{{ item.linkphone }}</div> </div> <div class="address-message right-border right-border" style="padding-top: 15px;" > <div class="underway el-icon-sell" >{{item.receiveType==1?'å°åºèªæ':'å¿«éé é'}} </div> @@ -116,7 +116,7 @@ </div> <div class="price-message right-border"> <div class="underway" >è®¢åæ»ä»·ï¼ï¿¥{{ (item.totalPrice||0).toFixed(2) }}</div> <div class="price-info">å忻价ï¼ï¿¥{{ ((item.totalPrice||0)-(item.price || 0)).toFixed(2)}}</div> <div class="price-info">å忻价ï¼ï¿¥{{ ((item.totalPrice||0)-(item.mailPrice || 0)).toFixed(2)}}</div> <div class="price-info">ç©æµè¿è´¹ï¼ï¿¥{{ (item.mailPrice || 0).toFixed(2)}}</div> <div class="price-info">ç§¯åæµæ£ï¼-ï¿¥{{ (item.integral || 0 ).toFixed(2)}}</div> <div class="price-info">伿 éé¢ï¼-ï¿¥{{ (item.couponPrice).toFixed(2) }}</div> @@ -125,7 +125,7 @@ <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="cancelOrder(item)">åæ¶è®¢å</el-button> <el-button v-if="item.status == 0" 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> <div></div> @@ -149,7 +149,8 @@ <!-- æ°å»º/ä¿®æ¹ --> <OperaShipmentsWindow ref="operaShipmentsWindow" @success="search"/> <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="handlePageChange"/> <OperaGoodsOrderDetail ref="operaGoodsOrderDetail"/> <OperaOrderCancelWindow ref="OperaOrderCancelWindow" @success="handlePageChange"/> <OperaGoodsOrderDetail ref="operaGoodsOrderDetail" @success="handlePageChange"/> </TableLayout> </template> @@ -159,11 +160,12 @@ import Pagination from '@/components/common/Pagination' import OperaShipmentsWindow from '@/components/business/OperaShipmentsWindow' import OperaOrderMarkWindow from '@/components/business/OperaOrderMarkWindow' import OperaOrderCancelWindow from '@/components/business/OperaOrderCancelWindow' import OperaGoodsOrderDetail from '@/components/business/OperaGoodsOrderDetail' export default { name: 'Goodsorder', extends: BaseTable, components: { TableLayout, Pagination, OperaShipmentsWindow, OperaOrderMarkWindow, OperaGoodsOrderDetail }, components: { TableLayout, Pagination, OperaShipmentsWindow, OperaOrderMarkWindow, OperaGoodsOrderDetail,OperaOrderCancelWindow }, data () { return { status: '10', @@ -187,7 +189,7 @@ nickName: '', starttime: null, enttime: null }, } } }, created () { @@ -252,7 +254,7 @@ this.search() }, cancelOrder (item) { this.$dialog.cancelOrder(`ç¡®å®åæ¶è®¢åï¼${item.code}ï¼`) this.$dialog.messageWaring(`ç¡®å®åæ¶è®¢åï¼${item.code}ï¼`) .then(() => { }) @@ -339,7 +341,7 @@ flex: 0.4; } .address-message { flex: 0.6; flex: 0.7; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; @@ -382,7 +384,7 @@ } } .action { flex: 0.5; flex: 0.4; box-sizing: border-box; padding: 10px; text-align: center; server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -236,6 +236,12 @@ @ApiModelProperty(value = "ç¨æ·å§å") @TableField(exist = false) private String memberName; @ApiModelProperty(value = "åæ¶äººåå§å") @TableField(exist = false) private String cancelUserName; @ApiModelProperty(value = "鿬¾äººå§å") @TableField(exist = false) private String refundUserName; @ApiModelProperty(value = "å货人å§å") @TableField(exist = false) private String kdUserName; @@ -249,8 +255,6 @@ @ApiModelProperty(value = "æ¶è´§å°å") @TableField(exist = false) private String addr; @ApiModelProperty(value = "å¼å§æ¶é´ ") @TableField(exist = false) server/dmmall_service/src/main/java/com/doumee/dao/business/model/GoodsorderDetail.java
@@ -123,5 +123,8 @@ @ApiModelProperty(value = "ç»è®¡é") @TableField(exist = false) private BigDecimal totalNum; @ApiModelProperty(value = "å°è®¡") @TableField(exist = false) private BigDecimal totalPrice; } server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
@@ -113,13 +113,11 @@ QueryWrapper<UserAction> wrapper = new QueryWrapper<>(userAction); return userActionMapper.selectOne(wrapper); } @Override public List<UserAction> findList(UserAction userAction) { QueryWrapper<UserAction> wrapper = new QueryWrapper<>(userAction); return userActionMapper.selectList(wrapper); } @Override public PageData<UserAction> findPage(PageWrap<UserAction> pageWrap) { IPage<UserAction> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); @@ -127,20 +125,21 @@ Utils.MP.blankToNull(pageWrap.getModel()); UserAction queryModel = pageWrap.getModel(); queryWrapper.selectAll(UserAction.class) .leftJoin(Member.class,Member::getId,UserAction::getMemberId) // .leftJoin(Member.class,Member::getId,UserAction::getMemberId) .leftJoin(SystemUser.class,SystemUser::getId,UserAction::getCreator) .selectAs(SystemUser::getRealname,UserAction::getCreateName) .selectAs(Member::getName,UserAction::getMemberName) .selectAs(Member::getPhone,UserAction::getMobile) // .selectAs(Member::getName,UserAction::getMemberName) // .selectAs(Member::getPhone,UserAction::getMobile) .like(StringUtils.isNotBlank(queryModel.getCreateName()),SystemUser::getRealname,queryModel.getCreateName()) .like(StringUtils.isNotBlank(queryModel.getMemberName()),Member::getName,queryModel.getMemberName()) .like(StringUtils.isNotBlank(queryModel.getMobile()),Member::getPhone,queryModel.getMobile()) .like(StringUtils.isNotBlank(queryModel.getRemark()),Member::getPhone,queryModel.getRemark()) .eq(!Objects.isNull(queryModel.getMemberType()),Member::getType,queryModel.getMemberType()) .eq(!Objects.isNull(queryModel.getBeforeStatus()),UserAction::getBeforeStatus,queryModel.getBeforeStatus()) .eq(!Objects.isNull(queryModel.getMemberId()),UserAction::getMemberId,queryModel.getMemberId()) .eq(!Objects.isNull(queryModel.getType()),UserAction::getType,queryModel.getType()) .orderByDesc(UserAction::getCreateDate) ; .eq(!Objects.isNull(queryModel.getId()),UserAction::getId,queryModel.getId()) .orderByDesc(UserAction::getCreateDate); IPage<UserAction> result = userActionMapper.selectJoinPage(page,UserAction.class,queryWrapper); if(result!=null &&result.getRecords()!=null){ for(UserAction model :result.getRecords()){