Helius
2021-01-13 7ec998fe0bfc7c0366e52ed5389ae48faabf61f1
modify
8 files modified
390 ■■■■ changed files
zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java 42 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/SysInstoreInfo.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java 26 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java 126 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html 8 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html 171 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/OrderController.java
@@ -42,6 +42,7 @@
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
@@ -138,6 +139,7 @@
        SysUsers user = getMe();
        sysOrder.setShopId(user.getShopId());
        sysOrder.setStatu(Dictionary.ORDER_STATU_TK);
        sysOrder.setOrderTime(new Date());
        //校验订单是否满足结算调价,新订单则保存订单,已有订单则删除后更新
        sysOrder = orderService.checkAndSaveOrder(sysOrder);
        orderService.refundOrderMoney(sysOrder);
@@ -371,13 +373,9 @@
        return "admin/hive/beautySalon/point-order";
    }
    /**
     * 跳转 消费流水详情页面
     *
     * @author jyy
     */
    @RequestMapping(value = "/orderItem")
    public String orderItem(SysOrder orderVo) {
    @RequestMapping(value = "/findOrderDetailByIdOrNo")
    @ResponseBody
    public AjaxResult findOrderDetailByIdOrNo(SysOrder orderVo) {
        // 根据id查到对应的订单信息
        SysOrder order=null;
        if(orderVo.getId()!=null){
@@ -406,12 +404,30 @@
        List<SysOrderFlow> payMethods = sysOrderFlowService.findPayMethodsAmount(order.getId());
        List<AchieveNew> achieveList = achieveNewService.findOrderItemAchieve(order.getId());
        WebUtil.getRequest().setAttribute("orderItems", orderItems);
        WebUtil.getRequest().setAttribute("order", order);
        WebUtil.getRequest().setAttribute("cards", cards);
        WebUtil.getRequest().setAttribute("vipInfo", vipInfo);
        WebUtil.getRequest().setAttribute("payMethods", payMethods);
        WebUtil.getRequest().setAttribute("achieveList", achieveList);
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功");
        ajaxResult.putInMap("orderItems", orderItems);
        ajaxResult.putInMap("order", order);
        ajaxResult.putInMap("cards", cards);
        ajaxResult.putInMap("vipInfo", vipInfo);
        ajaxResult.putInMap("payMethods", payMethods);
        ajaxResult.putInMap("achieveList", achieveList);
        return ajaxResult;
    }
    /**
     * 跳转 消费流水详情页面
     *
     * @author jyy
     */
    @RequestMapping(value = "/orderItem")
    public String orderItem(SysOrder orderVo) {
        if(orderVo.getId()!=null){
            WebUtil.getRequest().setAttribute("orderParam", orderVo.getId());
        }else if(StringUtils.isNotBlank(orderVo.getOrderNo())){
            WebUtil.getRequest().setAttribute("orderParam", orderVo.getOrderNo());
        }
        return "admin/hive/beautySalon/orderXq-form";
    }
zq-erp/src/main/java/com/matrix/system/hive/bean/SysInstoreInfo.java
@@ -18,6 +18,7 @@
    private static final long serialVersionUID = 1L;
    public static final String INSTORE_TYPE_RETURN = "退货入库";
    /**
     * 序号
zq-erp/src/main/java/com/matrix/system/hive/bean/SysOrderItem.java
@@ -129,6 +129,32 @@
     */
    private int preCount;
    /**
     * 是否退库存
     */
    private String isReturnStore;
    /**
     * 退款时,原itemid
     */
    private Long oldItemId;
    public Long getOldItemId() {
        return oldItemId;
    }
    public void setOldItemId(Long oldItemId) {
        this.oldItemId = oldItemId;
    }
    public String getIsReturnStore() {
        return isReturnStore;
    }
    public void setIsReturnStore(String isReturnStore) {
        this.isReturnStore = isReturnStore;
    }
    public int getPreCount() {
        return preCount;
    }
zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java
@@ -225,14 +225,6 @@
                            achieveNewList.add(achieveNew);
                        }
                    }
                } else {
                    // 如果该订单明细没有设置美疗师则单独设置顾问业绩
                    AchieveNew achieveNew = new AchieveNew();
                    // 顾问业绩等于收款金额
                    achieveNew.setT1(orderItem.getPayMoney() + "");
                    buildAchieve(pageOrder, orderItem, achieveNew);
                    // 新增顾问业绩
                    achieveNewList.add(achieveNew);
                }
            }
        }
