负卡金修改,会员转门店与取消还款添加

master
Wangxubin 3 years ago
parent 2b65500ce9
commit 592d02c7ed

@ -58,6 +58,22 @@ export function dayStatistic(params) {
data: params
});
}
// 当日负卡金疗程记录查询
export function dayStatisticTreatment(params) {
return service({
url: "/api" + "/demay/ssm/negativeCard/CourseDayStatistic",
method: "post",
data: params
});
}
//当日负卡金充值记录查询
export function dayStatisticRecharge(params) {
return service({
url: "/api" + "/demay/ssm/negativeCard/rechargeDayStatistic",
method: "post",
data: params
});
}
// 门店会员统计列表 门店端-门店统计-门店会员统计列表
export function storeStatisticMemberList(params) {
return service({

@ -355,6 +355,13 @@ export default {
index: "transfer",
number: "4001500",
},
{
name: "会员转门店",
icon: "el-icon-sort",
route: "/transferstore",
index: "transferstore",
number: "4001600",
},
// {
// name: "",
// icon: "el-icon-s-management",
@ -396,6 +403,13 @@ export default {
index: "repayment",
number: "500800",
},
{
name: "取消欠款",
icon: "el-icon-notebook-2",
route: "/noarrears",
index: "noarrears",
number: "500900",
},
{
name: "异常单",
icon: "el-icon-question",

@ -0,0 +1,287 @@
<template>
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="detailDialog" width="80%" append-to-body :before-close="handleClose">
<el-form :model="form" inline label-width="100px">
<el-form-item label="单号:">
<div class="editstaffdiv">
{{form.docNum}}
</div>
</el-form-item>
<el-form-item label="会员名字:">
<div class="editstaffdiv">
{{form.memberName }}
</div>
</el-form-item>
<el-form-item label="业务名称:">
<div class="editstaffdiv">
{{form.tradeName }}
</div>
</el-form-item>
<el-form-item label="类别:">
<div class="editstaffdiv">
<div v-show="form.docType=='card_use'"></div>
<div v-show="form.docType=='card_recharge'"></div>
</div>
</el-form-item>
<br>
<el-form-item label="成交金额:">
<div class="editstaffdiv">
{{form.tradeMoney }}
</div>
</el-form-item>
<el-form-item label="待付金额:">
<div class="editstaffdiv">
{{form.debtMoney }}
</div>
</el-form-item>
<el-form-item label="还款金额:">
<div class="editstaffdiv">
{{form.repayMoney }}
</div>
</el-form-item>
<el-form-item label="实付金额:">
<div class="editstaffdiv">
{{form.payMoney }}
</div>
</el-form-item><br>
<el-form-item label="补单日期:" v-show="form.isAddition==1">
<div class="editstaffdiv">
{{form.additionDate }}
</div>
</el-form-item>
<div class="border-radius-10 border padding-xs bg-white margin-bottom-xs" style="width:905px;margin-left:100px">
<el-table :data="form.repayAccountListRequests" :summary-method="getSummaries" show-summary>
<el-table-column align="center" prop="accountNum" show-overflow-tooltip label="帐户编码" min-width="100"></el-table-column>
<el-table-column align="center" prop="accountName" show-overflow-tooltip label="帐户名称" min-width="100"></el-table-column>
<el-table-column align="center" prop="accountName" label="帐户类型" min-width="80">
<template slot-scope="scope">
{{scope.row.accountType==0?'充值':'疗程'}}
</template>
</el-table-column>
<el-table-column align="center" prop="payNumber" label="支付次数" min-width="75">
<template slot-scope="scope">
{{scope.row.payNumber?scope.row.payNumber:'--'}}
</template>
</el-table-column>
<el-table-column align="center" prop="payMoney" label="支付金额" min-width="75"></el-table-column>
<el-table-column align="center" prop="storeNum" show-overflow-tooltip label="门店编码" min-width="100"></el-table-column>
<el-table-column align="center" prop="storeName" show-overflow-tooltip label="门店名称" min-width="100"></el-table-column>
</el-table>
</div>
<el-form-item style="display: inline-block;" label="业务员:">
<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>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="cancel()"> </el-button>
<el-button size="mini" v-if="form.isCancel==0&&title!='明细'" type="primary" @click="subStaffRatio()"> </el-button>
</span>
</el-dialog>
</template>
<script>
import { repayEditStaff, selectOne } 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";
export default {
components: {
staffsles,
manager,
admin,
},
data() {
return {
detailDialog: false,
activeNames: "员工",
rowfromWidth: "80px",
sessionStorageData: {}, //
title: "", //
form: {}, //
};
},
methods: {
//
handleClose() {
this.form = Object.assign({});
this.detailDialog = false;
},
setStaff() {
var that = this;
this.$nextTick(() => {
that.$refs.staffsles.show(that.form.entities);
that.$refs.admin.show(that.form.adminList);
that.$refs.manager.show(that.form.managerList);
});
},
//
staffslesData(v) {
console.log(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);
},
getData(row) {
this.form = { ...row };
this.form.entities.forEach((item) => {
item.staffName = item.saleStaffName;
item.id = item.saleStaffId;
item.identityCard = item.saleIdentityCard;
item.ratio = item.saleRatio;
item.staffNames = item.brandNumber + "--" + item.staffName;
});
selectOne({ type: 7, 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.managerLists = managerList;
this.form.adminList = adminList;
var that = this;
this.$nextTick(() => {
that.$refs.staffsles.show(that.form.entities);
that.$refs.manager.show(that.form.managerLists);
that.$refs.admin.show(that.form.adminList);
});
} else {
this.$alert(res.message, "加载门店高管", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
//
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() {
this.form.entities.forEach((item) => {
delete item.type;
});
let salesmens = [];
this.form.managerLists.forEach((item) => {
if (item.id) {
item.staffType = 0;
salesmens.push(item);
}
});
this.form.adminList.forEach((item) => {
if (item.id) {
item.staffType = 1;
salesmens.push(item);
}
});
let ids = {
id: this.form.id,
repayDate: this.form.repayDate,
staffRequests: this.form.entities,
salesmens: salesmens,
repayMoney: this.form.repayMoney,
};
repayEditStaff(ids).then((res) => {
console.log(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>
</style>

@ -0,0 +1,310 @@
<template>
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="detailDialogVisible" width="80%" append-to-body :before-close="handleClose">
<el-form :model="form" inline label-width="100px">
<el-form-item label="还款单号:">
<div class="form-width-xxs">
{{form.repayNum}}
</div>
</el-form-item>
<el-form-item label="还款时间:">
<div class="form-width-xxs text-out" :title="form.repayDate">
{{form.repayDate}}
</div>
</el-form-item>
<el-form-item label="会员名字:">
<div class="form-width-xxs">
{{form.memberName}}
</div>
</el-form-item>
<el-form-item label="手机号码:">
<div class="form-width-xxs">
{{form.mobilePhone}}
</div>
</el-form-item>
<el-form-item label="补单日期:" v-if="form.additionDate">
<div class="form-width-xxs">
{{form.additionDate}}
</div>
</el-form-item>
</el-form>
<el-table :data="form.repayTradeLists" row-key="index" :row-class-name="rowClassName" :expand-row-keys="expandRowKeys" :row-key="getRowKey" @row-click="rowClick" ref="list" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}">
<el-table-column type="expand">
<template slot-scope="props">
<div style="width:920px;overflow: hidden;" class="border-radius-10 border padding-xs bg-white margin-bottom-xs">
<el-table :data="props.row.repayAccountListRequests" :summary-method="getSummaries" show-summary>
<el-table-column align="center" prop="accountNum" show-overflow-tooltip label="帐户编码" min-width="100"></el-table-column>
<el-table-column align="center" prop="accountName" show-overflow-tooltip label="帐户名称" min-width="100"></el-table-column>
<el-table-column align="center" prop="accountName" label="帐户类型" min-width="80">
<template slot-scope="scope">
{{scope.row.accountType==0?'充值':'疗程'}}
</template>
</el-table-column>
<el-table-column align="center" prop="payNumber" label="支付次数" min-width="75">
<template slot-scope="scope">
{{scope.row.payNumber?scope.row.payNumber:'--'}}
</template>
</el-table-column>
<el-table-column align="center" prop="payMoney" label="支付金额" min-width="75"></el-table-column>
<el-table-column align="center" prop="storeNum" show-overflow-tooltip label="门店编码" min-width="100"></el-table-column>
<el-table-column align="center" prop="storeName" show-overflow-tooltip label="门店名称" min-width="100"></el-table-column>
</el-table>
</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>
</template>
</el-table-column>
<el-table-column align="center" prop="docNum" label="单号" min-width="120"></el-table-column>
<el-table-column align="center" prop="tradeName" label="名称" min-width="120"></el-table-column>
<el-table-column align="center" prop="docType" label="类别" min-width="120">
<template slot-scope="scope">
<div v-show="scope.row.docType=='card_recharge'"></div>
<div v-show="scope.row.docType=='card_use'"></div>
</template>
</el-table-column>
<el-table-column align="center" prop="tradeMoney" label="成交额" min-width="120"></el-table-column>
<el-table-column align="center" prop="debtMoney" label="待付金额" min-width="120"></el-table-column>
<el-table-column align="center" prop="payRechargeMoney" label="卡付" min-width="120"></el-table-column>
<el-table-column align="center" prop="repayMoney" label="现付" min-width="120"></el-table-column>
<el-table-column align="center" prop="payMoney" label="实付金额" min-width="120"></el-table-column>
</el-table>
<div style="width:280px" class="border-radius-10 border padding-xs bg-white">
<el-table :data="form.payLists" :summary-method="getSummaries" show-summary :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}">
<el-table-column align="center" prop="payName" label="支付方式" min-width="100"></el-table-column>
<el-table-column align="center" prop="payMoney" label="支付金额" min-width="120"></el-table-column>
</el-table>
</div>
<!-- <detail ref="detail" @detailData="detailData"></detail> -->
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" @click="handleClose"></el-button>
<el-button size="mini" v-if="title=='修改'" type="primary" plain @click="confirm()"></el-button>
</span>
</el-dialog>
</template>
<script>
import detail from "./detail";
import admin from "@/components/staffList/admin/index";
import manager from "@/components/staffList/manager/index";
import staffsles from "@/components/staffList/staff/index";
import { repayEditStaff, selectOne } from "@/api/eashier.js";
export default {
components: {
staffsles,
manager,
admin,
detail,
},
data() {
return {
detailDialogVisible: false,
title: "", //
form: {}, //
staffLists: [{ brandNumber: "", staffName: "", ratio: 100 }],
managerList: [{ brandNumber: "", staffName: "", ratio: 100 }],
adminList: [{ brandNumber: "", staffName: "", ratio: 100 }],
rowIndex: -1, //
getRowKey(row) {
return row.id; // id
},
expandRowKeys: [],
};
},
methods: {
//
handleClose() {
this.form = Object.assign({});
this.detailDialogVisible = false;
this.$emit("detailData");
},
rowClassName({ row, rowIndex }) {
row.index = rowIndex;
},
//
staffslesData(v) {
console.log(v);
console.log(this.rowIndex);
this.form.repayTradeLists[this.rowIndex].entities = [...v];
console.log(this.form.repayTradeLists[this.rowIndex]);
},
//
managerData(v) {
this.form.repayTradeLists[this.rowIndex].managerList = [...v];
},
//
adminData(v) {
this.form.repayTradeLists[this.rowIndex].adminList = [...v];
},
//
show(form, title) {
if (title == "明细") {
this.title = title;
} else {
this.title = "修改";
}
this.form = form;
console.log(form);
if (form.repayTradeLists.length == 1) {
this.rowIndex = 0;
form.repayTradeLists.forEach((item, index) => {
item.index = index;
});
this.rowClick(form.repayTradeLists[0]);
}
form.repayTradeLists.forEach((item) => {
item.additionDate = form.additionDate;
item.isAddition = form.isAddition;
});
this.detailDialogVisible = true;
},
rowClick(row) {
console.log(row);
this.rowIndex = row.index;
row.entities.forEach((item) => {
item.staffName = item.saleStaffName;
item.id = item.saleStaffId;
item.identityCard = item.saleIdentityCard;
item.ratio = item.saleRatio;
item.staffNames = item.brandNumber + "--" + item.staffName;
});
selectOne({ type: 7, 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 (row.entities.length == 0) {
row.entities.push({ ratio: 100 });
}
row.managerList = managerList;
row.adminList = adminList;
this.$refs.list.toggleRowExpansion(row, true);
var that = this;
console.log(this.rowIndex);
setTimeout(() => {
that.$refs.staffsles.show(row.entities);
that.$refs.manager.show(row.managerList);
that.$refs.admin.show(row.adminList);
}, 500);
} else {
this.$alert(res.message, "加载门店高管", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
confirm() {
this.form.repayTradeLists.forEach((item) => {
console.log(item);
let entities = [];
item.entities.forEach((items) => {
delete items.type;
if (items.id) {
entities.push(items);
}
});
let salesmens = [];
item.managerList.forEach((items) => {
if (items.id) {
items.staffType = 0;
salesmens.push(items);
}
});
item.adminList.forEach((items) => {
if (items.id) {
items.staffType = 1;
salesmens.push(items);
}
});
item.salesmens = salesmens;
item.staffRequests = entities;
});
repayEditStaff(this.form.repayTradeLists).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: res.message });
this.$emit("detailData");
this.detailDialogVisible = false;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
detailData(v) {
this.detailDialogVisible = false;
this.$emit("detailData");
},
detailEditStaff(row) {
row.isCancel = this.form.isCancel;
this.$refs.detail.show(row);
},
//
//
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;
},
},
};
</script>
<style>
</style>

@ -0,0 +1,723 @@
<template>
<!-- 还款单 -->
<div class="repayment">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="还款单" name="还款单">
<el-select v-if="headOffice == 1" ref="select" multiple collapse-tags filterable default-first-option v-model="queryForm.storeList" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="queryForm.memberName" placeholder="输入要查询的会员名字" clearable></el-input>
<el-input size="medium" class="form-width-ms" maxlength="11" v-model="queryForm.mobilePhone" placeholder="输入要查询的11位会员手机号" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" clearable></el-input>
<el-button size="mini" type="primary" plain @click="getData"></el-button>
<el-table :data="billsList" class="margin-top-xs" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" ref="multipleTable" highlight-current-row tooltip-effect="dark" stripe>
<el-table-column align="center" label="状态" width="70" fixed="left">
<template slot-scope="scope">
<el-tag effect="dark" size="medium" :type="scope.row.isCancel==1?'primary':'success'"> <span v-show="scope.row.isCancel==1"></span><span v-show="scope.row.isCancel==0"></span> </el-tag>
</template>
</el-table-column>
<el-table-column align="center" prop="repayNum" label="单号" min-width="120"></el-table-column>
<el-table-column align="center" prop="repayDate" label="日期" min-width="160"></el-table-column>
<el-table-column align="center" prop="isAddition" label="是否补单" min-width="50">
<template slot-scope="scope"><span v-show="scope.row.isAddition==0"></span><span v-show="scope.row.isAddition==1"></span></template>
</el-table-column>
<el-table-column align="center" prop="memberName" label="会员名字" min-width="100"></el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="100"></el-table-column>
<el-table-column align="center" prop="debtMoney" label="待付金额" min-width="80"></el-table-column>
<el-table-column align="center" prop="payMoney" label="已支付" min-width="80"></el-table-column>
<el-table-column align="center" prop="inputBy" label="录单人" min-width="80"></el-table-column>
<el-table-column align="center" label="单据个数" min-width="80">
<template slot-scope="scope">
<div v-if="scope.row.repayTradeLists!=undefined">
{{scope.row.repayTradeLists.length}}
</div>
</template>
</el-table-column>
<el-table-column fixed="right" align="center" label="明细" width="76">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain @click="detail(scope.row,detailDialogVisible=true)"></el-button>
</template>
</el-table-column>
<el-table-column fixed="right" align="center" label="作废" width="76">
<template slot-scope="scope">
<el-button size="mini" type="primary" :disabled="scope.row.isCancel==1" @click="cancel(scope.row)" v-role='5008002'>作废</el-button>
</template>
</el-table-column>
<el-table-column fixed="right" align="center" label="打印" width="76">
<template slot-scope="scope">
<el-button size="mini" type="success" :disabled="scope.row.isCancel==1" @click="print(scope.row,printDialogVisible=true) " v-role='5008003'>打印</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>
</el-tab-pane>
<el-tab-pane label="取消欠款" name="取消欠款">
<selec v-if="headOffice == 1" ref="selec" @selecData="selecData"></selec>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="queryForm.memberName" placeholder="输入要查询的会员名字" clearable></el-input>
<el-input size="medium" class="form-width-ms" maxlength="11" v-model="queryForm.mobilePhone" placeholder="输入要查询的11位会员手机号" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" clearable></el-input>
<el-button size="mini" type="primary" plain @click="getData"></el-button>
<el-button @click="confirms(radioList)" size="mini" type="primary" :disabled="radioList.state==undefined">明细</el-button>
<el-button @click="editOrder(1)" size="mini" type="primary" :disabled="radioList.state==3||radioList.state==5 ||radioList.state==1 ||radioList.state==undefined">送审</el-button>
<el-button @click="editOrder(2)" size="mini" type="primary" :disabled="radioList.state==0||radioList.state==5||radioList.state==2||radioList.state==3||radioList.state==4||radioList.state==undefined" plain>回收</el-button>
<el-button @click="editOrder(3)" size="mini" type="primary" :disabled="radioList.state==2||radioList.state==5||radioList.state==3 || radioList.state==0|| radioList.state==4||radioList.state==undefined">审核</el-button>
<el-button @click="editOrder(4)" size="mini" type="primary" :disabled="radioList.state==0||radioList.state==5|| radioList.state==1||radioList.state==2|| radioList.state==4||radioList.state==undefined">反审核</el-button>
<el-table :data="list" class="margin-top-xs" @row-dblclick="confirms" @row-click="clickRow" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" ref="multipleTable" highlight-current-row tooltip-effect="dark" stripe>
<el-table-column align="center" label="状态" min-width="130">
<template slot-scope="scope">
<div class="flex align-center">
<el-radio v-model="radioValue" :label="scope.row.id" @change.native="(scope.row)">{{''}}
</el-radio>
<el-tag size="medium" effect="dark" :type="scope.row.state==0?'info':''||scope.row.state==1?'primary':''||scope.row.state==2?'info':''||scope.row.state==3?'success':''||scope.row.state==4?'warning':scope.row.state==5?'primary':''">
<span v-show="scope.row.state==0"></span>
<span v-show="scope.row.state==1"></span>
<span v-show="scope.row.state==2"></span>
<span v-show="scope.row.state==3"></span>
<span v-show="scope.row.state==4"></span>
<span v-show="scope.row.state==5"></span>
<span v-show="scope.row.state==null"></span>
</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="docType" label="类型" align="center" width="75">
<template slot-scope="scope">
<div>{{scope.row.docType=='card_use'?'疗程':scope.row.docType=='promotion_card_use'?'促销':scope.row.liftType==1?'升降级':'正常充值'}}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="docNum" show-overflow-tooltip label="单号" min-width="120"></el-table-column>
<el-table-column align="center" prop="docDate" show-overflow-tooltip label="日期" min-width="105"></el-table-column>
<el-table-column align="center" prop="memberName" label="会员名字" min-width="80"></el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="100"></el-table-column>
<el-table-column align="center" prop="tradeName" label="名称" min-width="120"></el-table-column>
<el-table-column align="center" prop="tradeMoney" 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="cancelMoney" label="取消欠款金额" min-width="110"></el-table-column>
<el-table-column align="center" prop="cancelNum" label="取消欠款次数" min-width="110"></el-table-column>
<el-table-column align="center" label="操作" width="150">
<template slot-scope="scope">
<el-button size="mini" type="primary" :disabled="!(scope.row.state==4||scope.row.state==2||scope.row.state==0)" plain @click="(cancelForm=scope.row,cancelDialogVisible=true,title='修改')"></el-button>
<el-button size="mini" type="primary" plain @click="del(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<!-- 分页组件 -->
<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>
</el-tab-pane>
</el-tabs>
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="cancelDialogVisible" width="650px" append-to-body>
<el-form label-width="120px" inline>
<div v-if="cancelForm.docType=='promotion_card_use'">
<el-form-item label="会员名称">
{{cancelForm.memberName}}
</el-form-item>
<el-form-item label="手机号码">
{{cancelForm.memberName}}
</el-form-item>
<el-form-item label="促销名称">
{{cancelForm.tradeName}}
</el-form-item>
<el-form-item label="成交金额">
<span class="text-red text-price">
{{cancelForm.tradeMoney}}
</span>
</el-form-item>
<el-form-item label="欠款金额">
<span class="text-cyan text-price">
{{cancelForm.debtMoney}}
</span>
</el-form-item>
<el-form-item label="取消欠款">
<span class="text-cyan text-price">
{{cancelForm.cancelMoney}}
</span>
</el-form-item>
<el-table :data="cancelForm.cancelDebtMxes" highlight-current-row tooltip-effect="dark">
<el-table-column prop="courseProjectNum" show-overflow-tooltip label="项目编码" align="center" min-width="80"></el-table-column>
<el-table-column prop="courseProjectName" show-overflow-tooltip label="项目名称" align="center" min-width="120"></el-table-column>
<el-table-column prop="price" show-overflow-tooltip label="欠款" align="center" min-width="80">
<el-table-column prop="debtMoney" show-overflow-tooltip label="金额" align="center" min-width="80"></el-table-column>
<el-table-column prop="debtCount" show-overflow-tooltip label="次数" align="center" min-width="80"></el-table-column>
</el-table-column>
<el-table-column prop="price" show-overflow-tooltip label="取消欠款" align="center" min-width="80">
<el-table-column prop="cancelMoney" show-overflow-tooltip label="金额" align="center" min-width="80">
<template slot-scope="scope">
<div @click.stop v-if="title=='修改'">
<div class="text-cyan" v-if="editCancelMIndex!=scope.$index" @click="openEditCancelM(scope.row,scope.$index,editCancelMIndex=scope.$index)">
{{scope.row.cancelMoney}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus type="number" class="form-input-width-xs" v-else @blur="endEditCancelM(scope.row,editCancelMIndex=-1)" v-model="scope.row.cancelMoney"></el-input>
</div>
<div v-else>{{scope.row.cancelMoney}}</div>
</template>
</el-table-column>
<el-table-column prop="cancelNum" show-overflow-tooltip label="次数" align="center" min-width="80">
<template slot-scope="scope">
<div @click.stop v-if="title=='修改'">
<div class="text-cyan" v-if="editCancelCIndex!=scope.$index" @click="openEditCancelC(scope.row,scope.$index,editCancelCIndex=scope.$index)">
{{scope.row.cancelNum}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus type="number" class="form-input-width-xs" v-else @blur="endEditCancelC(scope.row,editCancelCIndex=-1)" v-model="scope.row.cancelNum"></el-input>
</div>
<div v-else>{{scope.row.cancelNum}}</div>
</template>
</el-table-column>
</el-table-column>
</el-table>
</div>
<div v-else>
<el-form-item label="欠款帐户">
{{cancelForm.tradeName}}
</el-form-item>
<el-form-item label="成交金额">
<span class="text-red text-price">
{{cancelForm.tradeMoney}}
</span>
</el-form-item>
<el-form-item label="欠款金额">
<span class="text-cyan text-price">
{{cancelForm.debtMoney}}
</span>
</el-form-item>
<el-form-item label="取消欠款金额">
<el-input type="number" class="form-width-ms" v-model="cancelForm.cancelMoney"></el-input>
</el-form-item>
<el-form-item label="取消欠款次数" v-if="cancelForm.docType == 'card_use'">
<el-input pattern="[0-9]*\" type="number" class="form-width-ms" v-model="cancelForm.cancelNum"></el-input>
</el-form-item>
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="cancelDialogVisible = false"> </el-button>
<el-button size="mini" v-if="title=='修改'" type="primary" @click="confirmCancel()"> </el-button>
</span>
</el-dialog>
<el-dialog :close-on-click-modal="false" v-dialogDrag title="打印" :visible.sync="printDialogVisible" width="60%">
<div id="printService" class="printDiv">
<div class="text-center text-grey padding-xs">
还款记录单
</div>
<hr>
<el-form :model="printForm" :inline="true">
<el-form-item label="">
<div class="span" style="wdith:120px">{{printForm.storeName}}</div>
</el-form-item>
<el-form-item label="">
{{printForm.repayDate}}
</el-form-item><br>
<el-form-item label="还款单号:">
{{printForm.repayNum}}
</el-form-item><br>
<el-form-item label="会员信息:">
<div>{{printForm.memberName}} / {{printForm.mobilePhone}}</div>
</el-form-item><br>
<el-form-item label="欠款金额:">
<div style="width:50px">{{printForm.debtMoney}}</div>
</el-form-item>
<el-form-item label="还款金额:">
<div>{{printForm.payMoney}}</div>
</el-form-item>
<div v-for="(item,index) in printForm.repayTradeLists" :key="index">
<el-form-item label="帐户名称:">
<div>
<span class="text-bold">
{{item.tradeName}}
</span>
<span class="text-cyan">
还款:
{{item.repayMoney}}
</span>
</div>
</el-form-item>
</div>
<br>
<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>
</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="'#printService'"> </el-button>
</span>
</el-dialog>
<el-dialog title="导入表格" :visible.sync="infoDialog" :close-on-click-modal='false'>
<excel @fileData='fileData' @infoDialogV='infoDialogV'></excel>
</el-dialog>
<detail ref="detail" @detailData="detailData"></detail>
</div>
</template>
<script>
import {
repayPage,
repayCancel,
repayEditStaff,
selectOne,
cancelDebtList,
editCancelDebtList,
auditCancelDebtList,
theauditCancelDebtList,
deleteCancelDebtList,
recycleCancelDebtList,
submitCancelDebtList,
} from "@/api/eashier.js";
import { organizations } from "@/api/storeManage.js";
import excel from "@/components/excel";
import admin from "@/components/staffList/admin/index";
import manager from "@/components/staffList/manager/index";
import staffsles from "@/components/staffList/staff/index";
import selec from "@/components/store/select/index";
export default {
components: {
staffsles,
manager,
admin,
excel,
detail,
selec,
},
data() {
return {
headOffice: sessionStorage.getItem("headOffice") * 1,
printDialogVisible: false, //
detailDialogVisible: false,
cancelDialogVisible: false,
editStaffDialog: false,
radiostaffvalue: "",
radiostaffvalueList: {},
activeName: "还款单",
radioValue: null,
radioList: {},
options: [],
editIndex: -1,
title: "",
pageNum: 1, //
pageSize: 10, // ,
printForm: {
repayDate: "",
recharge: "",
repayNum: null,
storeId: "",
memberName: "",
mobilePhone: null,
money: null,
backMoney: null,
numMoney: null,
numMoneys: null,
telephone: "",
printDate: new Date(),
},
editForm: {},
billsList: [],
form: {}, //
repayTradeLists: [],
staffValue: "",
entities: [],
list: [], //
index: -1,
total: 0, //
cancelForm: {},
queryForm: {
//
pageNum: 1,
pageSize: 10,
},
infoDialog: false, //
editCancelCIndex: -1,
editCancelMIndex: -1,
};
},
methods: {
confirms(row) {
this.cancelForm = row;
this.cancelDialogVisible = true;
this.title = "明细";
},
openEditCancelM(row, index) {},
endEditCancelM(row) {
if (row.cancelMoney * 1 > row.debtMoney) {
this.$message.waring({ message: "最高可以取消" + row.debtMoney });
row.cancelMoney = row.debtMoney;
} else {
this.sumMoney();
}
},
openEditCancelC(row, index) {
let form = { ...row };
},
endEditCancelC(row) {
if (row.cancelNum * 1 > row.debtCount) {
this.$message.waring({ message: "最高可以取消" + row.debtCount });
row.cancelNum = row.debtCount;
} else {
this.sumMoney();
}
},
sumMoney() {
let money = 0;
let form = { ...this.cancelForm };
this.cancelForm.cancelDebtMxes.forEach((item) => {
money += item.cancelMoney * 1;
});
form.cancelMoney = money.toFixed(2) * 1;
this.cancelForm = JSON.parse(JSON.stringify(form));
},
//
detailData(v) {
this.getData();
},
del(row) {
deleteCancelDebtList({ id: row.id }).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "删除成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
confirmCancel() {
editCancelDebtList(this.cancelForm).then((res) => {
if (res.code == "000000") {
this.cancelDialogVisible = false;
this.$message.success({ message: "修改成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
editOrder(number) {
if (number == 3) {
let form = { id: this.radioList.id, state: number };
auditCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "审核成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
if (number == 4) {
let form = { id: this.radioList.id, state: number };
theauditCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "反审核成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
if (number == 1) {
let form = { id: this.radioList.id, state: number };
submitCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "操作成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
if (number == 2) {
let form = { id: this.radioList.id, state: number };
recycleCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "操作成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
},
clickRow(row) {
this.radioValue = row.id;
this.radioList = row;
},
//
handleClick(tab, event) {
console.log(tab, event);
this.activeName = tab.name;
this.getData();
if (this.headOffice == 1) {
this.$nextTick(() => {
this.$refs.selec.show();
});
}
},
//
fileData(v) {
//console.log(v);
},
//
infoDialogV(v) {
this.infoDialog = v;
},
//
exit() {},
eidtStaff(index) {
this.index = index;
},
//
rowClick(row) {
this.radiostaffvalue = row.id;
this.radiostaffvalueList = row;
},
detailEditStaff(row) {
this.$refs.detail.show(row);
},
//
detail(row) {
this.$refs.detail.show(row);
},
//
print(row) {
//console.log(row);
this.printForm = row;
this.printForm.printDate = new Date();
this.printForm.telephone = JSON.parse(
sessionStorage.getItem("storeInfo")
).telephone;
},
//
cancel(row) {
this.$confirm("确定作废, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
cancelButtonClass: "cancelbtnFalses",
confirmButtonClass: "confirmbtnFalses",
})
.then(() => {
row.repayTradeLists.forEach((item) => {
delete item.entities;
delete item.achievementAmount;
delete item.cardCommissionAmount;
delete item.cardAchievementAmount;
delete item.commissionAmount;
delete item.repayDate;
});
delete row.payLists;
//console.log(row);
repayCancel(row).then((res) => {
//console.log(res);
if (res.code == "000000") {
this.getData();
this.$message.success({ message: res.message });
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
})
.catch(() => {
this.$message.info({ message: "已取消操作!" });
});
},
selecData(v) {
this.queryForm.storeList = v;
this.getData();
},
//
async getData() {
if (this.activeName == "还款单") {
if (this.headOffice == 1) {
setTimeout(() => {
console.log(this.$refs.selec);
this.$nextTick(() => {
this.$refs.selec.show();
});
}, 800);
}
repayPage(this.queryForm).then((res) => {
if (res.code == "000000") {
this.billsList = res.pageInfo.list;
this.total = res.pageInfo.total;
} else {
this.$alert(res.message, "加载还款列表", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
} else {
cancelDebtList(this.queryForm).then((res) => {
if (res.code == "000000") {
this.list = res.pageInfo.list;
this.total = res.pageInfo.total;
} else {
this.$alert(res.message, "加载取消还款列表", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
},
//
handleSizeChange(val) {
this.queryForm.pageSize = val;
this.getData();
},
handleCurrentChange(val) {
this.queryForm.pageNum = val;
this.getData();
},
//
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 == "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;
},
},
created() {
let list = JSON.parse(sessionStorage.getItem("list"));
list.forEach((item) => {
if (item.id == 5008001) {
this.getData();
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
});
},
};
</script>
<style>
.repayment {
padding: 10px;
overflow: auto;
margin-left: 10px;
}
.dialogDiv .el-radio__label {
display: none;
}
.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: 230px;
margin: 0 auto;
}
.editstaffdiv {
width: 120px;
}
.editStaffDialogDiv .el-radio__label {
display: none;
}
</style>

@ -0,0 +1,671 @@
<template>
<!-- 还款单 -->
<div class="repayment">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="取消欠款" name="取消欠款">
<selec v-if="headOffice == 1" ref="selec" @selecData="selecData"></selec>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="queryForm.memberName" placeholder="输入要查询的会员名字" clearable></el-input>
<el-input size="medium" class="form-width-ms" maxlength="11" v-model="queryForm.mobilePhone" placeholder="输入要查询的11位会员手机号" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" clearable></el-input>
<el-button size="mini" type="primary" plain @click="getData"></el-button>
<el-button @click="confirms(radioList)" size="mini" type="primary" :disabled="radioList.state==undefined">明细</el-button>
<el-button @click="editOrder(1)" size="mini" type="primary" :disabled="radioList.state==3||radioList.state==5 ||radioList.state==1 ||radioList.state==undefined">送审</el-button>
<el-button @click="editOrder(2)" size="mini" type="primary" :disabled="radioList.state==0||radioList.state==5||radioList.state==2||radioList.state==3||radioList.state==4||radioList.state==undefined" plain>回收</el-button>
<el-button @click="editOrder(3)" size="mini" type="primary" :disabled="radioList.state==2||radioList.state==5||radioList.state==3 || radioList.state==0|| radioList.state==4||radioList.state==undefined">审核</el-button>
<el-button @click="editOrder(4)" size="mini" type="primary" :disabled="radioList.state==0||radioList.state==5|| radioList.state==1||radioList.state==2|| radioList.state==4||radioList.state==undefined">反审核</el-button>
<el-table :data="list" class="margin-top-xs" @row-dblclick="confirms" @row-click="clickRow" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" ref="multipleTable" highlight-current-row tooltip-effect="dark" stripe>
<el-table-column align="center" label="状态" min-width="130">
<template slot-scope="scope">
<div class="flex align-center">
<el-radio v-model="radioValue" :label="scope.row.id" @change.native="(scope.row)">{{''}}
</el-radio>
<el-tag size="medium" effect="dark" :type="scope.row.state==0?'info':''||scope.row.state==1?'primary':''||scope.row.state==2?'info':''||scope.row.state==3?'success':''||scope.row.state==4?'warning':scope.row.state==5?'primary':''">
<span v-show="scope.row.state==0"></span>
<span v-show="scope.row.state==1"></span>
<span v-show="scope.row.state==2"></span>
<span v-show="scope.row.state==3"></span>
<span v-show="scope.row.state==4"></span>
<span v-show="scope.row.state==5"></span>
<span v-show="scope.row.state==null"></span>
</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="docType" label="类型" align="center" width="75">
<template slot-scope="scope">
<div>{{scope.row.docType=='card_use'?'疗程':scope.row.docType=='promotion_card_use'?'促销':scope.row.liftType==1?'升降级':'正常充值'}}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="docNum" show-overflow-tooltip label="单号" min-width="120"></el-table-column>
<el-table-column align="center" prop="docDate" show-overflow-tooltip label="日期" min-width="105"></el-table-column>
<el-table-column align="center" prop="memberName" label="会员名字" min-width="80"></el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="100"></el-table-column>
<el-table-column align="center" prop="tradeName" label="名称" min-width="120"></el-table-column>
<el-table-column align="center" prop="tradeMoney" 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="cancelMoney" label="取消欠款金额" min-width="110"></el-table-column>
<el-table-column align="center" prop="cancelNum" label="取消欠款次数" min-width="110"></el-table-column>
<el-table-column align="center" label="操作" width="150">
<template slot-scope="scope">
<el-button size="mini" type="primary" :disabled="!(scope.row.state==4||scope.row.state==2||scope.row.state==0)" plain @click="(cancelForm=scope.row,cancelDialogVisible=true,title='修改')"></el-button>
<el-button size="mini" type="primary" plain @click="del(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<!-- 分页组件 -->
<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>
</el-tab-pane>
</el-tabs>
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="cancelDialogVisible" width="650px" append-to-body>
<el-form label-width="120px" inline>
<div v-if="cancelForm.docType=='promotion_card_use'">
<el-form-item label="会员名称">
{{cancelForm.memberName}}
</el-form-item>
<el-form-item label="手机号码">
{{cancelForm.memberName}}
</el-form-item>
<el-form-item label="促销名称">
{{cancelForm.tradeName}}
</el-form-item>
<el-form-item label="成交金额">
<span class="text-red text-price">
{{cancelForm.tradeMoney}}
</span>
</el-form-item>
<el-form-item label="欠款金额">
<span class="text-cyan text-price">
{{cancelForm.debtMoney}}
</span>
</el-form-item>
<el-form-item label="取消欠款">
<span class="text-cyan text-price">
{{cancelForm.cancelMoney}}
</span>
</el-form-item>
<el-table :data="cancelForm.cancelDebtMxes" highlight-current-row tooltip-effect="dark">
<el-table-column prop="courseProjectNum" show-overflow-tooltip label="项目编码" align="center" min-width="80"></el-table-column>
<el-table-column prop="courseProjectName" show-overflow-tooltip label="项目名称" align="center" min-width="120"></el-table-column>
<el-table-column prop="price" show-overflow-tooltip label="欠款" align="center" min-width="80">
<el-table-column prop="debtMoney" show-overflow-tooltip label="金额" align="center" min-width="80"></el-table-column>
<el-table-column prop="debtCount" show-overflow-tooltip label="次数" align="center" min-width="80"></el-table-column>
</el-table-column>
<el-table-column prop="price" show-overflow-tooltip label="取消欠款" align="center" min-width="80">
<el-table-column prop="cancelMoney" show-overflow-tooltip label="金额" align="center" min-width="80">
<template slot-scope="scope">
<div @click.stop v-if="title=='修改'">
<div class="text-cyan" v-if="editCancelMIndex!=scope.$index" @click="openEditCancelM(scope.row,scope.$index,editCancelMIndex=scope.$index)">
{{scope.row.cancelMoney}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus type="number" class="form-input-width-xs" v-else @blur="endEditCancelM(scope.row,editCancelMIndex=-1)" v-model="scope.row.cancelMoney"></el-input>
</div>
<div v-else>{{scope.row.cancelMoney}}</div>
</template>
</el-table-column>
<el-table-column prop="cancelNum" show-overflow-tooltip label="次数" align="center" min-width="80">
<template slot-scope="scope">
<div @click.stop v-if="title=='修改'">
<div class="text-cyan" v-if="editCancelCIndex!=scope.$index" @click="openEditCancelC(scope.row,scope.$index,editCancelCIndex=scope.$index)">
{{scope.row.cancelNum}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus type="number" class="form-input-width-xs" v-else @blur="endEditCancelC(scope.row,editCancelCIndex=-1)" v-model="scope.row.cancelNum"></el-input>
</div>
<div v-else>{{scope.row.cancelNum}}</div>
</template>
</el-table-column>
</el-table-column>
</el-table>
</div>
<div v-else>
<el-form-item label="欠款帐户">
{{cancelForm.tradeName}}
</el-form-item>
<el-form-item label="成交金额">
<span class="text-red text-price">
{{cancelForm.tradeMoney}}
</span>
</el-form-item>
<el-form-item label="欠款金额">
<span class="text-cyan text-price">
{{cancelForm.debtMoney}}
</span>
</el-form-item>
<el-form-item label="取消欠款金额">
<el-input type="number" class="form-width-ms" v-model="cancelForm.cancelMoney"></el-input>
</el-form-item>
<el-form-item label="取消欠款次数" v-if="cancelForm.docType == 'card_use'">
<el-input pattern="[0-9]*\" type="number" class="form-width-ms" v-model="cancelForm.cancelNum"></el-input>
</el-form-item>
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="cancelDialogVisible = false"> </el-button>
<el-button size="mini" v-if="title=='修改'" type="primary" @click="confirmCancel()"> </el-button>
</span>
</el-dialog>
<!-- <el-dialog :close-on-click-modal="false" v-dialogDrag title="打印" :visible.sync="printDialogVisible" width="60%">
<div id="printService" class="printDiv">
<div class="text-center text-grey padding-xs">
还款记录单
</div>
<hr>
<el-form :model="printForm" :inline="true">
<el-form-item label="">
<div class="span" style="wdith:120px">{{printForm.storeName}}</div>
</el-form-item>
<el-form-item label="">
{{printForm.repayDate}}
</el-form-item><br>
<el-form-item label="还款单号:">
{{printForm.repayNum}}
</el-form-item><br>
<el-form-item label="会员信息:">
<div>{{printForm.memberName}} / {{printForm.mobilePhone}}</div>
</el-form-item><br>
<el-form-item label="欠款金额:">
<div style="width:50px">{{printForm.debtMoney}}</div>
</el-form-item>
<el-form-item label="还款金额:">
<div>{{printForm.payMoney}}</div>
</el-form-item>
<div v-for="(item,index) in printForm.repayTradeLists" :key="index">
<el-form-item label="帐户名称:">
<div>
<span class="text-bold">
{{item.tradeName}}
</span>
<span class="text-cyan">
还款:
{{item.repayMoney}}
</span>
</div>
</el-form-item>
</div>
<br>
<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>
</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="'#printService'"> </el-button>
</span>
</el-dialog> -->
<el-dialog title="导入表格" :visible.sync="infoDialog" :close-on-click-modal='false'>
<excel @fileData='fileData' @infoDialogV='infoDialogV'></excel>
</el-dialog>
<detail ref="detail" @detailData="detailData"></detail>
</div>
</template>
<script>
import {
repayPage,
repayCancel,
repayEditStaff,
selectOne,
cancelDebtList,
editCancelDebtList,
auditCancelDebtList,
theauditCancelDebtList,
deleteCancelDebtList,
recycleCancelDebtList,
submitCancelDebtList,
} from "@/api/eashier.js";
import { organizations } from "@/api/storeManage.js";
import excel from "@/components/excel";
import admin from "@/components/staffList/admin/index";
import manager from "@/components/staffList/manager/index";
import staffsles from "@/components/staffList/staff/index";
import detail from "./components/index";
import selec from "@/components/store/select/index";
export default {
components: {
staffsles,
manager,
admin,
excel,
detail,
selec,
},
data() {
return {
headOffice: sessionStorage.getItem("headOffice") * 1,
printDialogVisible: false, //
detailDialogVisible: false,
cancelDialogVisible: false,
editStaffDialog: false,
radiostaffvalue: "",
radiostaffvalueList: {},
activeName: "取消欠款",
radioValue: null,
radioList: {},
options: [],
editIndex: -1,
title: "",
pageNum: 1, //
pageSize: 10, // ,
printForm: {
repayDate: "",
recharge: "",
repayNum: null,
storeId: "",
memberName: "",
mobilePhone: null,
money: null,
backMoney: null,
numMoney: null,
numMoneys: null,
telephone: "",
printDate: new Date(),
},
editForm: {},
billsList: [],
form: {}, //
repayTradeLists: [],
staffValue: "",
entities: [],
list: [], //
index: -1,
total: 0, //
cancelForm: {},
queryForm: {
//
pageNum: 1,
pageSize: 10,
},
infoDialog: false, //
editCancelCIndex: -1,
editCancelMIndex: -1,
};
},
methods: {
confirms(row) {
this.cancelForm = row;
this.cancelDialogVisible = true;
this.title = "明细";
},
openEditCancelM(row, index) {},
endEditCancelM(row) {
if (row.cancelMoney * 1 > row.debtMoney) {
this.$message.waring({ message: "最高可以取消" + row.debtMoney });
row.cancelMoney = row.debtMoney;
} else {
this.sumMoney();
}
},
openEditCancelC(row, index) {
let form = { ...row };
},
endEditCancelC(row) {
if (row.cancelNum * 1 > row.debtCount) {
this.$message.waring({ message: "最高可以取消" + row.debtCount });
row.cancelNum = row.debtCount;
} else {
this.sumMoney();
}
},
sumMoney() {
let money = 0;
let form = { ...this.cancelForm };
this.cancelForm.cancelDebtMxes.forEach((item) => {
money += item.cancelMoney * 1;
});
form.cancelMoney = money.toFixed(2) * 1;
this.cancelForm = JSON.parse(JSON.stringify(form));
},
//
detailData(v) {
this.getData();
},
del(row) {
deleteCancelDebtList({ id: row.id }).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "删除成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
confirmCancel() {
editCancelDebtList(this.cancelForm).then((res) => {
if (res.code == "000000") {
this.cancelDialogVisible = false;
this.$message.success({ message: "修改成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
editOrder(number) {
if (number == 3) {
let form = { id: this.radioList.id, state: number };
auditCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "审核成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
if (number == 4) {
let form = { id: this.radioList.id, state: number };
theauditCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "反审核成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
if (number == 1) {
let form = { id: this.radioList.id, state: number };
submitCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "操作成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
if (number == 2) {
let form = { id: this.radioList.id, state: number };
recycleCancelDebtList(form).then((res) => {
if (res.code == "000000") {
this.$message.success({ message: "操作成功!" });
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
},
clickRow(row) {
this.radioValue = row.id;
this.radioList = row;
},
//
handleClick(tab, event) {
console.log(tab, event);
this.activeName = tab.name;
this.getData();
if (this.headOffice == 1) {
this.$nextTick(() => {
this.$refs.selec.show();
});
}
},
//
fileData(v) {
//console.log(v);
},
//
infoDialogV(v) {
this.infoDialog = v;
},
//
exit() {},
eidtStaff(index) {
this.index = index;
},
//
rowClick(row) {
this.radiostaffvalue = row.id;
this.radiostaffvalueList = row;
},
detailEditStaff(row) {
this.$refs.detail.show(row);
},
//
detail(row) {
this.$refs.detail.show(row);
},
//
print(row) {
//console.log(row);
this.printForm = row;
this.printForm.printDate = new Date();
this.printForm.telephone = JSON.parse(
sessionStorage.getItem("storeInfo")
).telephone;
},
//
cancel(row) {
this.$confirm("确定作废, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
cancelButtonClass: "cancelbtnFalses",
confirmButtonClass: "confirmbtnFalses",
})
.then(() => {
row.repayTradeLists.forEach((item) => {
delete item.entities;
delete item.achievementAmount;
delete item.cardCommissionAmount;
delete item.cardAchievementAmount;
delete item.commissionAmount;
delete item.repayDate;
});
delete row.payLists;
//console.log(row);
repayCancel(row).then((res) => {
//console.log(res);
if (res.code == "000000") {
this.getData();
this.$message.success({ message: res.message });
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
})
.catch(() => {
this.$message.info({ message: "已取消操作!" });
});
},
selecData(v) {
this.queryForm.storeList = v;
this.getData();
},
//
async getData() {
if (this.activeName == "还款单") {
if (this.headOffice == 1) {
setTimeout(() => {
console.log(this.$refs.selec);
this.$nextTick(() => {
this.$refs.selec.show();
});
}, 800);
}
repayPage(this.queryForm).then((res) => {
if (res.code == "000000") {
this.billsList = res.pageInfo.list;
this.total = res.pageInfo.total;
} else {
this.$alert(res.message, "加载还款列表", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
} else {
cancelDebtList(this.queryForm).then((res) => {
if (res.code == "000000") {
this.list = res.pageInfo.list;
this.total = res.pageInfo.total;
} else {
this.$alert(res.message, "加载取消还款列表", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
},
//
handleSizeChange(val) {
this.queryForm.pageSize = val;
this.getData();
},
handleCurrentChange(val) {
this.queryForm.pageNum = val;
this.getData();
},
//
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 == "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;
},
},
created() {
let list = JSON.parse(sessionStorage.getItem("list"));
list.forEach((item) => {
if (item.id == 5008001) {
this.getData();
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
});
},
};
</script>
<style>
.repayment {
padding: 10px;
overflow: auto;
margin-left: 10px;
}
.dialogDiv .el-radio__label {
display: none;
}
.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: 230px;
margin: 0 auto;
}
.editstaffdiv {
width: 120px;
}
.editStaffDialogDiv .el-radio__label {
display: none;
}
</style>

@ -55,7 +55,7 @@
<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>
</el-tab-pane>
<el-tab-pane label="取消欠款" name="取消欠款">
<!-- <el-tab-pane label="取消欠款" name="取消欠款">
<selec v-if="headOffice == 1" ref="selec" @selecData="selecData"></selec>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="queryForm.memberName" placeholder="输入要查询的会员名字" clearable></el-input>
@ -105,13 +105,13 @@
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<div class="block" style="margin-top:15px;"> -->
<!-- 分页组件 -->
<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>
<!-- <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>
</el-tab-pane>
</el-tab-pane> -->
</el-tabs>
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="cancelDialogVisible" width="650px" append-to-body>
<!-- <el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="cancelDialogVisible" width="650px" append-to-body>
<el-form label-width="120px" inline>
<div v-if="cancelForm.docType=='promotion_card_use'">
<el-form-item label="会员名称">
@ -199,7 +199,7 @@
<el-button size="mini" type="primary" plain @click="cancelDialogVisible = false"> </el-button>
<el-button size="mini" v-if="title=='修改'" type="primary" @click="confirmCancel()"> </el-button>
</span>
</el-dialog>
</el-dialog> -->
<el-dialog :close-on-click-modal="false" v-dialogDrag title="打印" :visible.sync="printDialogVisible" width="60%">
<div id="printService" class="printDiv">

@ -2,65 +2,58 @@
<!-- 负卡金 -->
<div>
<div>
<el-button size="mini" type="primary" @click="refresh"></el-button>
<el-button size="mini" type="primary" @click="refresh" style="margin-left: 95%;">刷新</el-button>
</div>
<br>
<el-table :data="tableDate" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column align="center" prop="" label="类别">
<template slot-scope="scope">
<div v-show="scope.row.type==1"></div>
<div v-show="scope.row.type==2"></div>
</template>
</el-table-column>
<el-table-column align="center" prop="startMoney" label="期初" min-width="150"></el-table-column>
<el-table-column align="center" label="收入">
<template slot-scope="scope">
<div v-show="scope.row.type==1">{{scope.row.rechargeMoney}}</div>
<div v-show="scope.row.type==2">{{scope.row.courseMoney}}</div>
</template>
</el-table-column>
<el-table-column align="center" label="还款">
<template slot-scope="scope">
<div v-show="scope.row.type==1">{{scope.row.recRepayMoney}}</div>
<div v-show="scope.row.type==2">{{scope.row.courseRepayMoney}}</div>
</template>
</el-table-column>
<el-table-column align="center" label="服务">
<template slot-scope="scope">
<div v-show="scope.row.type==1">{{scope.row.recStoreCashMoney}}</div>
<div v-show="scope.row.type==2">{{scope.row.courseStoreCashMoney}}</div>
</template>
</el-table-column>
<el-table-column align="center" label="退款">
<template slot-scope="scope">
<div v-show="scope.row.type==1">{{scope.row.recRefundMoney}}</div>
<div v-show="scope.row.type==2">{{scope.row.courseRefundMoney}}</div>
</template>
</el-table-column>
<el-table-column align="center" label="购疗程">
<template slot-scope="scope">
<div v-show="scope.row.type==1">{{scope.row.cardToCourseMoney}}</div>
<div v-show="scope.row.type==2">{{scope.row.courseToCardMoney}}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="endMoney" label="结存"></el-table-column>
</el-table>
<div class="div_content">
<div style="width: 48%; margin-left: 2%;">
<el-table :data="tableDate" show-summary :summary-method="getSummaries"
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }"
style="margin-bottom: 10%;">
<el-table-column align="center" label="充值">
<el-table-column align="center" prop="type" label="类别">
</el-table-column>
<el-table-column align="center" prop="beginning" label="期初" min-width="50"></el-table-column>
<el-table-column align="center" prop="earnings" label="收入" min-width="50"></el-table-column>
<el-table-column align="center" prop="expenditure" label="支出" min-width="50"></el-table-column>
<el-table-column align="center" prop="balance" label="结存" min-width="50"></el-table-column>
</el-table-column>
</el-table>
</div>
<div style="width: 48%; margin-left: 2%;">
<el-table :data="tableDate1" show-summary :summary-method="getSummaries"
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }"
style="margin-bottom: 10%;">
<el-table-column align="center" label="疗程">
<el-table-column align="center" prop="type" label="类别"></el-table-column>
<el-table-column align="center" prop="beginning" label="期初" min-width="50"></el-table-column>
<el-table-column align="center" prop="earnings" label="收入" min-width="50"></el-table-column>
<el-table-column align="center" prop="expenditure" label="支出" min-width="50"></el-table-column>
<el-table-column align="center" prop="balance" label="结存" min-width="50"></el-table-column>
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
<script>
import { partten } from "../../../../partten/index";
import { dayStatistic } from "../../../api/statistics.js";
import { dayStatisticRecharge, dayStatisticTreatment } from "../../../api/statistics.js";
export default {
data() {
return {
tableDate: [],
tableDate1: [],
};
},
methods: {
dayStatistic() {
dayStatistic({ date: partten.dayStatisticDate }).then((res) => {
dayStatisticRecharge() {
dayStatisticRecharge({ date: partten.dayStatisticDate }).then((res) => {
if (res.code == "000000") {
this.tableDate = res.rows;
} else {
@ -69,34 +62,88 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
},
refresh() {
dayStatistic({ date: partten.dayStatisticDate }).then((res) => {
console.log(res);
dayStatisticTreatment() {
dayStatisticTreatment({ date: partten.dayStatisticDate }).then((res) => {
if (res.code == "000000") {
this.tableDate = res.rows;
this.$message.success({ message: "已刷新最新数据 !" });
this.tableDate1 = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
},
refresh() {
// dayStatistic({ date: partten.dayStatisticDate }).then((res) => {
// console.log(res);
// if (res.code == "000000") {
// this.tableDate = res.rows;
// this.$message.success({ message: " !" });
// } else {
// this.$alert(res.message, "", {
// confirmButtonText: "",
// confirmButtonClass: "confirmbtnFalses",
// type: "warning",
// center: true,
// callback: (action) => { },
// });
// }
// });
this.dayStatisticTreatment();
this.dayStatisticRecharge();
},
},
created() {
this.dayStatistic();
this.dayStatisticTreatment();
this.dayStatisticRecharge();
},
//
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 (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += ' 元';
} else {
sums[index] = 'N/A';
}
});
return sums;
}
};
</script>
<style>
.div_content {
display: flex;
width: 100%;
}
</style>

@ -22,8 +22,7 @@
</el-tab-pane>
<el-tab-pane label="启用中" name="2">
</el-tab-pane>
<el-tab-pane label="转门店" name="3" v-if="headOffice==1">
</el-tab-pane>
</el-tabs>
<el-table v-if="activeName*1<3" :data="tableData" stripe style="width: 100%" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column label="会员" align="center">

@ -0,0 +1,245 @@
<template>
<el-dialog :close-on-click-modal="false" :title="title" :visible.sync="dialogFormVisible" width="80%" v-dialogDrag>
<el-form :model="form" inline ref="form" class="max-height-60" label-width="80px">
<el-form-item label="转出门店">
<el-select class="form-width-m" filterable default-first-option clearable v-model="form.storesNum" placeholder="请选择" @change="changeOut">
<el-option v-for="(item,index) in options" :key="index" :label="item.storeNum" :value="item.storeNum">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="门店名称">
<div class="form-width-m">
{{form.storesName}}
</div>
</el-form-item>
<el-form-item label="手机号码">
<el-input class="form-width-ms" style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" :maxlength="11" v-model="form.mobilePhone" @blur="query" @change="query">
<el-button size="mini" slot="append" icon="el-icon-search" @click="openMember"></el-button>
</el-input>
</el-form-item>
<el-form-item label="会员名字">
{{form.memberName}}
</el-form-item>
<el-table :data="list" max-height="600" ref="list" v-loading="listLoading" :element-loading-text="elementLoadingText" @row-click="getCurrentRow" :row-class-name="rowName" @selection-change="handleSelectionChange" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column align="center" prop="courseProjectNum" label="项目编码" sortable min-width="80"></el-table-column>
<el-table-column align="center" prop="courseProjectName" label="项目名称" sortable min-width="80"></el-table-column>
<el-table-column align="center" prop="price" label="项目单价" sortable min-width="80"></el-table-column>
<el-table-column align="center" prop="courseRestCount" label="剩余次数" sortable min-width="80"></el-table-column>
<el-table-column align="center" prop="courseRestPrice" label="剩余金额" sortable min-width="80"></el-table-column>
<el-table-column align="center" prop="courseConsumeCount" label="可用次数" sortable min-width="80"></el-table-column>
<el-table-column align="center" prop="courseConsumePrice" label="可用金额" sortable min-width="80"></el-table-column>
<el-table-column align="center" label="转入门店">
<el-table-column align="center" prop="storeNum" label="编码" min-width="80"></el-table-column>
<el-table-column align="center" prop="storeName" label="名称" min-width="180">
<template slot-scope="scope">
<el-select filterable default-first-option clearable @clear='clear(scope.row)' v-model="scope.row.storeName" @change="changeIn($event,scope.row)" placeholder="请选择">
<el-option v-for="(item,index) in storeList" :key="index" :label="item.storeName" :value="item.storeName">
</el-option>
</el-select>
</template>
</el-table-column>
</el-table-column>
</el-table>
</el-form>
<member ref="member" @memberData="memberData"></member>
<div slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" @click="dialogFormVisible = false"> </el-button>
<el-button size="mini" type="primary" @click="confirm()"> </el-button>
</div>
</el-dialog>
</template>
<script>
import {
addStoreTurnTreatment,
staffPage,
organizations,
} from "@/api/storeManage.js";
import { storeMemberOne, couAccountList } from "@/api/eashier.js";
import member from "@/components/member/index";
export default {
components: { member },
data() {
return {
dialogFormVisible: false, //
listLoading: false, //list
elementLoadingText: "加载中...", //list
title: "", //
form: {}, //
list: [], //
selection: [], //
queryForm: {
pageNum: 1,
pageSize: 10,
},
options: [], //
storeList: [], //
};
},
methods: {
//
changeOut(e) {
this.options.forEach((item) => {
if (item.storeNum == e) {
this.form.storesName = item.storeName;
this.form.storesId = item.id;
}
});
this.getData();
},
//
changeIn(e, row) {
let form = { ...row };
this.storeList.forEach((item) => {
if (item.storeName == e) {
form.storeName = item.storeName;
form.storeId = item.id;
form.storeNum = item.storeNum;
}
});
this.list.splice(row.index, 1, form);
this.getCurrentRow(row);
this.$nextTick(() => {
this.$refs["list"].toggleRowSelection(this.list[row.index], true);
});
console.log(this.selection);
},
//
clear(row) {
this.$nextTick(() => {
this.$refs["list"].toggleRowSelection(this.list[row.index], false);
});
},
//
openMember() {
this.$refs.member.show();
},
//
memberData(v) {
this.form.mobilePhone = v.mobilePhone;
this.query();
},
//
query() {
storeMemberOne({
mobilePhone: this.form.mobilePhone,
storeId: sessionStorage.getItem("parentId"),
}).then((res) => {
if (res.code == "000000") {
this.form.memberId = res.data.id;
this.form.memberNum = res.data.memberNum;
this.form.memberName = res.data.memberName;
this.form.mobilePhone = res.data.mobilePhone;
this.getCourse();
} else {
this.$alert(res.message, "查询会员", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
getCourse() {
var ids = {
memberId: this.form.memberId,
storeId: this.form.storesId,
};
couAccountList(ids).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.storeNum = null;
item.storeName = null;
item.courseAccountId = item.id;
});
this.list = res.rows;
} else {
this.$alert(res.message, "查询会员疗程", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
getCurrentRow(row) {
this.$refs["list"].toggleRowSelection(row);
},
//
rowName({ row, rowIndex }) {
row.index = rowIndex;
},
//
handleSelectionChange(selection) {
this.selection = selection;
},
//
show(row) {
this.title = "员工转出门店";
this.dialogFormVisible = true;
this.getData();
},
//
async getData() {
let parentId = JSON.parse(sessionStorage.getItem("storeInfo")).id;
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
let list = [];
res.rows.forEach((item) => {
if (this.form.storesNum != item.storeNum) {
list.push(item);
}
});
this.options = res.rows;
this.storeList = list;
} else {
this.$alert(res.message, "获取门店信息", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
confirm() {
this.selection.forEach((item) => {
item.storesId = this.form.storesId;
item.storesName = this.form.storesName;
item.storesNum = this.form.storesNum;
item.memberId = this.form.memberId;
item.memberNum = this.form.memberNum;
item.memberName = this.form.memberName;
item.mobilePhone = this.form.mobilePhone;
});
addStoreTurnTreatment(this.selection).then((res) => {
if (res.code == "000000") {
this.dialogFormVisible = false;
this.$emit("editData");
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
},
};
</script>
<style>
</style>

@ -0,0 +1,187 @@
<template>
<!-- 停用 -->
<div class="displsy-mod">
<el-button size="mini" @click="edit" type="primary">疗程转门店</el-button>
<el-button size="mini" @click="quers" type="primary">批量确认</el-button>
<el-table class="margin-top-xs" :data="list" ref="list" v-loading="listLoading" max-height="600" :element-loading-text="elementLoadingText" @row-click="getCurrentRow" :row-class-name="rowName" @selection-change="handleSelectionChange" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column align="center" prop="job" label="状态" width="80">
<template slot-scope="scope">
<el-tag :type="scope.row.statu==2?'success':'primary'">
{{scope.row.statu==2?'已通过':'新增'}}
</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="转出门店">
<el-table-column align="center" prop="storesNum" label="编码" min-width="100"></el-table-column>
<el-table-column align="center" prop="storesName" label="名称" min-width="100"></el-table-column>
</el-table-column>
<el-table-column align="center" label="转入门店">
<el-table-column align="center" prop="storeNum" label="编码" min-width="100"></el-table-column>
<el-table-column align="center" prop="storeName" label="名称" min-width="100"></el-table-column>
</el-table-column>
<el-table-column align="center" label="会员信息">
<el-table-column align="center" prop="memberNum" label="编码" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="memberName" label="名字" sortable min-width="100"></el-table-column>
</el-table-column>
<el-table-column align="center" label="疗程">
<el-table-column align="center" prop="courseProjectNum" label="编码" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="courseProjectName" label="名称" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="courseRestCount" label="剩余次数" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="courseRestPrice" label="剩余金额" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="courseConsumeCount" label="可用次数" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="courseConsumePrice" label="可用金额" sortable min-width="100"></el-table-column>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="80">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="quer(scope.row)" plain>确认</el-button>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<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>
<edit ref="edit" @editData="getData"></edit>
</div>
</template>
<script>
import edit from "./components/edit.vue";
import {
editStateStoreTurnTreatment,
storeTurnTreatmentPage,
} from "@/api/storeManage.js";
export default {
components: { edit },
data() {
return {
dialogFormVisible: false,
listLoading: false, //list
elementLoadingText: "加载中...",
list: [], //
queryForm: {
pageSize: 10,
pageNum: 1,
},
total: 0, //
};
},
methods: {
//
show() {
},
edit() {
this.$refs.edit.show();
},
//
getCurrentRow(row) {
this.$refs["list"].toggleRowSelection(row);
},
//
rowName({ row, rowIndex }) {
row.index = rowIndex;
},
//
handleSelectionChange(selection) {
this.selection = selection;
},
//
quer(row) {
let list = [row.id];
let form = { statu: 2, ids: list };
this.confirm(form);
},
//
quers() {
let list = [];
this.selection.forEach((item) => {
list.push(item.id);
});
let form = { statu: 2, ids: list };
this.confirm(form);
},
//
confirm(form) {
editStateStoreTurnTreatment(form).then((res) => {
if (res.code == "000000") {
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
handleSizeChange(val) {
// console.log(` ${val} `);
this.queryForm.pageSize = val;
this.getData();
},
handleCurrentChange(val) {
// console.log(`: ${val}`);
this.queryForm.pageNum = val;
this.getData();
},
//
async getData() {
storeTurnTreatmentPage(this.queryForm).then((res) => {
if (res.code == "000000") {
this.list = res.pageInfo.list;
this.total = res.pageInfo.total;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
},
created(){
this.getData();
}
};
</script>
<style scoped>
.el-input {
width: 200px;
}
.el-col {
border-radius: 4px;
box-shadow: 5px 5px 5px #717070;
margin: 0 30px;
width: 360px;
}
.bg-purple {
background: #d3dce6;
}
.bg-purple-light {
background: #d3dce6;
}
.grid-content {
border-radius: 4px;
min-height: 36px;
padding: 10px;
}
.row-bg {
padding: 10px 0;
background-color: #d3dce6;
}
.examineForm .el-form-item {
height: 30px;
}
</style>

@ -412,6 +412,16 @@ const router = new VueRouter({
index: "repayment"
}
},
//取消欠款
{
path: "/noarrears",
component: () => import("../pages/eashier/noArrears/repayment.vue"),
meta: {
title: "取消欠款",
index: "noarrears"
}
},
//异常单 errorOrder
{
path: "/errorOrder",
@ -770,6 +780,15 @@ const router = new VueRouter({
index: "transfer"
}
},
{
path: "/transferstore",
component: () => import("../pages/storeManage/transferStore/index"), //会员转门店
meta: {
title: "会员转门店",
index: "transferstore"
}
},
{
path: "/contribution",
component: () => import("../pages/statistics/contribution/index"),

Loading…
Cancel
Save