From 5a9edd419172c5d4072d7d945a34b1bddfcbc604 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 07 Apr 2021 14:56:18 +0800 Subject: [PATCH] modify --- zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html | 562 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 399 insertions(+), 163 deletions(-) diff --git a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html index e196d78..054b762 100644 --- a/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html +++ b/zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html @@ -112,6 +112,10 @@ border: 3px solid; border-color: transparent #4884ff #4884ff transparent; } + + .el-dialog__body { + padding-top: 10px !important; + } </style> </head> <body> @@ -286,7 +290,7 @@ <el-table-column label="小计"> <template slot-scope="scope"> - {{scope.row.zkPrice * scope.row.count }} + {{(scope.row.zkPrice * scope.row.count).toFixed(2) }} </template> </el-table-column> @@ -316,9 +320,9 @@ <!-- <el-table-column--> -<!-- label="会员卡">--> +<!-- label="储值卡">--> <!-- <template slot-scope="scope">--> -<!-- <el-select :disabled="scope.row.payMethod!='会员卡'" v-model="scope.row.payMethodDetail"--> +<!-- <el-select :disabled="scope.row.payMethod!='储值卡'" v-model="scope.row.payMethodDetail"--> <!-- placeholder="请选择支付卡">--> <!-- <el-option--> <!-- v-for="item in moneyCards"--> @@ -350,7 +354,7 @@ <li>订单总金额:{{order.total}}</li> - <li>整单折扣:<span class="arrears">{{order.total - order.zkTotal}}</span></li> + <li>整单折扣:<span class="arrears" v-if="order.zkTotal != null">{{(order.total - order.zkTotal).toFixed(2)}}</span></li> <!-- <li v-if="order.arrears>0">订单欠款:<span class="arrears">{{order.arrears}}</span></li>--> <!-- <li v-if="order.arrears<0">找零:<span class="arrears">{{order.arrears}}</span></li>--> </ul> @@ -366,7 +370,7 @@ <el-button type="primary" @click="print()">打印</el-button> <el-button type="primary" @click="drawer = true">业绩设置</el-button> <!-- <el-button type="success" @click="confirmSubmit()" class="bigbtn"> 结算</el-button>--> - <el-button type="success" @click="dialogSettleVisible = true" class="bigbtn">收款</el-button> + <el-button type="success" @click="openPayMoney" class="bigbtn">收款 ¥{{order.payMoney}}</el-button> </el-col> </el-row> @@ -378,7 +382,7 @@ title="业绩设置" :visible.sync="drawer" :direction="direction" - size="50%" + size="90%" > <el-row> <el-col :span="24"> @@ -410,14 +414,34 @@ prop="orderItem.payMoney" label="收款"> </el-table-column> + <el-table-column - label="业绩"> + label="业绩类型" width="150"> + <template slot-scope="scope"> + <el-select v-model="scope.row.t3" placeholder="请选择业绩类型"> + <el-option + v-for="item in achieveTypeList" + :key="item.key" + :label="item.value" + :value="item.key"> + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column + label="业绩" width="100"> <template slot-scope="scope"> <el-input v-model="scope.row.achieveMoney"></el-input> </template> </el-table-column> <el-table-column - label="员工"> + label="提成"> + <template slot-scope="scope"> + <el-input v-model="scope.row.commission"></el-input> + </template> + </el-table-column> + <el-table-column + label="员工" width="130"> <template slot-scope="scope"> <el-select v-model="scope.row.saleId" placeholder="请选择员工"> <el-option @@ -430,7 +454,7 @@ </template> </el-table-column> <el-table-column - width="200" + width="150" label="操作"> <template slot-scope="scope"> <el-button type="primary" v-if="scope.row.isShare" @@ -451,49 +475,58 @@ </el-drawer> <el-dialog title="收款" :visible.sync="dialogSettleVisible"> - <el-row type="flex" align="middle" style="padding: 10px 0;"> + <el-row type="flex" align="middle" style="padding: 0 0 10px 0;"> <el-col :span="5" style="text-align: center;">应收</el-col> - <el-col :span="10" style="text-align: center; line-height: 50px;"><span style="color: red;">¥ 80</span></el-col> + <el-col :span="10" style="text-align: center; line-height: 50px;"><span style="color: red; font-size: 20px;">¥ {{order.payMoney}}</span></el-col> </el-row> <el-row type="flex" align="middle" style="padding: 10px 0;"> <el-col :span="5" style="text-align: center;">收款方式</el-col> - <el-col class="paymethod" :span="15"> - <el-row> - <ul style="border: #0c7cb5 1px dashed;"> - <li class="active">现金支付</li> - <li>微信</li> - <li>支付宝</li> - <li>银行卡支付</li> - <li>团购</li> - </ul> - </el-row> + <el-col class="paymethod" :span="18"> <el-row> <ul> - <li>会员储值卡</li> - <li>欠款</li> + <span v-for="(item, index) in payMethods"> + <el-popover + :disabled="item.type != '储值卡'" + placement="bottom" + trigger="hover" + @hide="popoverHide(item)"> + <el-row style="text-align: center;"><span style="padding: 0 0 10px 0; display: block; font-size: 12px;">选择储值卡支付方式</span></el-row> + <el-tree :data="moneyCards" + show-checkbox + default-expand-all + node-key="id" + ref="tree" + check-strictly + highlight-current + @check="(click, checked,$item)=>{handleCheckChange(click, checked,$item)}" + :props="defaultProps"> + </el-tree> + <li :class="{active : item.isActive}" slot="reference" @click="payMethodSelect(item, index)"><div style=" height:30px; line-height: 30px; display: flex; align-items: center"><img style="width: 25px; height: 25px; align-items: center;" :src="item.img"><span style="margin-left: 5px;">{{item.value}}</span></div></li> + </el-popover> + </span> </ul> </el-row> </el-col> </el-row> - <el-row type="flex" align="middle" style="padding: 10px 0;"> + <el-row type="flex" align="middle" style="padding: 10px 0 50px 0;"> <el-col :span="5" style="text-align: center;">支付金额</el-col> <el-col :span="15"> - <el-row style="line-height: 50px;"> - <el-col :span="5" style="text-align: right; padding-right: 10px;">微信支付</el-col> - <el-col :span="8"><el-input></el-input></el-col> - </el-row> - <el-row style="line-height: 50px;"> - <el-col :span="5" style="text-align: right; padding-right: 10px;">储值卡</el-col> - <el-col :span="8"><el-input></el-input></el-col> - <el-col :span="5" style="margin-left: 10px;">余额:<span class="arrears">¥ 1000</span></el-col> - </el-row> - <el-row style="line-height: 50px;"> - <el-col :span="5" style="text-align: right; padding-right: 10px;">欠款</el-col> - <el-col :span="8"><el-input></el-input></el-col> + <el-row style="line-height: 50px;" v-for="(item, index) in payMoneys"> + <el-col :span="6" style="text-align: right; padding-right: 10px; font-size: 12px;">{{item.value}}</el-col> + <el-col :span="8"><el-input v-model="item.money"></el-input></el-col> + <el-col :span="8" style="margin-left: 10px;" v-if="item.type == '储值卡'">{{item.isGift == 1 ? '赠送余额' : '余额' }}:<span class="arrears">¥ {{item.balance}}</span></el-col> </el-row> </el-col> + </el-row> + + <el-row style="text-align: center; margin: 20px 0 10px 0"> + <el-checkbox v-model="printPaper">打印小票</el-checkbox> + </el-row> + + <el-row style="text-align: center; margin: 10px 0 0 0"> + <el-button type="primary" @click="confirmSubmit">确认收款</el-button> </el-row> </el-dialog> @@ -525,6 +558,7 @@ direction: 'rtl', //当前登录用户 loginUser: {}, + staffUser:{}, //业绩用户列表 userList: [], order: { @@ -541,26 +575,51 @@ currentVipInfo: {}, vipLoading: false, payMethods: [{ - value: '现金', - label: '现金' + value: '现金支付', + img: '/images/pay/cash.png', + isActive: false, + type: '现金支付' }, { value: '微信', - label: '微信' + img: '/images/pay/wechat.png', + isActive: false, + type: '微信' }, { value: '支付宝', - label: '支付宝' + img: '/images/pay/zhifubao.png', + isActive: false, + type: '支付宝' }, { value: '银行卡', - label: '银行卡' + img: '/images/pay/yinlian.png', + isActive: false, + type: '银行卡' }, { - value: '美团', - label: '美团' + value: '团购', + img: '/images/pay/tuan.png', + isActive: false, + type: '团购' }, { - value: '会员卡', - label: '会员卡', - disabled: true, + value: '储值卡', + img: '/images/pay/card.png', + isActive: false, + type: '储值卡' + },{ + value: '欠款', + img: '/images/pay/qian.png', + isActive: false, + type: '欠款' },], achieveList: [], + achieveTypeList : [ + { + "key" : "现金业绩", + "value" : "现金业绩" + },{ + "key" : "划扣业绩", + "value" : "划扣业绩" + }, + ], //会员可用的充值卡 moneyCards: [], //门店信息 @@ -580,7 +639,14 @@ loading: false, /******搜索表格数据END********/ - dialogSettleVisible : true, + dialogSettleVisible : false, + defaultProps: { + children: 'children', + label: 'showLable' + }, + treeSelect : [], + payMoneys : [], + printPaper : true, }, @@ -590,62 +656,7 @@ created: function () { let _this = this; - //获取登录用户信息 - AjaxProxy.requst({ - app: _this, - url: basePath + '/admin/getLoginUser', - callback: function (data) { - _this.loginUser = data.mapInfo.user; - - if (id) { - //加载订单信息 - AjaxProxy.requst({ - app: _this, - url: basePath + '/admin/order/findOrderById/' + id, - callback: function (data) { - _this.order = data.rows[0]; - //修改支付金额 - _this.changeVip(_this.order.vipId); - let items = _this.order.items; - let orderPayMoney = 0; - //设置欠款订单设置欠款金额等于支付金额,非欠款订单设置折扣金额等于支付金额 - items.forEach(item => { - if (item.arrears > 0) { - item.payMoney = item.arrears; - } else { - item.payMoney = item.zkPrice; - } - orderPayMoney += item.payMoney; - - //业绩设置 - _this.achieveList.push({ - orderItem: item, - staff: _this.loginUser, - saleId: _this.loginUser.suId, - achieveMoney: item.payMoney, - isShare: false, - }); - }); - _this.order.payMoney = orderPayMoney; - } - }); - - } else { - //获取门店信息 - AjaxProxy.requst({ - app: _this, - url: basePath + '/admin/shopInfo/findUserShop', - callback: function (data) { - _this.order.shopName = data.rows[0].shopName; - - } - }); - } - - - } - }); - + _this.initMethod() if (vipId) { _this.changeVip(vipId); } @@ -658,10 +669,79 @@ } }); - }, methods: { + initMethod() { + let _this = this; + + //获取登录用户信息 + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/getLoginUser', + callback: function (data) { + _this.loginUser = data.mapInfo.user; + + if (id) { + //加载订单信息 + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/order/findOrderById/' + id, + callback: function (data) { + _this.order = data.rows[0]; + //修改支付金额 + _this.changeVip(_this.order.vipId); + + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/getUserById?id='+_this.order.staffId, + callback: function (data) { + _this.staffUser = data.mapInfo.user; + + let items = _this.order.items; + let orderPayMoney = 0; + //设置欠款订单设置欠款金额等于支付金额,非欠款订单设置折扣金额等于支付金额 + items.forEach(item => { + if (item.arrears > 0) { + item.payMoney = item.arrears; + } else { + item.payMoney = item.zkPrice; + } + orderPayMoney += item.payMoney; + item.uuid = MTools.uuid(); + //业绩设置 + _this.achieveList.push({ + orderItem: item, + staff: _this.staffUser, + saleId: _this.staffUser.suId, + achieveMoney: item.payMoney, + commission : 0, + t3 : '现金业绩', + isShare: false, + }); + }); + _this.order.payMoney = orderPayMoney; + } + }); + } + }); + + } else { + //获取门店信息 + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/shopInfo/findUserShop', + callback: function (data) { + _this.order.shopName = data.rows[0].shopName; + + } + }); + } + + + } + }); + }, //取消订单 closeFram() { @@ -670,7 +750,7 @@ changePayMethod(item) { console.log("changePayMethod", item); - if (item.payMethod != '会员卡') { + if (item.payMethod != '储值卡') { item.payMethodDetail = ''; } }, @@ -684,17 +764,25 @@ contentType: 'application/x-www-form-urlencoded', url: basePath + '/admin/moneyCardUse/getUseMoneyCard', callback: function (data) { - console.log(_this.moneyCards) if (data.rows.length > 0) { data.rows.forEach(function (item, index, input) { - item.showLable = item.cardName + "-余额:" + (item.realMoney + item.giftMoney) + item.showLable = item.cardName + "-余额:" + (item.realMoney) + item.uuid = MTools.uuid(); + if (item.giftMoney != 0) { + var children = []; + var gift = {}; + gift.id = item.id; + gift.giftMoney = item.giftMoney; + gift.showLable = item.cardName + '-赠送金额' + item.giftMoney; + gift.cardName = item.cardName; + gift.isGift = 1; + gift.uuid = MTools.uuid(); + children.push(gift); + item.children = children; + } }); + console.log(data.rows) _this.moneyCards = data.rows; - //启用会员卡支付方式 - _this.payMethods[5].disabled = false; - } else { - //禁用会员卡支付方式 - _this.payMethods[5].disabled = true; } } @@ -747,15 +835,29 @@ } item.count = 1; - - //加入业绩 - this.achieveList.push({ - orderItem: item, - staff: this.loginUser, - saleId: this.loginUser.suId, - achieveMoney: item.payMoney, - isShare: false, - }); + if (this.staffUser.suId) { + //加入业绩 + this.achieveList.push({ + orderItem: item, + staff: this.staffUser, + saleId: this.staffUser.suId, + achieveMoney: item.payMoney, + t3: '现金业绩', + commission: 0, + isShare: false, + }); + } else { + //加入业绩 + this.achieveList.push({ + orderItem: item, + staff: this.loginUser, + saleId: this.loginUser.suId, + achieveMoney: item.payMoney, + t3: '现金业绩', + commission: 0, + isShare: false, + }); + } this.order.items.push(item); } @@ -784,25 +886,32 @@ callback: function (data) { let order = data.rows[0]; console.log("order", order); - _this.order.zkTotal = order.zkTotal; - _this.order.total = order.total; + _this.order.zkTotal = order.zkTotal.toFixed(2); + _this.order.total = order.total.toFixed(2); //支付金额计算 _this.order.items.forEach(item => { let count = parseFloat(item.count); let zkPrice = parseFloat(item.zkPrice); - if (optionType != 1) { + // if (optionType != 1) { //直接修改支付金额不重置支付金额 item.payMoney = zkPrice * count; - } + // } _this.order.payMoney += parseFloat(item.payMoney); + + _this.achieveList.forEach(achieve=>{ + if(achieve.orderItem==item){ + achieve.achieveMoney=item.payMoney; + } + }) }); + _this.order.payMoney = _this.order.payMoney.toFixed(2); //计算欠款 - _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("支付金额不能大于应收金额"); + // } } }) } @@ -833,30 +942,38 @@ */ submitOrder(submitType) { - - - if (this.checkSubmitOrder()) { let _this = this; - - //检查支付方式 - let hasPayMethod=true; - _this.order.items.forEach(item=>{ - if(!item.payMethod){ - hasPayMethod=false; - return; + if(submitType == 1) { + 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.order.payMoney) { + this.$message.warning("输入付款总金额与应付金额不符"); + return false; + } + _this.order.flows = flows; + } else { + this.$message.warning("请选择支付方式"); + return false; } - }); - if(!hasPayMethod){ - this.$message.warning("请选择支付方式"); - return false; } - - - - - //匹配业绩 _this.achieveList.forEach(achieve => { @@ -867,15 +984,30 @@ } if (item.uuid == achieve.orderItem.uuid) { let achieveNew = { + uuid:item.uuid, beaultId: achieve.saleId, - t1: achieve.achieveMoney + t1: achieve.achieveMoney, + t3: achieve.t3, + projPercentage: achieve.commission, }; - item.achaeveList.push(achieveNew); + + var flag = true; + for(var j = 0; j < item.achaeveList.length; j++) { + if(item.achaeveList[j].uuid == achieveNew.uuid && item.achaeveList[j].beaultId == achieveNew.beaultId) { + flag = false; + break; + } + } + + if (flag) { + item.achaeveList.push(achieveNew); + } break; } } }) + console.log(_this.order); //校验业绩金额 if (_this.checkAchieve()) { let url = basePath + "/admin/order/payOrder"; @@ -893,19 +1025,32 @@ _this.order.orderNo = order.orderNo; //结算打印提示 if (submitType == 1) { - _this.$confirm('结算成功,是否立刻打印小票?', '提示', { - confirmButtonText: '打印', - cancelButtonText: '取消', - type: 'warning' - }).then(() => { + if (_this.printPaper) { _this.print(); + } else { + _this.$message.success({ + message : data.info, + duration : 1000, + onClose() { + _this.closeFram(); + } + }); + } - }).catch(() => { - _this.closeFram(); - }); + // _this.$confirm('结算成功,是否立刻打印小票?', '提示', { + // confirmButtonText: '打印', + // cancelButtonText: '取消', + // type: 'warning' + // }).then(() => { + // _this.print(); + // + // }).catch(() => { + // _this.closeFram(); + // }); } else { _this.$message.success(data.info); } + if(parent.myGrid) { parent.myGrid.serchData(); } @@ -925,7 +1070,7 @@ */ checkAchieve() { /* - //TODO 前端展示不检测,因为考虑到会员卡支付问题 + //TODO 前端展示不检测,因为考虑到储值卡支付问题 let _this = this; for (let i = 0; i < _this.order.items.length; i++) { if (_this.achieveList.length > 0) { @@ -964,10 +1109,10 @@ this.$message.warning("折扣单价填写不正确"); return false; } - if (!(MTools.isRealNum(item.payMoney) && item.payMoney >= 0)) { - this.$message.warning("实付金额填写不正确"); - return false; - } + // if (!(MTools.isRealNum(item.payMoney) && item.payMoney >= 0)) { + // this.$message.warning("实付金额填写不正确"); + // return false; + // } }) } else { this.$message.warning("请选择要购买的产品"); @@ -1007,6 +1152,9 @@ } }); this.achieveList = achieveListNew; + this.order.zkTotal = 0; + this.order.total = 0; + this.order.payMoney = 0; this.calculationTotal(); }, @@ -1108,6 +1256,94 @@ }, + payMethodSelect(item, index) { + let _this = this; + let payMoneys = _this.payMoneys; + if (item.type != '储值卡') { + this.$nextTick(function () { + if (item.isActive) { + Vue.set(item,'isActive',false); + var index = -1; + for (var i = 0; i < payMoneys.length; i++) { + let payMoney = payMoneys[i]; + if (payMoney.value == item.value) { + index = i; + break; + } + } + + if (index > -1) { + _this.payMoneys.splice(index, 1) + } + } else { + Vue.set(item,'isActive',true); + var hasAmount = 0; + for(var i = 0; i < payMoneys.length; i++) { + hasAmount += parseFloat(payMoneys[i].money); + } + if (_this.order.payMoney - hasAmount > 0) { + Vue.set(item, 'money', _this.order.payMoney - hasAmount); + } + _this.payMoneys.push(item); + } + }); + } + }, + popoverHide(item) { + if(this.treeSelect.length <= 0) { + Vue.set(item, 'isActive', false) + } else { + Vue.set(item, 'isActive', true) + } + }, + handleCheckChange(clickNode, checked) { + let _this = this; + + let nodes = checked.checkedNodes; + _this.treeSelect = nodes; + var index = -1; + // 判断点击节点是否在已展示支付方式中 + for(var i = 0; i < _this.payMoneys.length; i++) { + let node = _this.payMoneys[i]; + if (node.uuid === clickNode.uuid) { + index = i; + break; + } + } + + // 若点击节点在选中节点中,且已展示支付方式不存在,则添加 + if (nodes.indexOf(clickNode) > -1 && index === -1) { + var node = clickNode; + var item = {}; + if (node.isGift) { + item.value = node.cardName; + item.balance = node.giftMoney; + item.isGift = 'Y'; + } else { + item.value = node.cardName; + item.balance = node.realMoney; + item.isGift = 'N'; + } + item.type = '储值卡'; + item.id = node.id; + item.uuid = clickNode.uuid; + _this.payMoneys.push(item); + } + + // 若点击节点不存在选中节点中,且已展示支付方式中存在,则移除 + if (nodes.indexOf(clickNode) === -1 && index > -1) { + _this.payMoneys.splice(index, 1); + } + }, + openPayMoney() { + let _this = this; + if (!_this.order.items.length > 0) { + this.$message.warning("请选择要购买的产品"); + return false; + } + + _this.dialogSettleVisible = true; + } } }) -- Gitblit v1.9.1