@@ -245,6 +237,12 @@
    ShoppingGoodsDao shoppingGoodsDao;
    private void buildAchieve(SysOrder pageOrder, SysOrderItem orderItem, AchieveNew achieveNew) {
        if (Dictionary.ORDER_STATU_TK.equals(pageOrder.getStatu())) {
            achieveNew.setId(null);
            achieveNew.setProjPercentage(0 - achieveNew.getProjPercentage());
            achieveNew.setT1((0 - Double.parseDouble(achieveNew.getT1())) + "");
        }
        achieveNew.setVipId(pageOrder.getVipId());
        achieveNew.setSaleId(pageOrder.getStaffId());
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -25,16 +25,14 @@
import com.matrix.system.hive.pojo.CzXkVo;
import com.matrix.system.hive.pojo.ShoppingCarItem;
import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
import com.matrix.system.hive.service.AchieveNewService;
import com.matrix.system.hive.service.CodeService;
import com.matrix.system.hive.service.ShoppingGoodsService;
import com.matrix.system.hive.service.SysOrderService;
import com.matrix.system.hive.service.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpSession;
import javax.validation.constraints.NotEmpty;
import java.util.*;
/**
@@ -95,6 +93,18 @@
    @Autowired
    private SysOrderFlowDao sysOrderFlowDao;
    @Autowired
    private SysSupplierInfoDao sysSupplierInfoDao;
    @Autowired
    private SysInstoreInfoDao sysInstoreInfoDao;
    @Autowired
    private SysInstoreDetailDao sysInstoreDetailDao;
    @Autowired
    private SysInstoreInfoService sysInstoreInfoService;
    @Override
    public int add(SysOrder sysOrder) {
@@ -478,6 +488,7 @@
    private void changeOrderStatu(SysOrder sourceOrder) {
        int i = 1;
        String orderStatus = Dictionary.ORDER_STATU_YFK;
        String flowType = SysOrderFlow.FLOW_TYPE_BUY;
        double cashPayTotal = 0D;
        double cardPayTotal = 0D;
        for (SysOrderFlow flow : sourceOrder.getFlows()) {
@@ -487,13 +498,16 @@
            flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
            if (Dictionary.ORDER_STATU_TK.equals(sourceOrder.getStatu())) {
                flowType = SysOrderFlow.FLOW_TYPE_REFUND;
                // 若是退款,则取负数
                flow.setAmount(flow.getAmount().negate());
                flow.setOrderId(sourceOrder.getOldOrderId());
            } else {
                flow.setOrderId(sourceOrder.getId());
            }
            flow.setVipId(sourceOrder.getVipId());
            flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
            flow.setFlowType(flowType);
            // 若使用储值卡付款
            if (SysOrderFlow.PAY_METHOD_CARD.equals(flow.getPayMethod())) {
                if (flow.getCardId() != null) {
@@ -696,6 +710,7 @@
            // 如果购买的是充值卡
            if (sysOrderItem.getType().equals(Dictionary.SHOPPING_GOODS_TYPE_CZK)) {
                for(int i = 0; i < sysOrderItem.getCount(); i++) {
                ShoppingGoods moneyCar = shoppingGoodsDao.selectById(sysOrderItem.getGoodsId());
                MoneyCardUse moneyCardUse = new MoneyCardUse();
                moneyCardUse.setVipId(sourceOrder.getVipId());
@@ -729,18 +744,12 @@
                    moneyCardUse.setLastCount(moneyCar.getCarUseCount());
                }
                moneyCardUse.setVipId(sourceOrder.getVipId());
//                if (moneyCar.getValidity() == null || moneyCar.getValidity() == 0) {
//                    // 设置失效时间
//                    Calendar cal = Calendar.getInstance();
//                    cal.set(2200, 1, 1);
//                    moneyCardUse.setFailTime(cal.getTime());
//                } else {
//                    moneyCardUse.setFailTime(DateUtil.nextNDate(new Date(), 30 * moneyCar.getValidity()));
//                }
                Date invalidTime = shoppingGoodsService.calInvalidTime(sysOrderItem.getShoppingGoods(), 1, null);
                moneyCardUse.setFailTime(invalidTime);
                moneyCardUseDao.insert(moneyCardUse);
                }
            }
        }
    }
@@ -1229,20 +1238,28 @@
        return sysOrderDao.selectStaffSaleAchieveRanking(sysOrder);
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void refundOrderMoney(SysOrder pageOrder) {
        // 插入订单流水
        changeOrderStatu(pageOrder);
        List<SysOrderItem> returnItems = new ArrayList<>();
        for (SysOrderItem item : pageOrder.getItems()) {
            SysProjUse queryProjUse = new SysProjUse();
            queryProjUse.setIsOver(Dictionary.FLAG_NO_N);
            queryProjUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
            queryProjUse.setOrderItemId(item.getId());
            queryProjUse.setOrderItemId(item.getOldItemId());
            // 修改项目信息
            if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType()) && Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) {
            if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(item.getType()) || Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) {
                if (Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(item.getType())) {
                    if (Dictionary.FLAG_YES_Y.equals(item.getIsReturnStore())) {
                        returnItems.add(item);
                    }
                } else {
                SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0);
                int sub = sysProjUse.getSurplusCount() - item.getCount();
@@ -1253,26 +1270,37 @@
                }
                sysProjUseDao.update(sysProjUse);
            }
            }
            if (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(item.getType())) {
                queryProjUse.setTaocanId(-1L);
                SysProjUse sysProjUse = sysProjUseDao.selectByModel(queryProjUse).get(0);
                List<SysProjUse> sysProjUses = sysProjUseDao.selectByModel(queryProjUse);
                if (item.getCount() > sysProjUses.size()) {
                    throw new GlobleException("数据异常");
                }
                for(int i = 0; i < item.getCount(); i++) {
                    SysProjUse sysProjUse = sysProjUses.get(i);
                sysProjUse.setIsOver(Dictionary.FLAG_YES_Y);
                sysProjUse.setStatus(Dictionary.TAOCAN_STATUS_WX);
                sysProjUseDao.update(sysProjUse);
                }
            }
            if (Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(item.getType())) {
                MoneyCardUse queryCardUse = new MoneyCardUse();
                queryCardUse.setIsOver(Dictionary.FLAG_NO_N);
                queryCardUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
                queryCardUse.setOrderItemId(item.getId());
                queryCardUse.setOrderItemId(item.getOldItemId());
                MoneyCardUse moneyCardUse = moneyCardUseDao.selectByModel(queryCardUse).get(0);
                List<MoneyCardUse> moneyCardUses = moneyCardUseDao.selectByModel(queryCardUse);
                for(int i = 0; i < item.getCount(); i++) {
                    MoneyCardUse moneyCardUse = moneyCardUses.get(i);
                moneyCardUse.setIsOver(Dictionary.FLAG_YES_Y);
                moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_WX);
                moneyCardUseDao.update(moneyCardUse);
                }
            }
            // TODO 综合卡退款
@@ -1280,20 +1308,64 @@
            }
            ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
            goods.setRealSealCount(goods.getRealSealCount() - item.getCount());
            shoppingGoodsDao.update(goods);
        }
        // 设置会员充值卡使用情况
        addMoneyCardUse(pageOrder);
        // 新增出库单
        addOutStore(pageOrder);
        // 改变客户项目套餐使用情况
        addTaocanProj(pageOrder);
        // 家居产品退库存
        if (CollectionUtils.isNotEmpty(returnItems)) {
            refundInstore(returnItems);
        }
        // 设置业绩
        achieveNewService.addAchaeveByOrder(pageOrder);
        setShopSelCount(pageOrder);
    }
    /**
     * 退款入库
     */
    private void refundInstore(@NotEmpty List<SysOrderItem> items) {
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        SysSupplierInfo supplierInfo = new SysSupplierInfo();
        supplierInfo.setShopId(user.getShopId());
        supplierInfo = sysSupplierInfoDao.selectByModel(supplierInfo).get(0);
        Warehouse warehouse = warehouseDao.findShopWarehouse(user.getShopId()).get(0);
        SysInstoreInfo instoreInfo = new SysInstoreInfo();
        instoreInfo.setInstoreType(SysInstoreInfo.INSTORE_TYPE_RETURN);
        instoreInfo.setInstoreDate(new Date());
        instoreInfo.setSupplierId(supplierInfo.getId().toString());
        instoreInfo.setStoreId(warehouse.getId());
        instoreInfo.setCheckStatus(Dictionary.CHECK_STATUS_DSH);
        // 设置入库单编号
        instoreInfo.setInstoreId(DateUtil.getTimeMark());
        instoreInfo.setShopId(user.getShopId());
        instoreInfo.setCompanyId(user.getCompanyId());
        sysInstoreInfoDao.insert(instoreInfo);
        Double total = 0.0;
        List<SysInstoreDetail> instoreDetails = new ArrayList<>();
        for (SysOrderItem item : items) {
            ShoppingGoods goods = shoppingGoodsDao.selectById(item.getGoodsId());
            SysInstoreDetail sysInstoreDetail = new SysInstoreDetail();
            sysInstoreDetail.setAmount(item.getCount().doubleValue());
            sysInstoreDetail.setPrice(item.getZkPrice());
            sysInstoreDetail.setSkuId(goods.getId());
            total = MoneyUtil.add(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()), total);
            sysInstoreDetail.setInstoreId(instoreInfo.getId());
            // 设置小计
            sysInstoreDetail.setPriceTotal(MoneyUtil.mul(Double.parseDouble(sysInstoreDetail.getAmount() + ""), sysInstoreDetail.getPrice()));
            instoreDetails.add(sysInstoreDetail);
        }
        instoreInfo.setSumall(total);
        sysInstoreInfoDao.update(instoreInfo);
        sysInstoreDetailDao.batchInsert(instoreDetails);
        sysInstoreInfoService.check(instoreInfo);
    }
}
zq-erp/src/main/resources/mybatis/mapper/hive/SysOrderItemDao.xml
@@ -129,7 +129,7 @@
            <if test="orderId != null and orderId !='' ">
                ORDER_ID = #{orderId},
            </if>
            <if test="count != null and count !='' ">
            <if test="count != null and count !='' or count == 0 ">
                COUNT = #{count},
            </if>
            <if test="isFree != null and isFree !='' ">
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
@@ -868,10 +868,10 @@
                                _this.order.payMoney += parseFloat(item.payMoney);
                            });
                            //计算欠款
                            _this.order.arrears = _this.order.zkTotal - _this.order.payMoney;
                            if (_this.order.arrears < 0) {
                                _this.$message.error("支付金额不能大于应收金额");
                            }
                            // _this.order.arrears = _this.order.zkTotal - _this.order.payMoney;
                            // if (_this.order.arrears < 0) {
                            //     _this.$message.error("支付金额不能大于应收金额");
                            // }
                        }
                    })
                }
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
@@ -142,9 +142,9 @@
                    <el-row>
                        <el-button size="mini" type="primary" @click="openPayMoneyDialog" v-if="isRefund">提交退款</el-button>
                        <el-button size="mini" type="danger" @click="isRefund = false" v-if="isRefund">取消</el-button>
                        <el-button size="mini" type="primary" @click="isRefund = true" v-else>退款</el-button>
                        <el-button size="mini" type="primary" @click="isRefund = true" v-if="order.statu == '已付款' && !isRefund">退款</el-button>
                    </el-row>
                    <el-row v-if="!isRefund">
                    <el-row v-show="!isRefund">
                        <el-table
                                :data="orderItems"
                                style="width: 100%">
