Wangxubin 4 years ago
commit 84388da3b0

@ -26,13 +26,14 @@ module.exports = {
assetsPublicPath: "/",
proxyTable: {
"/api": {
target: "http://192.168.31.127:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
target: "http://192.168.31.209:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
// target: "http://139.9.185.131:8098/", //设置你调用的接口域名和端口号 别忘了加http 天懿达正式
// target: "http://139.9.58.205:8084/", //设置你调用的接口域名和端口号 别忘了加http 天懿达正式华为云
// target: "http://139.9.185.131:9094/", //设置你调用的接口域名和端口号 别忘了加http 盛联
// target: "http://139.9.185.131:8084/", //设置你调用的接口域名和端口号 别忘了加http 天懿达正式
// target: "http://192.168.31.201:8084/", //设置你调用的接口域名和端口号 别忘了加http 天懿达线上
// target: "http://192.168.31.209:8084/", //设置你调用的接口域名和端口号 别忘了加http 天懿达线上
target: "https://www.decaisoft.com/preferential", //设置你调用的接口域名和端口号 别忘了加http 天懿达线上
// target: 'http://124.71.99.140:8084/', //设置你调用的接口域名和端口号 别忘了加http 线上
// target: 'http://124.71.99.140:8081/', //设置你调用的接口域名和端口号 别忘了加http 测试
// target: 'https://www.decaisoft.com:8088/', //设置你调用的接口域名和端口号 别忘了加http 测试
@ -44,7 +45,7 @@ module.exports = {
}
},
// Various Dev Server settingsss
host: "192.168.31.193", // can be overwritten by process.env.HOST
host: "192.168.31.194", // can be overwritten by process.env.HOST
port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
@ -74,12 +75,10 @@ module.exports = {
events: {
onEnd: {
delete: ["./dist.rar"],
archive: [
{
source: path.join(__dirname, "./dist"),
destination: path.join(__dirname, "./dist.rar")
}
]
archive: [{
source: path.join(__dirname, "./dist"),
destination: path.join(__dirname, "./dist.rar")
}]
}
}
})

@ -1,6 +1,7 @@
'use strict'
module.exports = {
NODE_ENV: '"production"',
// baseURL:'https://zhuangcy.top:8000/api'
baseURL:'https://www.decaisoft.com:8088/api'
}
'use strict'
module.exports = {
NODE_ENV: '"production"',
// baseURL:'https://zhuangcy.top:8000/api'
// baseURL:'https://www.decaisoft.com:8088/api'
baseURL: 'https://www.decaisoft.com/preferential'
}

@ -0,0 +1,11 @@
{
"folders": [
{
"path": ".."
},
{
"path": "..\\..\\..\\平台管理\\platform"
}
],
"settings": {}
}

Binary file not shown.

@ -464,6 +464,13 @@ export function storeMemberpage(params) {
data: params
});
}
export function storeMemberpages(params) {
return service({
url: "/api" + "/demay/ssm/storeMember/selectListNew",
method: "post",
data: params
});
}
export function pageassign(params) {
return service({
url: "/api" + "/demay/ssm/storeMember/pageassign",

@ -164,6 +164,8 @@ import {
addCancelDebtList,
couAccountList,
recAccountCashList,
selectListType,
QuerCompetent,
} from "@/api/eashier.js";
import cancel from "./components/cancel.vue";
import admin from "@/components/staffList/admin/index";
@ -406,6 +408,64 @@ export default {
//
async getData() {
this.getPage();
//
selectList({ id: "" }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.brandNumber + "-" + item.staffName;
delete item.state;
item.ratio = 100;
});
this.options = Array.from(new Set(res.rows));
} else {
this.$alert(res.message, "加载员工列表", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
//
selectListType({ type: 0 }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.brandNumber + "-" + item.staffName;
item.ratio = 100;
delete item.state;
});
this.adminOptions = res.rows;
} else {
this.$alert(res.message, "加载员工提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
//
QuerCompetent({ type: 0, pageSize: 999 }).then((res) => {
if (res.code == "000000") {
res.pageInfo.list.forEach((item) => {
item.label = item.brandNumber + "-" + item.staffName;
item.ratio = 100;
delete item.state;
});
this.managerOptions = res.pageInfo.list;
} else {
this.$alert(res.message, "加载高管提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
//
ctlist({ id: "" }).then((res) => {
if (res.code == "000000") {

@ -15,7 +15,7 @@
{{ scope.row.ratio }}
<i class="el-icon-edit text-cyan" v-if="scope.$index!=0"></i>
</div>
<el-input v-focus class="form-input-width-xs" size="samll" type="number" v-else v-model="scope.row.ratio" @blur="endStaffRatio(scope.row, scope.$index)"></el-input>
<el-input v-focus class="form-input-width-xs" size="samll" type="number" v-else v-model="scope.row.ratio" @blur="endStaffRatio(scope.row, scope.$index)" :disabled="scope.$index==0"></el-input>
</template>
</el-table-column>
</el-table>
@ -35,6 +35,7 @@ export default {
editIndex: -1, //
staffListCopy: [], //
storeId: null, //id
nums:'',
};
},
methods: {
@ -48,6 +49,7 @@ export default {
num += item.ratio * 1;
}
});
this.nuns=this.staffLists[0].ratio
this.staffLists[0].ratio = 100 - num;
},
//
@ -91,26 +93,73 @@ export default {
//
endStaffRatio(row, index) {
if (index != 0) {
this.setRatio();
this.setRatio();
if (this.staffLists[0].ratio < 1) {
this.$message.error({
message: "第一位员工占比过低",
});
this.staffLists.forEach((item) => {
if (item.ratio > 100) {
if (item.ratio >= this.nums) {
item.ratio = 0;
}
});
} else {
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
console.l
}
this.staffLists[0].ratio = 100 - number
});
} else if (this.staffLists[0].ratio > 100) {
this.$message.error({
message: "第一位员工占比过高",
});
this.staffLists.forEach((item) => {
if (item.ratio < 0) {
item.ratio = 0;
}
});
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
console.l
}
this.staffLists[0].ratio = 100 - number
});
}
else {
if (!row.ratio) {
row.ratio = 0;
} else {
row.ratio = row.ratio * 1;
if (row.ratio < 0) {
// this.staffLists.forEach((item, index) => {
this.$message.error({
message: "输入不能小于0",
});
row.ratio = 0;
// });
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
this.staffLists[0].ratio = 100 - number
});
} else {
row.ratio = row.ratio * 1;
}
}
let form = this.staffLists[index];
this.editIndex = -1;
this.staffLists.splice(index, 1, form);
}
this.editIndex = -1;
}
this.confirm();
this.changeStaff();

@ -3,25 +3,32 @@
<el-table :data="staffLists" max-height="300" class="margin-xs" style="width:280px">
<el-table-column align="left" prop="brandNumber" label="水牌号--高管名字" min-width="180">
<template slot-scope="scope">
<el-select style="width:180px" v-model="scope.row.staffNames" clearable @clear="clear(scope.$index)" no-match-text="" placeholder="请选择" @change="ratioChange($event,scope.$index)" filterable default-first-option>
<el-option v-for="(item,index) in staffList" :key="index" :label="item.brandNumber+'--'+ item.staffName" :value="item.id">
<el-select style="width:180px" v-model="scope.row.staffNames" clearable @clear="clear(scope.$index)"
no-match-text="重新选择高管" placeholder="请选择" @change="ratioChange($event, scope.$index)" filterable
default-first-option>
<el-option v-for="(item, index) in staffList" :key="index" :label="item.brandNumber + '--' + item.staffName"
:value="item.id">
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" prop="ratio" label="占比(%)" width="80">
<template slot-scope="scope">
<div class="form-input-width" v-if="editIndex!=scope.$index" @click="openStaffRatio(scope.$index, scope.row)">
<div class="form-input-width" v-if="editIndex != scope.$index"
@click="openStaffRatio(scope.$index, scope.row)">
{{ scope.row.ratio }}
<i class="el-icon-edit text-cyan" v-if="scope.$index!=0"></i>
<i class="el-icon-edit text-cyan" v-if="scope.$index != 0"></i>
</div>
<el-input v-focus class="form-input-width-xs" size="samll" type="number" v-else v-model="scope.row.ratio" @blur="endStaffRatio(scope.row, scope.$index)"></el-input>
<el-input v-focus class="form-input-width-xs" size="samll" type="number" v-else v-model="scope.row.ratio"
@blur="endStaffRatio(scope.row, scope.$index)" :disabled="scope.$index == 0"></el-input>
</template>
</el-table-column>
</el-table>
<div style="width: 150px;margin:10px auto;" class="flex justify-between align-center">
<el-button size="mini" type="info" :disabled="staffLists.length == 0" @click="delsalesman"></el-button>
<el-button size="mini" type="primary" plain @click="(staffLists.push({brandNumber:'',staffName:'',ratio:0}))"></el-button>
<el-button size="mini" type="primary" plain
@click="(staffLists.push({ brandNumber: '', staffName: '', ratio: 0 }))">增加
</el-button>
</div>
</div>
</template>
@ -34,6 +41,7 @@ export default {
staffLists: [{ ratio: 100 }], // //
editIndex: -1, //
staffListCopy: [], //
nums:"",
};
},
methods: {
@ -47,6 +55,7 @@ export default {
num += item.ratio * 1;
}
});
this.nums=this.staffLists[0].ratio;
this.staffLists[0].ratio = 100 - num;
},
//
@ -93,18 +102,60 @@ export default {
this.setRatio();
if (this.staffLists[0].ratio < 1) {
this.$message.error({
message: "第一位占比过低",
message: "第一位员工占比过低",
});
this.staffLists.forEach((item) => {
if (item.ratio > 100) {
if (item.ratio >= this.nums) {
item.ratio = 0;
}
});
} else {
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
});
this.staffLists[0].ratio = 100 - number
} else if (this.staffLists[0].ratio > 100) {
this.$message.error({
message: "第一位员工占比过高",
});
this.staffLists.forEach((item) => {
if (item.ratio < 0) {
item.ratio = 0;
}
});
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
});
this.staffLists[0].ratio = 100 - number
}
else {
if (!row.ratio) {
row.ratio = 0;
} else {
row.ratio = row.ratio * 1;
if (row.ratio < 0) {
// this.staffLists.forEach((item, index) => {
this.$message.error({
message: "输入不能小于0",
});
row.ratio = 0;
// });
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
this.staffLists[0].ratio = 100 - number
});
} else {
row.ratio = row.ratio * 1;
}
}
let form = this.staffLists[index];
this.editIndex = -1;
@ -199,7 +250,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});

