Wangxubin1999 4 years ago
commit 950bde6e7a

@ -26,9 +26,9 @@ module.exports = {
assetsPublicPath: "/",
proxyTable: {
"/api": {
target: "http://192.168.31.214:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
target: "http://192.168.31.214:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
//target: "http://192.168.31.209:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
// target: "http://192.168.31.201:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
//target: "http://192.168.31.201: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 盛联

@ -115,6 +115,31 @@ export function storeStatisticProjectList(params) {
});
}
// 新项目购卡金额排行
export function projectLists(params) {
return service({
url: "/api" + "/demay/ssm/storeStatistic/projectLists",
method: "post",
data: params
});
}
// 新项目服务金额排行
export function serviceActive(params) {
return service({
url: "/api" + "/demay/ssm/storeStatistic/service",
method: "post",
data: params
});
}
// 项目结存金额排行
export function balance(params) {
return service({
url: "/api" + "/demay/ssm/storeStatistic/balance",
method: "post",
data: params
});
}
// 门店员工统计列表 门店端-门店统计-门店员工统计列表
export function storeStatisticStaffMonthList(params) {
return service({
@ -224,7 +249,8 @@ export function exportachiwhole(params) {
return service({
url: "/api" + "/demay/ssm/staff/achiCommLists/exportachiwhole",
method: "post",
data: params
data: params,
responseType:"blob"
});
}
//查询项目单品贡献率 selectType; 0=查全公司1=查门店

@ -744,7 +744,7 @@
><br />
<el-form-item prop="cause" label="附带文件:" required>
<div
v-if="title == '明细'"
v-show="title == '明细'"
v-for="(item, index) in fileList"
:key="index"
>

@ -131,7 +131,7 @@ export default {
sessionStorage.getItem("storeInfo")
).storeName;
cashsignature({
cashNum: row.cashNum,
cashNum: row.cashNum,methods
}).then((res) => {
if (res.code == "000000" && res.data) {
this.printForm.signature =

@ -0,0 +1,34 @@
<template>
<el-dialog
title="备注"
:visible.sync="messageShow"
width="30%"
:close-on-click-modal="false"
:before-close="handleClose">
<span>{{ message }}</span>
<div slot="footer" class="dialog-footer" >
<el-button type="primary" plain size="mini" @click="messageShow = false">关闭</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props:{
message:{
type:String,
default:""
}
},
data () {
return {
messageShow:false
}
},
methods:{
handleClose(done) {
done();
}
}
}
</script>

@ -533,6 +533,11 @@
prop="collectionAmounts"
label="卡付抵扣金额"
>
<template slot-scope="scope">
<span>
{{ scope.row.collectionAmounts?scope.row.collectionAmounts:0 }}
</span>
</template>
</el-table-column>
<el-table-column
show-overflow-tooltip
@ -651,10 +656,12 @@
<repayment ref="repayment" @repaymentData="inputMember"></repayment>
<addmember ref="addmember"></addmember>
<orders ref="orders"></orders>
<message :message="message" ref="message"></message>
</div>
</template>
<script>
import addmember from "@/components/member/edit/index";
import message from './detail/message.vue'
import {
selectList,
selectListType,
@ -691,10 +698,12 @@ export default {
addmember,
repayment,
recash,
orders
orders,
message
},
data() {
return {
message:"",
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
@ -756,7 +765,6 @@ export default {
card4: 0
};
},
computed: {
//
appearPrices() {
@ -764,12 +772,7 @@ export default {
      现付金额 = 项目金额transactionPrice - 卡付抵扣金额collectionAmounts
      需要转换下number格式,不然是字符串拼接
      */
let num = this.list.reduce((pre, item) => {
console.log(
"🚀 ~ file: service.vue ~ line 804 ~ num ~ item.courseAccountId",
item.collectionAmounts
);
item.transactionPrice = item.transactionPrice
? (item.transactionPrice * 1).toFixed(2) * 1
: 0; // ,
@ -787,18 +790,24 @@ export default {
return pre + 0;
}
}, 0);
return num.toFixed(2);
return num.toFixed(2)*1;
},
    appearPrice() {
      try{
        if(this.list){
          let collectionAmounts =this.list[this.projectIndex].collectionAmounts
          return (this.list[this.projectIndex].amount-(collectionAmounts?collectionAmounts*1:0)).toFixed(2)*1;  
        }
      }catch(err){
        return 0
      }
    }, //
appearPrice() {
//
// let num = (eval(this.$refs.payment.payLists.map(item=>{return item.payMoney}).join("+")) + eval(this.list.map(item=>{return item.collectionAmounts?item.collectionAmounts:0}).join("+")))
// // (bug)
// let total = eval(this.list.map(item=>item.transactionPrice?item.transactionPrice:0.).join("+"))
// if( num === total*1 )return 0
try{
if(this.list){
let collectionAmounts =this.list[this.projectIndex].collectionAmounts
return (this.list[this.projectIndex].amount-(collectionAmounts?collectionAmounts*1:0)).toFixed(2)*1;
}
}catch(err){
return 0
}
},
//
total() {
/*
      项目金额transactionPrice   卡付抵扣金额collectionAmounts  卡付金额collectionRechargeAmount
@ -832,7 +841,7 @@ export default {
return pre + 0;
}
}, 0);
return total.toFixed(2);
return total.toFixed(2)*1;
}
},
methods: {
@ -1062,9 +1071,9 @@ export default {
});
form.spendMoney = 0;
}
//console.log("🚀 ~ file: service.vue ~ line 964 ~ endEditcard ~ form", form)
if (debtMoney > 0) {
//0
console.log('成交额大于0--->>',debtMoney,form)
if (form.type == 2 || form.type == 0) {
//20
if (this.useRecharge == 2) {
@ -1104,6 +1113,7 @@ export default {
}
}
} else {
console.log('来到了按比例使用')
//使
let sunRatio =
(form.cardOver + form.giftConsumeMoney).toFixed(2) * 1; ///+
@ -1111,6 +1121,7 @@ export default {
let recGiftRatio =
(form.giftConsumeMoney / sunRatio).toFixed(2) * 1; //
if (form.offsetMoney > debtMoney * recRatio) {
console.log('会到这里---|||---',this.recForm.noDiscount)
if (this.recForm.noDiscount == 0) {
//
form.discoutMoney =
@ -1180,17 +1191,8 @@ export default {
form.discoutGiftMoney + form.discoutMoney >
this.list[this.editProIndex].amount
) {
//
//console.log("🚀 ~ file: service.vue ~ line 592 ~ endEditcard ~ this.list[this.editProIndex]", this.list[this.editProIndex])
}
} else {
// if (0 <= row.spendMoney * 1 > row.cardOver * 1) {
// this.$message.info({
// message: "!"
// });
// row.spendMoney = 0;
// row.giftSpendMoney = 0;
// }
}
// if (form.spendMoney > form.cardOver) {
// form.spendMoney = form.cardOver;
@ -1254,9 +1256,9 @@ export default {
form.discoutGiftMoney
);
this.form.collectionCashAmounts = num;
this.recIndex =-1
this.sumNum();
},
sumNum() {
let spendMoney = 0;
let spendNumber = 0;
@ -1485,8 +1487,8 @@ export default {
goPayDebt() {
this.$refs.repayment.show(this.memberForm);
},
//
inputMember() {
console.log("为什么会触发这么多次");
if (partten.phoneNum.test(this.memberForm.mobilePhone)) {
storeMemberOne({
mobilePhone: this.memberForm.mobilePhone,
@ -1498,6 +1500,9 @@ export default {
this.cashNumber = 1;
this.list = [];
var this_ = this;
this.message = res.data.label
// ,
this.message?this.$refs.message.messageShow = true:""
setTimeout(() => {
this_.$refs.reccard.show(this_.memberForm);
this_.$refs.course.show(this_.memberForm);
@ -1731,7 +1736,6 @@ export default {
flag = false;
}
let sumMoney = 0;
this.list.forEach((item, index) => {
if (item.courseAccountId == null) {
sumMoney +=
@ -1889,30 +1893,54 @@ export default {
callback: action => {}
});
this.formData = new FormData();
} else {
addCash(this.formData).then(res => {
if (res.code == "000000") {
this.$message.success({
message: "验证成功 , 收银" + res.message
});
this.formData = new FormData();
this.notData();
} else {
this.payLists = this.payListsCopy;
this.list.forEach(item => {
item.collectionCashAmount = 0;
});
this.$alert("收银" + res.message, "提示", {
}else{
//
let total = eval(this.$refs.payment.payLists.map(item=>{return item.payMoney?item.payMoney*1:0}).join("+"))
if(this.appearPrices*1 || total){
if(total>this.appearPrices*1){
return this.$alert(`现金金额多出${total-this.appearPrices*1}`, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: action => {}
});
this.formData = new FormData();
}else if(total<this.appearPrices*1){
return this.$alert(`现金金额还需支付${this.appearPrices*1 - total}`, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: action => {}
});
}
});
}
}
addCash(this.formData).then(res => {
if (res.code == "000000") {
this.$message.success({
message: "验证成功 , 收银" + res.message
});
this.formData = new FormData();
this.notData();
} else {
this.payLists = this.payListsCopy;
this.list.forEach(item => {
item.collectionCashAmount = 0;
});
this.$alert("收银" + res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: action => {}
});
this.formData = new FormData();
}
});
}
},
openStaffRatio(row, index, text) {
this.editIndex = index;

@ -152,6 +152,7 @@
<el-button type="primary" icon="el-icon-delete" size="mini" v-show="rowIndex" @click='delRow(scope.row)'></el-button>
</template>
</el-table-column>
<el-table-column label="操作人" align="center" min-width="100" prop="modifyBy"></el-table-column>
</el-table>
<el-dialog :close-on-click-modal="false" v-dialogDrag title="新增" width="900px" :visible.sync="dialogFormVisible" :before-close="handleClose">
<div style="height:55vh;overflow: auto;padding-left:80px">

@ -99,6 +99,13 @@
<div v-else> {{scope.row.pushCount}} </div>
</template>
</el-table-column>
<el-table-column prop="createdBy" label="操作人" align="center" min-width="100"></el-table-column>
<el-table-column prop="updatedBy" label="修改人" align="center" min-width="100">
<template slot-scope="scope">
<div v-if="scope.row.updatedBy">{{scope.row.updatedBy}}</div>
<div v-else></div>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<!-- 分页组件 -->
@ -154,7 +161,7 @@
</el-radio-group>
</div>
</el-form-item>
<el-form-item label="适用门店:" rop="suitableObject" :rules="{
<el-form-item label="适用门店:" prop="suitableObject" :rules="{
required: true,
message: '请选择适用门店',
trigger: 'blur'
@ -215,6 +222,28 @@
<el-input type="number" class="form-input-wdith-xs" v-focus v-else oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="scope.row.projectTotalMoney" @blur="endEditMoney(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column prop="typeInfo" label="有效类型" align="center" width="215">
<template slot-scope="scope">
<el-radio v-model="scope.row.typeInfo" label="1" @change="typeChange(scope.row)">()</el-radio>
<el-radio v-model="scope.row.typeInfo" label="2" @change="typeChange(scope.row)"></el-radio>
</template>
</el-table-column>
<el-table-column label="日期操作" align="center" width="200">
<template slot-scope="scope">
<div v-if="scope.row.typeInfo == 1">
<el-input v-model="scope.row.validTime" placeholder="有效日期(月)" style="width:150px"></el-input>
</div>
<div v-else>
<el-date-picker
v-model="scope.row.useEndDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择截止日期">
</el-date-picker>
</div>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="160">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="editPro(editIndex=scope.$index,projectListName='修改')"></el-button>
@ -263,6 +292,28 @@
<el-input type="number" class="form-input-wdith-xs" v-focus v-else oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*\.?[0-9]{0,3}" v-model="scope.row.projectTotalMoney" @blur="endTotalMoney(scope.row,scope.$index)"></el-input>
</template>
</el-table-column>
<el-table-column prop="typeInfo" label="有效类型" align="center" width="215">
<template slot-scope="scope">
<el-radio v-model="scope.row.typeInfo" label="1" @change="typeChange(scope.row)">()</el-radio>
<el-radio v-model="scope.row.typeInfo" label="2" @change="typeChange(scope.row)"></el-radio>
</template>
</el-table-column>
<el-table-column label="日期操作" align="center" width="200">
<template slot-scope="scope">
<div v-if="scope.row.typeInfo == 1">
<el-input v-model="scope.row.validTime" placeholder="有效日期(月)" style="width:150px"></el-input>
</div>
<div v-else>
<el-date-picker
v-model="scope.row.useEndDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择截止日期">
</el-date-picker>
</div>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="160">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="editPro(editIndex=scope.$index,projectListName='赠送修改')"></el-button>
@ -422,6 +473,28 @@
<el-input type="number" class="form-input-wdith-xs" v-focus v-else oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="scope.row.projectTotalMoney" @blur="endEditMoney(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column prop="typeInfo" label="有效类型" align="center" width="215">
<template slot-scope="scope">
<el-radio v-model="scope.row.typeInfo" label="1" @change="typeChange(scope.row)">()</el-radio>
<el-radio v-model="scope.row.typeInfo" label="2" @change="typeChange(scope.row)"></el-radio>
</template>
</el-table-column>
<el-table-column label="日期操作" align="center" width="200">
<template slot-scope="scope">
<div v-if="scope.row.typeInfo == 1">
<el-input v-model="scope.row.validTime" placeholder="有效日期(月)" style="width:150px"></el-input>
</div>
<div v-else>
<el-date-picker
v-model="scope.row.useEndDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择截止日期">
</el-date-picker>
</div>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="160" v-if="titles!='明细'">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="editPro(editIndex=scope.$index,projectListName='修改的添加修改')"></el-button>
@ -475,6 +548,28 @@
<el-input type="number" class="form-input-wdith-xs" v-focus v-else oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*\.?[0-9]{0,3}" v-model="scope.row.projectTotalMoney" @blur="endTotalMoney(scope.row,scope.$index)"></el-input>
</template>
</el-table-column>
<el-table-column prop="typeInfo" label="有效类型" align="center" width="215">
<template slot-scope="scope">
<el-radio v-model="scope.row.typeInfo" label="1" @change="typeChange(scope.row)">()</el-radio>
<el-radio v-model="scope.row.typeInfo" label="2" @change="typeChange(scope.row)"></el-radio>
</template>
</el-table-column>
<el-table-column label="日期操作" align="center" width="200">
<template slot-scope="scope">
<div v-if="scope.row.typeInfo == 1">
<el-input v-model="scope.row.validTime" placeholder="有效日期(月)" style="width:150px"></el-input>
</div>
<div v-else>
<el-date-picker
v-model="scope.row.useEndDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择截止日期">
</el-date-picker>
</div>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="160" v-if="titles!='明细'">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="editPro(editIndex=scope.$index,projectListName='修改的赠送修改')"></el-button>
@ -657,6 +752,13 @@ export default {
};
},
methods: {
typeChange(row){
if(row.typeInfo == '1'){
row.useEndDate = null
}else{
row.validTime = null
}
},
editPro() {
this.$refs.project.show(0);
},
@ -788,6 +890,9 @@ export default {
promotionName: this.packingForm.promotionName,
standardTimes: item.standardTimes,
type: 0,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
promotionProjectLists.push(items);
});
@ -803,7 +908,10 @@ export default {
projectTotalMoney: item.projectTotalMoney,
promotionName: this.packingForm.promotionName,
standardTimes: item.standardTimes,
type: 1,
type: 1,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
promotionProjectLists.push(items);
});
@ -842,6 +950,7 @@ export default {
//
projectData(form) {
form = {...form,typeInfo:"1"}
form.projectId = form.id;
form.times = form.minumumTimes;
form.projectTotalMoney =
@ -991,6 +1100,7 @@ export default {
detail() {
this.titles = "明细";
promotionProList({ id: this.radioRowValueList.id }).then((res) => {
res.rows.forEach(item=>item.typeInfo += '')
this.packingForm = { promotionProjectLists: [] };
this.packingForm = { ...this.radioRowValueList };
let givePromotionProjectLists = [];
@ -1017,6 +1127,7 @@ export default {
this.titles = "";
this.titles = "修改";
promotionProList({ id: this.radioRowValueList.id }).then((res) => {
res.rows.forEach(item=>item.typeInfo+='')
this.packingForm = { promotionProjectLists: [] };
this.packingForm = { ...this.radioRowValueList };
let givePromotionProjectLists = [];
@ -1052,6 +1163,9 @@ export default {
projectTotalMoney: item.projectTotalMoney,
promotionName: this.packingForm.promotionName,
type: 0,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
if (item.projectId != undefined) {
items.projectId = item.projectId;
@ -1072,6 +1186,9 @@ export default {
projectTotalMoney: item.projectTotalMoney,
promotionName: this.packingForm.promotionName,
type: 1,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
if (item.projectId != undefined) {
items.projectId = item.projectId;
@ -1214,6 +1331,7 @@ export default {
copyForm() {
this.titles = "复制";
promotionProList({ id: this.radioRowValueList.id }).then((res) => {
res.rows.forEach(item=>item.typeInfo+='')
this.packingForm = { promotionProjectLists: [] };
this.packingForm = { ...this.radioRowValueList };
let givePromotionProjectLists = [];
@ -1241,7 +1359,6 @@ export default {
let items = {
storeId: item.storeId,
storeName: item.storeName,
projectNum: item.projectNum,
projectName: item.projectName,
priceMember: item.priceMember,
@ -1250,6 +1367,9 @@ export default {
projectTotalMoney: item.projectTotalMoney,
promotionName: this.packingForm.promotionName,
type: 0,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
if (item.projectId != undefined) {
items.projectId = item.projectId;
@ -1262,7 +1382,6 @@ export default {
let items = {
storeId: item.storeId,
storeName: item.storeName,
projectNum: item.projectNum,
projectName: item.projectName,
priceMember: item.priceMember,
@ -1271,6 +1390,9 @@ export default {
projectTotalMoney: item.projectTotalMoney,
promotionName: this.packingForm.promotionName,
type: 1,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
if (item.projectId != undefined) {
items.projectId = item.projectId;
@ -1295,7 +1417,7 @@ export default {
}
this.packingForm.type = 1;
addPromotion(this.packingForm).then((res) => {
addPromotion(Object.assign(this.packingForm,{pushCount:null,pushState:null})).then((res) => {
//console.log(res);
if (res.code == "000000") {
this.$message.success({ message: res.message });

@ -175,6 +175,8 @@
<div v-else> {{ scope.row.pushCount }} </div>
</template>
</el-table-column>
<el-table-column prop="createdBy" label="操作人" align="center" min-width="100">
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<!-- 分页组件 -->
@ -232,11 +234,12 @@
trigger: 'blur'
}">
<input type="text" oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,3})\d*/,'$1$2$3')" pattern="[0-9]*\.?[0-9]{0,3}" v-model="packingForm.cardSalesCommission" style="border:none;width:50px;background:#eee;height:35px;font-size:14px;padding-left:10px;" />
</el-form-item><br />
<el-form-item label="适用对象:" rop="suitableObject" :rules="{
</el-form-item>
<br />
<el-form-item label="适用对象:" prop="suitableObject" :rules="{
required: true,
message: '请选择适用对象',
trigger: 'blur'
trigger: 'change'
}">
<el-radio-group v-model="packingForm.suitableObject" style="font-size:14px">
<el-radio class="margin-bottom" :label="0">所有会员</el-radio>
@ -244,10 +247,10 @@
<el-button :disabled="!(packingForm.suitableObject === 2)" size="mini" type="text" @click="openSuitMember(packingForm)"><span>会员列表</span></el-button>
</el-radio-group>
</el-form-item>
<el-form-item label="是否限购:" rop="limitBuy" :rules="{
<el-form-item label="是否限购:" prop="limitBuy" :rules="{
required: true,
message: '请选择是否限购',
trigger: 'blur'
trigger: 'change'
}">
<div style="width:280px;padding-top:5px">
<el-radio-group v-model="packingForm.limitBuy" style="font-size:14px">
@ -257,10 +260,10 @@
</el-radio-group>
</div>
</el-form-item>
<el-form-item label="适用门店:" rop="suitableObject" :rules="{
<el-form-item label="适用门店:" prop="suitableObject" :rules="{
required: true,
message: '请选择适用门店',
trigger: 'blur'
trigger: 'change'
}">
<el-radio-group v-model="packingForm.suitableStore" style="font-size:14px">
<el-radio class="margin-bottom" :label="0">所有门店</el-radio>
@ -268,10 +271,10 @@
<el-button :disabled="!(packingForm.suitableStore === 1)" size="mini" type="text" @click="openSuitStore(packingForm)"><span>门店列表</span></el-button>
</el-radio-group>
</el-form-item>
<el-form-item label="允许卡付:" rop="limitBuy" :rules="{
<el-form-item label="允许卡付:" prop="limitBuy" :rules="{
required: true,
message: '请选择是否允许卡付',
trigger: 'blur'
trigger: 'change'
}">
<el-radio-group v-model="packingForm.cardBuy" style="font-size:14px">
<el-radio :label="1">允许卡付</el-radio>
@ -344,6 +347,28 @@
<el-button size="mini" type="primary" plain @click="delProject(scope.$index)"></el-button>
</template>
</el-table-column>
<el-table-column prop="typeInfo" label="有效类型" align="center" width="215">
<template slot-scope="scope">
<el-radio v-model="scope.row.typeInfo" label="1" @change="typeChange(scope.row)">()</el-radio>
<el-radio v-model="scope.row.typeInfo" label="2" @change="typeChange(scope.row)"></el-radio>
</template>
</el-table-column>
<el-table-column label="日期操作" align="center" width="200">
<template slot-scope="scope">
<div v-if="scope.row.typeInfo == 1">
<el-input v-model="scope.row.validTime" placeholder="有效日期(月)" style="width:150px"></el-input>
</div>
<div v-else>
<el-date-picker
v-model="scope.row.useEndDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</div>
</template>
</el-table-column>
</el-table>
<div style="width:100%;background:#eee;display: flex;justify-content:space-between;font-size:14px;line-height:40px">
<span style="margin-left:20px">总价格</span>
@ -528,6 +553,28 @@
<el-button size="mini" type="primary" plain @click="delProject(scope.$index)"></el-button>
</template>
</el-table-column>
<el-table-column prop="typeInfo" label="有效类型" align="center" width="215">
<template slot-scope="scope">
<el-radio v-model="scope.row.typeInfo" label="1" @change="typeChange(scope.row)">()</el-radio>
<el-radio v-model="scope.row.typeInfo" label="2" @change="typeChange(scope.row)"></el-radio>
</template>
</el-table-column>
<el-table-column label="日期操作" align="center" width="200">
<template slot-scope="scope">
<div v-if="scope.row.typeInfo == 1">
<el-input v-model="scope.row.validTime" placeholder="有效日期(月)" style="width:150px"></el-input>
</div>
<div v-else>
<el-date-picker
v-model="scope.row.useEndDate"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择截止日期">
</el-date-picker>
</div>
</template>
</el-table-column>
</el-table>
<div style="width:100%;background:#eee;display: flex;justify-content:space-between;font-size:14px;line-height:40px">
<span style="margin-left:20px">总价格</span>
@ -691,12 +738,20 @@ export default {
};
},
methods: {
typeChange(row){
if(row.typeInfo == '1'){
row.useEndDate = null
}else{
row.validTime = null
}
},
//
editPro() {
this.$refs.project.show(0);
},
//
projectData(form) {
form = {...form,typeInfo:"1"}
form.projectId = form.id;
form.times = form.minumumTimes;
form.projectTotalMoney =
@ -836,6 +891,9 @@ export default {
promotionName: this.packingForm.promotionName,
standardTimes: item.standardTimes,
type: 0,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
promotionProjectLists.push(items);
});
@ -901,6 +959,9 @@ export default {
detail() {
this.titles = "明细";
promotionProList({ id: this.radioRowValueList.id }).then((res) => {
res.rows.forEach(item=>{
item.typeInfo += ''
})
this.packingForm = { promotionProjectLists: [] };
this.packingForm = { ...this.radioRowValueList };
this.packingForm.promotionProjectLists = res.rows;
@ -911,9 +972,11 @@ export default {
},
//
editForm() {
this.titles = "";
this.titles = "修改";
promotionProList({ id: this.radioRowValueList.id }).then((res) => {
res.rows.forEach(item=>{
item.typeInfo += ''
})
this.packingForm = { promotionProjectLists: [] };
this.packingForm = { ...this.radioRowValueList };
this.packingForm.promotionProjectLists = res.rows;
@ -938,6 +1001,9 @@ export default {
projectTotalMoney: item.projectTotalMoney,
promotionName: this.packingForm.promotionName,
type: 0,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
if (item.projectId != undefined) {
items.projectId = item.projectId;
@ -1089,6 +1155,7 @@ export default {
copyForm() {
this.titles = "复制";
promotionProList({ id: this.radioRowValueList.id }).then((res) => {
res.rows.forEach(item=>item.typeInfo += '')
this.packingForm = { promotionProjectLists: [] };
this.packingForm = { ...this.radioRowValueList };
this.packingForm.promotionProjectLists = res.rows;
@ -1111,6 +1178,9 @@ export default {
projectTotalMoney: item.projectTotalMoney,
promotionName: this.packingForm.promotionName,
type: 0,
typeInfo:item.typeInfo,
validTime:item.validTime,
useEndDate:item.useEndDate
};
if (item.projectId != undefined) {
items.projectId = item.projectId;
@ -1131,7 +1201,7 @@ export default {
this.packingForm.cardSalesCommission = 0;
}
this.packingForm.type = 0;
addPromotion(this.packingForm).then((res) => {
addPromotion(Object.assign(this.packingForm,{pushCount:null,pushState:null})).then((res) => {
//console.log(res);
if (res.code == "000000") {
this.$message.success({ message: res.message });

@ -1,7 +1,7 @@
<template>
<!-- 负卡金 -->
<div>
<el-select ref="select" collapse-tags filterable default-first-option :multiple='true' v-model="storeId" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-select v-if="isTrue == 1" ref="select" collapse-tags filterable default-first-option :multiple='true' v-model="storeId" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
@ -93,6 +93,7 @@ import { dayStatisticRecharge, dayStatisticTreatment } from "../../../api/statis
export default {
data() {
return {
isTrue:sessionStorage.getItem("headOffice") * 1,
tableDate: [],
tableDate1: [],
storeIds:[],

@ -1,23 +1,18 @@
<template>
<!-- 项目排行榜 -->
<div class="projectRanking">
<!-- <el-select v-model="queryForm.storeId" placeholder="请选择门店" @change="">
<el-option v-for="(item,index) in options" :key="index" :label="item.storeName" :value="item.id">
</el-option>
</el-select>
<div class="block">
<span class="demonstration padding-left-xs">选择日</span>
<el-date-picker v-model="days" :picker-options="pickerOptions" @change="changeMonth" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</div>
-->
<div class="flex justify-between align-center">
<div class="block">
<span class="demonstration padding-left-xs">选择日</span>
<el-date-picker v-model="days" :picker-options="pickerOptions" @change="changeMonth" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
<!-- :picker-options="pickerOptions" -->
<el-select ref="select" collapse-tags filterable default-first-option :multiple='true' v-model="storeId" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
<el-date-picker v-model="days" :picker-options="pickerOptions" @change="changeMonth" type="daterange" value-format="yyyyMM" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</div>
<div>
<!-- <div>
<el-dropdown @command="handleCommand" class="el-dropdowns">
<span class="el-dropdown-link">
{{showText}}<i class="el-icon-arrow-down el-icon--right"></i>
@ -27,18 +22,19 @@
<el-dropdown-item command="月度数据">月度数据</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div> -->
</div>
<div class="projectRanking-main">
<div style="width: 500px;height:600px;margin: 20px;">
<div style="width: 100%;text-align: center;margin-bottom: 10px;font-weight: 700;">项目购卡金额排行</div>
<el-table :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}" :data="tableDate1">
<el-table-column align="center" prop="projectId" :show-overflow-tooltip="true" label="项目ID"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称"></el-table-column>
<el-table-column align="center" prop="projectStatisticMoney" label="购卡金额"></el-table-column>
<el-table-column align="center" prop="ratio" label="占比">
<el-table-column align="center" prop="storeName" :show-overflow-tooltip="true" label="门店名称"></el-table-column>
<el-table-column align="center" prop="tradeId" :show-overflow-tooltip="true" label="项目ID"></el-table-column>
<el-table-column align="center" prop="tradeName" label="项目名称"></el-table-column>
<el-table-column align="center" prop="countMoney" label="购卡金额"></el-table-column>
<el-table-column align="center" prop="avgMoney" label="占比">
<template slot-scope="scope">
<div>{{scope.row.ratio}}</div>
<div>{{scope.row.avgMoney}}</div>
</template>
</el-table-column>
</el-table>
@ -46,12 +42,13 @@
<div style="width: 500px;height:600px;margin: 20px;">
<div style="width: 100%;text-align: center;margin-bottom: 10px;font-weight: 700;">项目服务金额排行</div>
<el-table :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}" :data="tableDate2">
<el-table-column align="center" prop="projectId" :show-overflow-tooltip="true" label="项目ID"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称"></el-table-column>
<el-table-column align="center" prop="projectStatisticMoney" label="交易金额"></el-table-column>
<el-table-column align="center" prop="ratio" label="占比">
<el-table-column align="center" prop="storeName" :show-overflow-tooltip="true" label="门店名称"></el-table-column>
<el-table-column align="center" prop="tradeId" :show-overflow-tooltip="true" label="项目ID"></el-table-column>
<el-table-column align="center" prop="tradeName" label="项目名称"></el-table-column>
<el-table-column align="center" prop="countMoney" label="交易金额"></el-table-column>
<el-table-column align="center" prop="avgMoney" label="占比">
<template slot-scope="scope">
<div>{{scope.row.ratio}}</div>
<div>{{scope.row.avgMoney}}</div>
</template>
</el-table-column>
</el-table>
@ -59,33 +56,33 @@
<div style="width: 500px;height:600px;margin: 20px;" v-if="showText=='本日数据'">
<div style="width: 100%;text-align: center;margin-bottom: 10px;font-weight: 700;">项目结存金额排行</div>
<el-table :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}" :data="tableDate3">
<el-table-column align="center" prop="projectId" :show-overflow-tooltip="true" label="项目ID"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称"></el-table-column>
<el-table-column align="center" prop="projectStatisticMoney" label="结存金额"></el-table-column>
<el-table-column align="center" prop="ratio" label="占比">
<el-table-column align="center" prop="storeName" :show-overflow-tooltip="true" label="门店名称"></el-table-column>
<el-table-column align="center" prop="tradeId" :show-overflow-tooltip="true" label="项目ID"></el-table-column>
<el-table-column align="center" prop="tradeName" label="项目名称"></el-table-column>
<el-table-column align="center" prop="countMoney" label="结存金额"></el-table-column>
<el-table-column align="center" prop="avgMoney" label="占比">
<template slot-scope="scope">
<div>{{scope.row.ratio}}</div>
<div>{{scope.row.avgMoney}}</div>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
</el-tabs>
</div>
</template>
<script>
import {
storeStatisticProjectList,
projectMonthList,
projectLists,
serviceActive,
balance
} from "../../../api/statistics.js";
import { organizations } from "@/api/storeManage.js";
export default {
data() {
return {
storeId:[],
options:[],
days: [],
tDate: [],
options: [],
@ -96,124 +93,101 @@ export default {
tableDate1: [],
tableDate2: [],
tableDate3: [],
pickerMinDate: "",//
pickerOptions: {
onPick: ({ maxDate, minDate }) => {
this.choiceDate = minDate.getTime();
if (maxDate) {
this.choiceDate = "";
}
// 365
onPick: obj => {
this.pickerMinDate = new Date(obj.minDate).getTime();
},
disabledDate: (time) => {
const self = this;
if (!!self.choiceDate) {
const startDay =
(new Date(self.choiceDate).getDate() - 1) * 24 * 3600 * 1000;
const endDay =
(new Date(
new Date(self.choiceDate).getFullYear(),
new Date(self.choiceDate).getMonth() + 1,
0
).getDate() -
new Date(self.choiceDate).getDate()) *
24 *
3600 *
1000;
let minTime = self.choiceDate - startDay;
let maxTime = self.choiceDate + endDay;
return time.getTime() < minTime || time.getTime() > maxTime;
disabledDate: time => {
if (this.pickerMinDate) {
const day1 = 366 * 24 * 3600 * 1000;
let maxTime = this.pickerMinDate + day1;
let minTime = this.pickerMinDate - day1;
return time.getTime() > maxTime || time.getTime() < minTime;
}
},
},
}
}
// pickerOptions: {
// // onPick: ({ maxDate, minDate }) => {
// // this.choiceDate = minDate.getTime();
// // if (maxDate) {
// // this.choiceDate = "";
// // }
// // },
// // disabledDate: (time) => {
// // const self = this;
// // if (!!self.choiceDate) {
// // const startDay =
// // (new Date(self.choiceDate).getDate() - 1) * 24 * 3600 * 1000;
// // const endDay =
// // (new Date(
// // new Date(self.choiceDate).getFullYear(),
// // new Date(self.choiceDate).getMonth() + 1,
// // 0
// // ).getDate() -
// // new Date(self.choiceDate).getDate()) *
// // 24 *
// // 3600 *
// // 1000;
// // let minTime = self.choiceDate - startDay;
// // let maxTime = self.choiceDate + endDay;
// // return time.getTime() < minTime || time.getTime() > maxTime;
// // }
// // },
// },
};
},
methods: {
changeMonth(res) {
console.log(res);
let date = this.formatTime(res[1], "YYYY-MM-DD 23:59:59");
var form = { startDate: res[0], endDate: date };
},
change(res) {
this.queryForm.startDates = res[0];
this.queryForm.stopDates = res[1];
init(){
let params = {
storeId:this.storeId,
date:this.days
}
this.cardR
this.cardRanking(Object.assign(params,{type:1}))
this.serveRanking(Object.assign(params,{type:2}))
this.balanceRanking(Object.assign(params,{type:3}))
},
changeMonth(res) {
this.month = this.formatTime(res, "YYYY-MM");
this.handleClick();
//
cardRanking(params){
projectLists(params).then(res=>{
if (res.code == "000000") {
res.rows.forEach((element) => {
element.avgMoney = (element.avgMoney * 100).toFixed(2) + "%";
});
this.tableDate1 = res.rows;
}
})
},
handleCommand(command) {
this.showText = command;
this.activeName = "购卡";
this.handleClick();
//
serveRanking(params){
serviceActive(params).then(res=>{
if (res.code == "000000") {
res.rows.forEach((element) => {
element.avgMoney = (element.avgMoney * 100).toFixed(2) + "%";
});
this.tableDate2 = res.rows;
}
})
},
handleClick() {
if (this.showText == "月度数据") {
projectMonthList({
type: 1,
date: this.month,
}).then((res) => {
//console.log(res);
if (res.code == "000000") {
res.rows.forEach((element) => {
element.ratio = (element.ratio * 100).toFixed(2) + "%";
});
this.tableDate1 = res.rows;
}
});
} else {
storeStatisticProjectList({
type: 1,
}).then((res) => {
//console.log(res);
if (res.code == "000000") {
res.rows.forEach((element) => {
element.ratio = (element.ratio * 100).toFixed(2) + "%";
});
this.tableDate1 = res.rows;
}
});
}
if (this.showText == "月度数据") {
projectMonthList({
type: 2,
date: this.month,
}).then((res) => {
if (res.code == "000000") {
res.rows.forEach((element) => {
element.ratio = (element.ratio * 100).toFixed(2) + "%";
});
this.tableDate2 = res.rows;
}
});
storeStatisticProjectList({
type: 2,
}).then((res) => {
//console.log(res);
if (res.code == "000000") {
res.rows.forEach((element) => {
element.ratio = (element.ratio * 100).toFixed(2) + "%";
});
this.tableDate2 = res.rows;
}
});
} else {
storeStatisticProjectList({
type: 3,
}).then((res) => {
//console.log(res);
if (res.code == "000000") {
res.rows.forEach((element) => {
element.ratio = (element.ratio * 100).toFixed(2) + "%";
});
this.tableDate3 = res.rows;
}
});
}
//
balanceRanking(params){
balance(params).then(res=>{
if (res.code == "000000") {
res.rows.forEach((element) => {
element.avgMoney = (element.avgMoney * 100).toFixed(2) + "%";
});
this.tableDate3 = res.rows;
}
})
},
//
async getData() {
organizations({ pageSize: 99 }).then((res) => {
getStoreInit(){
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
} else {
this.$alert(res.message, "提示", {
@ -224,26 +198,20 @@ export default {
callback: (action) => {},
});
}
});
});
},
storeStatisticProjectList() {
storeStatisticProjectList({
type: 1,
}).then((res) => {
//console.log(res);
if (res.code == "000000") {
res.rows.forEach((element) => {
element.ratio = (element.ratio * 100).toFixed(2) + "%";
});
this.tableDate1 = res.rows;
}
});
changeMonth(res) {
if(!res)this.days = []
this.init()
},
//
getData() {
this.init()
},
},
created() {
this.month = this.formatTime(new Date(), "YYYY-MM");
this.handleClick();
// this.storeStatisticProjectList();
this.init()
this.getStoreInit()
},
};
</script>

@ -39,6 +39,7 @@
<el-table-column align="center" prop="popularity" label="人气" sortable min-width="100"></el-table-column>
<el-table-column align="center" v-if='sessionStorageList.payroll!=1' prop="baseSalary" label="底薪" sortable min-width="190"></el-table-column>
<el-table-column align="center" prop="userState" label="是否用户" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="" label="操作人" min-width="100"></el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="80" v-role='4002007'>
<template slot-scope="scope" fixed="right">
<el-button @click="start(scope.row)" size="mini" type="primary" plain>启用</el-button>

@ -41,6 +41,7 @@
<el-table-column align="center" prop="popularity" label="人气" sortable min-width="100"></el-table-column>
<el-table-column align="center" v-if='sessionStorageList.payroll!=1' prop="baseSalary" label="底薪" sortable min-width="190"></el-table-column>
<el-table-column align="center" prop="userState" label="是否用户" sortable min-width="100"></el-table-column>
<el-table-column align="center" prop="inputBy" label="操作人" sortable min-width="100"></el-table-column>
<el-table-column align="center" fixed="right" label="查看" width="76" v-role='4002006'>
<template slot-scope="scope">
<el-button @click="examine(scope.row)" size="mini" type="primary" plain>查看</el-button>

@ -130,6 +130,7 @@
<el-input :disabled="title=='查看'" placeholder="请输入擅长" v-model="form.goodAt" autocomplete="on" type="textarea" size="medium" :autosize="{ minRows: 2, maxRows: 4}" :maxlength="150" show-word-limit></el-input>
</div>
</el-form-item>
<el-table-column align="center" prop="" label="操作人" min-width="100"></el-table-column>
<el-form-item label="简介">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入简介" v-model="form.briefIntroduction" autocomplete="on" type="textarea" :autosize="{ minRows:2, maxRows:10}" :maxlength="300" show-word-limit></el-input>

@ -47,6 +47,8 @@
{{scope.row.deptName==0?"美发部":scope.row.deptName==1?"美容部":scope.row.deptName==2?"其他部":"无"}}
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="inputBy" label="创建人" sortable min-width="75"></el-table-column>
<el-table-column show-overflow-tooltip align="center" prop="modifyBy" label="修改人" sortable min-width="75"></el-table-column>
<el-table-column align="center" fixed="right" label="查看" width="76">
<template slot-scope="scope">
<el-button @click="examine(scope.row)" size="mini" type="primary">查看</el-button>

@ -49,6 +49,7 @@
{{scope.row.deptName==0?"美发部":scope.row.deptName==1?"美容部":scope.row.deptName==2?"其他部":"无"}}
</template>
</el-table-column>
<el-table-column align="center" prop="proposerName" label="操作人" min-width="100"></el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="80">
<template slot-scope="scope">
<el-button size="mini" type="primary" plain @click="quer(scope.row)"></el-button>

@ -33,7 +33,8 @@ service.interceptors.request.use(
return Promise.reject(error);
}
);
var flag = false;
let flag = false;
// axios response 拦截器
service.interceptors.response.use(
response => {
@ -53,14 +54,16 @@ service.interceptors.response.use(
}).then(() => {
router.push("/login");
delCookie("token");
debounce = true
});
setTimeout(() => {
flag = false;
console.log('什么时候执行')
}, 15000);
console.log(flag);
}
break;
case "510002":
console.log(flag)
if (flag) {
break;
} else {
@ -75,7 +78,6 @@ service.interceptors.response.use(
router.push("/login");
delCookie("token");
});
//解决当token过期时同一个页面有多个请求造成 “是否重新登录”弹框多次弹出 的BUG
setTimeout(() => {
flag = false;

Loading…
Cancel
Save