@@ -182,7 +182,7 @@
                            </el-table-column>
                        </el-table>
                    </el-row>
                    <el-row v-if="isRefund">
                    <el-row v-show="isRefund">
                        <el-table
                                :data="orderItems"
                                style="width: 100%">
@@ -214,12 +214,17 @@
                            </el-table-column>
                            <el-table-column label="退款单价">
                                <template slot-scope="scope">
                                    <el-input v-model="scope.row.refundPrice"></el-input>
                                    <el-input v-model="scope.row.refundPrice" v-if="scope.row.count > 0"></el-input>
                                </template>
                            </el-table-column>
                            <el-table-column label="退款数量">
                                <template slot-scope="scope">
                                    <el-input v-model.number="scope.row.refundCount"></el-input>
                                    <el-input v-model.number="scope.row.refundCount" v-if="scope.row.count > 0"></el-input>
                                </template>
                            </el-table-column>
                            <el-table-column label="是否退库存" align="center">
                                <template slot-scope="scope">
                                    <el-checkbox v-model="scope.row.returnStore" v-if="scope.row.type == '家居产品' && scope.row.count > 0"></el-checkbox>
                                </template>
                            </el-table-column>
                        </el-table>
@@ -262,12 +267,12 @@
                                </el-table-column>
                                <el-table-column label="业绩">
                                    <template slot-scope="scope">
                                        <el-input v-model="scope.row.returnAchieve"></el-input>
                                        <el-input v-model="scope.row.returnAchieve" v-if="scope.row.zkTotal != 0"></el-input>
                                    </template>
                                </el-table-column>
                                <el-table-column label="提成">
                                    <template slot-scope="scope">
                                        <el-input v-model="scope.row.returnCommission"></el-input>
                                        <el-input v-model="scope.row.returnCommission" v-if="scope.row.zkTotal != 0"></el-input>
                                    </template>
                                </el-table-column>
                                <el-table-column
