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.

386 lines
14 KiB
Vue

<template>
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="detailDialog" width="80%" append-to-body :before-close="handleClose">
<el-table
:data="form.courseLists"
:header-cell-style="{
background: 'linear-gradient(#6cb3ff, #1873d4)',
color: '#eeeeee'
}" >
<el-table-column align="center" prop="courseReatmentNum" label="单号" min-width="130"></el-table-column>
<el-table-column align="center" prop="date" label="单据日期" min-width="150"> </el-table-column>
<el-table-column align="center" prop="memberName" label="名字" min-width="70"> </el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="100"> </el-table-column>
<el-table-column align="center" prop="projectNum" label="疗程编码" min-width="100"> </el-table-column>
<el-table-column align="center" prop="projectName" label="疗程名称" min-width="100"> </el-table-column>
<el-table-column align="center" prop="priceMember" label="单价" min-width="80"> </el-table-column>
<el-table-column align="center" prop="salesPrice" label="成交单价" min-width="80"> </el-table-column>
<el-table-column align="center" prop="numberTimes" label="购买次数" min-width="80"> </el-table-column>
<el-table-column align="center" prop="amount" label="成交金额" min-width="80"> </el-table-column>
<el-table-column align="center" prop="debtMoney" label="待付金额" min-width="80"> </el-table-column>
<el-table-column align="center" prop="courseReatmentAmount" label="实付金额" min-width="100">
<template slot-scope="scope">
{{ scope.row.amount - scope.row.debtMoney }}
</template>
</el-table-column>
<el-table-column align="center" prop="description" label="说明" min-width="120"> </el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" label="提成明细">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleCommission(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="text-bold padding-xs">卡付/现付</div>
<div class="flex justify-start align-start ">
<div style="width: 590px" class="border-radius-10 border margin-right-xs bg-white padding-xs" v-if="sessionStorageData.refillCard">
<el-table :data="form.rechargeConsumeList" style="width: 590px" :summary-method="getSummaries" show-summary>
<el-table-column align="center" prop="rechargeTypeName" label="名称" min-width="120"></el-table-column>
<el-table-column align="center" prop="cardOver" label="可用金额" width="90"></el-table-column>
<el-table-column align="center" prop="spendMoney" label="本次支付" width="100"></el-table-column>
<el-table-column align="center" prop="cardOvers" label="可用余额" width="90"></el-table-column>
</el-table>
</div>
<div style="width: 280px" class="border-radius-10 border margin-right-xs bg-white padding-xs">
<el-table :data="form.payLists" :summary-method="getSummaries" show-summary>
<el-table-column align="center" prop="payId" label="支付方式" min-width="100">
<template slot-scope="scope">
<el-select v-model="scope.row.payId" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" prop="payMoney" label="支付金额" min-width="120"> </el-table-column>
</el-table>
</div>
</div>
<!-- </el-collapse-item> -->
<div class="text-bold padding-xs">员工/门店管理层/高管业绩</div>
<div class="flex justify-start align-start flex-wrap ">
<staffsles ref="staffsles" @staffslesData="staffslesData"></staffsles>
<admin ref="admin" @adminData="adminData"></admin>
<manager ref="manager" @managerData="managerData"></manager>
</div>
<span slot="footer" class="dialog-footer" v-if="title=='明细'">
<el-button size="mini" type="primary" @click="detailDialog=false">关闭</el-button>
</span>
<span v-else slot="footer" class="dialog-footer">
<!-- 补单才需要短信重发 -->
<el-button size="mini" type="primary" @click="handleReissue">短信重发</el-button>
<el-button size="mini" type="primary" plain @click="cancel()">取 消</el-button>
<el-button v-if="form.isCancel==0" size="mini" type="primary" @click="subStaffRatio()">修 改</el-button>
</span>
<errorOrder ref="detail"></errorOrder>
</el-dialog>
</template>
<script>
import { courseEditStaff, selectOne, courseReissue,selectCourseOne,ctlist,selectCourseOneByError } from "@/api/eashier.js";
import admin from "@/components/staffList/admin/index";
import manager from "@/components/staffList/manager/index";
import staffsles from "@/components/staffList/staff/index";
import errorOrder from '../../errorOrder/component/index.vue'
export default {
components: {
staffsles,
manager,
admin,
errorOrder
},
props:{
isaAbnormal:{
type:Boolean,
default:false
},
project:{
type:Object,
default:()=>{}
}
},
data() {
return {
detailDialog: false,
activeNames: "员工",
rowfromWidth: "80px",
sessionStorageData: {}, //门店参数集合
title: "", //弹窗标题
form: {}, //主对象
options:[]
};
},
created(){
this.init()
},
methods: {
handleCommission(){
this.$refs.detail.show(this.project)
},
init(){
ctlist({
state: 1
}).then(res=>{
this.options = res.rows.map(item=>{
return {
value:item.id,
label:item.collectionTypeName
}
})
})
},
handleReissue(){
let params = {
additionDate:this.form['courseLists'][0]['date'],
mobilePhone:this.form['mobilePhone'],
projectName:this.form['projectName'],
courseLists:this.form['courseLists']
}
courseReissue(params).then(res=>{
if(res.code === '000000'){
return this.$message.success({
message: "操作成功!",
});
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
},
});
}
})
},
//关闭弹窗前的回调方法
handleClose() {
this.form = Object.assign({});
this.detailDialog = false;
},
collChange(e) {
if (e.indexOf("员工")) {
this.setStaff();
}
},
setStaff() {
var that = this;
setTimeout(() => {
that.$refs.staffsles.show(that.form.entities, that.form.storeId);
that.$refs.admin.show(that.form.adminList, that.form.storeId);
that.$refs.manager.show(that.form.managerList, that.form.storeId);
}, 800);
},
//员工占比返回方法
staffslesData(v) {
this.form.entities = [...v];
},
//高管占比返回方法
managerData(v) {
this.form.managerList = [...v];
},
//管理员占比返回方法
adminData(v) {
this.form.adminList = [...v];
},
cancel() {
this.detailDialog = false;
this.$emit("detailData");
},
//组件传值
show(form, text) {
if (text == "明细") {
this.title = text;
} else {
this.title = "明细/修改";
}
this.detailDialog = true;
this.sessionStorageData = JSON.parse(
sessionStorage.getItem("sessionStorageData")
);
this.getData(form);
form.rechargeConsumeList.forEach((items) => {
let cardOver = (items.cardConsumeMoney + items.spendMoney).toFixed(2)*1;
let cardOvers = items.cardConsumeMoney.toFixed(2)*1;
items.cardOver = cardOver
items.cardOvers = cardOvers
});
},
getData(row) {
this.form = {
...row,
};
this.form.entities.forEach((item) => {
item.staffName = item.saleStaffName;
item.editStaffRatioShow = false;
item.id = item.saleStaffId;
item.identityCard = item.saleIdentityCard;
item.ratio = item.saleRatio;
item.staffNames = item.brandNumber + "--" + item.staffName;
});
selectOne({ type: 1, orderId: row.id }).then((res) => {
if (res.code == "000000") {
let managerList = [];
let adminList = [];
res.rows.forEach((item) => {
if (item.staffType == 0) {
item.staffNames = item.brandNumber + "--" + item.staffName;
managerList.push(item);
}
if (item.staffType == 1) {
item.staffNames = item.brandNumber + "--" + item.staffName;
adminList.push(item);
}
});
if (managerList.length == 0) {
managerList.push({ ratio: 100 });
}
if (adminList.length == 0) {
adminList.push({ ratio: 100 });
}
if (this.form.entities.length == 0) {
this.form.entities.push({ ratio: 100 });
}
this.form.managerList = managerList;
this.form.adminList = adminList;
this.setStaff();
} else {
this.$alert(res.message, "加载门店高管", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
if(this.isaAbnormal){
let params = {
id:this.form.id,
date:this.form.date
}
selectCourseOneByError(params).then(res=>{
if(res.code == '000000'){
this.$set(this.form,'courseLists',res.data.courseLists)
}
})
}else{
let params = {
docId:this.form.courseReatmentNum,
date:this.form.date
}
selectCourseOne(params).then(res=>{
if(res.code == '000000'){
// this.form.courseLists = res.data.courseLists
this.$set(this.form,'courseLists',res.data.courseLists)
}
})
}
},
//指定列求和
//数组按对应字段合计返回方法
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;
},
subStaffRatio() {
let staffLists = [];
this.form.entities.forEach((item) => {
let items = {
ratio: item.ratio.toFixed(2)*1,
id: item.id,
identityCard: item.identityCard,
staffName: item.staffName,
brandNumber: item.brandNumber,
editStaffRatioShow: false,
};
staffLists.push(items);
});
let form = {
date: this.form.date,
collectionAmount: this.form.collectionAmount,
typeRatio: this.form.typeRatio,
id: this.form.id,
docId: this.form.courseLists[0].courseReatmentNum,
staffLists: staffLists,
collectionCashAmount: this.form.collectionCashAmount,
collectionIntegralAmount: this.form.collectionIntegralAmount,
collectionRechargeAmount: this.form.collectionRechargeAmount,
payLists:this.form.payLists
};
let salesmens = [];
this.form.managerList.forEach((item) => {
if (item.id) {
item.staffType = 0;
item.ratio = item.ratio.toFixed(2)*1
salesmens.push(item);
}
});
this.form.adminList.forEach((item) => {
if (item.id) {
item.staffType = 1;
item.ratio = item.ratio.toFixed(2)*1
salesmens.push(item);
}
});
form.salesmens = salesmens;
courseEditStaff(form).then((res) => {
if (res.code == "000000") {
this.$message.success({
message: res.message,
});
this.detailDialog = false;
this.$emit("detailData");
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
},
};
</script>
<style scoped>
.spanrs{
width: 160px;
}
</style>