You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1786 lines
64 KiB
Vue
1786 lines
64 KiB
Vue
<template>
|
|
<div>
|
|
<div class="reatmen">
|
|
<el-form :model="form" :inline="true" :label-width="formLabelwidth">
|
|
<el-form-item label="手机号码:">
|
|
<div class="form-width-ms">
|
|
<el-input style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="form.mobilePhone" @blur="phone" @change="phone">
|
|
<el-button size="mini" slot="append" icon="el-icon-search" @click="openMember"></el-button>
|
|
</el-input>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="会员名字:">
|
|
<div class="form-width-ms">
|
|
<span>{{ form.memberName }} <i v-if="form.sex==1" class="el-icon-male text-blue"></i>
|
|
<i v-else class="el-icon-female text-pink"></i></span>
|
|
<span class="text-cyan pointer">
|
|
<el-button size="mini" type="text" @click="openAddMember">添加会员</el-button>
|
|
</span>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="业务时间:" v-if="isAddition==1">
|
|
<div class="form-width-ms">
|
|
<el-date-picker ref="recDate" v-model="form.additionDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期">
|
|
</el-date-picker>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item v-if="sessionStorageData.allowdebt&&debtMoneys&&isAddition==0" label="以往欠款:">
|
|
<div class="form-width-ms">
|
|
<span>{{ debtMoneys }}</span>
|
|
<el-button size="mini" type="text" @click="openMoney()">去还款</el-button>
|
|
</div>
|
|
</el-form-item>
|
|
<br />
|
|
<el-form-item label="疗程编码:">
|
|
<div class="form-width-ms flex ">
|
|
<el-input placeholder="输入疗程编码" v-model="form.projectNum" @blur="proBlur" @change="proBlur">
|
|
<el-button size="mini" slot="append" icon="el-icon-search" @click="openPro"></el-button>
|
|
</el-input>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="疗程名称:">
|
|
<div class="form-width-ms text-cut">
|
|
<span>{{ form.projectName }}</span>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="单次标价:">
|
|
<div class="form-width-xs">
|
|
<span>{{ form.priceMember }}</span>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="成交单价:">
|
|
<div class="form-width-ms pointer flex">
|
|
<div v-if="!menberShow" @click="((menberShow = true))">
|
|
{{ form.salesPrice }}
|
|
<i class="el-icon-edit text-cyan"></i>
|
|
</div>
|
|
<el-input v-focus class="form-width-sm form-input-wdith-xs" v-else type="number" size="samll" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]{0,2}" v-model="form.salesPrice" @change="changesales" @blur="changesales" ref="priceinput"></el-input>
|
|
<span v-if="moneyRatio!=100" class="text-red padding-left-xs text-bold">{{moneyRatio}}%</span>
|
|
</div>
|
|
</el-form-item>
|
|
<br />
|
|
<el-form-item label="最少购买:">
|
|
<div class="form-width-xs">
|
|
<span>{{ form.minumumTimes }} (次)</span>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="购买次数:">
|
|
<div class="form-width-xs pointer">
|
|
<div v-if="!buysShow" @click="((buysShow = true))">
|
|
{{ form.numberTimes }}
|
|
<i class="el-icon-edit text-cyan"></i>
|
|
</div>
|
|
<el-input v-focus class="form-input-wdith" v-else size="samll" type="number" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="form.numberTimes" @change="numbertimes" @blur="numbertimes" ref="buyinput"></el-input>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="成交金额:">
|
|
<div class="form-width-xl">
|
|
<span>{{ form.amount }}</span>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="待付金额:">
|
|
<div class="form-width-xl padding-rigth-xs">
|
|
<span>{{
|
|
form.debtMoney >= 0
|
|
? form.debtMoney
|
|
: "超出" + form.debtMoney * -1
|
|
}}</span>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="实付金额:">
|
|
<div class="text-red text-price">
|
|
{{ form.courseReatmentAmount }}
|
|
</div>
|
|
</el-form-item><br />
|
|
<el-form-item label v-show="sessionStorageData.course">
|
|
<div style="width: 542px;padding-left:28px;">
|
|
<el-checkbox style="display: inline-block" @change="changeIntegralCheckbox" v-model="form.integralCheckbox">
|
|
使用积分| 总积分:{{ form.integral }}
|
|
</el-checkbox>
|
|
<div v-show="form.integralCheckbox" style="color: red; display: inline-block">
|
|
| 可用积分:
|
|
<span>{{ form.consumeIntegral }}</span>
|
|
| 可兑换金额:<span class="text-price">{{ form.integralMoney }}</span>
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="说明:" v-show="sessionStorageData.course">
|
|
</el-form-item>
|
|
<el-input v-show="sessionStorageData.course" style="width: 450px" v-model="form.description" type="textarea" placeholder="请输入说明" maxlength="200" :autosize="{ minRows: 1.5, maxRows: 2 }" show-word-limit></el-input>
|
|
<el-form-item label="说明:" v-show="!sessionStorageData.course">
|
|
</el-form-item>
|
|
<el-input v-show="!sessionStorageData.course" class="border-radius-10" style="width: 845px" v-model="form.description" type="textarea" placeholder="请输入说明" maxlength="200" :autosize="{ minRows: 1.5, maxRows: 2 }" show-word-limit></el-input>
|
|
</el-form>
|
|
<div class="reat">
|
|
<div class="margin-bottom-xs">
|
|
<span class="margin-left padding-left" v-if="sessionStorageData.refillCard">卡付/</span><span>现付</span>
|
|
<div class="flex justify-start align-start flex-wrap padding-top-xs margin-left padding-left">
|
|
<div style="width:590px" class="border-radius-10 border margin-right-xs bg-white padding-xs" v-if="sessionStorageData.refillCard">
|
|
<el-table :data="rechargeAccountList" :summary-method="getSummaries" show-summary max-height="300">
|
|
<el-table-column align="center" prop="rechargeTypeName" label="名称" show-overflow-tooltip min-width="120"></el-table-column>
|
|
<el-table-column show-overflow-tooltip min-width="70" align="center" prop="cardRestMoney" label="剩余金额"></el-table-column>
|
|
<el-table-column align="center" prop="cardOver" label="可用金额" width="70"></el-table-column>
|
|
<!-- <el-table-column align="center" prop="offsetMoney" label="可抵扣额" width="90">
|
|
</el-table-column> -->
|
|
<el-table-column align="center" prop="spendMoney" label="本次支付" width="90">
|
|
<template slot-scope="scope">
|
|
<div v-if="!scope.row.isShow" @click="openCard(scope.row, scope.$index)" class="form-input-width">
|
|
{{ scope.row.spendMoney }}
|
|
<i class="el-icon-edit text-cyan"></i>
|
|
</div>
|
|
<el-input v-focus type="number" class="form-input-width-xs" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]{0,2}" @change="endEditCard(scope.row)" @blur="endEditCard(scope.row)" v-else v-model.lazy="scope.row.spendMoney" precision="2"></el-input>
|
|
</template>
|
|
</el-table-column>
|
|
<!-- <el-table-column align="center" prop="discoutMoney" label="抵扣支付" width="90">
|
|
<template slot-scope="scope">
|
|
<div v-show="!scope.row.isShows" @click="disedit(scope.row,scope.$index)"
|
|
style="padding:0 0px;cursor: pointer;width:80px">
|
|
{{scope.row.discoutMoney}}
|
|
</div>
|
|
<input :ref="'indexs'+scope.$index"
|
|
onkeyup="value = value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"
|
|
@blur="endEditCards(scope.row)" @keydown.enter="endEditCards(scope.row)"
|
|
@change="endEditCards(scope.row)" v-show="scope.row.isShows"
|
|
v-model="scope.row.discoutMoney" type="text"
|
|
style="height:28px;width:60px" />
|
|
</template>
|
|
</el-table-column> -->
|
|
<el-table-column align="center" prop="cardOvers" label="可用余额" width="70"></el-table-column>
|
|
<el-table-column show-overflow-tooltip align="center" prop="storeName" label="所属门店" width="120"></el-table-column>
|
|
</el-table>
|
|
<div class="jisuan" v-show="false">
|
|
<span>小计 :</span>
|
|
<span style="padding-left: 60px">¥{{ form.collectionRechargeAmount }}</span>
|
|
<span v-show="false">{{ collectionRechargeAmounts }}</span>
|
|
</div>
|
|
</div>
|
|
<div style="width:280px" class="border-radius-10 border margin-right-xs bg-white padding-xs">
|
|
<el-table :data="payLists" :summary-method="getSummaries" show-summary>
|
|
<el-table-column align="center" prop="collectionTypeName" label="支付方式" min-width="100"></el-table-column>
|
|
<el-table-column align="center" prop="payMoney" fixed="right" label="本次支付 ( ¥ )" width="120">
|
|
<template slot-scope="scope">
|
|
<div class="form-input-width" v-if="!scope.row.isShow" @click="openpay(scope.row, scope.$index)">{{ scope.row.payMoney }}<i class="el-icon-edit text-cyan"></i></div>
|
|
<el-input v-focus type="number" class="form-input-width-xs" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]{0,2}" @change="endEdit(scope.row)" @blur="endEdit(scope.row)" v-else v-model.lazy="scope.row.payMoney" precision="2"></el-input>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<div class="jisuan" v-show="false">
|
|
<span>小计 :</span>
|
|
<span style="padding-left: 60px">¥{{ form.collectionCashAmount }}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<span class="margin-left padding-left ">员工/门店管理层/高管业绩</span>
|
|
<div class="flex justify-start align-start flex-wrap padding-top-xs margin-left padding-left">
|
|
<staffsles ref="staffsles" @staffslesData="staffslesData"></staffsles>
|
|
<admin ref="admin" @adminData="adminData"></admin>
|
|
<manager ref="manager" @managerData="managerData"></manager>
|
|
</div>
|
|
</div>
|
|
<div class="text-center padding-top" style="width:940px">
|
|
<el-button size="mini" type="info" plain @click="empty">清空</el-button>
|
|
<el-button size="mini" v-if="isAddition==0" type="primary" @click="isAddition = 1" v-role="5003002">补单</el-button>
|
|
<el-button size="mini" v-else type="success" @click="isAddition = 0">疗程</el-button>
|
|
<el-button size="mini" type="primary" plain @click="getList" v-role="5004001">列表</el-button>
|
|
<el-button size="mini" type="primary" @click="save((saveloading = true))" :loading="saveloading" v-role="5004002">提交</el-button>
|
|
</div>
|
|
<div class="reatmen">
|
|
<!-- 保存列表弹窗 -->
|
|
<el-dialog :close-on-click-modal="false" v-dialogDrag title="列表" :visible.sync="listDialogVisible" width="90%" :close="close">
|
|
<div class="flex justify-between padding-bottom-xs">
|
|
<div>
|
|
<el-date-picker @change="getList" style="width: 200px" v-model="selectDate" format="yyyy年 MM月" type="month" placeholder="选择日期"></el-date-picker>
|
|
</div>
|
|
<div class="flex">
|
|
<div class="form-width-m padding-right-xs">
|
|
<el-input size="medium" v-model="queryForm.courseReatmentNum" placeholder="输入单据号" clearable></el-input>
|
|
</div>
|
|
<div class="form-width-m padding-right-xs">
|
|
<el-input size="medium" v-model="queryForm.memberName" placeholder="输入会员名字" clearable></el-input>
|
|
</div>
|
|
<div class="form-width-m padding-right-xs">
|
|
<el-input size="medium" maxlength="11" v-model="queryForm.mobilePhone" placeholder="输入会员手机号" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" clearable></el-input>
|
|
</div>
|
|
<el-button size="mini" type="primary" @click="getList">搜索</el-button>
|
|
</div>
|
|
</div>
|
|
<el-table :data="pageInfo.formList" max-height="500" :header-cell-style="{
|
|
background: 'linear-gradient(#6cb3ff, #1873d4)',
|
|
color: '#eeeeee'
|
|
}" ref="formList" border>
|
|
<el-table-column align="center" prop="tag" label="状态" min-width="65">
|
|
<template slot-scope="scope">
|
|
<el-tag :type="scope.row.isCancel == 1 ? 'primary' : 'success'">{{ scope.row.isCancel==0?'正常':'作废' }}</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column align="center" show-overflow-tooltip prop="courseReatmentNum" label="单号" min-width="120"></el-table-column>
|
|
<el-table-column align="center" show-overflow-tooltip prop="date" label="日期" min-width="105"></el-table-column>
|
|
<el-table-column align="center" prop="isAddition" show-overflow-tooltip label="是否补单" min-width="50">
|
|
<template slot-scope="scope"><span class="text-red" v-show="scope.row.isAddition == 0">否</span><span class="text-green" v-show="scope.row.isAddition == 1">是</span></template>
|
|
</el-table-column>
|
|
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="100">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.mobilePhone | phone }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column align="center" prop="memberName" label="会员名称" min-width="80"></el-table-column>
|
|
<el-table-column align="center" prop="projectName" :show-overflow-tooltip="true" label="疗程" min-width="120"></el-table-column>
|
|
<el-table-column align="center" prop="salesPrice" label="成交单价" min-width="70"></el-table-column>
|
|
<el-table-column align="center" prop="numberTimes" label="购买次数" min-width="50"></el-table-column>
|
|
<el-table-column align="center" prop="amount" label="成交金额" min-width="70"></el-table-column>
|
|
<el-table-column align="center" prop="courseReatmentAmount" label="实付金额" min-width="70"></el-table-column>
|
|
<el-table-column align="center" prop="debtMoney" label="欠款" min-width="70"></el-table-column>
|
|
<el-table-column align="center" prop="inputBy" label="录单人" min-width="70"></el-table-column>
|
|
<!--<el-table-column align="center" fixed="right" label="账户操作" width="100" v-if="sessionStorageData.allowValid == 1">
|
|
<template slot-scope="scope">
|
|
<el-button @click.stop="openPostpone(scope.row, (postponeDialog = true))" :disabled="scope.row.isCancel === 1" size="mini" type="success">账户延期</el-button>
|
|
</template>
|
|
</el-table-column> -->
|
|
<el-table-column align="center" fixed="right" label="操作" width="220">
|
|
<template slot-scope="scope" fixed="right">
|
|
<el-button size="mini" type="primary" @click="detail(scope.row)" plain>明细</el-button>
|
|
<el-button @click.stop="abolish(scope.row)" size="mini" :disabled="scope.row.isCancel === 1" type="primary" v-role="5004003">作废</el-button>
|
|
<el-button @click.stop="print(scope.row, (printDialogVisible = true))" :disabled="scope.row.isCancel === 1" size="mini" type="success" v-role="5004004">打印
|
|
</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<div class="block" style="margin-top: 10px">
|
|
<!-- 分页组件 -->
|
|
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10, 20, 30, 40, 50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
|
|
</div>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button size="mini" type="primary" @click="close">关闭</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
<div>
|
|
<el-dialog :close-on-click-modal="false" v-dialogDrag title="账户明细" :visible.sync="postponeDialog" width="60%">
|
|
<el-form :model="postponeForm">
|
|
<el-form-item label="会员名称" label-width="150px">
|
|
<div style="wdith: 120px">{{ postponeForm.memberName }}</div>
|
|
</el-form-item>
|
|
<el-form-item label="疗程账户名称" label-width="150px">
|
|
<div style="wdith: 120px">
|
|
{{ postponeForm.courseProjectName }}
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="可用次数" label-width="150px">
|
|
<div style="wdith: 120px">
|
|
{{ postponeForm.courseConsumeCount }}
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="到期日期" label-width="150px">
|
|
<div class="spanrs">
|
|
<span v-show="!recDateShow" @click="openDate((recDateShow = true))">{{ postponeForm.endTime }}
|
|
<el-button class="el-icon-edit" type="text" size="mini">修改</el-button>
|
|
</span>
|
|
<el-date-picker size="mini" @blur="recDateShow = false" v-show="recDateShow" ref="recDate" v-model="postponeForm.endTime" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期">
|
|
</el-date-picker>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button size="mini" type="primary" plain @click="postponeDialog = false">取消</el-button>
|
|
<el-button size="mini" type="primary" @click="endPostpone((postponeDialog = false))">确定</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
<el-dialog :close-on-click-modal="false" v-dialogDrag title="打印" :visible.sync="printDialogVisible" width="60%">
|
|
<div id="printTest" class="printDiv">
|
|
<div class="text-center padding-xs">
|
|
购买疗程记录单
|
|
</div>
|
|
<hr />
|
|
<el-form :model="printForm" :inline="true">
|
|
<el-form-item label="门店:">
|
|
<div>
|
|
{{ printForm.storeName }}
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="时间:">
|
|
{{ printForm.date }}
|
|
</el-form-item>
|
|
<el-form-item label="单号:">
|
|
{{ printForm.courseReatmentNum }}
|
|
</el-form-item>
|
|
<el-form-item label="会员:">
|
|
<div>
|
|
{{ printForm.memberName }}/{{ printForm.mobilePhone }}
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="疗程:">
|
|
<div style="min-width: 64px; display: inline-block">
|
|
{{ printForm.projectName }} <span class="text-cyan"></span>
|
|
</div>
|
|
</el-form-item>
|
|
<el-form-item label="成交:">
|
|
<div>{{ printForm.salesPrice }} * {{ printForm.numberTimes }} = {{ printForm.amount }}</div>
|
|
</el-form-item>
|
|
<el-form-item label="欠款:">
|
|
<div class="text-price">{{ printForm.debtMoney }}</div>
|
|
</el-form-item>
|
|
<br />
|
|
<el-table v-if="printForm.collectionRechargeAmount!=0" :data="printForm.rechargeConsumeList" style="width: 180px;">
|
|
<el-table-column align="left" prop="rechargeTypeName" label="充值卡" min-width="100"></el-table-column>
|
|
<el-table-column align="center" prop="spendMoney" label="支付" width="40"></el-table-column>
|
|
<el-table-column align="center" prop="cardConsumeMoney" label="剩余" width="40"></el-table-column>
|
|
</el-table>
|
|
<el-table v-if="printForm.collectionCashAmount!=0" :data="printForm.payLists" style="width: 180px;">
|
|
<el-table-column align="left" prop="payName" label="付款方式" width="100"></el-table-column>
|
|
<el-table-column align="center" prop="payMoney" label="支付" width="80"></el-table-column>
|
|
</el-table>
|
|
<br />
|
|
<!-- <el-form-item label="实付金额:">
|
|
<div>{{ printForm.collectionAmount }}</div>
|
|
</el-form-item> -->
|
|
<br />
|
|
<br />
|
|
<el-form-item label="签名:">
|
|
<!-- <div style="height:30px;width:150px;border-bottom:1px solid #333"> </div> -->
|
|
</el-form-item><br />
|
|
<el-form-item label="服务热线:">
|
|
{{ printForm.telephone }} </el-form-item><br />
|
|
<el-form-item label="打印时间:">
|
|
{{ printForm.printDate | dateFormat }}
|
|
</el-form-item>
|
|
<br /><br />
|
|
</el-form>
|
|
</div>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button size="mini" type="primary" plain @click="printDialogVisible = false">取消
|
|
</el-button>
|
|
<el-button size="mini" type="primary" v-print="'#printTest'">打印</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
</div>
|
|
<el-dialog :close-on-click-modal="false" v-dialogDrag title="提示" :visible.sync="paymentcodeDialog" width="400px">
|
|
<span style="font-size: 14px; margin-left: 10px; color: #999">本次支付需要验证支付密码</span>
|
|
<el-form :model="paymentform">
|
|
<el-form-item label="支付密码 : ">
|
|
<el-input style="width: 150px" size="mini" type="password" v-model="paymentform.cashPassword" placeholder="会员的支付密码"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button size="mini" type="primary" plain @click="paymentcodeDialog = false">取 消</el-button>
|
|
<el-button size="mini" type="primary" @click="payment((paymentcodeDialog = false))">确 定</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
|
|
<staff ref="staff" @staffData="staffData"></staff>
|
|
<addmember ref="addmember"></addmember>
|
|
<member ref="member" @memberData="memberData"></member>
|
|
<repayment ref="repayment" @repaymentData="phone"></repayment>
|
|
<project ref="project" @projectData="proConfirm"></project>
|
|
<detail ref="detail" @detailData="detailData"></detail>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import {
|
|
courseEditStaff,
|
|
storeMemberOne,
|
|
couAccountOne,
|
|
recAccountList,
|
|
checkCashWord,
|
|
coursecancel,
|
|
selectOne,
|
|
coursepage,
|
|
addcourse,
|
|
ctlist,
|
|
editCouAccount,
|
|
} from "@/api/eashier.js";
|
|
import { propage } from "@/api/storeManage";
|
|
import { partten } from "../../../../partten/index.js";
|
|
import repayment from "@/components/repayment/index.vue";
|
|
import staff from "@/components/staff/index";
|
|
import addmember from "@/components/member/edit/index";
|
|
import project from "@/components/project/index";
|
|
import member from "@/components/member/index";
|
|
import detail from "./components/detail";
|
|
import admin from "@/components/staffList/admin/index";
|
|
import manager from "@/components/staffList/manager/index";
|
|
import staffsles from "@/components/staffList/staff/index";
|
|
export default {
|
|
components: {
|
|
staffsles,
|
|
manager,
|
|
admin,
|
|
member,
|
|
repayment,
|
|
staff,
|
|
addmember,
|
|
project,
|
|
detail,
|
|
},
|
|
inject: ["reload"],
|
|
data() {
|
|
return {
|
|
input: null,
|
|
printDialogVisible: false, //打印弹窗开关
|
|
listDialogVisible: false,
|
|
paymentcodeDialog: false,
|
|
postponeDialog: false,
|
|
detailDialog: false,
|
|
saveloading: false,
|
|
recDateShow: false,
|
|
refreshtext: false, //搜索判断字符
|
|
menberShow: false,
|
|
infoDialog: false, //上传文件弹窗开关
|
|
buysShow: false,
|
|
moneyRatio: 100,
|
|
isAddition: 0,
|
|
total: 0, //分页总条数
|
|
queryForm: {
|
|
//查询对象
|
|
pageNum: 1, // 当前页码
|
|
pageSize: 10, // 每页的数据条数,
|
|
},
|
|
selectDate: new Date(),
|
|
payMoney: "",
|
|
payLists: [], //现付列表
|
|
proForm: {},
|
|
manageList: [],
|
|
staffList: [],
|
|
detailForm: {
|
|
rechargeConsumeList: [],
|
|
payLists: [], //现付列表
|
|
},
|
|
postponeForm: {},
|
|
pageInfos: {
|
|
reatmentList: [],
|
|
total: 0, //分页总条数
|
|
pageSize: 10,
|
|
pageNum: 1,
|
|
},
|
|
activeName: ["现付"],
|
|
openCollNumber: 0,
|
|
radioEditStaff: "",
|
|
editStaffTable: [],
|
|
|
|
sessionStorageData: {}, //门店参数集合
|
|
editStaffRatioRow: "",
|
|
radioEditStaffList: {},
|
|
formLabelwidth: "80px",
|
|
rechargeAccountList: [], //卡付列表
|
|
collectionCashAmount: "",
|
|
editStaffDailogtitle: "",
|
|
collectionRechargeAmounts: 0,
|
|
debtMoneys: 0,
|
|
paymentform: {
|
|
cashPassword: null,
|
|
},
|
|
|
|
printForm: {
|
|
date: "",
|
|
number: null,
|
|
storeId: "",
|
|
projectName: "",
|
|
memberName: "",
|
|
mobilePhone: null,
|
|
num: null,
|
|
money: null,
|
|
payMoney: null,
|
|
cardMoney: null,
|
|
numMoney: null,
|
|
numPayMoney: null,
|
|
tel: "",
|
|
printDate: new Date(),
|
|
},
|
|
form: {
|
|
mobilePhone: null,
|
|
memberName: "",
|
|
sex: "",
|
|
integralCheckbox: false,
|
|
description: "",
|
|
salesPrice: "",
|
|
numberTimes: "",
|
|
menberShow: false,
|
|
courseReatmentAmount: 0,
|
|
isDebt: false,
|
|
collectionRechargeAmount: 0,
|
|
collectionCashAmount: 0,
|
|
collectionIntegralAmount: 0,
|
|
integral: 0,
|
|
integralMoney: 0,
|
|
consumeIntegral: 0,
|
|
debtMoney: 0,
|
|
},
|
|
pageInfo: {
|
|
total: 0, //分页总条数 // 总条数
|
|
formList: [],
|
|
},
|
|
addForm: {
|
|
sex: 1,
|
|
memberName: "",
|
|
mobilePhone: null,
|
|
label: null,
|
|
skinType: null,
|
|
hairLong: null,
|
|
cashPassword: null,
|
|
checkPass: null,
|
|
},
|
|
vip: {}, //会员信息
|
|
staffLists: [{ ratio: 100 }], //员工占比初始化
|
|
managerLists: [{ ratio: 100 }], //员工占比初始化
|
|
adminList: [{ ratio: 100 }], //员工占比初始化
|
|
date: [],
|
|
openStaffText: "",
|
|
pickerOptions: {
|
|
//组件限制方法
|
|
shortcuts: [
|
|
{
|
|
text: "最近一周",
|
|
onClick(picker) {
|
|
const end = new Date();
|
|
const start = new Date();
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
|
|
picker.$emit("pick", [start, end]);
|
|
},
|
|
},
|
|
{
|
|
text: "最近一个月",
|
|
onClick(picker) {
|
|
const end = new Date();
|
|
const start = new Date();
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
|
|
picker.$emit("pick", [start, end]);
|
|
},
|
|
},
|
|
],
|
|
},
|
|
};
|
|
},
|
|
methods: {
|
|
close() {
|
|
this.listDialogVisible = false;
|
|
this.openCollNumber = 0;
|
|
},
|
|
|
|
setStaffRatio() {
|
|
this.openCollNumber = 0;
|
|
var that = this;
|
|
setTimeout(() => {
|
|
that.$refs.staffsles.show(that.staffLists);
|
|
that.$refs.manager.show(that.managerLists);
|
|
that.$refs.admin.show(that.adminList);
|
|
}, 800);
|
|
},
|
|
|
|
//员工占比返回方法
|
|
staffslesData(v) {
|
|
this.staffLists = [...v];
|
|
},
|
|
//高管占比返回方法
|
|
managerData(v) {
|
|
this.managerLists = [...v];
|
|
},
|
|
//管理员占比返回方法
|
|
adminData(v) {
|
|
this.adminList = [...v];
|
|
},
|
|
openMoney() {
|
|
this.$refs.repayment.show(this.vip);
|
|
},
|
|
//打开选择会员弹窗
|
|
openMember() {
|
|
this.$refs.member.show();
|
|
},
|
|
//选中会员返回方法
|
|
memberData(v) {
|
|
this.form.mobilePhone = v.mobilePhone;
|
|
this.phone();
|
|
},
|
|
//选中员工返回方法
|
|
staffData(v) {
|
|
let form = { ...this.form };
|
|
if (this.openStaffText == "manage") {
|
|
form.manageStaffName = v.manageStaffName;
|
|
form.manageStaffId = v.manageStaffId;
|
|
form.manageIdentityCard = v.manageIdentityCard;
|
|
form.manageBrandNumber = v.manageBrandNumber;
|
|
}
|
|
this.form = {};
|
|
this.form = form;
|
|
},
|
|
openPostpone(row) {
|
|
let ids = {
|
|
id: row.courseAccountId,
|
|
};
|
|
couAccountOne(ids).then((res) => {
|
|
if (res.code == "000000") {
|
|
this.postponeForm = res.data;
|
|
//console.log(this.postponeForm);
|
|
} else {
|
|
this.$alert(res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {},
|
|
});
|
|
}
|
|
});
|
|
},
|
|
endPostpone() {
|
|
let form = {
|
|
id: this.postponeForm.id,
|
|
endTime: this.postponeForm.endTime,
|
|
};
|
|
editCouAccount(form).then((res) => {
|
|
if (res.code == "000000") {
|
|
this.$message.success({
|
|
message: res.message,
|
|
});
|
|
} else {
|
|
this.$alert(res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {},
|
|
});
|
|
}
|
|
});
|
|
},
|
|
ratioChange(v, index) {
|
|
this.staffList.forEach((item) => {
|
|
if (item.id == v) {
|
|
item.ratio = this.staffLists[index].ratio;
|
|
item.staffNames = item.brandNumber + "--" + item.staffName;
|
|
this.staffLists.splice(index, 1, item);
|
|
}
|
|
});
|
|
},
|
|
ratioChangeEdit(v, index) {
|
|
this.staffList.forEach((item) => {
|
|
if (item.id == v) {
|
|
item.ratio = this.detailForm.entities[index].ratio;
|
|
item.staffNames = item.brandNumber + "--" + item.staffName;
|
|
this.detailForm.entities.splice(index, 1, item);
|
|
}
|
|
});
|
|
},
|
|
|
|
payment() {
|
|
this.paymentform.id = this.form.memberId;
|
|
checkCashWord(this.paymentform).then((res) => {
|
|
if (res.data == true) {
|
|
addcourse(this.form).then((res) => {
|
|
if (res.code == "000000") {
|
|
this.empty();
|
|
this.$message.success({
|
|
message: "疗程购买 ," + res.message,
|
|
});
|
|
} else {
|
|
this.empty();
|
|
this.$message.error({
|
|
message: "疗程购买 , " + res.message,
|
|
});
|
|
}
|
|
});
|
|
} else {
|
|
this.$message.error({
|
|
message: "密码错误",
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
changeIntegralCheckbox(row) {
|
|
if (this.form.amount != undefined) {
|
|
if (row == true) {
|
|
this.form.debtMoney =
|
|
this.form.amount -
|
|
this.form.collectionRechargeAmount -
|
|
this.form.collectionCashAmount;
|
|
|
|
let list = JSON.parse(
|
|
sessionStorage.getItem("sessionStorageData")
|
|
).excIntegralByMoney.split(":");
|
|
if (this.form.integralMoney >= this.form.debtMoney) {
|
|
this.form.integralMoney = this.form.debtMoney;
|
|
this.form.consumeIntegral =
|
|
this.form.debtMoney * (list[0] / list[1]);
|
|
this.form.collectionIntegralAmount = this.form.integralMoney;
|
|
this.form.debtMoney = 0;
|
|
} else {
|
|
this.form.debtMoney =
|
|
(
|
|
this.form.amount -
|
|
this.form.integralMoney -
|
|
this.collectionRechargeAmounts -
|
|
this.collectionCashAmount
|
|
).toFixed(2) * 1;
|
|
this.form.collectionIntegralAmount = 0;
|
|
}
|
|
if (this.form.debtMoney < 0) {
|
|
this.form.debtMoney = 0;
|
|
}
|
|
this.form.courseReatmentAmount =
|
|
this.form.collectionCashAmount +
|
|
this.collectionRechargeAmounts +
|
|
this.form.collectionIntegralAmount;
|
|
} else {
|
|
this.form.debtMoney =
|
|
this.form.amount -
|
|
(
|
|
this.collectionRechargeAmounts - this.form.collectionCashAmount
|
|
).toFixed(2) *
|
|
1;
|
|
this.form.courseReatmentAmount =
|
|
this.form.collectionCashAmount + this.collectionRechargeAmounts;
|
|
}
|
|
}
|
|
},
|
|
detail(row) {
|
|
this.$refs.detail.show(row);
|
|
},
|
|
editStaff(row) {
|
|
this.editStaffRatioRow = row;
|
|
},
|
|
radioEditStaffRow(row) {
|
|
this.radioEditStaff = row.brandNumber;
|
|
this.radioEditStaffList = row;
|
|
},
|
|
endRadioEditStaff() {
|
|
var show = true;
|
|
if (this.editStaffDailogtitle == "修改") {
|
|
this.detailForm.entities.forEach((item) => {
|
|
console.log(this.radioEditStaffList);
|
|
if (item.saleStaffId == this.radioEditStaffList.id) {
|
|
this.$message.warning({
|
|
message: "员工已存在",
|
|
});
|
|
show = false;
|
|
}
|
|
});
|
|
if (show) {
|
|
this.editStaffRatioRow.brandNumber =
|
|
this.radioEditStaffList.brandNumber;
|
|
this.editStaffRatioRow.saleStaffName =
|
|
this.radioEditStaffList.saleStaffName;
|
|
this.editStaffRatioRow.saleStaffId = this.radioEditStaffList.id;
|
|
this.editStaffRatioRow.saleIdentityCard =
|
|
this.radioEditStaffList.identityCard;
|
|
}
|
|
} else if (this.editStaffDailogtitle == "添加") {
|
|
this.detailForm.entities.forEach((item) => {
|
|
if (item.saleStaffId == this.radioEditStaffList.id) {
|
|
this.$message.warning({
|
|
message: "员工已存在",
|
|
});
|
|
show = false;
|
|
}
|
|
});
|
|
if (show) {
|
|
this.radioEditStaffList.saleRatio = 0;
|
|
this.radioEditStaffList.editStaffRatioShow = false;
|
|
this.detailForm.entities.push(this.radioEditStaffList);
|
|
}
|
|
}
|
|
},
|
|
|
|
//检查手机号是否是平台会员
|
|
phone() {
|
|
var number = partten.phoneNum;
|
|
if (!number.test(this.form.mobilePhone)) {
|
|
this.$message.info({
|
|
message: "请输入正确的手机号 ! ",
|
|
});
|
|
} else {
|
|
storeMemberOne({
|
|
mobilePhone: this.form.mobilePhone,
|
|
storeId: sessionStorage.getItem("parentId"),
|
|
}).then((res) => {
|
|
//console.log(res);
|
|
if (res.code == "000000") {
|
|
this.vip = res.data;
|
|
this.form.memberName = res.data.memberName;
|
|
this.form.minumumTimes = res.data.minumumTimes;
|
|
this.debtMoneys = res.data.debtMoney;
|
|
this.form.memberId = res.data.id;
|
|
this.form.sex = res.data.sex;
|
|
if (this.sessionStorageData.course == true) {
|
|
this.form.integral = res.data.integral;
|
|
this.form.consumeIntegral = res.data.consumeIntegral;
|
|
this.form.integralMoney = res.data.integralMoney;
|
|
} else {
|
|
this.form.integral = 0;
|
|
this.form.consumeIntegral = 0;
|
|
this.form.integralMoney = 0;
|
|
}
|
|
var ids = {
|
|
// storeId: res.data.storeId,
|
|
memberId: res.data.id,
|
|
};
|
|
var num = 0;
|
|
recAccountList(ids).then((res) => {
|
|
if (res.code == "000000") {
|
|
var rechargeAccountList = [];
|
|
res.rows.forEach((item) => {
|
|
item.isShow = false;
|
|
item.isShows = false;
|
|
item.spendMoney = 0.0;
|
|
item.discoutMoney = 0.0;
|
|
item.cardOver = item.cardConsumeMoney;
|
|
// + item.giftConsumeMoney;
|
|
item.cardOvers = item.cardConsumeMoney;
|
|
// + item.giftConsumeMoney;
|
|
if (this.sessionStorageData.buycourse == true) {
|
|
if (item.type == 1) {
|
|
item.offsetMoney =
|
|
item.cardConsumeMoney / (item.discount / 100);
|
|
item.offsetMoney =
|
|
Math.floor(item.offsetMoney * 100) / 100;
|
|
item.offsetMoney = this.getDecimal(item.offsetMoney);
|
|
} else {
|
|
item.offsetMoney = item.cardConsumeMoney;
|
|
// item.giftConsumeMoney +
|
|
}
|
|
} else {
|
|
item.offsetMoney = item.cardConsumeMoney;
|
|
// item.giftConsumeMoney +
|
|
}
|
|
rechargeAccountList.push(item);
|
|
});
|
|
this.rechargeAccountList = rechargeAccountList;
|
|
} else {
|
|
this.$alert("查询会员充值卡: " + res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {},
|
|
});
|
|
}
|
|
});
|
|
} else {
|
|
this.empty();
|
|
if (res.code == "200004") {
|
|
this.$confirm(res.message + ",请先注册!", "提示", {
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
cancelButtonClass: "cancelbtnFalses",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
}).then(() => {
|
|
this.openAddMember();
|
|
});
|
|
} else {
|
|
this.$message.warning({
|
|
message: res.message,
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
openAddMember() {
|
|
this.$refs.addmember.show("添加");
|
|
},
|
|
//修改单价
|
|
changesales() {
|
|
if (this.sessionStorageData.minimum == true) {
|
|
console.log(this.form);
|
|
if (
|
|
this.form.salesPric > this.form.topPriceMember ||
|
|
this.form.salesPrice < this.form.minumumPriceMember
|
|
) {
|
|
this.form.salesPrice = this.form.priceMember;
|
|
this.$message.warning({
|
|
message:
|
|
"成交价不能低于" +
|
|
this.form.minumumPriceMember +
|
|
"高于" +
|
|
this.form.topPriceMember,
|
|
});
|
|
} else {
|
|
this.menberShow = false;
|
|
this.form.amount =
|
|
(
|
|
(this.form.salesPrice * 100 * this.form.numberTimes) /
|
|
100
|
|
).toFixed(2) * 1;
|
|
this.form.debtMoney = this.form.amount;
|
|
this.form.debtMoney = this.form.debtMoney.toFixed(2) * 1;
|
|
this.moneyRatio =
|
|
(this.form.salesPrice / this.proForm.priceMember).toFixed(2) * 100;
|
|
}
|
|
} else {
|
|
this.menberShow = false;
|
|
}
|
|
},
|
|
//修改购买次数
|
|
numbertimes() {
|
|
if (this.form.numberTimes < this.proForm.minumumTimes) {
|
|
this.$message.info({
|
|
message: "最低购买不能少于" + this.proForm.minumumTimes + "次",
|
|
});
|
|
this.form.numberTimes = this.proForm.minumumTimes;
|
|
this.buysShow = false;
|
|
} else {
|
|
this.buysShow = false;
|
|
this.form.amount =
|
|
((this.form.salesPrice * 100 * this.form.numberTimes) / 100).toFixed(
|
|
2
|
|
) * 1;
|
|
this.form.debtMoney = this.form.amount;
|
|
}
|
|
},
|
|
//选择金额.
|
|
openpay(row, $index) {
|
|
if (this.form.salesPrice != "") {
|
|
//console.log(this.form);
|
|
if (this.form.integralCheckbox == true) {
|
|
row.payMoney =
|
|
(
|
|
this.form.amount -
|
|
this.form.collectionCashAmount -
|
|
this.collectionRechargeAmounts -
|
|
this.form.integralMoney
|
|
).toFixed(2) * 1;
|
|
} else {
|
|
row.payMoney =
|
|
(
|
|
this.form.amount -
|
|
this.form.collectionCashAmount -
|
|
this.collectionRechargeAmounts
|
|
).toFixed(2) * 1;
|
|
}
|
|
if (row.payMoney < 0) {
|
|
row.payMoney = 0;
|
|
}
|
|
row.payMoney = row.payMoney.toFixed(2) * 1;
|
|
row.isShow = true;
|
|
} else {
|
|
this.$message.info({
|
|
message: "请先选择疗程 !",
|
|
});
|
|
}
|
|
},
|
|
|
|
endEdit(row) {
|
|
//console.log(row);
|
|
row.payMoney = (row.payMoney * 1).toFixed(2) * 1;
|
|
row.isShow = false;
|
|
this.num();
|
|
if (this.form.integralCheckbox == true) {
|
|
this.form.courseReatmentAmount =
|
|
(
|
|
this.form.collectionCashAmount * 1 +
|
|
this.collectionRechargeAmounts * 1 +
|
|
this.form.integralMoney * 1
|
|
).toFixed(2) * 1;
|
|
} else {
|
|
this.form.courseReatmentAmount =
|
|
(
|
|
this.form.collectionCashAmount * 1 +
|
|
this.collectionRechargeAmounts * 1
|
|
).toFixed(2) * 1;
|
|
}
|
|
},
|
|
|
|
//返回当前行的下标
|
|
tableRowClassName({ row, rowIndex }) {
|
|
row.index = rowIndex;
|
|
},
|
|
proBlur() {
|
|
this.form.projectNum;
|
|
let form = {
|
|
pageSize: 999,
|
|
projectNum: this.form.projectNum,
|
|
state: 1,
|
|
directConsumption: 0,
|
|
};
|
|
propage(form).then((res) => {
|
|
if (res.code == "000000") {
|
|
if (res.pageInfo.total == 1) {
|
|
this.proConfirm(res.pageInfo.list[0]);
|
|
} else {
|
|
this.$message.info({ message: "请输入正确的项目编码!" });
|
|
}
|
|
} else {
|
|
this.$alert(res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {},
|
|
});
|
|
}
|
|
});
|
|
},
|
|
proChange(v) {
|
|
console.log(v);
|
|
this.pageInfos.reatmentList.forEach((item) => {
|
|
if (item.id == v) {
|
|
this.proForm = item;
|
|
}
|
|
});
|
|
this.proConfirm(this.proForm);
|
|
},
|
|
//打开选择会员充值卡包弹窗
|
|
openPro() {
|
|
this.$refs.project.show(0);
|
|
},
|
|
//购买类型确定
|
|
proConfirm(pros) {
|
|
console.log(pros);
|
|
this.proForm = pros;
|
|
if (this.form.memberId) {
|
|
this.form.projectName = this.proForm.projectName;
|
|
this.form.projectNum = this.proForm.projectNum;
|
|
this.form.projctId = this.proForm.id;
|
|
this.form.price = this.proForm.price;
|
|
this.form.topPrice = this.proForm.topPrice;
|
|
this.form.topPriceMember = this.proForm.topPriceMember;
|
|
this.form.priceMember = this.proForm.priceMember;
|
|
this.form.minumumPriceMember = this.proForm.minumumPriceMember;
|
|
this.form.salesPrice = this.proForm.priceMember;
|
|
this.form.minumumPrice = this.proForm.minumumPrice;
|
|
this.form.salesAchievement = this.proForm.salesAchievement;
|
|
this.form.salesCommission = this.proForm.salesCommission;
|
|
this.form.cardSalesAchievement = this.proForm.cardSalesAchievement;
|
|
this.form.cardSalesCommission = this.proForm.cardSalesCommission;
|
|
this.form.minumumTimes = this.proForm.minumumTimes;
|
|
this.form.numberTimes = this.proForm.minumumTimes;
|
|
this.form.amount =
|
|
((this.form.salesPrice * 100 * this.form.numberTimes) / 100).toFixed(
|
|
2
|
|
) * 1;
|
|
this.form.debtMoney = this.form.amount;
|
|
if (this.form.integralCheckbox == true) {
|
|
if (
|
|
JSON.parse(sessionStorage.getItem("sessionStorageData"))
|
|
.excIntegralByMoney
|
|
) {
|
|
let list = JSON.parse(
|
|
sessionStorage.getItem("sessionStorageData")
|
|
).excIntegralByMoney.split(":");
|
|
}
|
|
if (this.form.integralMoney >= this.form.debtMoney) {
|
|
this.form.integralMoney = this.form.debtMoney;
|
|
this.form.consumeIntegral =
|
|
this.form.debtMoney * (list[0] / list[1]);
|
|
this.form.debtMoney = 0;
|
|
} else {
|
|
this.form.debtMoney = this.form.amount - this.form.integralMoney;
|
|
}
|
|
this.form.collectionIntegralAmount = this.form.integralMoney;
|
|
} else {
|
|
this.form.debtMoney = this.form.amount;
|
|
this.form.collectionIntegralAmount = 0;
|
|
}
|
|
this.form.collectionCashAmount = 0;
|
|
this.form.collectionRechargeAmount = 0;
|
|
this.form.courseReatmentAmount =
|
|
this.form.collectionCashAmount +
|
|
this.collectionRechargeAmounts +
|
|
this.form.collectionIntegralAmount;
|
|
}
|
|
},
|
|
openCard(row, $index) {
|
|
if (this.sessionStorageData.buycourse == true) {
|
|
if (this.form.debtMoney * 1 > 0) {
|
|
if (
|
|
row.cardOver >=
|
|
((row.discoutMoney * row.discount) / 100).toFixed(2) * 1
|
|
) {
|
|
row.discoutMoney = this.form.debtMoney * 1;
|
|
row.spendMoney =
|
|
((row.discoutMoney * row.discount) / 100).toFixed(2) * 1;
|
|
} else {
|
|
row.discoutMoney =
|
|
(row.cardOver / (row.discount / 100).toFixed(2)) * 1;
|
|
row.spendMoney = row.cardOver;
|
|
}
|
|
} else {
|
|
row.spendMoney = 0;
|
|
}
|
|
} else {
|
|
if (this.form.debtMoney * 1 > 0) {
|
|
if (row.cardOver < this.form.debtMoney * 1) {
|
|
row.spendMoney = row.cardOver;
|
|
row.discoutMoney = row.cardOver;
|
|
} else {
|
|
row.discoutMoney = this.form.debtMoney * 1;
|
|
row.spendMoney = this.form.debtMoney * 1;
|
|
}
|
|
} else {
|
|
row.spendMoney = 0;
|
|
}
|
|
}
|
|
if (this.form.salesPrice != "") {
|
|
row.isShow = true;
|
|
} else {
|
|
this.$message.info({
|
|
message: "请先选择疗程!",
|
|
});
|
|
}
|
|
},
|
|
endEditCard(row) {
|
|
row.spendMoney = (row.spendMoney * 1).toFixed(2) * 1;
|
|
if (row.spendMoney == "") {
|
|
row.spendMoney = 0;
|
|
}
|
|
if (row.spendMoney * 1 > row.cardOver * 1) {
|
|
this.$message.info({
|
|
message: "支付金额不能大于可用金额!",
|
|
});
|
|
} else {
|
|
row.isShow = false;
|
|
if (this.sessionStorageData.buycourse == true) {
|
|
if (row.spendMoney * 1 > 0) {
|
|
row.discoutMoney =
|
|
(row.spendMoney / (row.discount / 100)).toFixed(2) * 1;
|
|
row.cardOvers =
|
|
(row.cardOver * 1 - row.spendMoney * 1).toFixed(2) * 1;
|
|
} else {
|
|
row.discoutMoney = 0;
|
|
row.cardOvers =
|
|
(row.cardOver * 1 - row.spendMoney * 1).toFixed(2) * 1;
|
|
}
|
|
} else {
|
|
if (row.spendMoney * 1 > 0) {
|
|
row.discoutMoney = row.spendMoney.toFixed(2) * 1;
|
|
row.cardOvers =
|
|
(row.cardOver * 1 - row.spendMoney * 1).toFixed(2) * 1;
|
|
} else {
|
|
row.discoutMoney = 0;
|
|
row.cardOvers =
|
|
(row.cardOver * 1 - row.spendMoney * 1).toFixed(2) * 1;
|
|
}
|
|
}
|
|
}
|
|
this.cardnum();
|
|
},
|
|
disedit(row, $index) {
|
|
if (this.form.salesPrice != "") {
|
|
row.isShows = true;
|
|
this.$nextTick(() => {
|
|
this.$refs["indexs" + $index].focus();
|
|
this.$refs["indexs" + $index].select();
|
|
});
|
|
} else {
|
|
this.$message.info({
|
|
message: "请先选择疗程!",
|
|
});
|
|
}
|
|
},
|
|
endEditCards(row) {
|
|
//console.log(row);
|
|
if (row.discoutMoney == "") {
|
|
row.discoutMoney = 0;
|
|
}
|
|
if (row.discoutMoney * 1 > row.offsetMoney * 1) {
|
|
this.$message.info({
|
|
message: "抵用支付金额不能大于可抵扣额!",
|
|
});
|
|
} else {
|
|
row.isShows = false;
|
|
this.cardnum();
|
|
row.cardOvers = row.cardOver - row.spendMoney;
|
|
|
|
row.spendMoney = Math.round((row.discoutMoney * row.discount) / 100);
|
|
this.form.courseReatmentAmount =
|
|
(this.form.collectionCashAmount * 100 +
|
|
this.collectionRechargeAmounts * 100) /
|
|
100;
|
|
this.form.debtMoney =
|
|
this.form.amount -
|
|
this.form.collectionCashAmount -
|
|
this.collectionRechargeAmounts -
|
|
this.form.integralMoney;
|
|
this.form.debtMoney = this.form.debtMoney.toFixed(2) * 1;
|
|
}
|
|
},
|
|
empty() {
|
|
Object.assign(this.$data, this.$options.data.call(this));
|
|
this.setPage();
|
|
},
|
|
|
|
//保存确定方法
|
|
save() {
|
|
this.form.isAddition = this.isAddition;
|
|
var staffLists = [];
|
|
this.staffLists.forEach((item) => {
|
|
delete item.ratioShow;
|
|
if (item.id) {
|
|
staffLists.push(item);
|
|
}
|
|
});
|
|
|
|
var payLists = [];
|
|
var rechargeAccountList = [];
|
|
for (let i in this.payLists) {
|
|
this.payLists[i].payId = this.payLists[i].id;
|
|
this.payLists[i].payName = this.payLists[i].collectionTypeName;
|
|
delete this.payLists[i].isShow;
|
|
delete this.payLists[i].state;
|
|
delete this.payLists[i].collectionType;
|
|
delete this.payLists[i].id;
|
|
delete this.payLists[i].collectionTypeName;
|
|
if (this.payLists[i].payMoney * 1 > 0) {
|
|
payLists.push(this.payLists[i]);
|
|
}
|
|
}
|
|
for (let i in this.rechargeAccountList) {
|
|
if (this.rechargeAccountList[i].spendMoney * 1 > 0) {
|
|
delete this.rechargeAccountList[i].cardOver;
|
|
delete this.rechargeAccountList[i].isShow;
|
|
delete this.rechargeAccountList[i].isShows;
|
|
delete this.rechargeAccountList[i].cardOvers;
|
|
delete this.rechargeAccountList[i].offsetMoney;
|
|
delete this.rechargeAccountList[i].card;
|
|
rechargeAccountList.push(this.rechargeAccountList[i]);
|
|
}
|
|
}
|
|
|
|
let salesmens = [];
|
|
this.managerLists.forEach((item) => {
|
|
if (item.id) {
|
|
item.staffType = 0;
|
|
|
|
salesmens.push(item);
|
|
}
|
|
});
|
|
this.adminList.forEach((item) => {
|
|
if (item.id) {
|
|
item.staffType = 1;
|
|
salesmens.push(item);
|
|
}
|
|
});
|
|
this.form.salesmens = salesmens;
|
|
this.form.payLists = payLists;
|
|
this.form.staffLists = staffLists;
|
|
this.form.rechargeAccountList = rechargeAccountList;
|
|
if (this.sessionStorageData.buycourse == true) {
|
|
if (this.form.payLists.length == 0) {
|
|
if (
|
|
this.form.debtMoney >=
|
|
this.sessionStorageData.balance * 1 + 0.01
|
|
) {
|
|
this.form.isDebt = 1;
|
|
} else {
|
|
this.form.isDebt = 0;
|
|
this.form.debtMoney = 0;
|
|
}
|
|
} else {
|
|
if (this.form.debtMoney > 0) {
|
|
this.form.isDebt = 1;
|
|
} else {
|
|
this.form.isDebt = 0;
|
|
}
|
|
}
|
|
} else {
|
|
if (this.form.debtMoney > 0) {
|
|
this.form.isDebt = 1;
|
|
} else {
|
|
this.form.isDebt = 0;
|
|
}
|
|
}
|
|
if (this.form.debtMoney < 0) {
|
|
this.form.debtMoney = 0;
|
|
}
|
|
if (this.form.integralCheckbox == false) {
|
|
this.form.integral = 0;
|
|
this.form.collectionIntegralAmount = 0;
|
|
} else {
|
|
this.form.integral = this.form.consumeIntegral;
|
|
this.form.collectionIntegralAmount = this.form.integralMoney;
|
|
}
|
|
this.form.courseReatmentAmount =
|
|
(
|
|
this.form.collectionCashAmount +
|
|
this.collectionRechargeAmounts +
|
|
this.form.collectionIntegralAmount
|
|
).toFixed(2) * 1;
|
|
|
|
this.form.courseReatmentAmount = this.form.courseReatmentAmount * 1;
|
|
this.form.numberTimes = this.form.numberTimes * 1;
|
|
var that = this;
|
|
if (staffLists.length == 0) {
|
|
this.$confirm("没有选择员工是否保存?", "提示", {
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
cancelButtonClass: "cancelbtnFalses",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
}).then(() => {
|
|
that.addCourse();
|
|
});
|
|
} else {
|
|
that.addCourse();
|
|
that.loading = false;
|
|
}
|
|
setTimeout(() => {
|
|
this.loading = false;
|
|
}, 3000);
|
|
},
|
|
addCourse() {
|
|
setTimeout(() => {
|
|
this.loading = false;
|
|
}, 3000);
|
|
addcourse(this.form).then((res) => {
|
|
this.loading = false;
|
|
if (res.code == "000000") {
|
|
this.empty();
|
|
this.$message.success({
|
|
message: res.message,
|
|
});
|
|
} else {
|
|
this.$alert(res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {
|
|
this.saveloading = false;
|
|
},
|
|
});
|
|
}
|
|
this.saveloading = false;
|
|
});
|
|
},
|
|
//明细返回方法
|
|
detailData(v) {
|
|
this.getList();
|
|
},
|
|
//列表
|
|
getList() {
|
|
this.queryForm.selectDate = this.formatTime(this.selectDate, "YYYYMM");
|
|
this.listDialogVisible = true;
|
|
coursepage(this.queryForm).then((res) => {
|
|
if (res.code == "000000") {
|
|
res.pageInfo.list.forEach((item) => {
|
|
item.rechargeConsumeList.forEach((items) => {
|
|
items.cardOver = items.cardConsumeMoney + items.spendMoney;
|
|
// items.giftConsumeMoney +
|
|
items.cardOvers = items.cardConsumeMoney;
|
|
// + items.giftConsumeMoney;
|
|
});
|
|
item.entities.forEach((items) => {
|
|
items.editStaffRatioShow = false;
|
|
});
|
|
});
|
|
res.pageInfo.formList = res.pageInfo.list;
|
|
this.pageInfo = res.pageInfo;
|
|
this.total = res.pageInfo.total;
|
|
} else {
|
|
this.$alert(res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {},
|
|
});
|
|
}
|
|
});
|
|
},
|
|
editStaff(row) {
|
|
this.editStaffRatioRow = row;
|
|
},
|
|
|
|
//作废
|
|
abolish(row) {
|
|
this.$confirm("此操作将作废这张单, 是否继续?", "提示", {
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
cancelButtonClass: "cancelbtnFalses",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
})
|
|
.then(() => {
|
|
row.isCancel = 1;
|
|
row.rechargeAccountList = row.rechargeConsumeList;
|
|
delete row.payLists;
|
|
delete row.entities;
|
|
delete row.rechargeConsumeList;
|
|
delete row.tag;
|
|
row.rechargeAccountList.forEach((item) => {
|
|
delete item.cardOver;
|
|
delete item.cardOvers;
|
|
});
|
|
|
|
coursecancel(row).then((res) => {
|
|
//console.log(res);
|
|
if (row.code == "000000") {
|
|
this.$message.success({
|
|
message: res.message,
|
|
});
|
|
this.getList();
|
|
} else {
|
|
this.$message.success({
|
|
message: res.message,
|
|
});
|
|
this.getList();
|
|
}
|
|
});
|
|
})
|
|
.catch(() => {
|
|
this.$message({
|
|
type: "info",
|
|
message: "已取消",
|
|
});
|
|
});
|
|
},
|
|
//打印
|
|
// 打印方法
|
|
print(row) {
|
|
row.telephone = JSON.parse(sessionStorage.getItem("storeInfo")).telephone;
|
|
row.printDate = new Date();
|
|
this.printForm = row;
|
|
},
|
|
propage() {
|
|
var page = {
|
|
pageNum: this.pageInfos.pageNum,
|
|
pageSize: this.pageInfos.pageSize,
|
|
state: 1,
|
|
directConsumption: 0,
|
|
// storeIds: JSON.parse(sessionStorage.getItem("storeIdLists")),
|
|
};
|
|
propage(page).then((res) => {
|
|
if (res.code == "000000") {
|
|
res.pageInfo.reatmentList = res.pageInfo.list;
|
|
this.pageInfos = res.pageInfo;
|
|
} else {
|
|
this.$alert(res.message, "提示", {
|
|
confirmButtonText: "确定",
|
|
confirmButtonClass: "confirmbtnFalses",
|
|
type: "warning",
|
|
center: true,
|
|
callback: (action) => {},
|
|
});
|
|
}
|
|
});
|
|
},
|
|
//求和
|
|
num() {
|
|
var num = 0;
|
|
this.payLists.forEach((item) => {
|
|
num += item.payMoney * 100;
|
|
});
|
|
this.form.collectionCashAmount = (num / 100).toFixed(2) * 1;
|
|
if (this.form.integralCheckbox == true) {
|
|
this.form.debtMoney =
|
|
(
|
|
this.form.amount * 1 -
|
|
this.collectionRechargeAmounts * 1 -
|
|
this.form.collectionCashAmount * 1 -
|
|
this.form.collectionIntegralAmount * 1
|
|
).toFixed(2) * 1;
|
|
this.form.courseReatmentAmount =
|
|
(
|
|
this.form.collectionCashAmount * 1 +
|
|
this.collectionRechargeAmounts * 1 +
|
|
this.form.collectionIntegralAmount * 1
|
|
).toFixed(2) * 1;
|
|
|
|
this.form.debtMoney = this.form.debtMoney.toFixed(2) * 1;
|
|
} else {
|
|
this.form.debtMoney =
|
|
(
|
|
this.form.amount * 1 -
|
|
this.collectionRechargeAmounts * 1 -
|
|
this.form.collectionCashAmount * 1
|
|
).toFixed(2) * 1;
|
|
this.form.courseReatmentAmount =
|
|
(
|
|
this.form.collectionCashAmount * 1 +
|
|
this.collectionRechargeAmounts * 1
|
|
).toFixed(2) * 1;
|
|
this.form.debtMoney = this.form.debtMoney.toFixed(2) * 1;
|
|
}
|
|
if (
|
|
this.form.debtMoney * 1 >
|
|
(
|
|
(this.form.amount * this.sessionStorageData.debtRatio * 1) /
|
|
100
|
|
).toFixed(2) *
|
|
1
|
|
) {
|
|
this.$message.warning({
|
|
message:
|
|
"本次支付金额最多可以欠款 : " +
|
|
(
|
|
(this.form.amount * this.sessionStorageData.debtRatio * 1) /
|
|
100
|
|
).toFixed(2) *
|
|
1,
|
|
});
|
|
}
|
|
},
|
|
cardnum() {
|
|
var spendMoney = 0;
|
|
var discoutMoney = 0;
|
|
this.rechargeAccountList.forEach((item) => {
|
|
spendMoney += item.spendMoney * 1; //实付金额
|
|
discoutMoney += item.discoutMoney * 1; //抵扣
|
|
});
|
|
if (this.sessionStorageData.buycourse == true) {
|
|
this.form.collectionRechargeAmount = spendMoney;
|
|
this.collectionRechargeAmounts = discoutMoney;
|
|
} else {
|
|
this.form.collectionRechargeAmount = spendMoney;
|
|
this.collectionRechargeAmounts = spendMoney;
|
|
}
|
|
|
|
if (this.form.integralCheckbox == true) {
|
|
this.form.courseReatmentAmount =
|
|
(
|
|
this.form.collectionCashAmount * 1 +
|
|
this.collectionRechargeAmounts * 1 +
|
|
this.form.collectionIntegralAmount * 1
|
|
).toFixed(2) * 1;
|
|
this.form.debtMoney =
|
|
(
|
|
this.form.amount * 1 -
|
|
this.collectionRechargeAmounts * 1 -
|
|
this.form.collectionCashAmount * 1 -
|
|
this.form.collectionIntegralAmount * 1
|
|
).toFixed(2) * 1;
|
|
} else {
|
|
this.form.courseReatmentAmount =
|
|
(
|
|
this.form.collectionCashAmount * 1 +
|
|
this.collectionRechargeAmounts * 1
|
|
).toFixed(2) * 1;
|
|
this.form.debtMoney =
|
|
(
|
|
this.form.amount * 1 -
|
|
this.collectionRechargeAmounts * 1 -
|
|
this.form.collectionCashAmount * 1
|
|
).toFixed(2) * 1;
|
|
}
|
|
if (
|
|
this.form.debtMoney * 1 >
|
|
(
|
|
(this.form.amount * this.sessionStorageData.debtRatio * 1) /
|
|
100
|
|
).toFixed(2) *
|
|
1
|
|
) {
|
|
this.$message.warning({
|
|
message:
|
|
"本次支付金额最多可以欠款 : " +
|
|
(
|
|
(this.form.amount * this.sessionStorageData.debtRatio * 1) /
|
|
100
|
|
).toFixed(2) *
|
|
1,
|
|
});
|
|
}
|
|
},
|
|
|
|
ctlist() {
|
|
var page = {
|
|
pageNum: 1,
|
|
pageSize: 50,
|
|
};
|
|
ctlist(page).then((res) => {
|
|
var money = res.rows;
|
|
money.forEach((item) => {
|
|
item.payMoney = 0;
|
|
item.isShow = false;
|
|
});
|
|
this.payLists = res.rows;
|
|
this.propage();
|
|
});
|
|
var that = this;
|
|
setTimeout(() => {
|
|
that.$refs.staffsles.show(that.staffLists);
|
|
}, 1000);
|
|
},
|
|
|
|
// 保留两位小数
|
|
getDecimal(num) {
|
|
//console.log(123);
|
|
//判断是否有小数点
|
|
var s = num.toString().indexOf(".");
|
|
if (s == -1) {
|
|
//是整数
|
|
return (
|
|
(num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,") + ".00"
|
|
);
|
|
} else {
|
|
//是小数
|
|
var arr = num.toString().split(".");
|
|
if (arr.length > 1 && arr[1].length < 2) {
|
|
//一位小数
|
|
return (
|
|
(arr[0] || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,") +
|
|
"." +
|
|
arr[1] +
|
|
"0"
|
|
);
|
|
} else {
|
|
//两位小数
|
|
return (
|
|
(arr[0] || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, "$1,") +
|
|
"." +
|
|
arr[1]
|
|
);
|
|
}
|
|
}
|
|
},
|
|
|
|
//分页方法
|
|
handleSizeChange(val) {
|
|
// //console.log(`每页 ${val} 条`);
|
|
|
|
this.queryForm.pageSize = val;
|
|
this.getList();
|
|
},
|
|
handleCurrentChange(val) {
|
|
// //console.log(`当前页: ${val}`);
|
|
this.queryForm.pageNum = val;
|
|
this.getList();
|
|
},
|
|
|
|
//指定列求和
|
|
//数组按对应字段合计返回方法
|
|
getSummaries(param) {
|
|
const { columns, data } = param;
|
|
const sums = [];
|
|
columns.forEach((column, index) => {
|
|
if (index === 0) {
|
|
sums[index] = "合计";
|
|
return;
|
|
}
|
|
const values = data.map((item) => Number(item[column.property]));
|
|
if (column.property == "spendMoney") {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
const value = Number(curr);
|
|
if (!isNaN(value)) {
|
|
return prev + curr;
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
}, 0);
|
|
sums[index] += " ";
|
|
} else if (column.property == "payMoney") {
|
|
sums[index] = values.reduce((prev, curr) => {
|
|
const value = Number(curr);
|
|
if (!isNaN(value)) {
|
|
return prev + curr;
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
}, 0);
|
|
sums[index] += " ";
|
|
} else {
|
|
sums[index] = "--";
|
|
}
|
|
});
|
|
return sums;
|
|
},
|
|
setPage() {
|
|
this.ctlist();
|
|
this.setStaffRatio();
|
|
this.sessionStorageData = JSON.parse(
|
|
sessionStorage.getItem("sessionStorageData")
|
|
);
|
|
},
|
|
},
|
|
created() {
|
|
this.setPage();
|
|
},
|
|
};
|
|
</script>
|
|
<style scoped>
|
|
.reatmen {
|
|
background: white;
|
|
overflow: hidden;
|
|
padding-bottom: 50px;
|
|
padding: 10px;
|
|
padding: 10px;
|
|
margin-left: 25px;
|
|
}
|
|
|
|
.reatmen .el-form-item {
|
|
height: 40px;
|
|
}
|
|
|
|
.reatmen span {
|
|
font-weight: 500;
|
|
}
|
|
|
|
.reatmen .spanr {
|
|
width: 100px;
|
|
display: inline-block;
|
|
}
|
|
|
|
.reatmen .sapns {
|
|
width: 138px;
|
|
}
|
|
|
|
.reatmens .el-radio__label {
|
|
display: none;
|
|
}
|
|
|
|
.jisuan {
|
|
height: 38px;
|
|
width: 100%;
|
|
border-bottom: 1px solid #999999;
|
|
position: relative;
|
|
font-size: 14px;
|
|
line-height: 35px;
|
|
padding-left: 50px;
|
|
}
|
|
|
|
.jisuan span:nth-child(2) {
|
|
margin-left: 180px;
|
|
}
|
|
|
|
.reatmen .el-table__row {
|
|
height: 50px;
|
|
}
|
|
|
|
.reatmen .el-radio__label {
|
|
display: none;
|
|
}
|
|
|
|
.propor {
|
|
width: 350px;
|
|
border-bottom: 1px solid #d8d8d8;
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
.reatmen .numberinput .el-input__inner {
|
|
width: 60px;
|
|
height: 30px;
|
|
padding: 0;
|
|
border-color: #ff7788;
|
|
display: inline-block;
|
|
}
|
|
|
|
.reatmen .el-dialog__body {
|
|
padding: 20px 20px;
|
|
}
|
|
|
|
.spanrs {
|
|
width: 160px;
|
|
}
|
|
|
|
.spanrs .el-date-editor {
|
|
width: 150px;
|
|
}
|
|
|
|
.printDiv .el-form-item {
|
|
margin-bottom: 0px;
|
|
}
|
|
|
|
.printDiv .el-form-item__label,
|
|
.el-form-item__content {
|
|
font-size: 12px;
|
|
color: black;
|
|
font-family: "宋体";
|
|
padding: 0 5px 0 0;
|
|
}
|
|
.printDiv {
|
|
width: 180px;
|
|
margin: 0 auto;
|
|
}
|
|
</style>
|