@ -3,25 +3,31 @@
<el-table :data="staffLists" max-height="300" class="margin-xs" style="width:280px" :row-class-name="rowClassName">
<el-table-column align="left" prop="brandNumber" label="水牌号--员工名字" min-width="180">
<template slot-scope="scope">
<el-select style="width:180px" v-model="scope.row.staffNames" clearable @clear="clear(scope.$index)" no-match-text="" placeholder="请选择" @change="ratioChange($event,scope.$index)" filterable default-first-option>
<el-option v-for="(item,index) in staffList" :key="index" :label="item.brandNumber+'--'+ item.staffName" :value="item.id">
<el-select style="width:180px" v-model="scope.row.staffNames" clearable @clear="clear(scope.$index)"
no-match-text="重新选择员工" placeholder="请选择" @change="ratioChange($event, scope.$index)" filterable
default-first-option>
<el-option v-for="(item, index) in staffList" :key="index" :label="item.brandNumber + '--' + item.staffName"
:value="item.id">
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" prop="ratio" label="占比(%)" width="80">
<template slot-scope="scope">
<div class="form-input-width" v-if="editIndex!=scope.$index" @click="openStaffRatio(scope.$index, scope.row)">
<div class="form-input-width" v-if="editIndex != scope.$index"
@click="openStaffRatio(scope.$index, scope.row)">
{{ scope.row.ratio }}
<i class="el-icon-edit text-cyan" v-if="scope.$index!=0"></i>
<i class="el-icon-edit text-cyan" v-if="scope.$index != 0"></i>
</div>
<el-input v-focus class="form-input-width-xs" size="samll" type="number" v-else v-model="scope.row.ratio" @blur="endStaffRatio(scope.row, scope.$index)" ></el-input>
<el-input v-focus class="form-input-width-xs" size="samll" type="number" v-else v-model="scope.row.ratio" @blur="endStaffRatio(scope.row, scope.$index)"></el-input>
</template>
</el-table-column>
</el-table>
<div style="width: 150px;margin:10px auto;" class="flex justify-between align-center">
<el-button size="mini" type="info" :disabled="staffLists.length == 0" @click="delsalesman"></el-button>
<el-button size="mini" type="primary" plain @click="(staffLists.push({brandNumber:'',staffName:'',ratio:0}))"></el-button>
<el-button size="mini" type="primary" plain
@click="(staffLists.push({ brandNumber: '', staffName: '', ratio: 0 }))">增加
</el-button>
</div>
</div>
</template>
@ -36,6 +42,7 @@ export default {
editIndex: -1, //
staffListCopy: [], //
storeId: null, //id
nums:"",
};
},
methods: {
@ -73,6 +80,7 @@ export default {
num += item.ratio * 1;
}
});
this.nums=this.staffLists[0].ratio;
this.staffLists[0].ratio = 100 - num;
},
//
@ -99,15 +107,62 @@ export default {
message: "第一位员工占比过低",
});
this.staffLists.forEach((item) => {
if (item.ratio > 100) {
if (item.ratio >= this.nums) {
item.ratio = 0;
}
});
} else {
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
console.l
}
this.staffLists[0].ratio = 100 - number
});
} else if (this.staffLists[0].ratio > 100) {
this.$message.error({
message: "第一位员工占比过高",
});
this.staffLists.forEach((item) => {
if (item.ratio < 1) {
item.ratio = 0;
}
});
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
console.l
}
this.staffLists[0].ratio = 100 - number
});
}
else {
if (!row.ratio) {
row.ratio = 0;
} else {
row.ratio = row.ratio * 1;
if (row.ratio < 0) {
// this.staffLists.forEach((item, index) => {
this.$message.error({
message: "输入不能小于0",
});
row.ratio = 0;
// });
let number = 0;
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
this.staffLists[0].ratio = 100 - number
});
} else {
row.ratio = row.ratio * 1;
}
}
let form = this.staffLists[index];
this.editIndex = -1;
@ -214,7 +269,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});