@@ -279,7 +284,7 @@
                </el-tab-pane>
                <el-tab-pane label="业绩设置" name="second">
                    <el-row>
                        <el-button size="mini" type="primary" @click="saveAchieve">保存</el-button>
                        <el-button size="mini" type="primary" @click="saveAchieve" v-if="order.statu == '已付款'">保存</el-button>
                    </el-row>
                    <el-table
                            :data="achieveItems"
@@ -467,6 +472,7 @@
    var app = new Vue({
        el : "#app",
        data : {
            orderParam : "",
            vipInfo : "",
            order : "",
            activeName : "first",
@@ -522,26 +528,43 @@
            treeSelect : [],
            payMoneys : [],
            printPaper : true,
            refundMoney : "",
            refundMoney : 0,
            data : {},
        },
        created : function() {
            let _this = this;
            this.vipInfo = /*[[${vipInfo}]]*/
            this.order = /*[[${order}]]*/
            this.orderItems = /*[[${orderItems}]]*/
            this.payMethodItems = /*[[${payMethods}]]*/
            this.achieveItems = /*[[${achieveList}]]*/
            this.flowItems = this.order.flows;
            this.orderParam = /*[[${orderParam}]]*/
            this.queryOrderDetailData(this.orderParam);
            this.checkAchieveIsDel(this.achieveItems);
            this.order.orderTime = moment(this.order.orderTime).format("YYYY-MM-DD HH:mm");
        },
        methods : {
            queryOrderDetailData(param) {
                let _this = this;
                AjaxProxy.requst({
                    app: _this,
                    data: {id: param, orderNo:param},
                    contentType: 'application/x-www-form-urlencoded',
                    url: basePath + '/admin/order/findOrderDetailByIdOrNo',
                    callback: function (data) {
                        console.log(data);
                        var mapInfo = data.mapInfo;
                        _this.vipInfo = mapInfo.vipInfo;
                        _this.order = mapInfo.order;
                        _this.orderItems = mapInfo.orderItems;
                        _this.payMethodItems = mapInfo.payMethodItems;
                        _this.achieveItems = mapInfo.achieveList;
                        _this.flowItems = _this.order.flows;
                        _this.checkAchieveIsDel(_this.achieveItems);
                        _this.order.orderTime = moment(_this.order.orderTime).format("YYYY-MM-DD HH:mm");
            var arrears = 0;
            var refund = 0;
            var repay = 0;
            for(var i = 0; i < this.flowItems.length; i++) {
                var item = this.flowItems[i];
                        for(var i = 0; i < _this.flowItems.length; i++) {
                            var item = _this.flowItems[i];
                if (item.payMethod === '欠款') {
                    arrears += item.amount;
                }
@@ -554,9 +577,9 @@
                    refund += item.amount;
                }
            }
            this.order.arrears = arrears;
            this.order.refund = refund;
            this.order.repay = repay;
                        _this.order.arrears = arrears;
                        _this.order.refund = refund;
                        _this.order.repay = repay;
            //获取用户列表
            AjaxProxy.requst({
@@ -567,18 +590,105 @@
                }
            });
            _this.getVipMoneyCards();
                    }
                });
            },
            confirmSubmit() {
                let _this = this;
                _this.data.oldOrderId = _this.order.id;
                _this.data.vipId = _this.vipInfo.id;
                if(!_this.payMethodFlow()) {
                    return;
                }
                let orderItems = _this.orderItems;
                let dataItems = [];
                for(var i = 0; i < orderItems.length; i++) {
                    let item = orderItems[i];
                    if (item.refundPrice && item.refundCount) {
                        let achieveList = []
                        if (_this.isReturnAchieve) {
                            for(var j = 0; j < _this.achieveItems.length; j++) {
                                let achieveItem = _this.achieveItems[j];
                                if (achieveItem.returnAchieve || achieveItem.returnCommission) {
                                    achieveItem.t1 = achieveItem.returnAchieve ?  achieveItem.returnAchieve : 0;
                                    achieveItem.projPercentage = achieveItem.returnCommission ? achieveItem.returnCommission : 0;
                                    achieveList.push(achieveItem);
                                }
                            }
                            item.achaeveList = achieveList;
                        }
                        if (item.returnStore) {
                            item.isReturnStore = 'Y';
                        } else {
                            item.isReturnStore = 'N';
                        }
                        item.preCount = item.count;
                        item.count = item.refundCount;
                        item.zkPrice = item.refundPrice;
                        item.cashPay = 0;
                        item.cardPay = 0;
                        item.oldItemId = item.id;
                        dataItems.push(item);
                    }
                }
                _this.data.items = dataItems;
                AjaxProxy.requst({
                    app: _this,
                    data: _this.data,
                    contentType: 'application/json',
                    url: basePath + '/admin/order/refundOrder',
                    callback: function (data) {
                        _this.isRefund = false;
                        _this.dialogSettleVisible = false;
                        _this.queryOrderDetailData(_this.data.oldOrderId);
                    }
                });
        },
        methods : {
            payMethodFlow() {
                let _this = this;
                if (_this.payMoneys.length > 0) {
                    let flows = []
                    var total = 0;
                    _this.payMoneys.forEach(item => {
                        let flow = {};
                        flow.payMethod = item.type;
                        if (!item.money) {
                            this.$message.warning("请输入" + item.type + "的付款金额");
                            return false;
                        }
                        flow.amount = parseFloat(item.money);
                        if (item.type == '储值卡'){
                            flow.isGift = item.isGift;
                            flow.cardId = item.id;
                        }
                        total += parseFloat(item.money);
                        flows.push(flow)
                    })
                    if (total != _this.refundMoney) {
                        this.$message.warning("输入付款总金额与应付金额不符");
                        return false;
                    }
                    _this.data.flows = flows;
                    return true;
                } else {
                    this.$message.warning("请选择支付方式");
                    return false;
                }
            },
            openPayMoneyDialog() {
                let _this = this;
                let items = this.orderItems;
                _this.refundMoney = 0;
                for(var i = 0; i < items.length; i++) {
                    let item = items[i]
                    if (item.refundPrice && item.refundCount) {
                        _this.refundMoney += (item.refundPrice * item.refundCount);
                    } else {
                        if (!item.refundPrice > 0 && !item.refundCount > 0) {
                            _this.$message.error("退款金额或退款数量须大于0");
                            return;
@@ -589,9 +699,13 @@
                            return;
                        }
                        _this.$message.error("退款单价或退款数量不能为空");
                        return;
                        _this.refundMoney += parseFloat(item.refundPrice * item.refundCount);
                    }
                }
                if (_this.refundMoney == 0) {
                    _this.$message.error("请输入退款金额或退款数量");
                    return;
                }
                _this.dialogSettleVisible = true;
            },
@@ -704,9 +818,6 @@
            },
            closeFrame() {
                parent.layer.close(parent.layer.getFrameIndex(window.name));
            },
            confirmSubmit() {
            },
            saveAchieve() {
                let _this = this;