房间收银暂停重构

master
Sigo 3 years ago
parent 07a721ee5a
commit 96a5b686a1

@ -0,0 +1,104 @@
<template>
<el-form inline label-width="80px">
<el-form-item label="顾客类型:">
<el-switch v-model="form.cashNumber" active-color="#13ce66" inactive-color="#ff4949" :active-text="form.cashNumber?'会员':'散客'" @change="callback">
</el-switch>
</el-form-item>
<el-form-item label="手机号码:">
<el-input v-model="form.mobilePhone" @change="fetchMember" maxlength="11" size="small" class="width-ms">
<el-button slot="append" icon="el-icon-search" v-if="form.cashNumber" @click="handleMember"></el-button>
</el-input>
<Member ref="member" @memberData="callBackMember"></Member>
</el-form-item>
<el-form-item label="名字:">
<el-input v-show="!form.cashNumber" size="small" v-model="form.memberName"></el-input>
<div v-show="form.cashNumber" class="width-m margin-right-xs">
{{form.memberName}}
<i v-show="form.sex==1" class="el-icon-male text-blue"></i>
<i v-show="form.sex==0" class="el-icon-female text-pink"></i>
</div>
</el-form-item>
<el-form-item label="男客:">
<el-input-number class="form-width-sm" size="small" v-model="form.man" :min="0" :max="10" label="男客数量"></el-input-number>
</el-form-item>
<el-form-item label="女客:">
<el-input-number class="form-width-sm" size="small" v-model="form.woman" :min="0" :max="10" label="女客数量"></el-input-number>
</el-form-item>
</el-form>
</template>
<script>
import { storeMemberOne } from "@/api/eashier.js";
import Member from "@/components/member/index";
export default {
components: {
Member
},
data() {
return {
form: {
cashNumber: true,
man: 0,
woman: 0
}
};
},
methods: {
//
handleMember() {
this.$refs.member.show();
},
//
callBackMember(data) {
let form = Object.assign({}, this.form);
if (data) {
form.mobilePhone = data.mobilePhone;
form.memberName = data.memberName;
form.memberId = data.id;
form.id = data.id;
form.sex = data.sex;
} else {
form.memberName = null
form.memberId = null
form.id = null
form.sex = null
}
this.form = Object.assign({}, form);
this.callback()
},
//
async fetchMember(value) {
if (value) {
let { code, data, message } = await storeMemberOne({
mobilePhone: this.form.mobilePhone,
storeId: sessionStorage.getItem("parentId"),
})
if (code == "000000") {
this.callBackMember(data)
} else {
this.callBackMember()
this.$alert(message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
}
} else {
this.callBackMember()
}
},
callback() {
this.$emit('call-back-baseMsg', this.form);
}
},
}
</script>
<style scoped>
.el-input-group {
margin-top: 3px;
}
.el-input-group .el-button {
padding: 0.06rem;
}
</style>

@ -0,0 +1,81 @@
<template>
<el-drawer title="现付收银" :visible.sync="drawerVisible" direction="rtl">
<div class="flex padding-left-sm text-bold text-xs margin-bottom-sm">
<div class="margin-right-sm">待付金额<span class="text-red text-price">{{form.debtMoney}}</span></div>
<div>现付<span class="text-red text-price">{{form.collectionCashAmount}}</span></div>
</div>
<el-table :data="payLists" :row-style=" {height: '40px'}">
<el-table-column show-overflow-tooltip align="center" min-width="100" label="支付方式" prop="payName"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" label="本次支付" prop="payMoney">
<template #default="{row,$index}">
<div v-show="isEditIndex!==$index" class="pointer" @click="handleEdit($index)">
{{row.payMoney}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input-number :ref="`payMoney${$index}`" size="small" v-show="isEditIndex===$index" v-model="row.payMoney" :min="0" :precision="0"></el-input-number>
</template>
</el-table-column>
</el-table>
</el-drawer>
</template>
<script>
import { ctlist } from "@/api/eashier.js";
export default {
data() {
return {
drawerVisible: false,///
payLists: [],//
isEditIndex: 999,//
form: {
debtMoney: '0.00',
collectionCashAmount: '0.00',
}
};
},
methods: {
// ======================== ======================== //
//
show() {
this.drawerVisible = true
if (this.payLists.length === 0) {
this.fetchData()
}
},
//
close() {
this.drawerVisible = false
},
// ======================== ======================== //
async fetchData() {
let { code, rows, message } = await ctlist({ id: "" })
if (code == "000000") {
var list = [];
rows.forEach((item) => {
let items = {
payId: item.id,
payMoney: 0,
payName: item.collectionTypeName,
isEdit: false
};
list.push(items);
});
this.payLists = list;
}
},
// ======================== ======================== //
//
handleEdit(row, index) {
this.isEditIndex = index
this.$nextTick(function () {
this.$refs[`payMoney${index}`].select()
});
}
},
}
</script>
<style scoped>
.el-table /deep/ .el-input-number__decrease,
.el-table /deep/ .el-input-number__increase {
display: none;
}
</style>

@ -0,0 +1,34 @@
<template>
<div class="totalPrice flex justify-between align-center">
<div class="padding-left text-s">现付</div>
<div class="flex align-center padding-right">
<span style="margin-top:5px" class="text-red text-bold text-price text-xl margin-right">{{form.payMoney||money}}</span>
<el-button type="primary" @click="handlePay"></el-button>
</div>
</div>
</template>
<script>
export default {
props: ['form'],
data() {
return {
money: '0.00'
};
},
methods: {
//
handlePay() {
this.$emit('call-back-totalMoney');
},
},
}
</script>
<style scoped>
.totalPrice {
height: 100px;
width: 100%;
background: rgb(255, 246, 228);
line-height: 100px;
margin-top: 250px;
}
</style>

@ -0,0 +1,227 @@
<template>
<div>
<el-table border :data="list" stripe style="width: 100%" :header-cell-style="headerCellStyle" :cell-style="handleCellStyle">
<el-table-column show-overflow-tooltip align="center" prop="projectNum" label="编码" min-width="80"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="projectName" label="名称" min-width="100"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="transactionPrice" label="价格" min-width="70">
<template #default="{row}">
<span class="text-price">{{row.transactionPrice}}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="numberTimes" label="数量" min-width="89"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="amount" label="总价格" min-width="80">
<template #default="{row}">
<span class="text-price">{{row.amount}}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="noDiscount" label="卡付打折" min-width="70">
<template #default="{row}">
{{row.noDiscount === 0 ? "是" : row.noDiscount === 1?'否':"未设"}}
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="renew" label="加钟" min-width="80">
<template #default="{row}">
<el-switch disabled v-model="row.renew==1?true:false"></el-switch>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="isClock" label="点牌" min-width="80">
<template #default="{row}">
<el-switch disabled v-model="row.isClock==1?true:false"></el-switch>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="projectNum" label="时长" min-width="80">
<template #default="{row}">
<i class="text-green text-bold el-icon-timer"></i>
<span>{{row.servicingTime}}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="serviceTechnicianOneStaffName" label="员工姓名" min-width="75"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="staffName" label="推销员工" min-width="75"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="price" label="备注" min-width="90">
<template #default="{row}">
<el-input v-model="row.beiz" size="small"></el-input>
</template>
</el-table-column>
<el-table-column header-align="center" label="疗程付款" v-if="form.cashNumber">
<el-table-column show-overflow-tooltip align="center" prop="courseProjectName" label="疗程付款" min-width="100">
<template #default="{row,$index}">
<span class="pointer" @click="handleProRec(row,$index,'project')">{{row.courseProjectName?row.courseProjectName:''}}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="courseConsumeCount" label="次数" min-width="70"></el-table-column>
</el-table-column>
<el-table-column header-align="center" label="充值卡付" v-if="form.cashNumber">
<el-table-column show-overflow-tooltip align="center" prop="rechargeTypeName" label="充值卡款" min-width="100">
<template #default="{row,$index}">
<span class="pointer" @click="handleProRec(row,$index,'recharge')">{{row.rechargeTypeName?`${row.rechargeTypeName}/${row.discount}%`:''}}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="cardConsumeMoney" label="可用金额" min-width="80"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="spendMoney" label="本次支付" min-width="80">
<template #default="{row,$index}">
<div v-show="isEditIndex!==$index&&(row.spendMoney||row.spendMoney===0)" class="pointer" @click="handleEdit($index)">
{{row.spendMoney}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input-number :ref="`inputNumber${$index}`" size="small" v-show="isEditIndex===$index" v-model="row.spendMoney" :min="0" :max="123" :precision="0"></el-input-number>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="cardGiftMoney" label="赠送可用" min-width="80"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="giftSpendMoney" label="赠送支付" min-width="80"></el-table-column>
</el-table-column>
</el-table>
<div class="totalPrice">
<div>应付</div>
<div class="text-price text-red">{{form.amount}}</div>
</div>
<!-- 公用组件 -->
<Project ref="Project" @projectData="callBackProject"></Project>
<Reccard ref="Reccard" @recTypeData="callBackReccard"></Reccard>
</div>
</template>
<script>
import Project from "@/components/project/index";
import Reccard from "@/components/recharge/index";
export default {
components: { Project, Reccard },
data() {
return {
form: {
cashNumber: true
}, //
list: [], //
isEditIndex: 999, //
clickIndex: 999, //
headerCellStyle: { //
background: "linear-gradient(#6cb3ff, #1873d4)",
color: "#eeeeee"
}
};
},
created() {
},
methods: {
// ========================== ========================== //
fetchData(list, form) {
list.forEach((item) => {
item.collectionRechargeAmount = 0;
item.collectionIntegralAmount = 0;
item.cashAmount = 0;
item.collectionAmount = 0;
item.collectionCashAmount = 0;
});
this.form = Object.assign({}, form);
this.list = Array.from(list);
this.handleCalculatePrice()
},
// ========================== ========================== //
//
handleEdit(row, index) {
this.isEditIndex = index
this.$nextTick(function () {
this.$refs[`inputNumber${index}`].select()
});
},
// ========================== ========================== //
// /
handleProRec(row, index, text) {
this.clickIndex = index
if (!this.form.memberId) {
this.$message.warning({ message: "请先选择会员" });
return
}
if (text == 'project') {
//
this.$refs.Project.show(this.form, row.projectId);
} else {
//
if (row.courseAccountId == null) {
this.$refs.Reccard.show(this.form);
} else {
this.$message.warning({ message: "已选择疗程付" });
}
}
},
//
callBackProject(data) {
let list = Array.from(this.list);
let row = Object.assign({}, list[this.clickIndex]);
row.courseProjectName = data.projectName
row.transactionPrice = data.price
row.amount = new this.$Decimal(data.price).mul(new this.$Decimal(row.numberTimes)).toNumber().toFixed(2) * 1
row.courseConsumeCount = 1
row.courseAccountId = data.id
list[this.clickIndex] = Object.assign({}, row);
this.list = Array.from(list);
},
//
callBackReccard(data) {
let list = Array.from(this.list);
let row = Object.assign({}, list[this.clickIndex]);
row.offsetMoney = data.offsetMoney;
row.offsetGiftMoney = data.offsetGiftMoney;
row.rechargeTypeNum = data.rechargeTypeNum;
row.spendMoney = 0;
row.rechargeTypeId = data.id;
row.rechargeTypeName = data.rechargeTypeName;
row.cardRestMoney = data.cardRestMoney;
row.cardConsumeMoney = data.cardConsumeMoney;
row.discount = data.discount;
row.cardGiftMoney = data.cardGiftMoney;
row.discountFreeAmount = data.discountFreeAmount;
row.giftConsumeMoney = data.giftConsumeMoney;
row.endTime = data.endTime;
row.discoutGiftMoney = 0;
row.discoutMoney = 0;
row.giftSpendMoney = 0;
row.type = data.type;
list[this.clickIndex] = Object.assign({}, row);
this.list = Array.from(list);
},
// ========================== ========================== //
handleCalculatePay() { },
//
handleCalculatePrice() {
let that = this
let list = Array.from(this.list);
let form = Object.assign({}, this.form);
form.amount = 0
list.forEach(function (item) {
//
if (that.form.cashNumber) {
// priceMember numberTimes
item.transactionPrice = item.priceMember
item.amount = new that.$Decimal(item.priceMember).mul(new that.$Decimal(item.numberTimes)).toNumber().toFixed(2) * 1
} else {
// price numberTimes
item.transactionPrice = item.price;
item.amount = new that.$Decimal(item.price).mul(new that.$Decimal(item.numberTimes)).toNumber().toFixed(2) * 1
}
form.amount = new that.$Decimal(form.amount).add(new that.$Decimal(item.amount)).toNumber().toFixed(2)
});
this.form = Object.assign({}, form);
this.list = Array.from(list);
this.callBack()
},
//
callBack() {
this.$emit('call-back-payItems', this.list, this.form);
},
//
handleCellStyle(row, column) {
if (row.column.property == 'transactionPrice' || row.column.property == 'amount' || row.column.property == 'courseProjectName' || row.column.property == 'rechargeTypeName') {
return 'color:#f00;'
}
}
},
}
</script>
<style scoped>
.totalPrice {
display: flex;
align-items: center;
margin-top: 10px;
margin-left: 50px;
}
</style>

@ -113,7 +113,7 @@
<el-table-column align="center" prop="courseConsumeCount" label="次数" min-width="70"></el-table-column>
</el-table-column>
<el-table-column align="center" label="充值卡付" v-if="form.cashNumber">
<el-table-column align="center" prop="amount" label="充值卡款" min-width="100" show-overflow-tooltip v-if="form.cashNumber">
<el-table-column align="center" prop="rechargeTypeName" label="充值卡款" min-width="100" show-overflow-tooltip v-if="form.cashNumber">
<template slot-scope="scope">
<div @click="openRec(scope.row,scope.$index)">
<span class="text-red">{{scope.row.rechargeTypeName ?(scope.row.rechargeTypeName + ' / 折扣'+scope.row.discount+'%'):'点击选择'}}</span>
@ -717,6 +717,7 @@ export default {
row.index = rowIndex;
},
sumMoney() {
console.log(this.form.cashNumber);
let amount = 0;
let payMoney = 0;
this.list.forEach((item) => {

@ -0,0 +1,72 @@
<template>
<div>
<!-- 基础信息 -->
<BaseMsg ref="baseMsg" @call-back-baseMsg="callBackBaseMsg"></BaseMsg>
<!-- 收费项目 -->
<PayItems ref="payItems" @call-back-payItems="callBackPayItems"></PayItems>
<!-- 总金额 -->
<CashTotalMoney ref="CashTotalMoney" :form="form" @call-back-cashTotalMoney="callBackCashTotalMoney"></CashTotalMoney>
<!-- 去结算抽屉 -->
<CashPay ref="CashPay"></CashPay>
</div>
</template>
<script>
import BaseMsg from "./components/baseMsg";
import PayItems from "./components/payItems";
import CashTotalMoney from "./components/cashTotalMoney";
import CashPay from "./components/cashPay";
export default {
components: {
BaseMsg,
PayItems,
CashTotalMoney,
CashPay,
},
data() {
return {
form: {
cashNumber: true
},
list: []
};
},
methods: {
// ================================== ================================== //
callBackBaseMsg(data) {
let form = Object.assign(this.form, data);
this.form = Object.assign({}, form);
this.$refs.payItems.fetchData(this.list, this.form)
},
// ================================== ================================== //
callBackPayItems(list, form) {
this.form = Object.assign({}, form);
this.list = Array.from(list);
},
// ================================== ================================== //
callBackCashTotalMoney() {
this.$refs.CashPay.show()
},
//
show(list) {
this.list = Array.from(list);
this.$refs.payItems.fetchData(this.list, this.form)
},
},
created() {
// var scrollDiv = document.getElementsByClassName("bing-foot");
// scrollDiv.scrollTop = scrollDiv.scrollHeight;
},
};
</script>
<style scoped>
.bing-foot {
height: 100px;
width: 100%;
background: rgb(255, 246, 228);
line-height: 100px;
}
</style>

@ -298,6 +298,7 @@ export default {
.catch(() => { });
},
openAll(item) {
console.log("showList", JSON.parse(JSON.stringify(item.showList)))
this.$emit("roomData", item.showList);
},
editRoom(item, number) {

@ -17,7 +17,7 @@
<script>
import order from "./components/order/index.vue";
import room from "./components/room/index.vue";
import bing from "./components/bing/index.vue";
import bing from "./components/bing/index2.vue";
export default {
components: { room, bing, order },
inject: ["reload"],

@ -263,8 +263,11 @@
/* ==================
==================== */
.width-m {
width: 150px;
}
.width-ms {
width: 210px;
width: 200px;
}
/* el-table */

@ -11,8 +11,6 @@
==================== */
body {
background-color: #f1f1f1;
color: #333333;
@ -39,22 +37,16 @@ image {
border-radius: 6px;
}
/* ==================
==================== */
/* ==================
==================== */
/* -- 实线 -- */
.solid::after,
.solid-top::after,
.solid-right::after,
@ -123,10 +115,9 @@ image {
border-left: 8px solid #eee;
}
/* -- 阴影 -- */
.shadow[class*='white'] {
.shadow[class*="white"] {
--ShadowSize: 0 1px 6px;
}
@ -299,22 +290,18 @@ button.cuIcon.lg {
==================== */
/* ==================
==================== */
/* ==================
==================== */
/* ==================
==================== */
/* ==================
==================== */
@ -328,7 +315,7 @@ button.cuIcon.lg {
justify-content: space-between;
}
.cu-form-group+.cu-form-group {
.cu-form-group + .cu-form-group {
border-top: 1px solid #eee;
}
@ -348,7 +335,7 @@ button.cuIcon.lg {
padding-right: 20px;
}
.cu-form-group>text[class*="cuIcon-"] {
.cu-form-group > text[class*="cuIcon-"] {
font-size: 36px;
padding: 0;
box-sizing: border-box;
@ -1285,6 +1272,9 @@ button.cuIcon.lg {
==================== */
.text-s {
font-size: 16px;
}
.text-xs {
font-size: 20px;
}

Loading…
Cancel
Save