@ -392,15 +392,13 @@ export default {
route: "/transfer",
index: "transfer",
number: "4001500",
id:"80080010",
},
{
name: "会员转门店",
name: "疗程转门店",
icon: "el-icon-sort",
route: "/transferstore",
index: "transferstore",
number: "4001600",
id:"80080011",
},
// {
// name: "",
@ -658,7 +656,6 @@ export default {
route: "/managers",
index: "managers",
number: "4001200",
id:"100010008",
},
{
name: "管理层业绩",
@ -666,7 +663,6 @@ export default {
route: "/admins",
index: "admins",
number: "4001300",
id:"100010009",
},
{
@ -675,7 +671,6 @@ export default {
route: "/dept",
index: "dept",
number: "4001400",
id:"1000100010",
},
// {
// name: "",
@ -941,7 +936,6 @@ export default {
index: "100",
icon: "el-icon-s-ticket",
number: "1000",
id:"12001200",
menuLists: [
{
name: "建立",
@ -949,7 +943,6 @@ export default {
route: "/couponIssue",
index: "couponIssue",
number: "1000100",
id:"120012001",
},
{
name: "管理",
@ -957,7 +950,6 @@ export default {
route: "/couponMane",
index: "couponMane",
number: "1000200",
id:"120012002",
},
{
name: "领取消费",
@ -965,7 +957,6 @@ export default {
route: "/couponRecord",
index: "couponRecord",
number: "1000300",
id:"120012003",
},
],
},

@ -4,7 +4,9 @@ import "babel-polyfill";
import "es6-promise/auto";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import { Message } from "element-ui";
import {
Message
} from "element-ui";
Vue.use(ElementUI);
import App from "./App.vue";
import store from "./store";
@ -22,13 +24,17 @@ import "./utils/dialog";
import "./plugins";
// import "./utils/directive/focus";
import echarts from "echarts";
import { getCookie } from "./utils/utils.js";
import {
getCookie
} from "./utils/utils.js";
import apiConfig from "../config/api.config.js";
import vueEsign from "vue-esign";
import animated from "animate.css"; // npm install animate.css --save安装在引入
import formatTime from "./utils/filters.js";
import arrDiff from "./utils/array.js";
import { Loading } from "element-ui";
import {
Loading
} from "element-ui";
import countdown from "./utils/countdown.js";
import "./utils/rem.js";
Vue.use(animated);
@ -38,11 +44,19 @@ import print from "vue-print-nb";
directives: {
print;
}
import { thousands } from "@/utils/index.js";
import {
thousands
} from "@/utils/index.js";
// 引入高精度精算
import { Decimal } from "decimal.js";
import {
Decimal
} from "decimal.js";
import {
parseTime
} from "./utils/index.js";
// 全局定义
Vue.prototype.$Decimal = Decimal;
Vue.prototype.$parseTime = parseTime;
import Vue from "vue";
import Router from "vue-router";
@ -54,7 +68,9 @@ Vue.use(VueAxios, axios);
axios.defaults.baseURL = apiConfig.baseUrl;
Vue.use(Print); //注册
import { message } from "./utils/resetMessage.js"; //现在提示弹窗每次只弹一条
import {
message
} from "./utils/resetMessage.js"; //现在提示弹窗每次只弹一条
// import VueParticles from 'vue-particles'
// Vue.use(VueParticles)
@ -92,7 +108,7 @@ export function noRepeat(arr) {
Vue.prototype.noRepeat = noRepeat;
// 全局过滤器--时间戳格式化时间//.padStart(2 , "0") 不足两位的用0填充
Vue.filter("dateFormat", function(originVal) {
Vue.filter("dateFormat", function (originVal) {
const dt = new Date(originVal);
const y = dt.getFullYear();
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
@ -102,7 +118,7 @@ Vue.filter("dateFormat", function(originVal) {
const ss = (dt.getSeconds() + "").padStart(2, "0");
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
});
Vue.filter("dateMonth", function(originVal) {
Vue.filter("dateMonth", function (originVal) {
const dt = new Date(originVal);
const y = dt.getFullYear();
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
@ -112,10 +128,10 @@ Vue.filter("dateMonth", function(originVal) {
const ss = (dt.getSeconds() + "").padStart(2, "0");
return `${y}-${m}-${d}`;
});
Vue.filter("phone", function(phone) {
Vue.filter("phone", function (phone) {
return phone.substring(0, 3) + "****" + phone.substring(phone.length - 4);
});
Vue.filter("identityNum", function(identityNum) {
Vue.filter("identityNum", function (identityNum) {
return (
identityNum.substring(0, 4) +
"**************" +
@ -123,11 +139,11 @@ Vue.filter("identityNum", function(identityNum) {
);
});
Vue.filter("money", function(money) {
Vue.filter("money", function (money) {
return (money * 1).toFixed(2);
});
Vue.prototype.openLoading = function() {
Vue.prototype.openLoading = function () {
const loading = this.$loading({
// 声明一个loading对象
lock: true, // 是否锁屏
@ -138,7 +154,7 @@ Vue.prototype.openLoading = function() {
body: true,
customClass: "mask" // 遮罩层新增类名
});
setTimeout(function() {
setTimeout(function () {
// 设定定时器超时5S后自动关闭遮罩层避免请求失败时遮罩层一直存在的问题
loading.close(); // 关闭遮罩层
}, 5000);

@ -217,6 +217,13 @@ export default {
handleNext() {
this.$refs.form.validate((valid) => {
if (valid) {
let form = Object.assign({}, this.form);
if (form.suitableStore < 1) {
form.useStoreList = Array.from([]);
}
if (form.suitableProject < 1) {
form.projectList = Array.from([]);
}
this.$emit('next', 2, this.form)
} else {
return false

@ -1,5 +1,5 @@
<template>
<el-dialog title="公众号二维码" :visible.sync="dialogFormVisible" :close-on-click-modal="false" width="400px" @close="close" v-dialogDrag>
<el-dialog title="公众号二维码" :visible.sync="dialogFormVisible" :close-on-click-modal="false" width="420px" @close="close" v-dialogDrag>
<div class="box" style="width: 400px; height: 400px; background-color: #FFF;">
<el-image style="width: 100%; height: 100%" :src="qrCode" fit="fill" v-if="codeNumber===1"></el-image>
<div class="img" v-if="codeNumber===2||codeNumber===3">

@ -74,7 +74,7 @@
<div class="tips_msg_item_titles">
<div class="bot"></div>
</div>
<div class="tips_msg_item_contents">需要先领取优惠券后再分享这样其他领取了您分享的优惠券并消费后才会获得分润否则无法获得分润</div>
<div class="tips_msg_item_contents">需要先领取优惠券后再分享这样其他领取了您分享的优惠券并消费后才会获得分润否则无法获得分润</div>
</div>
</div>
</div>

@ -85,7 +85,7 @@
<el-table-column show-overflow-tooltip align="center" min-width="120" prop="guaranteeMoney" label="保证金" sortable></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="80" prop="imageUrl" label="活动图片">
<template #default="{row}">
<el-image style="width: 30px; height: 30px" :src="imgPath+row.fileLists[0].filePath+'/'+row.fileLists[0].fileName" :preview-src-list="[imgPath+row.fileLists[0].filePath+'/'+row.fileLists[0].fileName]">
<el-image style="width: 30px; height: 30px" :src="row.imgPath" :preview-src-list="[row.imgPath]">
</el-image>
</template>
</el-table-column>
@ -174,6 +174,13 @@ export default {
let { code, pageInfo } = await getList(this.queryForm);
this.listLoading = false;
if (code == "000000") {
pageInfo.list.forEach(function (item) {
item.forEach(function (items) {
if (items.docType == 'platform_coupon_huizhi') {
item.imgPath = partten.imagePath + items.filePath + '/' + items.fileName
}
});
});
this.list = Array.from(pageInfo.list);
this.total = pageInfo.total;
this.queryForm.pageNum = pageInfo.pageNum;

@ -4,25 +4,28 @@
<el-form inline>
<el-form-item label="手机号码:" :label-width="labelWidth">
<div class="form-width-ms">
<el-input oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="proForm.mobilePhone" @blur="memberOne" @change="memberOne">
<el-input oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11"
v-model="proForm.mobilePhone" @blur="memberOne" @change="memberOne">
<el-button size="mini" slot="append" icon="el-icon-search" @click="openMember"></el-button>
</el-input>
</div>
</el-form-item>
<el-form-item label="会员名字:" :label-width="labelWidth">
<div class="form-width-ms">
{{proForm.memberName}}
{{ proForm.memberName }}
</div>
</el-form-item>
<el-form-item label="待付金额:" :label-width="labelWidth">
<div class="form-width-ms">
{{debtMoney < 0 ?'超出 '+(debtMoney*-1):debtMoney}}
</div>
{{ debtMoney < 0 ? '超出 ' + (debtMoney * -1) : debtMoney }} </div>
</el-form-item>
<el-form-item label="业务时间:" :label-width="labelWidth" v-show="isAddition==1">
<el-form-item label="业务时间:" :label-width="labelWidth" v-show="isAddition == 1">
<div class="form-width-ms">
<span style="cursor: pointer;" @click="(recDateShow=true)" v-show="!recDateShow">{{proForm.additionDate }} <i class="el-icon-edit"></i> </span>
<el-date-picker size="medium" @blur='(recDateShow=false)' v-show="recDateShow" ref="recDate" v-model="proForm.additionDate" :picker-options="pickerOptions" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期">
<span style="cursor: pointer;" @click="(recDateShow = true)" v-show="!recDateShow">{{ proForm.additionDate }}
<i class="el-icon-edit"></i> </span>
<el-date-picker size="medium" @blur='(recDateShow = false)' v-show="recDateShow" ref="recDate"
v-model="proForm.additionDate" :picker-options="pickerOptions" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</div>
</el-form-item>
@ -30,12 +33,14 @@
<div class="into-table-width margin-right-xs padding-left-lg">
<div class="raisetable bg-white margin-bottom-xs">
<div class="raisetable-sum">
<div>转出疗程 <el-button v-if="proForm.memberName" :disabled="!proForm.memberId" size="mini" type="primary" @click='openPro(1)'>添加
<div>转出疗程 <el-button v-if="proForm.memberName" :disabled="!proForm.memberId" size="mini" type="primary"
@click='openPro(1)'>添加
</el-button>
</div>
<div style="width: 150px;">总金额 : {{outMoneys}}</div>
</div>
<el-table :data="outList" empty-text=' , ' max-height="200" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" style="margin-top: 5px;">
<el-table :data="outList" empty-text=' , ' max-height="200"
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }"
style="margin-top: 5px;">
<el-table-column label="项目编码" align="center" prop="courseProjectNum" min-width="80"></el-table-column>
<el-table-column label="账户名称" align="center" prop="courseProjectName" min-width="140"></el-table-column>
<el-table-column label="可用次数" align="center" prop="courseConsumeCount" min-width="80"></el-table-column>
@ -44,20 +49,25 @@
<el-table-column label="疗程单价" align="center" prop="price" min-width="80"></el-table-column>
<el-table-column label="转出次数" align="center" prop="changeOutTime" min-width="100">
<template slot-scope='scope'>
<div class="form-input-width" v-if="!scope.row.changeOutTimeShow" @click="openEditOut(scope.row,scope.$index,scope.row.changeOutTimeShow=true)">
{{scope.row.changeOutTime}}
<div class="form-input-width" v-if="!scope.row.changeOutTimeShow"
@click="openEditOut(scope.row, scope.$index, scope.row.changeOutTimeShow = true)">
{{ scope.row.changeOutTime }}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-else v-focus class="form-input-width-xs" type='number' v-model="scope.row.changeOutTime" @blur="endChangeOutTime(scope.row,scope.$index)"></el-input>
<el-input v-else v-focus class="form-input-width-xs" type='number' v-model="scope.row.changeOutTime"
@blur="endChangeOutTime(scope.row, scope.$index, scope.row.changeOutTime, scope.row.price)">
</el-input>
</template>
</el-table-column>
<el-table-column label="转出金额" align="center" prop="changeOutMoney" min-width="100">
<template slot-scope='scope'>
<div class="form-input-width" v-if="outMoneyIndex!=scope.$index" @click="openOutMoney(scope.row,scope.$index)">
{{scope.row.changeOutMoney}}
<div class="form-input-width" v-if="outMoneyIndex != scope.$index"
@click="openOutMoney(scope.row, scope.$index)">
{{ scope.row.changeOutMoney }}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-else v-focus class="form-input-width-xs" type='number' v-model="scope.row.changeOutMoney" @blur="endOutMoney(scope.row)"></el-input>
<el-input v-else v-focus class="form-input-width-xs" type='number' v-model="scope.row.changeOutMoney"
@blur="endOutMoney(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" min-width="80">
@ -69,43 +79,48 @@
</div>
<div class="raisetable bg-white ">
<div class="raisetable-sum">
<div>转入疗程 <el-button v-if="proForm.memberName" size="mini" type="primary" @click='openPro(0)'>添加</el-button>
<div>转入疗程 <el-button v-if="proForm.memberName" size="mini" type="primary" @click='openPro(0)'>添加
</el-button>
<el-button v-if="proForm.memberName" size="mini" type="warning" @click='backout'>撤销</el-button>
</div>
<div style="width: 150px;">总金额 : {{inMoneys}}</div>
<div style="width: 150px;">成交金额 : {{ inMoneys }}</div>
<div style="width: 150px;">转入金额 : {{ outMoneys }}</div>
<div style="width: 150px;">现付金额 : {{ payMoneys }}</div>
<div style="width: 150px;">欠款金额金额 : {{ debtMoney }}</div>
</div>
<el-table :data="inList" max-height="150" empty-text=' , ' :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" style="margin-top: 5px;">
<el-table-column label="项目编码" show-overflow-tooltip align="center" prop="projectNum" min-width="90"></el-table-column>
<el-table-column label="账户名称" show-overflow-tooltip align="center" prop="projectName" min-width="110"></el-table-column>
<el-table :data="inList" max-height="150" empty-text=' , '
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }"
style="margin-top: 5px;">
<el-table-column label="项目编码" show-overflow-tooltip align="center" prop="projectNum" min-width="90">
</el-table-column>
<el-table-column label="账户名称" show-overflow-tooltip align="center" prop="projectName" min-width="110">
</el-table-column>
<el-table-column label="标准单价" align="center" prop="priceMember" min-width="70"></el-table-column>
<el-table-column label="最低单价" align="center" prop="minumumPriceMember" min-width="70"></el-table-column>
<el-table-column label="转入次数" align="center" prop="changeInTime" min-width="90">
<el-table-column label="单价" align="center" prop="prices" min-width="90">
<template slot-scope='scope'>
<div class="form-input-width" v-if="inNumberIndex!=scope.$index" @click="openEdit(scope.row,scope.$index,inNumberIndex=scope.$index)">
{{scope.row.changeInTime}}
<div class="form-input-width" v-if="inNumberIndexs != scope.$index"
@click="openEdit(scope.row, scope.$index, inNumberIndexs = scope.$index)">
{{ scope.row.prices }}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus class="form-input-width-xs" type="number" v-else v-model="scope.row.changeInTime" @blur="endEditTimes(scope.row)"></el-input>
<el-input v-focus class="form-input-width-xs" type="number" v-else v-model="scope.row.prices"
@blur="endEditprices(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="转入金额" align="center" prop="changeInMoney" min-width="90">
<template slot-scope='scope'>
<div class="form-input-width" v-if="!scope.row.changeInMoneyShow" @click="openEdit(scope.row,scope.$index,scope.row.changeInMoneyShow=true)">
{{scope.row.changeInMoney}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus class="form-input-width-xs" type="number" v-else v-model="scope.row.changeInMoney" @blur="endEditPrice(scope.row,scope.$index)"></el-input>
</template>
</el-table-column>
<el-table-column label="欠款金额" v-if="sessionStorageData.allowdebt" align="center" prop="debtMoney" min-width="90">
<el-table-column label="转入次数" align="center" prop="changeInTime" min-width="90">
<template slot-scope='scope'>
<div class="form-input-width" v-if="!scope.row.debtMoneyShow" @click="openEdit(scope.row,scope.$index,scope.row.debtMoneyShow=true)">
{{scope.row.debtMoney}}
<div class="form-input-width" v-if="inNumberIndex != scope.$index"
@click="openEdit(scope.row, scope.$index, inNumberIndex = scope.$index)">
{{ scope.row.changeInTime }}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus class="form-input-width-xs" type="number" v-else v-model="scope.row.debtMoney" @blur="endDebtMoney(scope.row,scope.$index)"></el-input>
<el-input v-focus class="form-input-width-xs" type="number" v-else v-model="scope.row.changeInTime"
@blur="endEditTimes(scope.row)"></el-input>
</template>
</el-table-column>
<!-- <el-table-column label="欠款金额" v-if="sessionStorageData.allowdebt" align="center" prop="debtMoney"
min-width="90"></el-table-column> -->
<el-table-column label="成交金额" align="center" prop="transactionMoney" min-width="80">
</el-table-column>
</el-table>
@ -113,18 +128,28 @@
</div>
<div style="width:280px;" class="border-radius-10 border bg-white padding-xs">
<el-table :data="proForm.payLists" show-summary max-height="350">
<el-table :data="proForm.payLists" max-height="350">
<el-table-column align="center" prop="payName" label="支付方式" min-width="100"></el-table-column>
<el-table-column align="center" prop="payMoney" fixed="right" label="本次支付" min-width="80">
<template slot-scope="scope">
<div class="form-input-width" v-if="!scope.row.isShow" @click="editPay(scope.row,scope.$index)">
{{scope.row.payMoney}}
<div class="form-input-width" v-if="!scope.row.isShow" @click="editPay(scope.row, scope.$index)">
{{ scope.row.payMoney }}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-else v-focus @blur="endEdit(scope.row)" @change="endEdit(scope.row)" @keydown.enter="endEdit(scope.row)" v-model="scope.row.payMoney" type="number" class="form-input-wdith-xs"></el-input>
<el-input v-else v-focus @click="endEdit(scope.row)" @blur="endEdit(scope.row)"
@change="endEdit(scope.row)" @keydown.enter="endEdit(scope.row)" v-model="scope.row.payMoney"
type="number" class="form-input-wdith-xs"></el-input>
</template>
</el-table-column>
</el-table>
<div style="text-align:center;width: 100%;" @click="endEdits()" v-if="!shows"></div>
<div style="display:flex" v-if="shows">
<div style="margin-left:30%">现付金额为:</div>
<div style="margin-left: 20%;">{{ payMoneys }}</div>
</div>
</div>
</div>
@ -135,10 +160,11 @@
</div>
<div class="into-table-width padding-top text-center padding-left-lg">
<el-button size="mini" type="info" @click='empty()' plain>清空</el-button>
<el-button size="mini" v-if="isAddition==0" type="primary" @click="isAddition = 1"></el-button>
<el-button size="mini" v-if="isAddition == 0" type="primary" @click="isAddition = 1"></el-button>
<el-button size="mini" v-else type="success" @click="isAddition = 0">加价</el-button>
<el-button size="mini" type="primary" @click='raiseProList()' plain>列表</el-button>
<el-button size="mini" type="primary" @click='submit(true,loading=true)' :loading="loading" :disabled="outList.length==0&&inList.length==0">提交</el-button>
<el-button size="mini" type="primary" @click='submit(true, loading = true)' :loading="loading"
:disabled="outList.length == 0 && inList.length == 0">提交</el-button>
</div>
</el-form>
<member ref="member" @memberData="memberData"></member>
@ -177,10 +203,13 @@ export default {
},
},
projectDialogVisible: false,
shows: false,
recDateShow: false,
activeName: "现付",
outMoneyIndex: -1,
inNumberIndex: -1,
inNumberIndexs: -1,
payMoneys: 0,
proForm: {
additionDate: null,
manageStaffName: null,
@ -211,6 +240,7 @@ export default {
debtMoney: 0,
isAddition: 0,
loading: false,
TransactionNum: 0
};
},
methods: {
@ -315,7 +345,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
this.loading = false;
}
@ -326,7 +356,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
this.loading = false;
falg = false;
@ -363,16 +393,18 @@ export default {
row.index = rowIndex;
},
projectData(form) {
console.log(form)
form.memberId = this.proForm.memberId;
form.memberName = this.proForm.memberName;
form.mobilePhone = this.proForm.mobilePhone;
form.storeId = this.proForm.storeId;
form.storeName = this.proForm.storeName;
form.memberIdentityCard = this.proForm.identityCard;
if (this.openProText == 0) {
form.changeInMoney =
(form.priceMember * form.minumumTimes).toFixed(2) * 1;
form.changeInTime = form.minumumTimes;
(form.priceMember * form.minumumTimes).toFixed(2) * 1;
form.prices = form.priceMember
form.changeInTime = 0;
form.projectId = form.id;
form.debtMoney = 0;
form.transactionMoney = form.changeInMoney;
@ -381,13 +413,14 @@ export default {
form.changeInCaseTimeShow = false;
if (this.inList.length < 1) {
this.inList.push(form);
this.inMoneys = 0;
} else {
this.$alert("只能选择一个项目进行转入", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
}
@ -397,12 +430,13 @@ export default {
// form.changeOutMoney =
// (form.courseConsumeCount * form.unitMoney).toFixed(2) * 1;
form.changeOutMoney = 0;
form.changeOutTime = form.courseConsumeCount;
form.changeOutTime = 0;
form.changeOutTimeShow = false;
form.accountId = form.id;
this.outList.push(form);
this.sumMoney();
}
this.sumMoney();
//
},
//
memberOne() {
@ -433,7 +467,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -444,38 +478,56 @@ export default {
//.
editPay(row, index) {
if (this.debtMoney < 0) {
this.$message.error({
message: "支付金额已超出 , 无需进行现付 !",
});
} else {
var form = {
...row,
};
var payLists = [...this.proForm.payLists];
payLists[index] = form;
form.isShow = true;
form.payMoney = (this.debtMoney + form.payMoney).toFixed(2) * 1;
this.proForm.payLists = [];
this.proForm.payLists = payLists;
this.sumMoney();
}
console.log(row)
var form = {
...row,
};
console.log()
var payLists = [...this.proForm.payLists];
payLists[index] = form;
form.isShow = true;
this.proForm.payLists = [];
this.proForm.payLists = payLists;
console.log(this.proForm.payLists)
this.sumMoney()
// }
},
endEdit(row) {
if (row.payMoney) {
if (row.payMoney && row.payMoney <= this.debtMoney) {
row.payMoney = row.payMoney * 1;
} else {
row.payMoney = 0;
if (row.payMoney > this.debtMoney) {
this.$alert("现付金额大于需付金额,已将金额调整适合金额", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
}
row.payMoney = this.debtMoney;
}
row.isShow = false;
this.shows = false;
// this.endEditTimes()
this.sumMoney()
},
endEdits() {
this.shows = true,
this.sumMoney()
},
openPro(num) {
this.openProText = num;
if (num == 0) {
this.$refs.project.show(0);
this.TransactionNum = this.inList.transactionMoney;
}
if (num == 1) {
this.$refs.project.show(this.proForm);
console.log(this.inList)
}
},
delOldPro(index) {
@ -530,9 +582,40 @@ export default {
row.debtMoneyShow = false;
this.sumMoney();
},
endChangeOutTime(row, index) {
endChangeOutTime(row, index, time, price) {
row.changeOutTimeShow = false;
this.sumMoney();
if (this.outList[index].courseConsumeCount < time) {
this.$alert("次数不可以大于可用次数", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
this.outList[index].changeOutTime = this.outList[index].courseConsumeCount
this.outList[index].changeOutMoney = this.outList[index].changeOutTime * price
} else if (time < 1) {
this.$alert("次数不可以小于1", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
this.outList[index].changeOutTime = 1
this.outList[index].changeOutMoney = this.outList[index].changeOutTime * price
} else {
this.outList[index].changeOutMoney = time * price
}
let num = 0;
this.outList.forEach((item) => {
num = num + item.changeOutMoney
});
this.outMoneys = num;
// if(this.outList.length!=0){
// this.inList[0].changeInMoney=num
// }
},
openOutMoney(row, index) {
let form = { ...row };
@ -567,10 +650,66 @@ export default {
// });
// row.changeInTime = row.minumumTimes;
// }
row.changeInMoney = (row.priceMember * row.changeInTime).toFixed(2) * 1;
row.changeInMoney = (row.prices * row.changeInTime).toFixed(2) * 1;
row.transactionMoney = row.changeInMoney;
this.inNumberIndex = -1;
this.sumMoney();
if (this.outMoneys > row.changeInMoney) {
this.$alert("成交金额不能小于转入金额: ", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
this.inList[0].changeInTime = 0
this.inList[0].transactionMoney = 0
this.sumMoney();
}
},
endEditprices(row, index) {
// if (row.changeInTime < row.minumumTimes) {
// this.$message.info({
// message: "" + row.minumumTimes + "",
// });
// row.changeInTime = row.minumumTimes;
// }
if (row.minumumPriceMember > row.prices) {
this.$alert("单价不可以低于最低单价: ", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
row.prices = row.minumumPriceMember
} else if (row.priceMember < row.prices) {
this.$alert("单价不可以高于标准单价: ", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
row.prices = row.priceMember
}
row.changeInMoney = (row.prices * row.changeInTime).toFixed(2) * 1;
row.transactionMoney = row.changeInMoney;
this.inNumberIndexs = -1;
this.sumMoney();
if (this.outMoneys > row.changeInMoney) {
this.$alert("成交金额不能小于转入金额,请修改单价或者转入次数: ", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
this.sumMoney();
}
},
projectRadio(row) {
if (row) {
@ -595,6 +734,7 @@ export default {
});
this.outMoneys = outMoneys.toFixed(2) * 1;
this.inMoneys = inMoneys.toFixed(2) * 1;
this.payMoneys = payMoneys.toFixed(2) * 1;
if (inMoneys != 0) {
this.debtMoney =
(inMoneys - outMoneys - payMoneys - debtMoney).toFixed(2) * 1;
@ -644,7 +784,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -666,7 +806,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -691,7 +831,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -708,7 +848,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});

@ -237,13 +237,13 @@
<el-table-column align="center" fixed="right" label="明细" width="76">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="detail(scope.row)" plain>明细</el-button>
</el-button>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="作废" width="76">
<template slot-scope="scope">
<el-button @click.stop="abolish(scope.row)" size="mini" :disabled="scope.row.isCancel === 1" type="primary" v-role="5004003"></el-button>
</el-button>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="打印" width="76">
@ -788,6 +788,7 @@ export default {
this.form.mobilePhone = mobilePhone;
if (res.code == "000000") {
this.vip = res.data;
console.log(this.vip);
this.form.memberName = res.data.memberName;
this.form.minumumTimes = res.data.minumumTimes;
this.debtMoneys = res.data.debtMoney;

@ -25,7 +25,7 @@
<br />
<el-form-item prop="courseProjectNum" label="疗程编码:">
<div class="form-width-ms">
<div :title="refund.courseProjectNum" style="cursor: pointer;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" v-show="refund.courseProjectName!=''" @click="openAccountDialog=true">
<div :title="refund.courseProjectNum" style="cursor: pointer;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" v-show="refund.courseProjectName !=''" @click="openAccountDialog=true">
<span>{{refund.courseProjectNum}}</span>
</div>
<el-button v-show="refund.courseProjectName==''" :disabled="refund.memberName==''" size="mini" type="text" @click="openAccountDialog=true"></el-button>

File diff suppressed because it is too large Load Diff

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

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

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

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

@ -30,10 +30,10 @@
<el-input class="form-width-ms border-only-bottom border" v-model="form.orderNums"></el-input>
</el-form-item> -->
<el-form-item label="男客:">
<el-input-number class="form-width-xs" size="small" v-model="form.man" @change="handleChange" :min="0" :max="10" label="男客数量"></el-input-number>
<el-input-number class="form-width-xs" size="small" v-model="form.man" :min="0" :max="10" label="男客数量"></el-input-number>
</el-form-item>
<el-form-item label="女客:">
<el-input-number class="form-width-xs" size="small" v-model="form.woman" @change="handleChange" :min="0" :max="10" label="女客数量"></el-input-number>
<el-input-number class="form-width-xs" size="small" v-model="form.woman" :min="0" :max="10" label="女客数量"></el-input-number>
</el-form-item>
</div>
<div>
@ -113,7 +113,7 @@
<el-table-column align="center" prop="courseConsumeCount" label="次数" min-width="70"></el-table-column>
</el-table-column>
<el-table-column align="center" label="充值卡付" v-if="form.cashNumber">
<el-table-column align="center" prop="amount" label="充值卡款" min-width="100" show-overflow-tooltip v-if="form.cashNumber">
<el-table-column align="center" prop="rechargeTypeName" label="充值卡款" min-width="100" show-overflow-tooltip v-if="form.cashNumber">
<template slot-scope="scope">
<div @click="openRec(scope.row,scope.$index)">
<span class="text-red">{{scope.row.rechargeTypeName ?(scope.row.rechargeTypeName + ' / 折扣'+scope.row.discount+'%'):'点击选择'}}</span>
@ -175,7 +175,7 @@
{{ scope.row.payMoney}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-else v-focus size="samll" @blur="endEdit(scope.row, scope.$index)" @change="endEdit(scope.row, scope.$index)" v-model="scope.row.payMoney" class="form-input-width-xs" type="number" ></el-input>
<el-input v-else v-focus size="samll" @blur="endEdit(scope.row, scope.$index)" @change="endEdit(scope.row, scope.$index)" v-model="scope.row.payMoney" class="form-input-width-xs" type="number"></el-input>
</template>
</el-table-column>
</el-table>
@ -229,6 +229,7 @@ export default {
};
},
methods: {
//
openSpendMoney(row, index) {
if (row.rechargeTypeId) {
this.spendIndex = index;
@ -247,7 +248,6 @@ export default {
).toFixed(2) * 1;
let debtMoney = (item.amount - item.cashAmount).toFixed(2) * 1;
let cardMoney = (form.offsetMoney + form.offsetGiftMoney).toFixed(2) * 1;
console.log();
if (debtMoney > 0) {
if (cardMoney < debtMoney) {
form.spendMoney = form.cardOver;
@ -514,7 +514,6 @@ export default {
form.discoutMoney = 0;
form.giftSpendMoney = 0;
form.type = v.type;
console.log(form);
let row = this.toSpend(form, this.rowIndex);
form = { ...form, ...row };
this.list.splice(this.rowIndex, 1, form);
@ -534,7 +533,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -642,7 +641,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -695,7 +694,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -714,11 +713,11 @@ export default {
this.sumMoney();
},
handleChange() {},
rowClassName({ row, rowIndex }) {
row.index = rowIndex;
},
sumMoney() {
console.log(this.form.cashNumber);
let amount = 0;
let payMoney = 0;
this.list.forEach((item) => {

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

@ -22,8 +22,7 @@
<el-button @click="openStaffList" size="mini" type="primary" style="margin-left: 16px;"> 员工列表</el-button>
</div>
</div>
<div class="flex justify-start align-start">
</div>
<div class="flex justify-start align-start"></div>
<div class="flex justify-center align-start flex-wrap room-body">
<div class="room margin-right margin-top" v-for="(item,index) in list" :key="index">
<div class="room-header flex justify-between align-center text-bold" :class="item.onState==0?'bg-green':item.onState==1?'bg-blue':item.onState==2?'bg-yellow':item.onState==3?'bg-red':'bg-blue'">
@ -207,6 +206,12 @@ export default {
};
},
methods: {
//
show() {
this.getData();
this.getPage();
this.getStaff();
},
editStaffState(item, number) {
console.log(item);
editsServiceOrder({ id: item.id, state: number }).then((res) => {
@ -219,7 +224,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -285,14 +290,15 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
})
.catch(() => {});
.catch(() => { });
},
openAll(item) {
console.log("showList", JSON.parse(JSON.stringify(item.showList)))
this.$emit("roomData", item.showList);
},
editRoom(item, number) {
@ -306,7 +312,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -324,7 +330,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -341,7 +347,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -383,7 +389,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -408,17 +414,12 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
},
//
show() {
this.getData();
this.getPage();
this.getStaff();
},
openRoom(item) {
if (item.onState == 2) {
} else {
@ -450,7 +451,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -482,7 +483,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -562,7 +563,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
})

@ -2,13 +2,13 @@
<div class="head-room">
<el-tabs v-role="500111" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="开单" name="开单">
<bing ref="bing" @bingData="bingData"></bing>
<bing ref="bing"></bing>
</el-tab-pane>
<el-tab-pane label="房间" name="房间">
<room ref="room" @roomData="roomData"></room>
</el-tab-pane>
<el-tab-pane label="历史单据" name="历史单据">
<order ref="order" @orderData="orderData"></order>
<order ref="order"></order>
</el-tab-pane>
</el-tabs>
</div>
@ -17,7 +17,7 @@
<script>
import order from "./components/order/index.vue";
import room from "./components/room/index.vue";
import bing from "./components/bing/index.vue";
import bing from "./components/bing/index2.vue";
export default {
components: { room, bing, order },
inject: ["reload"],
@ -41,8 +41,6 @@ export default {
this.$refs.order.show();
}
},
bingData(v) {},
orderData(v) {},
roomData(v) {
if (v) {
console.log("kaidan ");

@ -135,6 +135,7 @@ export default {
partten.https + res.data.filePath + "/" + res.data.fileName;
}
this.$refs.printform.show(this.printForm);
console.log(this.printForm)
});
},
handleSizeChange(v) {

@ -1,5 +1,6 @@
<template>
<el-dialog :close-on-click-modal="false" v-dialogDrag title="打印" append-to-body :visible.sync="printDialogVisible" width="60%">
<el-dialog :close-on-click-modal="false" v-dialogDrag title="打印" append-to-body :visible.sync="printDialogVisible"
width="60%">
<div id="printService" class="printDiv">
<div class="text-center text-grey padding-xs">
服务
@ -11,7 +12,8 @@
<el-form-item label="时间:"> {{ printForm.cashDate }} </el-form-item><br>
<el-form-item label="单号:">{{ printForm.cashNum }} </el-form-item><br>
<el-form-item label="顾客:">
{{ printForm.memberName?printForm.memberName:'散客' }}/{{ printForm.mobilePhone?printForm.mobilePhone:'******' }}
{{ printForm.memberName ? printForm.memberName : '散客' }}/{{ printForm.mobilePhone ? printForm.mobilePhone : '******'
}}
</el-form-item><br>
<el-form-item label="收银:">
<div>{{ staffName }} </div>
@ -29,36 +31,39 @@
<div class="text-left" style="width:25%">折后 </div>
</div>
<div style="height:15px"></div>
<div class="print-table flex justify-center align-center" v-for="(item,index) in printForm.projectList">
<div class="text-left" style="width:50%"> <span class="text-cyan text-out">{{item.projectName}}</span></div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{item.priceMember}}</span></div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{item.transactionPrice}}</span></div>
<div class="print-table flex justify-center align-center" v-for="(item, index) in printForm.projectList">
<div class="text-left" style="width:50%"> <span class="text-cyan text-out">{{ item.projectName }}</span></div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{ item.priceMember }}</span></div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{ item.discountmoney }}</span>
</div>
</div>
<div style="height:8px"></div>
<hr class="text-grey">
<div style="height:8px"></div>
<div v-if="recList.length!=0">
<div v-if="recList.length != 0">
<div class="print-table flex justify-center align-center">
<div class="text-left" style="width:50%">充值帐户 </div>
<div class="text-left" style="width:25%;padding-right:5px">支付 </div>
<div class="text-left" style="width:25%;padding-right:5px">剩余 </div>
</div>
<div style="height:15px"></div>
<div class="print-table flex justify-center align-center" v-for="(item,index) in recList">
<div class="text-left" style="width:50%"> <span class="text-cyan text-out">{{item.rechargeTypeName}}</span></div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{item.spendMoney}}</span></div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{item.cardRestMoney}}</span></div>
<div class="print-table flex justify-center align-center" v-for="(item, index) in recList">
<div class="text-left" style="width:50%"> <span class="text-cyan text-out">{{ item.rechargeTypeName }}</span>
</div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{ item.spendMoney }}</span></div>
<div class="text-left" style="width:25%"> <span class="text-red text-price">{{ item.cardRestMoney }}</span>
</div>
</div>
</div>
<div v-if="printForm.payLists.length!=0">
<div v-if="printForm.payLists.length != 0">
<div class="print-table flex justify-center align-center">
<div class="text-left" style="width:50%">支付方式 </div>
<div class="text-left" style="width:50%;">支付 </div>
</div>
<div style="height:15px"></div>
<div class="print-table flex justify-center align-center" v-for="(item,index) in printForm.payLists">
<div class="text-left" style="width:50%"> <span class="text-cyan text-out">{{item.payName}}</span></div>
<div class="text-left" style="width:50%"> <span class="text-red text-price">{{item.payMoney}}</span></div>
<div class="print-table flex justify-center align-center" v-for="(item, index) in printForm.payLists">
<div class="text-left" style="width:50%"> <span class="text-cyan text-out">{{ item.payName }}</span></div>
<div class="text-left" style="width:50%"> <span class="text-red text-price">{{ item.payMoney }}</span></div>
</div>
</div>
<!-- <div class="flex justify-start align-center padding-top-xs padding-bottom-xs">
@ -87,8 +92,8 @@
<el-form-item label="实付:">
<div>{{ printForm.numPayMoney }}</div>
</el-form-item> -->
<br />
<br />
<br/>
<br/>
<el-form-item label="签名:">
<div style="height: 30px; width: 80px">
<img style="width: 100%" :src="printForm.signature" alt="" />
@ -128,7 +133,13 @@ export default {
form.projectList.forEach((item) => {
recList = recList.concat(item.rechargeConsumeList);
});
this.printForm.projectList.forEach((item) => {
item.discountmoney = ((item.collectionAmount * 1) + (item.collectionRechargeAmount * 1)).toFixed(2) * 1;
})
this.recList = recList;
console.log(form.projectList)
// console.log(this.recList)
this.printDialogVisible = true;
},
},

@ -133,6 +133,7 @@ export default {
if (res.data == true) {
this.$message.success({ message: "密码正确!" });
this.$emit("passcodeData", this.file);
console.log(this.file)
this.paymentcodeDialog = false;
} else {
this.$alert("密码错误", "提示", {

@ -1,15 +1,17 @@
<template>
<div class="flex">
<div style="width:100%">
<el-table :data="payLists" style="width:280px" class='border' :summary-method="getSummariesPay" show-summary :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table :data="payLists" style="width:280px" class='border' show-summary
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }">
<el-table-column align="center" prop="payName" min-width="100" label="支付方式"></el-table-column>
<el-table-column align="center" prop="payMoney" min-width="80" label="本次支付 ">
<template slot-scope="scope">
<div v-if="payIndex != scope.$index" @click="editPay(scope.row,scope.$index)">
<div v-if="payIndex != scope.$index" @click="editPay(scope.row, scope.$index)">
{{ scope.row.payMoney }}
<i class="text-cyan el-icon-edit"></i>
</div>
<el-input class="form-input-xs" v-else v-focus type="number" @blur="endEdit(scope.row, scope.$index,)" v-model="scope.row.payMoney" size="samll"></el-input>
<el-input class="form-input-xs" v-else v-focus type="number" @blur="endEdit(scope.row, scope.$index,)"
v-model="scope.row.payMoney" size="samll"></el-input>
</template>
</el-table-column>
</el-table>
@ -32,22 +34,55 @@ export default {
methods: {
//
show(form, list) {
console.log(form);
var that = this;
that.form = JSON.parse(JSON.stringify(form));
that.payLists = [];
that.payLists = JSON.parse(JSON.stringify(list));
console.log(that.payLists)
},
//.
editPay(row, index) {
this.payIndex = index;
row.payMoney = (this.form.debtMoney + row.payMoney).toFixed(2) * 1;
if (index = 0) {
row.payMoney = (this.form.collectionCashAmounts + row.payMoney).toFixed(2) * 1;
}
else {
let money = 0;
var that = this;
this.payLists.forEach((item) => {
money += item.payMoney * 1;
});
row.payMoney = (this.form.collectionCashAmounts - money).toFixed(2) * 1;
}
},
endEdit(row, index) {
this.payIndex = -1;
let money = 0;
var that = this;
this.payLists.forEach((item) => {
money += item.payMoney * 1;
});
if (!row.payMoney) {
row.payMoney = 0;
} else if (money > this.form.collectionCashAmounts) {
this.$alert("输入之和不能大于现付金额", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
row.payMoney = 0;
} else if (row.payMoney < 0) {
this.$alert("输入值不能小于0", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
row.payMoney = 0;
} else {
row.payMoney = row.payMoney * 1;
}
@ -62,31 +97,31 @@ export default {
let form = { form: this.form, list: this.payLists };
this.$emit("paymentData", form);
},
getSummariesPay(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;
},
// getSummariesPay(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;
// },
},
};
</script>

File diff suppressed because it is too large Load Diff

@ -1,5 +1,6 @@
<template>
<el-dialog :close-on-click-model="false" v-dialogDrag :title="staffTitle" :visible.sync="dialogVisible" width="500px" append-to-body :before-close="handleClose">
<el-dialog :close-on-click-model="false" v-dialogDrag :title="staffTitle" :visible.sync="dialogVisible" width="500px"
append-to-body :before-close="handleClose">
<el-button size="mini" type="primary" @click="add()"></el-button>
<el-button size="mini" type="primary" @click="del()"></el-button>
<div class="flex">
@ -7,7 +8,8 @@
<el-table-column align="center" :label="staffTitle">
<el-table-column min-width="140" align="center" label="员工">
<template slot-scope="scope">
<el-select filterable default-first-option v-model="scope.row.label" placeholder="请选择" @change="editChange($event,scope.$index)">
<el-select filterable default-first-option v-model="scope.row.label" placeholder="请选择"
@click="editclick($event, scope.$index)" @change="editChange($event, scope.$index)">
<el-option v-for="item in openList" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
@ -15,7 +17,8 @@
</el-table-column>
<el-table-column min-width="100" align="center" label="占比">
<template slot-scope="scope">
<el-input v-focus type="number" @blur="endEdit(scope.row,scope.$index)" :disabled="scope.$index==0" size="samll" v-model="scope.row.ratio"></el-input>
<el-input v-focus type="number" @blur="endEdit(scope.row, scope.$index)" :disabled="scope.$index == 0"
size="samll" v-model="scope.row.ratio"></el-input>
</template>
</el-table-column>
</el-table-column>
@ -28,7 +31,7 @@
</span>
</el-dialog>
</template>
<script>
import { selectList, selectListType, QuerCompetent } from "@/api/eashier.js";
export default {
@ -40,24 +43,54 @@ export default {
form: {}, //
openList: [],
staffText: "",
staffTexts: "",
staffTitle: "",
staffTitles: "",
staffListCopy: [],
lists: [],
len: 0
};
},
methods: {
handleClose() {
Object.assign(this.$data, this.$options.data.call(this));
console.log(this.lists)
let forms = {
text: this.staffTexts,
list: this.lists
};
console.log(this.lists)
this.$emit("staffratioData", forms);
this.dialogVisible = false;
},
add() {
this.list.push({});
this.list.push({ label: "", ratio: 0 });
this.changeStaff();
},
endEdit(row, index) {
if (row.ratio || row.ratio * 1 < 101) {
row.ratio = row.ratio * 1;
} else {
console.log(row)
if (row.ratio * 1 > 100) {
this.$alert("输入值不能大于100", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
row.ratio = 0;
} else if (row.ratio * 1 < 0) {
this.$alert("输入值不能小于0", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
row.ratio = 0;
}
else {
row.ratio = row.ratio * 1;
}
let number = 0;
this.list.forEach((item, index) => {
if (index != 0) {
@ -65,30 +98,94 @@ export default {
}
});
this.list[0].ratio = 100 - number;
if (this.list[0].ratio < 0) {
this.$alert("第一个人员占比过低", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
this.list[0].ratio = this.list[0].ratio + row.ratio
row.ratio = 0;
}
this.changeStaff();
},
editChange(e, index) {
let number = 0;
let row = this.list[index];
if (this.list.length == 1) {
row.ratio = 100;
} else {
row.ratio = 0
this.list.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
this.list[0].ratio = 100 - number;
})
console.log(this.list[0].ratio)
}
let form = {};
this.openList.forEach((item) => {
if (e == item.id) {
form = { ...item };
}
});
if (row.ratio > 0) {
form.ratio = row.ratio;
}
})
form.ratio = row.ratio;
this.list.splice(index, 1, form);
console.log(this.openList);
this.changeStaff();
},
editclick(index) {
let row = this.list[index];
row.ratio=0
let number = 0;
this.list.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
this.list[0].ratio = 100 - number;
})
console.log(this.list[0].ratio)
},
del() {
let index = this.list.length - 1;
this.list[0].ratio += this.list[index].ratio;
this.list.splice(index, 1);
this.changeStaff();
},
showdetele() {
setTimeout(() => {
this.$nextTick(() => {
let row = JSON.parse(localStorage.getItem('row'));
let text = localStorage.getItem('text')
this.lists = JSON.parse(JSON.stringify([]));
this.staffTexts = text;
this.lists = row[text];
this.len = this.lists.length
this.lists.forEach((item) => {
if (item.id) {
item.label = item.brandNumber + "-" + item.staffName;
}
});
this.dialogVisible = true;
this.getData();
this.changeStaff();
let number = 0;
this.lists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
}
});
if (this.lists.length > 0) {
this.lists[0].ratio = (100 - number).toFixed(2) * 1;
}
});
}, 300);
},
show(form, text) {
setTimeout(() => {
this.$nextTick(() => {
@ -131,8 +228,8 @@ export default {
if (this.list.length > 0) {
this.list[0].ratio = (100 - number).toFixed(2) * 1;
}
this.list.push({ label: "", ratio: 0 });
});
console.log(this.list);
}, 300);
},
changeStaff() {
@ -168,7 +265,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -188,7 +285,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -211,7 +308,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
});
@ -230,6 +327,13 @@ export default {
},
confirms() {
let flag = this.isRepeat(this.list, "brandNumber");
console.log(this.list)
this.list.forEach((item,index)=>{
if(item.label==""){
this.list.splice(index,1)
}
})
let form = {
text: this.staffText,
list: this.list,
@ -237,6 +341,7 @@ export default {
console.log(flag);
if (flag) {
this.$emit("staffratioData", form);
console.log(form)
this.dialogVisible = false;
} else {
this.$alert("选择员工存在重复", "提示", {
@ -244,13 +349,13 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: (action) => { },
});
}
},
},
};
</script>
<style>
</style>
</style>

@ -16,7 +16,7 @@
</div>
</template>
<script>
import { storeMemberpage } from "@/api/storeManage.js";
import { storeMemberpages } from "@/api/storeManage.js";
export default {
data() {
return {
@ -89,13 +89,13 @@ export default {
},
//
async getData() {
storeMemberpage({ id: "" }).then((res) => {
storeMemberpages({ id: "" }).then((res) => {
var reg = /^(\d{3})\d{4}(\d{4})$/;
res.pageInfo.list.forEach((item) => {
res.data.forEach((item) => {
item.key = item.mobilePhone;
item.phone = item.mobilePhone.replace(reg, "$1****$2");
});
this.data = res.pageInfo.list;
this.data = res.data;
});
},
},

@ -33,7 +33,7 @@
<el-form-item label="所属门店:" prop="storeNames">
<el-select filterable default-first-option v-model="form.storeNames" placeholder="请选择" @change="radioChange">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-option>
</el-select>
</el-form-item>
<br>
@ -144,8 +144,13 @@ export default {
//
handleClose() {
this.form = {};
this.staffLists= [{ brandNumber: "", staffName: "", ratio: 100 }],
this.managerLists= [{ brandNumber: "", staffName: "", ratio: 100 }],
this.adminList=[{ brandNumber: "", staffName: "", ratio: 100 }],
this.dialogFormVisible = false;
this.$refs.form.clearValidate();
this.$refs.uploads.clearFiles();
console.log(this.form)
},
radioChange(v) {
this.form.storeId = v;
@ -307,6 +312,7 @@ export default {
});
this.fileData.append("salesmens", JSON.stringify(salesmens));
this.fileData.append("staffLists", JSON.stringify(this.staffLists));
this.fileData.append("rechargeTypeNum", this.form.rechargeTypeNum);
this.fileData.append("storeId", this.form.storeId);
this.fileData.append("storeName", this.form.storeName);
@ -319,6 +325,7 @@ export default {
this.fileData.append("order", this.form.order);
}
console.log(this.form)
if (this.form.id) {
this.fileData.append("id", this.form.id);
}
@ -328,8 +335,9 @@ export default {
if (this.form.expireDate) {
this.fileData.append("expireDate", this.form.expireDate);
}
if (this.title == "添加") {
console.log(this.fileData)
addBaseGrouponCard(this.fileData)
.then((res) => {
if (res.code == "000000") {
@ -370,6 +378,10 @@ export default {
}
});
}
this.$refs.uploads.clearFiles();
this.staffLists= [{ brandNumber: "", staffName: "", ratio: 100 }];
this.managerLists= [{ brandNumber: "", staffName: "", ratio: 100 }];
this.adminList=[{ brandNumber: "", staffName: "", ratio: 100 }];
},
},
};

@ -3,103 +3,284 @@
<div class="flex justify-between align-center">
<div>
<el-button size="mini" type="primary" @click="edit(-1)"></el-button>
<el-button size="mini" type="primary" @click="download()"></el-button>
<el-button size="mini" type="primary" @click="download()"
>下载模板</el-button
>
</div>
<!-- <el-button size="mini" type="success" @click="exit()"></el-button> -->
<div>
<el-button size="mini" v-if="radioRowValueList.state != undefined" type="warning" @click="infoDialog = true"></el-button>
<el-button size="mini" type="" @click="detail" :disabled="radioRowValueList.state == undefined">明细</el-button>
<el-button size="mini" type="danger" @click="del()" v-if="radioRowValueList.state==0" plain>删除</el-button>
<el-button size="mini" type="primary" @click="edit(0)" :disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 1||
<el-button
size="mini"
v-if="radioRowValueList.state != undefined"
type="warning"
@click="infoDialog = true"
>导入</el-button
>
<el-button
size="mini"
type=""
@click="detail"
:disabled="radioRowValueList.state == undefined"
>明细</el-button
>
<el-button
size="mini"
type="danger"
@click="del()"
v-if="radioRowValueList.state == 0"
plain
>删除</el-button
>
<el-button
size="mini"
type="primary"
@click="edit(0)"
:disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 1 ||
radioRowValueList.state == 3
" plain>修改</el-button>
<el-button size="mini" type="primary" @click="edit(1)" :disabled="
radioRowValueList.state == 3||
radioRowValueList.state == 1||
"
plain
>修改</el-button
>
<el-button
size="mini"
type="primary"
@click="edit(1)"
:disabled="
radioRowValueList.state == 3 ||
radioRowValueList.state == 1 ||
radioRowValueList.state == undefined
">送审
"
>送审
</el-button>
<el-button size="mini" type="primary" @click="edit(2)" :disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 0||
<el-button
size="mini"
type="primary"
@click="edit(2)"
:disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 0 ||
radioRowValueList.state == 3 ||
radioRowValueList.state == 2||
radioRowValueList.state == 2 ||
radioRowValueList.state == 4
" plain>回收</el-button>
<el-button size="mini" type="primary" @click="edit(3)" :disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 0||
"
plain
>回收</el-button
>
<el-button
size="mini"
type="primary"
@click="edit(3)"
:disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 0 ||
radioRowValueList.state == 3 ||
radioRowValueList.state == 2||
radioRowValueList.state == 2 ||
radioRowValueList.state == 4
">
审核</el-button>
<el-button size="mini" type="primary" @click="edit(4)" :disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 1||
radioRowValueList.state == 0||
"
>
审核</el-button
>
<el-button
size="mini"
type="primary"
@click="edit(4)"
:disabled="
radioRowValueList.state == undefined ||
radioRowValueList.state == 1 ||
radioRowValueList.state == 0 ||
radioRowValueList.state == 4
" plain>反审核</el-button>
"
plain
>反审核</el-button
>
</div>
</div>
<el-table class="margin-top-xs" border @row-click="rowClick" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText" @row-dblclick="rowdbClick" max-height="650" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table
class="margin-top-xs"
border
@row-click="rowClick"
v-loading="listLoading"
:data="list"
:element-loading-text="elementLoadingText"
@row-dblclick="rowdbClick"
max-height="650"
:header-cell-style="{
background: 'linear-gradient(#6cb3ff, #1873d4)',
color: '#eeeeee'
}"
>
<el-table-column type="index" width="40" align="center"></el-table-column>
<el-table-column align="center" min-width="50" label="选择">
<template slot-scope="scope">
<el-radio v-model="radioRowValue" :label="scope.row.id" @change.native="scope.row">{{null}}</el-radio>
<el-radio
v-model="radioRowValue"
:label="scope.row.id"
@change.native="scope.row"
>{{ null }}</el-radio
>
</template>
</el-table-column>
<el-table-column align="center" min-width="75" label="状态">
<template slot-scope="scope">
<el-tag size="medium" effect="dark" :type="
scope.row.state == 0
? ''
: '' || scope.row.state ==1
? 'success'
: '' || scope.row.state == 2
? 'info'
: '' || scope.row.state ==3
? 'success'
: '' || scope.row.state == 4
? 'warning'
: ''
">
<el-tag
size="medium"
effect="dark"
:type="
scope.row.state == 0
? ''
: '' || scope.row.state == 1
? 'success'
: '' || scope.row.state == 2
? 'info'
: '' || scope.row.state == 3
? 'success'
: '' || scope.row.state == 4
? 'warning'
: ''
"
>
<div>
<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 == 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>
</div>
</el-tag>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="docNum" label="单据号"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="docDate" label="日期"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="rechargeTypeNum" label="充值编码"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="rechargeTypeName" label="充值名称"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="80" prop="rechargeMoney" label="金额"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="80" prop="discount" label="折扣"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="expireDate" sortable label="到期时间"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="80" prop="quantity" sortable label="份数"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="80" prop="remakr" sortable label="单位"></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="100"
prop="docNum"
label="单据号"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="100"
prop="docDate"
label="日期"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="100"
prop="rechargeTypeNum"
label="充值编码"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="100"
prop="rechargeTypeName"
label="充值名称"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="80"
prop="rechargeMoney"
label="金额"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="80"
prop="discount"
label="折扣"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="100"
prop="expireDate"
sortable
label="到期时间"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="80"
prop="quantity"
sortable
label="份数"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
min-width="80"
prop="remakr"
sortable
label="单位"
></el-table-column>
<el-table-column align="center" prop="inputBy" :show-overflow-tooltip="true" label="创建人" min-width="80"></el-table-column>
<el-table-column align="center" prop="inputDate" :show-overflow-tooltip="true" label="创建时间" min-width="100"></el-table-column>
<el-table-column align="center" prop="updateBy" :show-overflow-tooltip="true" label="修改人" min-width="80"></el-table-column>
<el-table-column align="center" prop="updateDate" :show-overflow-tooltip="true" label="修改时间" min-width="100"></el-table-column>
<el-table-column align="center" prop="auditBy" :show-overflow-tooltip="true" label="审核人" min-width="80"></el-table-column>
<el-table-column align="center" prop="auditDate" :show-overflow-tooltip="true" label="审核时间" min-width="100"></el-table-column>
<el-table-column
align="center"
prop="inputBy"
:show-overflow-tooltip="true"
label="创建人"
min-width="80"
></el-table-column>
<el-table-column
align="center"
prop="inputDate"
:show-overflow-tooltip="true"
label="创建时间"
min-width="100"
></el-table-column>
<el-table-column
align="center"
prop="updateBy"
:show-overflow-tooltip="true"
label="修改人"
min-width="80"
></el-table-column>
<el-table-column
align="center"
prop="updateDate"
:show-overflow-tooltip="true"
label="修改时间"
min-width="100"
></el-table-column>
<el-table-column
align="center"
prop="auditBy"
:show-overflow-tooltip="true"
label="审核人"
min-width="80"
></el-table-column>
<el-table-column
align="center"
prop="auditDate"
:show-overflow-tooltip="true"
label="审核时间"
min-width="100"
></el-table-column>
</el-table>
<div class="block margin-top-xs">
<!-- 分页组件 -->
<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>
<edit ref="edit" @editData="editData"></edit>
<detail ref="detail" @detailData="detailData"></detail>
<el-dialog title="导入表格" :visible.sync="infoDialog" :close-on-click-modal="false">
<el-dialog
title="导入表格"
:visible.sync="infoDialog"
:close-on-click-modal="false"
>
<excel @fileData="fileData" @infoDialogV="infoDialogV"></excel>
</el-dialog>
</div>
@ -115,7 +296,7 @@ import {
baseGrouponCardPage,
importBaseGrouponList,
downloadBaseGrouponList,
delBaseGrouponCard,
delBaseGrouponCard
} from "@/api/promotion.js";
export default {
components: { edit, detail, excel },
@ -128,12 +309,12 @@ export default {
queryForm: {
//
pageNum: 1,
pageSziz: 10,
pageSziz: 10
},
total: 0, //
radioRowValue: null, //
radioRowValueList: {}, //
infoDialog: false, //
infoDialog: false //
};
},
methods: {
@ -146,19 +327,19 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: action => {}
});
} else {
fileData.append("multipartFile", v);
fileData.append("grouponCardId", this.radioRowValueList.id);
importBaseGrouponList(fileData).then((res) => {
importBaseGrouponList(fileData).then(res => {
if (res.rows != undefined) {
this.infoList = res.rows;
this.infoErrorDialog = true;
} else {
if (res.code == "000000") {
this.$message.success({
message: res.message,
message: res.message
});
this.getData();
} else {
@ -167,7 +348,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: action => {}
});
}
}
@ -180,7 +361,7 @@ export default {
},
//
download() {
downloadBaseGrouponList().then((res) => {
downloadBaseGrouponList().then(res => {
let blob = new Blob([res]);
console.log(blob);
var a = document.createElement("a");
@ -198,7 +379,7 @@ export default {
if (this.searchForm.projectTypeName == "") {
delete this.searchForm.projectTypeName;
}
proExport(this.searchForm).then((res) => {
proExport(this.searchForm).then(res => {
let blob = new Blob([res]);
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
@ -222,11 +403,11 @@ export default {
this.$refs.edit.show(this.radioRowValueList);
} else {
let form = { id: this.radioRowValueList.id, state: number };
stateBaseGrouponCard(form).then((res) => {
stateBaseGrouponCard(form).then(res => {
if (res.code == "000000") {
this.radioRowValueList.state = number;
this.$message.success({
message: "操作成功!",
message: "操作成功!"
});
this.getData();
} else {
@ -235,7 +416,7 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: action => {}
});
}
});
@ -259,20 +440,20 @@ export default {
},
del() {
var id = {
id: this.radioRowValueList.id,
id: this.radioRowValueList.id
};
this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
cancelButtonClass: "cancelbtnFalses",
confirmButtonClass: "confirmbtnFalses",
confirmButtonClass: "confirmbtnFalses"
})
.then(() => {
delBaseGrouponCard(id).then((res) => {
delBaseGrouponCard(id).then(res => {
if (res.code == "000000") {
this.$message.success({
message: " 删除成功!",
message: " 删除成功!"
});
this.getData();
} else {
@ -281,14 +462,14 @@ export default {
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: action => {}
});
}
});
})
.catch(() => {
this.$message.info({
message: "已取消操作!",
message: "已取消操作!"
});
});
},
@ -304,30 +485,32 @@ export default {
//console.log(val);
},
//
async getData() {
this.listLoading = true;
baseGrouponCardPage(this.queryForm).then((res) => {
baseGrouponCardPage(this.queryForm).then(res => {
this.listLoading = false;
if (res.code == "000000") {
this.list = res.pageInfo.list;
this.total = res.pageInfo.total;
this.list = this.list.reverse();
console.log(this.list);
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
callback: action => {}
});
}
});
},
}
},
created() {
this.getData();
},
}
};
</script>
<style>
</style>
<style></style>

@ -6,24 +6,63 @@
</div>
<br>
<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%;">
<!-- 充值表格 -->
<div>
<el-table :data="tableDate"
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }" style="margin-bottom: 10%;width: 90%;
margin-left: 5%;">
<el-table-column align="center" label="充值">
<el-table-column align="center" prop="type" label="类别">
<el-table-column align="center" prop="openning" label="期初"></el-table-column>
<el-table-column align="center" label="收入">
<el-table-column align="center" prop="rechargeMoney" label="充值开卡" min-width="50"></el-table-column>
<el-table-column align="center" prop="rechargeRepay" label="充值还款" min-width="50"></el-table-column>
<el-table-column align="center" prop="courseTurnRecharge" label="疗程转充值" min-width="50"></el-table-column>
<el-table-column align="center" prop="cashRefund" label="消费退" min-width="50"></el-table-column>
<el-table-column align="center" prop="groupPurchase" label="团购卡" min-width="50"></el-table-column>
<el-table-column align="center" prop="init" label="初始化" min-width="50"></el-table-column>
</el-table-column>
<el-table-column align="center" label="支出">
<el-table-column align="center" prop="courseMoney" label="疗程开卡" min-width="50"></el-table-column>
<el-table-column align="center" prop="rechargeRepayMoney" label="充值还款" min-width="50"></el-table-column>
<el-table-column align="center" prop="cashMoney" label="收银" min-width="50"></el-table-column>
<el-table-column align="center" prop="coursePromotion" label="疗程促销" min-width="50"></el-table-column>
<el-table-column align="center" prop="rechargeRefundMoney" label="充值退" min-width="50"></el-table-column>
</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%;">
<!-- 疗程表格 -->
<div>
<el-table :data="tableDate1"
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }" style="margin-bottom: 10%; width: 90%;
margin-left: 5%;">
<el-table-column align="center" label="疗程">
<el-table-column align="center" prop="openning" label="期初"></el-table-column>
<el-table-column align="center" label="收入">
<el-table-column align="center" prop="courseMoney" label="疗程开卡" min-width="50"></el-table-column>
<el-table-column align="center" prop="courseRepay" label="还款" min-width="50"></el-table-column>
<el-table-column align="center" prop="cashRefund" label="消费退" min-width="50"></el-table-column>
<el-table-column align="center" prop="coursePromotion" label="疗程促销" min-width="50"></el-table-column>
<el-table-column align="center" prop="init" label="初始化" min-width="50"></el-table-column>
<el-table-column align="center" prop="courseTurnStore" label="疗程转门店" min-width="50"></el-table-column>
<el-table-column align="center" prop="cardChange" label="加价转疗程" min-width="50"></el-table-column>
</el-table-column>
<el-table-column align="center" label="支出">
<el-table-column align="center" prop="courseRepayMoney" label="还款" min-width="50"></el-table-column>
<el-table-column align="center" prop="cashMoney" label="收银" min-width="50"></el-table-column>
<el-table-column align="center" prop="courseRefundMoney" label="疗程退" min-width="50"></el-table-column>
<el-table-column align="center" prop="courseTurnCharge" label="疗程转充值" min-width="50"></el-table-column>
<el-table-column align="center" prop="courseTurnStoreMoney" label="疗程转门店" min-width="50">
</el-table-column>
</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"
<el-table :data="tableDate1" show-summary
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }"
style="margin-bottom: 10%;">
<el-table-column align="center" label="疗程">
@ -34,7 +73,7 @@
<el-table-column align="center" prop="balance" label="结存" min-width="50"></el-table-column>
</el-table-column>
</el-table>
</div>
</div> -->
</div>
</div>
@ -55,7 +94,9 @@ export default {
dayStatisticRecharge() {
dayStatisticRecharge({ date: partten.dayStatisticDate }).then((res) => {
if (res.code == "000000") {
this.tableDate = res.rows;
var arr=[];
arr.push(res.data)
this.tableDate = arr;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
@ -70,7 +111,9 @@ export default {
dayStatisticTreatment() {
dayStatisticTreatment({ date: partten.dayStatisticDate }).then((res) => {
if (res.code == "000000") {
this.tableDate1 = res.rows;
var arr=[];
arr.push(res.data)
this.tableDate1 = arr;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
@ -107,35 +150,35 @@ export default {
this.dayStatisticRecharge();
},
//
getSummaries(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '';
return;
}
// 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;
}
// 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';
}
});
// }, 0);
// sums[index] += ' ';
// } else {
// sums[index] = 'N/A';
// }
// });
return sums;
}
// return sums;
// }
};
@ -143,7 +186,7 @@ export default {
<style>
.div_content {
display: flex;
/* display: flex; */
width: 100%;
}
</style>

@ -78,7 +78,7 @@
</template>
</el-table-column>
</el-table-column> -->
<!-- <el-table-column align="center" label="技师">
<el-table-column align="center" label="技师">
<el-table-column align="center" min-width="80" prop="footMassageChia" label="现付业绩">
<template slot-scope="scope">
{{scope.row.footMassageChia?scope.row.footMassageChia:'--'}}
@ -94,7 +94,7 @@
{{scope.row.marketChia?scope.row.marketChia:'--'}}
</template>
</el-table-column>
</el-table-column> -->
</el-table-column>
<el-table-column align="center" min-width="80" prop="tkyj" label="退款业绩">
<template slot-scope="scope">
{{scope.row.tkyj?scope.row.tkyj:'--'}}

@ -68,10 +68,10 @@
<el-input class="form-width" :disabled="title=='明细'" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]1{0,2}" placeholder='请输入点钟卡付提成' v-model="form.cardClockComm" autocomplete="on"></el-input>
</el-form-item>
<el-form-item label="轮钟现付提成:">
<el-input class="form-width" :disabled="title=='明细'" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]1{0,2}" placeholder='请输入轮钟现付提成' v-model="form.roundClock" autocomplete="on"></el-input>
<el-input class="form-width" :disabled="title=='明细'" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]1{0,2}" placeholder='请输入轮钟现付提成' v-model="form.roundClockComm" autocomplete="on"></el-input>
</el-form-item>
<el-form-item label="轮钟卡付提成:">
<el-input class="form-width" :disabled="title=='明细'" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]1{0,2}" placeholder='请输入轮钟卡付提成' v-model="form.cardrRoundClock" autocomplete="on"></el-input>
<el-input class="form-width" :disabled="title=='明细'" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]1{0,2}" placeholder='请输入轮钟卡付提成' v-model="form.cardRoundClockComm" autocomplete="on"></el-input>
</el-form-item>
<el-form-item label="推销现付提成:" prop="marketComm">
<el-input class="form-width" :disabled="title=='明细'" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,2})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]1{0,2}" placeholder='请输入推销现付提成' v-model="form.marketComm" autocomplete="on"></el-input>

@ -83,7 +83,7 @@ export default {
this.dialogFormVisible = false;
this.$message.success({ message: this.title + "成功" });
this.$emit("editData");
this.close();
this.handleClose();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",

@ -87,7 +87,7 @@ export default {
this.dialogFormVisible = false;
this.$message.success({ message: this.title + "成功" });
this.$emit("editData");
this.close();
this.handleClose();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",

@ -141,20 +141,27 @@ export default {
idlists = idlists.concat(
item.getCheckedKeys().concat(item.getHalfCheckedKeys())
);
// console.log(idlists)
});
//
var newarr = [];
for (let i in idlists) {
if (idlists[i] < 9000) {
newarr[i] = idlists[i];
} else {
//IDID4ID
newarr[i] = Number.parseInt(("" + idlists[i]).substring(0, 3));
}
}
idlists = idlists.concat([...new Set(newarr)]);
if (idlists.length == 0) {
idlists[0] = 100;
}
let list = [];
idlists.forEach((item) => {
let items = { roleId: this.form.id, powerId: item };

@ -620,7 +620,7 @@ const router = new VueRouter({
component: () =>
import("../pages/statistics/memberRanking/memberRanking.vue"),
meta: {
title: "会员排行榜",
title: "员工业绩提成表",
index: "memberRanking"
}
},
@ -784,7 +784,7 @@ const router = new VueRouter({
path: "/transferstore",
component: () => import("../pages/storeManage/transferStore/index"), //会员转门店
meta: {
title: "会员转门店",
title: "疗程转门店",
index: "transferstore"
}
},

@ -1,6 +1,6 @@
.print-table {
font-size: 14px !important;
height:30px;
height: 30px;
}
.el-table {
@ -12,9 +12,6 @@
width: 100%;
}
.el-table--border th.gutter:last-of-type {
display: block !important;
width: 17px !important;
@ -36,7 +33,7 @@
}
.line-height {
line-height: 100%
line-height: 100%;
}
.border-top {
@ -137,13 +134,11 @@
.form-width-xxl {
width: 530px !important;
cursor: pointer;
}
.form-width-xxxl {
width: 860px !important;
cursor: pointer;
}
.pointer {
@ -265,6 +260,16 @@
border-radius: 25px;
}
/* ==================
==================== */
.width-m {
width: 150px;
}
.width-ms {
width: 200px;
}
/* el-table */
.el-table .el-table__row .el-date-editor {
width: 100%;
@ -284,7 +289,7 @@
background: #74bafc;
}
.el-form .normal .el-radio__input.is-checked+.el-radio__label {
.el-form .normal .el-radio__input.is-checked + .el-radio__label {
color: #74bafc;
}
@ -293,7 +298,7 @@
background: #f56c6c;
}
.el-form .blockUp .el-radio__input.is-checked+.el-radio__label {
.el-form .blockUp .el-radio__input.is-checked + .el-radio__label {
color: #f56c6c;
}
@ -347,7 +352,7 @@ input::-webkit-inner-spin-button {
color: #fff !important;
font-size: 20px !important;
font-weight: 700 !important;
font-family: '幼圆';
font-family: "幼圆";
background-color: #389efd;
}
@ -372,8 +377,6 @@ input::-webkit-inner-spin-button {
height: 70px;
}
.my-pro-bottom {
height: 50px;
width: 100px;
@ -388,7 +391,6 @@ input::-webkit-inner-spin-button {
/*伸缩盒子的子元素排列:从上到下*/
}
.expand-card:hover {
padding-top: 1px;
z-index: 9;
@ -418,7 +420,6 @@ input::-webkit-inner-spin-button {
.el-table--border th.gutter:last-of-type {
/* border-bottom: 1px solid rgb(185, 185, 185) !important; */
/* 横线颜色 */
}
.el-table--border td,
@ -457,7 +458,6 @@ input::-webkit-inner-spin-button {
padding: 0 8px;
}
/* 滑动条 */
::-webkit-scrollbar {
width: 8px;
@ -475,7 +475,6 @@ input::-webkit-inner-spin-button {
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
background: #ededed;
border-radius: 5px;
}
.el-form-item__error {

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

Loading…
Cancel
Save