报表提交

master
曾嘉俊 3 years ago
parent cf2e10bc32
commit b7b9517afb

@ -10,6 +10,23 @@ export function getSmsCode(params) {
});
}
// 查询所有归属公司
export function selectDescription() {
return service({
url: "/api" + "/demay/ssm/store/selectDescription",
method: "post",
});
}
// 修改门店参数
export function updataStore(data) {
return service({
url: "/api" + "/demay/ssm/store/updateStore",
method: "post",
data
});
}
// 门店员工手机验证码登陆获取token接口
export function phoneLogin(params) {
return service({

@ -37,7 +37,8 @@ export function exportStoreByDayDailys(params){
export function exportStoreDailys(params) {
return service({
url: "/api" + "/demay/ssm/storeExport/storeDailys",
// url: "/api" + "/demay/ssm/storeExport/storeDailys",
url: "/api" + "/demay/ssm/storeExport/storeDailysNew",
method: "post",
data: params
});
@ -256,7 +257,7 @@ export function achiCommListsgroup(params) {
//导出
export function exportachi(params) {
return service({
url: "/api" + "/demay/ssm/staff////////achiCommListsgroup/exportachi",
url: "/api" + "/demay/ssm/staff/achiCommListsgroup/exportachi",
method: "post",
data: params,
responseType: "blob"

@ -35,11 +35,12 @@ export function DynamicLoginNews(data){
}
// 同步总店数据
export function totalData(params){
export function totalData(params,data){
return service({
url: "/api" + '/demay/ssm/storePara/update1',
method: 'post',
params: params
params,
data
})
}
@ -1131,6 +1132,17 @@ export function departmentPerformance(params) {
data: params
});
}
// 导出部门业绩
export function exportachi(params) {
return service({
url: "/api" + "/demay/ssm/staff/departmentPerformance/exportachi",
method: "post",
data: params,
responseType: "blob",
});
}
//明细
export function departmentPerformance2(params) {
return service({

@ -148,7 +148,7 @@ export default {
confirm() {
this.$refs.form.validate(async (valid) => {
if (valid) {
if (partten.phoneNum.test(this.form.mobilePhone)) {
// if (partten.phoneNum.test(this.form.mobilePhone)) {
if (this.title == "添加") {
if (this.form.checkPass == this.form.cashPassword) {
this.form.storeId = sessionStorage.getItem("parentId");
@ -190,15 +190,15 @@ export default {
}
});
}
} else {
this.$alert("请输入正确的11位手机号", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
// } else {
// this.$alert("11", "", {
// confirmButtonText: "",
// confirmButtonClass: "confirmbtnFalses",
// type: "warning",
// center: true,
// callback: (action) => {},
// });
// }
}
});
},

@ -540,7 +540,7 @@ export default {
}
});
element.staffList = element.entities;
selectOne({ type: 7, orderId: element.id }).then((res) => {
selectOne({ type: 7, orderId: element.docId }).then((res) => {
if (res.code == "000000") {
var managerList = [];
var adminList = [];
@ -727,8 +727,17 @@ export default {
delete item.docDate;
delete item.yetMoney;
});
this.form.debtMoney = debtMoney;
if (this.debtMoneys != 0) {
// this.form.debtMoney = debtMoney;
let sumTotal = eval(this.multipleSelection.map(item=>item.paymentMoney?item.paymentMoney*1:0).join("+")) //
let paySum = eval(this.payLists.map(item=>item.payMoney?item.payMoney*1:0).join("+")) //
// if (this.debtMoneys != 0) {
// this.$message.error({
// message: "",
// });
// this.loading = false;
// }
if (sumTotal != paySum) {
this.$message.error({
message: "还款金额与支付金额不一致",
});

@ -1,5 +1,5 @@
<template>
<el-select ref="select" multiple collapse-tags filterable default-first-option v-model="storeIds" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-select ref="select" multiple filterable default-first-option v-model="storeIds" 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>

@ -692,7 +692,6 @@ export default {
},
],
},
{
name: "统计报表",
index: "40",
@ -750,13 +749,77 @@ export default {
// id:"1001104",
// },
// {
// name: "",
// name: "",
// icon: "el-icon-suitcase",
// route: "/IndividualPerformance",
// index: "IndividualPerformance",
// number: "600900",
// id:"1001105",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/scalpProject",
// index: "scalpProject",
// number: "600900",
// id:"1001106",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/monCommission",
// index: "monCommission",
// number: "600900",
// id:"1001107",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/cashReward",
// index: "cashReward",
// number: "600900",
// id:"1001108",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/monthlyRegistrationDetails",
// index: "monthlyRegistrationDetails",
// number: "600900",
// id:"1001109",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/projectPinCard",
// index: "projectPinCard",
// number: "600900",
// id:"10011010",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/storeConsultant",
// index: "storeConsultant",
// number: "600900",
// id:"10011011",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/storeTurnover",
// index: "storeTurnover",
// number: "600900",
// id:"10011012",
// },
// {
// name: "",
// icon: "el-icon-suitcase",
// route: "/productStatistics",
// index: "productStatistics",
// number: "600900",
// id:"10011013",
// },
//
{
name: "门店日总业绩",

@ -3,12 +3,12 @@
<div style="padding-left:80px">
<el-form :model="form" ref="form" label-width="120px">
<div class="form">
<el-form-item label="属名称" prop="memberName">
<el-form-item label="属名称" prop="memberName">
<el-input ref="memberName" v-model="form.memberName" @change="handleChange" autocomplete="on"></el-input>
</el-form-item>
<el-form-item label="所属编码" prop="memberName">
<!-- <el-form-item label="所属编码" prop="memberName">
<el-input ref="memberName" v-model="form.memberName" @change="handleChange" autocomplete="on"></el-input>
</el-form-item>
</el-form-item> -->
</div>
</el-form>
</div>
@ -58,6 +58,7 @@
},
//
confirm() {
},
},
};

@ -9,12 +9,21 @@
<el-form-item label="门店名称:" prop="storeName">
<el-input v-model="form.storeName" ></el-input>
</el-form-item>
<el-form-item label="所属门店:" prop="storeId">
<el-cascader
v-model="form.storeId"
:options="[]"></el-cascader>
<el-button type="primary" size="mini" @click="handleStoreShow">
<i style="font-size:20px;" class="el-icon-plus"></i>
<el-form-item label="归属" prop="description">
<el-select
v-model="form.description"
filterable
allow-create
default-first-option>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<!-- <el-button type="primary" size="mini" @click="handleStoreShow">
<i style="font-size:20px;" class="el-icon-plus"></i> -->
</el-button>
</el-form-item>
<el-form-item label="省:">
@ -55,7 +64,8 @@
<script>
import Map from './map.vue'
import store from './exclusive-stores.vue'
import store from './addStore.vue'
import { selectDescription,updataStore } from "@/api/login.js";
export default {
components:{
Map,
@ -66,9 +76,31 @@
title:"分店明细",
dialogFormVisible:false,
form:{},
options:[],
}
},
watch:{
dialogFormVisible:{
handler(arr){
this.getAscription()
},
immediate:true
}
},
methods: {
getAscription(){
selectDescription().then(res=>{
if(res.code == "000000"){
this.options = res.data.map(item=>{
return {
label:item,
value:item
}
})
console.log(this.options);
}
})
},
handleStoreShow(){
this.$refs.store.show()
},
@ -91,6 +123,21 @@
this.$refs.form.clearValidate();
},
confirm(){
updataStore(this.form).then(res=>{
if(res.code == '000000'){
this.$message.success({ message: "操作成功" });
this.dialogFormVisible = false;
this.$emit('confirm')
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
})
}
},
};

@ -5,7 +5,7 @@
<el-input size="medium" style="width: 180px" placeholder="当前页搜索" v-model="queryForm.storeName">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
<!-- <el-button size="mini" type="primary" style="margin-left: 10px;" :disabled="!radioForm.id" @click="detailShow"></el-button> -->
<el-button size="mini" type="primary" style="margin-left: 10px;" :disabled="!radioForm.id" @click="detailShow" v-if="headOffice"></el-button>
</div>
</div>
<hr />
@ -22,9 +22,8 @@
</el-table-column>
<el-table-column align="center" prop="storeNum" label="门店编码" min-width="100" sortable></el-table-column>
<el-table-column align="center" prop="storeName" label="门店名称" :show-overflow-tooltip="true" min-width="140" sortable></el-table-column>
<el-table-column align="center" prop="storeName" label="所属门店" min-width="140" :show-overflow-tooltip="true" sortable>
<template>{{storeInfo.storeName}}</template>
</el-table-column>
<el-table-column align="center" prop="storeName" label="所属门店" min-width="140" :show-overflow-tooltip="true" sortable></el-table-column>
<el-table-column align="center" prop="description" label="归属" min-width="100" :show-overflow-tooltip="true" sortable></el-table-column>
<el-table-column align="center" prop="province" label="省" min-width="100" :show-overflow-tooltip="true" sortable></el-table-column>
<el-table-column align="center" prop="city" label="市" min-width="100" :show-overflow-tooltip="true" sortable></el-table-column>
<el-table-column align="center" prop="county" label="区/县" min-width="100" :show-overflow-tooltip="true" sortable></el-table-column>
@ -32,11 +31,21 @@
<el-table-column align="center" prop="registrant" label="联系人" :show-overflow-tooltip="true" min-width="100" sortable></el-table-column>
<el-table-column align="center" prop="registrantMobilePhone" label="联系方式" min-width="130" sortable></el-table-column>
<el-table-column align="center" prop="telephone" label="服务电话" min-width="120" sortable></el-table-column>
<el-table-column align="center" label="状态" min-width="120">
<template slot-scope="scope">
<el-button size="mini" :type="
scope.row.state == 0?'primary':
scope.row.state == 1?'success':
scope.row.state == 2?'info':'warning'">
{{ statusList[scope.row.state] }}
</el-button>
</template>
</el-table-column>
</el-table>
<!-- <div class="block" style="margin-top: 10px">
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageNum" :page-sizes="[10, 20, 30, 40, 50]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="pageInfo.total"></el-pagination>
</div> -->
<detail ref="detail"/>
<detail ref="detail" @confirm="confirm"/>
</div>
</template>
@ -49,6 +58,8 @@ export default {
},
data() {
return {
statusList:['装修','开业','停业','关闭'],
headOffice: sessionStorage.getItem("headOffice") * 1,
radio:"",
radioForm:{},
sessionStorageData: {},
@ -66,6 +77,9 @@ export default {
};
},
methods: {
confirm(){
this.getData()
},
detailShow(){
this.$refs.detail.show(this.radioForm)
},

@ -3,7 +3,7 @@
<div class="block">
<selec v-if="headOffice == 1" ref="selec" @selecData="selecData"></selec>
<span class="demonstration padding-left-xs">选择日</span>
<el-date-picker size="medium" v-model="days" :picker-options="pickerOptions" @change="getData" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
<el-date-picker size="medium" v-model="days" :picker-options="pickerOptions" @change="getData" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="queryForm.memberName" placeholder="输入要查询的会员名字" clearable></el-input>

@ -40,12 +40,12 @@
},
//
show(id) {
this.title = id?'修改':'添加'
this.dialogFormVisible = true
this.$nextTick(()=>{
Object.assign(this.$data, this.$options.data.call(this));
this.form = {}
this.$refs.quillEditor.content = ''
})
this.title = id?'修改':'添加'
this.dialogFormVisible = true
},
}
};

@ -473,15 +473,15 @@ export default {
}else{
if (this.debtMoney * 1 != 0) {
this.$alert("转入金额和转出加支付金额不相等(本店不允许加价转疗程存在欠款)", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => { },
});
this.loading = false;
falg = false;
// this.$alert("()", "", {
// confirmButtonText: "",
// confirmButtonClass: "confirmbtnFalses",
// type: "warning",
// center: true,
// callback: (action) => { },
// });
// this.loading = false;
// falg = false;
}
}

@ -36,7 +36,7 @@
</li>
<li class="project-top-del" v-for="(item,index) in courseList" :key="index">
<p>{{ item.projectName }}</p>
<p>{{ item.number }}</p>
<p>{{ item.num }}</p>
<p>{{ item.courseRestCount }}</p>
</li>
</ul>
@ -46,15 +46,15 @@
<ul>
<li class="project-top">
<p>项目</p>
<p style="width:33px">标价</p>
<p style="width:33px">数量</p>
<p style="width:36px">标价</p>
<p style="width:30px">数量</p>
<p style="width:48px">折后价</p>
</li>
<li v-for="(item,index) in projectList" :key="index" class="project-top-del">
<p>{{ item.projectName }}</p>
<p style="width:32px"> {{ item.transactionPrice }}</p>
<p style="width:32px"> {{ item.number }}</p>
<p style="width:48px"> {{ item.price }}</p>
<p style="width:53px"> {{ item.transactionPrice }}</p>
<span> {{ item.number }}</span>
<spa style="width:53px"> {{ item.courseRestCount }}</spa>
</li>
</ul>
</div>
@ -132,7 +132,20 @@ export default {
this.printForm.projectList.forEach((item) => {
item.discountmoney = ((item.collectionCashAmount * 1) + (item.collectionRechargeAmount * 1)).toFixed(2) * 1;
})
this.recList = recList;
let list = []
recList.forEach(item=>{
let index = list.findIndex(item2=>item2.rechargeTypeName == item.rechargeTypeName)
if(index == -1){
//
list.push(item)
}else{
//
list[index].cardRestMoney = item.cardRestMoney //
list[index].spendMoney += item.spendMoney
}
})
// this.recList = recList;
this.recList = list
if(this.printForm.isCoursePay){
this.courseList = this.printForm.projectList.filter(item=>item.courseRestCount)
let list = []
@ -143,12 +156,6 @@ export default {
}else{
let index = list.findIndex(i=>i.id === item.id)
list[index].num += 1
list[index].courseRestCount -= 1
}
})
list.forEach(item=>{
if(item.num != 1){
item.courseRestCount += 1
}
})
this.courseList = list
@ -161,6 +168,13 @@ export default {
</script>
<style scoped>
@media print {
#printId{
font-family: Microsoft YaHei !important;
color: #000 !important;
}
}
.print-project{
width:100%
}
@ -193,7 +207,7 @@ export default {
.printDiv .el-form-item__label,
.el-form-item__content {
/* font-size: 12px; */
color: black;
color: #000;
font-family: "宋体";
padding: 0 5px 0 0;
}
@ -209,7 +223,7 @@ export default {
.printDiv .el-table th {
padding: 0;
font-size: 12px;
color: black;
color: #000;
font-weight: 300;
}
</style>

@ -429,7 +429,6 @@
placeholder="请选择"
:ref="'zhonggongList'+scope.$index"
@change="handleChange($event, scope.row, 'zhonggongList',scope.$index)"
@keyup.enter.native="selectBlur(scope.row.zhonggongLists,'zhonggongList',scope.$index)"
style="width:110px"
>
<el-option
@ -467,7 +466,6 @@
v-model="scope.row.largeLists"
placeholder="请选择"
@change="handleChange($event, scope.row, 'largeList',scope.$index)"
@keyup.enter.native="selectBlur(scope.row.largeLists,'largeList',scope.$index)"
style="width:110px"
>
<el-option
@ -503,7 +501,6 @@
@change="
handleChange($event, scope.row, 'technicianList',scope.$index)
"
@keyup.enter.native="selectBlur(scope.row.technicianLists,'technicianList',scope.$index)"
style="width:110px"
>
<el-option
@ -539,7 +536,6 @@
placeholder="请选择"
:ref="'smallList'+scope.$index"
@change="handleChange($event, scope.row, 'smallList',scope.$index)"
@keyup.enter.native="selectBlur(scope.row.smallLists,'smallList',scope.$index)"
style="width:110px"
>
<el-option
@ -573,7 +569,6 @@
:ref="'managerList'+scope.$index"
@change="handleChange($event, scope.row, 'managerList',scope.$index)"
style="width:110px"
@keyup.enter.native="selectBlur(scope.row.managerLists,'managerList',scope.$index)"
>
<el-option
v-for="(item, index) in managerOptions"
@ -607,7 +602,6 @@
:ref="'adminList'+scope.$index"
@change="handleChange($event, scope.row, 'adminList',scope.$index)"
style="width:110px"
@keyup.enter.native="selectBlur(scope.row.adminLists,'adminList',scope.$index)"
>
<el-option
v-for="(item, index) in adminOptions"
@ -2173,106 +2167,13 @@ export default {
}
});
}
this.list.splice(row.index, 1, form);
this.list[row.index] = form
// this.list.splice(row.index, 1, form);
this.keyIndex = index
this.refText = text
this.triggerInit(text,index)
// if(this.list.length-1 == this.keyIndex){
// if(this.list.length-1 == this.keyIndex&&this.refText=='adminList')return
// this.$refs[this.refText+this.keyIndex].blur()
// this.keyIndex =0
// switch(this.refText){
// case 'zhonggongList': //
// this.$nextTick(()=>{
// this.$refs['largeList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['largeList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'largeList': //
// this.$nextTick(()=>{
// this.$refs['technicianList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['technicianList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'technicianList': //
// this.$nextTick(()=>{
// this.$refs['smallList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['smallList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'smallList': //
// this.$nextTick(()=>{
// this.$refs['managerList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['managerList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'managerList': //
// this.$nextTick(()=>{
// this.$refs['adminList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['adminList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'adminList': //
// this.$nextTick(()=>{
// this.$refs['adminList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['adminList'+this.keyIndex].toggleMenu() //
// })
// break;
// }
// }else{
// switch(this.refText){
// case 'zhonggongList': //
// this.$nextTick(()=>{
// this.$refs[this.refText+this.keyIndex].blur() //
// this.keyIndex+=1
// this.$refs['zhonggongList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['zhonggongList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'largeList': //
// this.$nextTick(()=>{
// this.$refs[this.refText+this.keyIndex].blur() //
// this.keyIndex+=1
// this.$refs['largeList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['largeList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'technicianList': //
// this.$nextTick(()=>{
// this.$refs[this.refText+this.keyIndex].blur() //
// this.keyIndex+=1
// this.$refs['technicianList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['technicianList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'smallList': //
// this.$nextTick(()=>{
// this.$refs[this.refText+this.keyIndex].blur() //
// this.keyIndex+=1
// this.$refs['smallList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['smallList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'managerList': //
// this.$nextTick(()=>{
// this.$refs[this.refText+this.keyIndex].blur() //
// this.keyIndex+=1
// this.$refs['managerList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['managerList'+this.keyIndex].toggleMenu() //
// })
// break;
// case 'adminList': //
// this.$nextTick(()=>{
// this.$refs[this.refText+this.keyIndex].blur() //
// this.keyIndex+=1
// this.$refs['adminList'+this.keyIndex].$el.querySelector('input').focus() //searchinput
// this.$refs['adminList'+this.keyIndex].toggleMenu() //
// })
// break;
// }
// }
this.list.push({})
this.list.pop()
},
goPayDebt() {
this.$refs.repayment.show(this.memberForm);
@ -2545,6 +2446,7 @@ export default {
},
//
confirm() {
// largeList
let flag = true;
if (!this.list.length) {
this.$alert("项目最少需要一个", "提示", {
@ -2691,6 +2593,7 @@ export default {
list.forEach(item => {
collectionAmountsum+=(item.collectionAmount*1+collectionAmountsum*1);
});
console.log(this.list)
// this.formData.append("cashListRequestList", JSON.stringify(list));
this.$confirm('是否发送短信?', '短信', {
distinguishCancelAndClose: true,
@ -2700,71 +2603,80 @@ export default {
list[0].isSendSms = 1
this.formData.append("cashListRequestList", JSON.stringify(list));
addCash(this.formData).then(res => {
if (res.code == "000000") {
this.$message.success({
message: "验证成功 , 收银" + res.message
});
this.formData = new FormData();
this.notData();
this.updataCollection()
this.printInie()
} 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();
}
});
}).catch(()=>{
list[0].isSendSms = 0
this.formData.append("cashListRequestList", JSON.stringify(list));
// this.formData.append("isSendSms", 0);
addCash(this.formData).then(res => {
if (res.code == "000000") {
this.$message.success({
message: "验证成功 , 收银" + res.message
});
this.formData = new FormData();
this.notData();
this.updataCollection()
this.printInie()
} 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();
}
});
if (res.code == "000000") {
this.$message.success({
message: "验证成功 , 收银" + res.message
});
this.formData = new FormData();
this.notData();
this.updataCollection()
this.printInie()
} 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.notData();
}
});
this.formData = new FormData();
}
});
}).catch(()=>{
list[0].isSendSms = 0
this.formData.append("cashListRequestList", JSON.stringify(list));
// this.formData.append("isSendSms", 0);
addCash(this.formData).then(res => {
if (res.code == "000000") {
this.$message.success({
message: "验证成功 , 收银" + res.message
});
this.formData = new FormData();
this.notData();
this.updataCollection()
this.printInie()
} 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.notData();
}
});
this.formData = new FormData();
}
});
})
},
openStaffRatio(row, index, text) {
console.log(this.list)
this.editIndex = index;
this.$refs.staffratio.show(row, text);
this.$refs.staffratio.show({...row}, text);
this.$refs.staffratio.showdetele();
localStorage.setItem("row", JSON.stringify(row));
localStorage.setItem("text", text);
let tRow = {...row}
let tText = text
localStorage.setItem("row", JSON.stringify(tRow));
localStorage.setItem("text", tText);
},
staffratioData(v) {
console.log(v,this.list)
let form = this.list[this.editIndex];
let texts = v.text + "s";
form[v.text] = v.list;
form[texts] = v.list[0].label;
this.list[this.editIndex] = form
this.list.splice(this.editIndex, 1, form);
},
addPro() {
@ -2832,10 +2744,10 @@ export default {
let index = this.list.findIndex(item=>{
return item.courseAccountId == v.courseAccountId
})
console.log(v.courseAccountId,this.list,index)
if(index != -1){
this.list[index].numberTimes += 1
}else this.setProOne(v);
this.setProOne(v);
// if(index != -1){
// this.list[index].numberTimes += 1
// }else this.setProOne(v);
},
paymentData(v) {
this.list.pop()

@ -68,7 +68,6 @@ export default {
this.changeStaff();
},
endEdit(row, index) {
if (row.ratio * 1 > 100) {
this.$alert("输入值不能大于100", "提示", {
confirmButtonText: "确定",
@ -108,7 +107,6 @@ export default {
});
this.list[0].ratio = this.list[0].ratio + row.ratio
row.ratio = 0;
}
this.changeStaff();
},
@ -189,7 +187,7 @@ export default {
show(form, text) {
setTimeout(() => {
this.$nextTick(() => {
this.list = JSON.parse(JSON.stringify([]));
this.list = [];
this.form = { ...form };
this.staffText = text;
if (text == "zhonggongList") {
@ -210,7 +208,7 @@ export default {
if (text == "managerList") {
this.staffTitle = "高管";
}
this.list = form[text];
this.list = JSON.parse(JSON.stringify(form[text]));
this.list.forEach((item) => {
if (item.id) {
item.label = item.brandNumber + "-" + item.staffName;
@ -327,21 +325,17 @@ export default {
},
confirms() {
let flag = this.isRepeat(this.list, "brandNumber");
this.list.forEach((item,index)=>{
if(item.label==""){
this.list.splice(index,1)
}
if(item.label==""){
this.list.splice(index,1)
}
})
let form = {
text: this.staffText,
list: this.list,
};
if (flag) {
this.$emit("staffratioData", form);
this.dialogVisible = false;
} else {
this.$alert("选择员工存在重复", "提示", {

@ -0,0 +1,65 @@
<template>
<div>
<div class="staffRanking_header padding-bottom-xs">
<div></div>
<div class="block">
<el-date-picker
v-model="Time"
placeholder="选择月份"
type="month"
range-separator="至"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" show-summary border max-height="600" ref="table">
<el-table-column align="center" min-width="80" prop="storeNum" label="日期" ></el-table-column>
<el-table-column align="center" min-width="100" prop="storeName" label="门店" ></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="顾客姓名"></el-table-column>
<el-table-column align="center" min-width="100" prop="allRows" label="项目明细名称"></el-table-column>
<el-table-column align="center" min-width="100" prop="cashRows" label="疗程卡号"></el-table-column>
<el-table-column align="center" min-width="100" prop="courseRows" label="博卡单号"></el-table-column>
<el-table-column align="center" min-width="100" prop="rechargeRows" label="金额"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="次数"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="服务员工号"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="卖卷奖"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="备注"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
dateChange(date){
},
exit(){
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
const formattedTime = `${year}-${month}-${day}`;
return formattedTime;
},
init(){
this.loading = true
}
}
};
</script>
<style scoped>
</style>

@ -0,0 +1,70 @@
<template>
<div>
<div class="staffRanking_header padding-bottom-xs">
<div></div>
<div class="block">
<el-date-picker
v-model="Time"
placeholder="选择月份"
type="month"
range-separator="至"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" show-summary border max-height="600" ref="table">
<el-table-column align="center" min-width="80" prop="storeNum" label="日期" ></el-table-column>
<el-table-column align="center" min-width="100" prop="storeName" label="营业额" ></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="厂家分成"></el-table-column>
<el-table-column align="center" min-width="100" prop="allRows" label="实业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="cashRows" label="美容部实业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="courseRows" label="美发部实业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="rechargeRows" label="美容部疗程"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发部疗程"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容部合作项目"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发部合作项目"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容部折扣卡金"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发部折扣卡金"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容部其他现金服务"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发部其他现金服务"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发客单"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容客单"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
dateChange(date){
},
exit(){
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
const formattedTime = `${year}-${month}-${day}`;
return formattedTime;
},
init(){
this.loading = true
}
}
};
</script>
<style scoped>
</style>

@ -0,0 +1,65 @@
<template>
<div>
<div class="staffRanking_header padding-bottom-xs">
<div></div>
<div class="block">
<el-date-picker
v-model="Time"
placeholder="选择月份"
type="month"
range-separator="至"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" show-summary border max-height="600" ref="table">
<el-table-column align="center" min-width="80" prop="storeNum" label="门店" ></el-table-column>
<el-table-column align="center" min-width="100" prop="storeName" label="工号" ></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="姓名"></el-table-column>
<el-table-column align="center" min-width="100" prop="allRows" label="耗卡明细"></el-table-column>
<el-table-column align="center" min-width="100" prop="cashRows" label="单号"></el-table-column>
<el-table-column align="center" min-width="100" prop="courseRows" label="会员编号"></el-table-column>
<el-table-column align="center" min-width="100" prop="rechargeRows" label="顾客姓名"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="项目"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="优惠卷金额"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="奖励"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="备注"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
dateChange(date){
},
exit(){
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
const formattedTime = `${year}-${month}-${day}`;
return formattedTime;
},
init(){
this.loading = true
}
}
};
</script>
<style scoped>
</style>

@ -0,0 +1,69 @@
<template>
<div>
<div class="staffRanking_header padding-bottom-xs">
<div></div>
<div class="block">
<el-date-picker
v-model="Time"
placeholder="选择月份"
type="month"
range-separator="至"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" show-summary border max-height="600" ref="table">
<el-table-column align="center" min-width="80" prop="storeNum" label="门店" ></el-table-column>
<el-table-column align="center" min-width="100" prop="storeName" label="日期" ></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="顾客姓名"></el-table-column>
<el-table-column align="center" min-width="100" prop="allRows" label="合作厂家名称"></el-table-column>
<el-table-column align="center" min-width="100" prop="cashRows" label="项目明细名称"></el-table-column>
<el-table-column align="center" min-width="100" prop="courseRows" label="会员编码"></el-table-column>
<el-table-column align="center" min-width="100" prop="rechargeRows" label="单据号"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="销卡金额"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="销卡次数"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="门店分成金额"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="厂家分成金额"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="服务员工号"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="跟单管理层"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="收据编码"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="备注"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
dateChange(date){
},
exit(){
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
const formattedTime = `${year}-${month}-${day}`;
return formattedTime;
},
init(){
this.loading = true
}
}
};
</script>
<style scoped>
</style>

@ -4,25 +4,14 @@
<div class="flex justify-between align-center">
<div class="block">
<span class="demonstration padding-left-xs">选择日</span>
<!-- :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-select v-if="headOffice" ref="select" collapse-tags filterable default-first-option :multiple='true' v-model="storeId" clearable placeholder="请选择门店">
<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-select>
<el-date-picker v-model="date" type="month" value-format="yyyyMM" :clearable="false">
</el-date-picker>
<el-button type="primary" size="mini" @click="changeMonth" >查询</el-button>
</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>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="本日数据" divided>本日数据</el-dropdown-item>
<el-dropdown-item command="月度数据">月度数据</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div> -->
</div>
<div class="projectRanking-main">
<div style="width: 500px;height:600px;margin: 20px;">
@ -81,9 +70,11 @@ import { organizations } from "@/api/storeManage.js";
export default {
data() {
return {
disabled:false,
headOffice: sessionStorage.getItem("headOffice") * 1,
storeId:[],
options:[],
days: [],
date: new Date(),
tDate: [],
options: [],
queryForm: {},
@ -108,43 +99,16 @@ export default {
}
}
}
// 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: {
init(){
let params = {
storeId:this.storeId,
date:this.days
}
this.cardR
if(this.date){
params.date = [this.date,this.date]
}
this.cardRanking(Object.assign(params,{type:1}))
this.serveRanking(Object.assign(params,{type:2}))
this.balanceRanking(Object.assign(params,{type:3}))
@ -200,8 +164,8 @@ export default {
}
});
},
changeMonth(res) {
if(!res)this.days = []
changeMonth() {
// if(!res)this.date = []
this.init()
},
//

@ -0,0 +1,65 @@
<template>
<div>
<div class="staffRanking_header padding-bottom-xs">
<div></div>
<div class="block">
<el-date-picker
v-model="Time"
placeholder="选择月份"
type="month"
range-separator="至"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" show-summary border max-height="600" ref="table">
<el-table-column align="center" min-width="80" prop="storeNum" label="日期" ></el-table-column>
<el-table-column align="center" min-width="100" prop="storeName" label="门店" ></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="顾客姓名"></el-table-column>
<el-table-column align="center" min-width="100" prop="allRows" label="项目名称"></el-table-column>
<el-table-column align="center" min-width="100" prop="cashRows" label="金额"></el-table-column>
<el-table-column align="center" min-width="100" prop="courseRows" label="数量"></el-table-column>
<el-table-column align="center" min-width="100" prop="rechargeRows" label="入账单据号"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="跟单员工"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="跟单管理层"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="备注"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="备注"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
dateChange(date){
},
exit(){
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
const formattedTime = `${year}-${month}-${day}`;
return formattedTime;
},
init(){
this.loading = true
}
}
};
</script>
<style scoped>
</style>

@ -8,16 +8,20 @@
<el-button size="mini" @click="del" type="primary" v-role="6006001"></el-button>
</div>
<div class="block">
<el-select filterable default-first-option clearable v-model="storeId" placeholder="请选择" v-if="headOffice">
<el-option v-for="(item,index) in options" :key="index" :label="item.storeNum + '-' + item.storeName" :value="item.id">
</el-option>
</el-select>
<span class="demonstration padding-left-xs">选择日</span>
<el-date-picker v-model="days" :picker-options="pickerOptions" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-button type="primary" size="mini" @click="changeMonth"></el-button>
<el-button type="primary" size="mini" @click="changeMonth" :disabled="disabled">查询</el-button>
<el-button size="mini" type="primary" @click="exit()"></el-button>
<el-button size="mini" type="primary" @click="exits()"></el-button>
</div>
</div>
<el-table @row-dblclick="confirm" :data="tableDate" :header-cell-style="{
<el-table @row-dblclick="confirm" v-loading="loading" :data="tableDate" :header-cell-style="{
background: 'linear-gradient(#6cb3ff, #1873d4)',
color: '#eeeeee',
}" :summary-method="getSummaries" show-summary border max-height="700">
@ -36,7 +40,7 @@
<el-table-column align="center" min-width="80" prop="courseOfTreatmentYJ" label="疗程业绩">
<template slot-scope="scope">
{{scope.row.courseOfTreatmentYJ?scope.row.courseOfTreatmentYJ:'--'}}
{{ scope.row.courseOfTreatmentYJ }}
</template>
</el-table-column>
<el-table-column align="center" min-width="80" prop="lcCardyj" label="充值卡售疗程">
@ -130,6 +134,7 @@ import {
exportachi,
exportachiwhole,
} from "@/api/statistics.js";
import { organizations } from "@/api/storeManage.js";
import { partten } from "../../../../partten/index";
import perform from "./examine/index";
export default {
@ -137,6 +142,11 @@ export default {
components: { perform },
data() {
return {
headOffice: sessionStorage.getItem("headOffice") * 1,
storeId:'',
options:[],
disabled:false,
loading:false,
days:'',
tableDate: [{}],
month: partten.months,
@ -175,14 +185,33 @@ export default {
let sDate = this.formatTime(new Date(), "YYYY-MM-DD 00:00:00");
let eDate = this.formatTime(new Date(), "YYYY-MM-DD 23:59:59");
this.days = [sDate, eDate];
this.getData()
this.changeMonth(this.days)
},
methods: {
async getData() {
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
this.options = res.rows;
} else {
this.$alert(res.message, "获取门店信息", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
exit() {
let date1 = this.formatTime(this.days[0], "YYYY-MM-DD 00:00:00");
let date2 = this.formatTime(this.days[1], "YYYY-MM-DD 23:59:59");
let form = { startDate: date1, endDate: date2 };
if(this.storeId){
form.storeId = this.storeId
}
exportachi(form).then((res) => {
let blob = new Blob([res]);
var a = document.createElement("a");
@ -198,6 +227,7 @@ export default {
let date1 = this.formatTime(this.days[0], "YYYY-MM-DD 00:00:00");
let date2 = this.formatTime(this.days[1], "YYYY-MM-DD 23:59:59");
let form = { startDate: date1, endDate: date2 };
if(this.storeId)form.storeId = this.storeId
exportachiwhole(form).then((res) => {
let blob = new Blob([res]);
var a = document.createElement("a");
@ -264,12 +294,19 @@ export default {
let date = this.formatTime(this.days[1], "YYYY-MM-DD 23:59:59");
var form = { startDate: this.days[0], endDate: date };
let month = this.formatTime(this.month, "YYYY-MM");
this.loading = true
this.disabled = true
if(this.storeId)form.storeId = this.storeId
achiCommListsgroup(form).then((res) => {
this.loading = false
this.disabled = false
if (res.code == "000000") {
res.rows.forEach((item) => {
item.baseSalary = item.baseSalary == null ? 0 : item.baseSalary * 1;
item.commSalary = item.commSalary == null ? 0 : item.commSalary * 1;
item.sumNumber = (item.baseSalary + item.commSalary).toFixed(2) * 1;
item.cashcxyj = item.cashcxyj?item.cashcxyj:0
item.courseOfTreatmentYJ = item.courseOfTreatmentYJ?item.courseOfTreatmentYJ:0
item.startDate = form.startDate;
item.endDate = form.endDate;
console.log(item);

@ -0,0 +1,66 @@
<template>
<div>
<div class="staffRanking_header padding-bottom-xs">
<div></div>
<div class="block">
<el-date-picker
v-model="Time"
placeholder="选择月份"
type="month"
range-separator="至"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" show-summary border max-height="600" ref="table">
<el-table-column align="center" min-width="80" prop="storeNum" label="门店" ></el-table-column>
<el-table-column align="center" min-width="100" prop="storeName" label="职位" ></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="姓名"></el-table-column>
<el-table-column align="center" min-width="100" label="项目明细">
<el-table-column align="center" min-width="100" prop="date" label="客人会员卡号"></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="售产品/现金服务名称"></el-table-column>
</el-table-column>
<el-table-column align="center" min-width="100" prop="cashRows" label="金额"></el-table-column>
<el-table-column align="center" min-width="100" prop="courseRows" label="跟单员工签名"></el-table-column>
<el-table-column align="center" min-width="100" prop="rechargeRows" label="收银签名"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="部门经理签名"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="总经理签名"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
dateChange(date){
},
exit(){
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
const formattedTime = `${year}-${month}-${day}`;
return formattedTime;
},
init(){
this.loading = true
}
}
};
</script>
<style scoped>
</style>

@ -67,7 +67,7 @@
<el-table-column align="center" prop="date" label="日期"></el-table-column>
<el-table-column align="center" label="总营业额" prop="sum">
<template slot-scope="scope">
{{ scope.row.sum.toFixed(0) }}
{{ scope.row.sum }}
</template>
</el-table-column>
<el-table-column align="center" label="充值业绩" prop="rechargeMoneys"></el-table-column>

@ -6,7 +6,7 @@
<span class="demonstration padding-left-xs">选择日</span>
<el-date-picker v-model="days" :picker-options="pickerOptions" type="daterange" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-button type="primary" size="mini" @click="getData"></el-button>
<el-button type="primary" size="mini" @click="getData" :disabled="disabled">查询</el-button>
</div>
<div class="block">
</div>
@ -27,6 +27,7 @@ export default {
components: { perform ,Forms},
data() {
return {
disabled:false,
headOffice: sessionStorage.getItem("headOffice") * 1,
days: "",
payLists:[],
@ -106,14 +107,15 @@ export default {
this.getData();
},
getData() {
this.disabled = true
this.$refs.form.loading = true
this.queryForm.startDate = this.days[0];
this.queryForm.endDate = this.days[1];
this.queryForm.storeId = sessionStorage.getItem("storeId");
storeDailys(this.queryForm).then((res) => {
this.$refs.form.loading = false
this.disabled = false
if (res.code == "000000") {
console.log('这是什么----->',res.data.payLists)
this.tableDate = res.data.lists;
this.payLists = res.data.payLists
if(this.payLists == null){

@ -12,7 +12,7 @@
end-placeholder="结束日期"
>
</el-date-picker>
<el-button type="primary" size="mini" @click="changeMonth"></el-button>
<el-button type="primary" size="mini" @click="changeMonth" :disabled="disabled">查询</el-button>
<el-button type="primary" size="mini" @click="handleExport" :loading="butLoadIng">导出<i class="el-icon-download"></i></el-button>
</div>
</div>
@ -56,6 +56,7 @@ import { exportStoreDailys,exportStore } from "@/api/statistics.js";
export default {
data() {
return {
disabled:false,
butLoadIng:false,
days: [new Date(),new Date()],
pickerOptions: {
@ -121,7 +122,9 @@ export default {
startDate:this.days[0],
endDate:this.days[1]
}
this.disabled = true
exportStoreDailys(params).then(res=>{
this.disabled = false
this.loading = false
if(res.code == '000000'){
this.$nextTick(()=>{

@ -12,7 +12,7 @@
end-placeholder="截止日期"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="init" :disabled="disabled">查询</el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
@ -76,6 +76,7 @@ import { storeByDayDailys,exportStoreByDayDailys } from "@/api/statistics.js";
export default {
data() {
return {
disabled:false,
loading: false,
tableDate: [],
list: [],
@ -127,7 +128,9 @@ import { storeByDayDailys,exportStoreByDayDailys } from "@/api/statistics.js";
params.startTime = this.formatTime(this.Time[0], "YYYY-MM-DD 00:00:00");
params.endTime = this.formatTime(this.Time[1], "YYYY-MM-DD 23:59:59");
}
this.disabled = true
storeByDayDailys(params).then(res=>{
this.disabled = false
this.loading = false
if(res.code == '000000'){
this.list = res.data

@ -0,0 +1,78 @@
<template>
<div>
<div class="staffRanking_header padding-bottom-xs">
<div></div>
<div class="block">
<el-date-picker
v-model="Time"
placeholder="选择月份"
type="month"
range-separator="至"
>
</el-date-picker>
<el-button size="mini" type="primary" @click="init"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" show-summary border max-height="600" ref="table">
<el-table-column align="center" min-width="80" prop="storeNum" label="门店" ></el-table-column>
<el-table-column align="center" min-width="100" prop="storeName" label="日期" ></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="总收入"></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="现金/微信和银行(项目)"></el-table-column>
<el-table-column align="center" min-width="100" prop="date" label="卡销售"></el-table-column>
<el-table-column align="center" min-width="100" prop="cashRows" label="总卡付额"></el-table-column>
<el-table-column align="center" min-width="100" prop="courseRows" label="美发组项目(现金)"></el-table-column>
<el-table-column align="center" min-width="100" prop="rechargeRows" label="美容组项目(现金)"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发公司项目(现金)"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容公司项目(现金)"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发组项目(卡)"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容组项目(卡)"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发公司项目(卡)"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容公司项目(卡)"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="疗程业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="合作项目"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="总客数"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="收银"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="公司业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="公司销卡"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发部现金项目业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容部现金项目业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美发部销卡项目业绩"></el-table-column>
<el-table-column align="center" min-width="100" prop="allCashNumber" label="美容部销卡项目业绩"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
dateChange(date){
},
exit(){
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
const month = ("0" + (date.getMonth() + 1)).slice(-2);
const day = ("0" + date.getDate()).slice(-2);
const hour = ("0" + date.getHours()).slice(-2);
const minute = ("0" + date.getMinutes()).slice(-2);
const second = ("0" + date.getSeconds()).slice(-2);
const formattedTime = `${year}-${month}-${day}`;
return formattedTime;
},
init(){
this.loading = true
}
}
};
</script>
<style scoped>
</style>

@ -457,7 +457,7 @@ export default {
memberOne() {
let info = JSON.parse(sessionStorage.getItem("userInfo"));
//console.log(info);
if (partten.phoneNum.test(this.activationForm.phone)) {
// if (partten.phoneNum.test(this.activationForm.phone)) {
let form = {
mobilePhone: this.activationForm.phone,
password: this.activationForm.passwords,
@ -507,15 +507,15 @@ export default {
});
}
});
} else {
this.$alert("请输入正确的11位手机号", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
// } else {
// this.$alert("11", "", {
// confirmButtonText: "",
// confirmButtonClass: "confirmbtnFalses",
// type: "warning",
// center: true,
// callback: (action) => {},
// });
// }
},
getCode() {
this.time = 60;

@ -2,16 +2,18 @@
<div>
<div class="flex justify-start align-start">
<el-form inline>
<el-form-item label="门店编码">
<el-input class="form-width" style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="queryForm.storeNum">
<el-form-item label="门店编码" v-if="headOffice==1">
<!-- <el-input class="form-width" style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="queryForm.storeNum">
<el-button size="mini" slot="append" icon="el-icon-search" @click="openStore"></el-button>
</el-input>
</el-input> -->
<store @selecData="selecData"></store>
</el-form-item>
<el-form-item label="门店名称">
<!-- <el-form-item label="门店名称" v-if="headOffice==1">
<div class="form-width" style="width: 100px;">
{{queryForm.storeName}}
</div>
</el-form-item><br>
</el-form-item> -->
<br>
<el-form-item label="员工编码">
<el-input class="form-width" style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="queryForm.brandNumber">
<el-button size="mini" slot="append" icon="el-icon-search" @click="openStaff"></el-button>
@ -25,7 +27,7 @@
<el-form-item label="选择日">
<el-date-picker v-model="days" :picker-options="pickerOptions" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-button size="mini" type="primary" @click="changeMonth"></el-button>
<el-button size="mini" type="primary" @click="changeMonth" :disabled="disabled">查询</el-button>
<el-button size="mini" type="success" @click="exit()"></el-button>
<el-button size="mini" type="success" v-role="40013002" @click="exits()"></el-button>
</el-form-item>
@ -76,13 +78,16 @@ import {
salesmanExportachis,
exportachiMXswhole,
} from "@/api/storeManage.js";
import store from "@/components/store/radio/index";
import store from "@/components/store/select/index";
// import store from "@/components/store/radio/index";
import admin from "@/components/admin/index";
import detail from "./detail/index";
export default {
components: { store, admin, detail },
data() {
return {
headOffice: sessionStorage.getItem("headOffice") * 1, //
disabled:false,
storeId:'',
days: [],
form: {}, //
@ -127,6 +132,9 @@ export default {
};
},
methods: {
selecData(list){
this.queryForm.storeIds = list
},
//
exit() {
salesmanExportachis(this.queryForm).then((res) => {
@ -202,9 +210,13 @@ export default {
},
//
async getData() {
this.disabled = true
this.listLoading = true
this.queryForm.staffType = 1;
salesmans(this.queryForm).then((res) => {
if (res.code == "000000") {
this.disabled = false
this.listLoading = false
this.list = res.rows;
} else {
this.$alert(res.message, "提示", {

@ -71,7 +71,6 @@ import dimission from "./components/dimission";
import deactivate from "./components/deactivate";
import tostore from "./components/tostore/index";
import excel from "@/components/excel";
import Bus from "./Bus.js";
export default {
components: { onjob, dimission, deactivate, excel, tostore },
data() {

@ -14,7 +14,7 @@
</el-option>
</el-select> -->
</el-form-item>
<el-table :data="list" ref="list" v-loading="listLoading" max-height="600" :element-loading-text="elementLoadingText" @row-click="getCurrentRow" :row-class-name="rowName" @selection-change="handleSelectionChange" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table :data="list" ref="list" v-loading="listLoading" :element-loading-text="elementLoadingText" @row-click="getCurrentRow" :row-class-name="rowName" @selection-change="handleSelectionChange" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column align="center" prop="brandNumber" label="水牌号" sortable min-width="80"></el-table-column>
<el-table-column align="center" prop="staffName" label="员工名称" sortable min-width="80"></el-table-column>
@ -57,6 +57,9 @@
</el-table-column>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" @click="dialogFormVisible = false"> </el-button>
@ -86,12 +89,12 @@ export default {
pageSize: 10,
},
options: [],
total: 0, //
outShow: false,
};
},
methods: {
changeOut(e) {
console.log(123);
this.options.forEach((item) => {
if (item.storeNum == e) {
this.form.storesName = item.storeName;
@ -101,6 +104,14 @@ export default {
this.getStaffData();
this.getData();
},
handleSizeChange(val) {
this.queryForm.pageSize = val;
this.getStaffData();
},
handleCurrentChange(val) {
this.queryForm.pageNum = val;
this.getStaffData();
},
changeIn(e, row) {
let form = { ...row };
this.storeList.forEach((item) => {
@ -173,6 +184,7 @@ export default {
console.log(arr1);
staffPage(arr1).then((res) => {
if (res.code == "000000") {
this.total = res.pageInfo.total
res.pageInfo.list.forEach((item) => {
item.storeNum = null;
item.storeName = null;

@ -4,11 +4,18 @@
选择日期
<el-date-picker v-model="days" :picker-options="pickerOptions" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-button type="primary" size="mini" @click="getData"></el-button>
<el-select filterable default-first-option clearable v-model="storeId" placeholder="请选择" v-if="headOffice">
<el-option v-for="(item,index) in options" :key="index" :label="item.storeNum + '-' + item.storeName" :value="item.id">
</el-option>
</el-select>
<el-button type="primary" size="mini" @click="exit" v-if="headOffice"></el-button>
<el-button type="primary" size="mini" @click="getData" :disabled="disabled">查询</el-button>
</div>
<el-table :data="list" @row-dblclick="confirm" stripe style="width: 100%;margin-top:5px" show-summary :row-class-name="rowClassName" :header-cell-style=" {background: 'linear-gradient(#6cb3ff, #1873d4)' , color: '#eeeeee' , }">
<el-table :data="list" @row-dblclick="confirm" v-loading="loading" stripe style="width: 100%;margin-top:5px" show-summary :row-class-name="rowClassName" :header-cell-style=" {background: 'linear-gradient(#6cb3ff, #1873d4)' , color: '#eeeeee' , }">
<el-table-column align="center" prop="deptNames" label="部门" min-width="80" show-overflow-tooltip> </el-table-column>
<el-table-column align="center" prop="cashSum" label="总现金业绩" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="sumTrue" label="实业绩" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="sumFalse" label="虚业绩" min-width="80" show-overflow-tooltip></el-table-column>
<el-table-column align="center" label="充值业绩" min-width="80" show-overflow-tooltip>
<el-table-column align="center" prop="recharge" label="总业绩" min-width="80" show-overflow-tooltip> </el-table-column>
<el-table-column align="center" prop="rechargecar" label="充值" min-width="80" show-overflow-tooltip> </el-table-column>
@ -77,7 +84,7 @@
</template>
<script>
import { departmentPerformance } from "@/api/storeManage.js";
import { departmentPerformance,organizations,exportachi } from "@/api/storeManage.js";
import detail from "./components/index";
export default {
@ -85,6 +92,9 @@ export default {
name:"dept",
data() {
return {
headOffice: sessionStorage.getItem("headOffice") * 1,
options:[],
storeId:"",
pickerOptions: {
//
onPick: ({ maxDate, minDate }) => {
@ -114,6 +124,8 @@ export default {
}
},
},
disabled:false,
loading:false,
days: [], //
total: 0, //
list: [], //
@ -126,6 +138,39 @@ export default {
};
},
methods: {
exit(){
let date1 = this.formatTime(this.days[0], "YYYY-MM-DD 00:00:00");
let date2 = this.formatTime(this.days[1], "YYYY-MM-DD 23:59:59");
let form = { startDate: date1, endDate: date2 };
if(this.storeId){
form.storeId = this.storeId
}
exportachi(form).then(res=>{
let blob = new Blob([res]);
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
console.log(url);
a.href = url;
a.download = "部门业绩表.xlsx";
a.click();
window.URL.revokeObjectURL(url);
})
},
async getStore() {
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
this.options = res.rows;
} else {
this.$alert(res.message, "获取门店信息", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
//
rowClassName({ row, rowIndex }) {
row.index = rowIndex;
@ -152,29 +197,35 @@ export default {
let date1 = this.formatTime(this.days[0], "YYYY-MM-DD 00:00:00");
let date2 = this.formatTime(this.days[1], "YYYY-MM-DD 23:59:59");
let form = { startDate: date1, endDate: date2 };
departmentPerformance(form)
.then((res) => {
if (res.code == "000000") {
this.list = res.rows;
this.list.forEach((item)=>{
item.courseTotal=item.courseCash
item.cashSum = (item.recharge + item.courseSum + item.cashierCash).toFixed(2)*1
item.cooperationCardAmount = item.cooperationCardAmount?item.cooperationCardAmount.toFixed(2)*1:0
item.cooperationAchi = item.cooperationAchi?item.cooperationAchi.toFixed(2)*1:0
})
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
})
.catch((err) => {
//console.log(err);
});
if(this.storeId){
form.storeId = this.storeId
}
this.loading = true
this.disabled = true
departmentPerformance(form).then((res) => {
this.loading = false
this.disabled = false
if (res.code == "000000") {
this.list = res.rows;
this.list.forEach((item)=>{
item.courseTotal=item.courseCash
item.cashSum = (item.recharge + item.courseSum + item.cashierCash).toFixed(2)*1
item.cooperationCardAmount = item.cooperationCardAmount?item.cooperationCardAmount.toFixed(2)*1:0
item.sumTrue = (item.cashSum - item.cooperationAchi - item.hkCooperationAmount)
item.sumFalse = (item.cooperationAchi + item.hkCooperationAmount)
})
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
}).catch((err) => {
//console.log(err);
});
},
},
created() {
@ -182,6 +233,7 @@ export default {
let eDate = this.formatTime(new Date(), "YYYY-MM-DD 23:59:59");
this.days = [sDate, eDate];
this.getData();
this.getStore()
let list = JSON.parse(sessionStorage.getItem("list"));
list.forEach((item) => {
if (item.id == 4006001) {

@ -3,15 +3,17 @@
<div class="flex justify-start align-start">
<el-form inline>
<el-form-item label="门店编码" v-if="headOffice==1">
<el-input class="form-width" style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="queryForm.storeNum">
<store @selecData="selecData"></store>
<!-- <el-input class="form-width" style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="queryForm.storeNum">
<el-button size="mini" slot="append" icon="el-icon-search" @click="openStore"></el-button>
</el-input>
</el-input> -->
</el-form-item>
<el-form-item label="门店名称" v-if="headOffice==1">
<br>
<!-- <el-form-item label="门店名称" v-if="headOffice==1">
<div class="form-width">
{{queryForm.storeName}}
</div>
</el-form-item><br>
</el-form-item><br> -->
<el-form-item label="高管编码">
<el-input class="form-width" style="padding-left:0px;" ref="" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" maxlength="11" v-model="queryForm.brandNumber">
<el-button size="mini" slot="append" icon="el-icon-search" @click="openStaff"></el-button>
@ -25,17 +27,10 @@
<el-form-item label="选择日">
<el-date-picker v-model="days" :picker-options="pickerOptions" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-button size="mini" type="primary" @click="changeMonth"></el-button>
<el-button size="mini" type="primary" @click="changeMonth" :disabled="disabled">查询</el-button>
<el-button size="mini" type="success" @click="exit()"></el-button>
</el-form-item>
</el-form>
<!-- <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>
<el-button size="mini" type="success" @click="exit()"></el-button>
<el-button size="mini" type="success" v-role="40012002" @click="exits()"></el-button>
</div> -->
</div>
<el-table border v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText" @row-dblclick="rowdbClick" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column show-overflow-tooltip align="center" min-width="120" prop="startDate" label="开始时间"></el-table-column>
@ -78,7 +73,8 @@ import {
salesmanExportachi,
exportachiMXwhole,
} from "@/api/storeManage.js";
import store from "@/components/store/radio/index";
import store from "@/components/store/select/index";
// import store from "@/components/store/radio/index";
import manager from "@/components/manager/index";
import detail from "./detail/index";
import staff from "@/components/staff/index";
@ -86,6 +82,8 @@ export default {
components: { store, manager, detail, staff },
data() {
return {
options:[],
disabled:false,
days: [], //
form: {}, //
list: [], //
@ -120,9 +118,7 @@ export default {
0
).getDate() -
new Date(self.choiceDate).getDate()) *
24 *
3600 *
1000;
24 * 3600 * 1000;
let minTime = self.choiceDate - startDay;
let maxTime = self.choiceDate + endDay;
return time.getTime() < minTime || time.getTime() > maxTime;
@ -132,6 +128,9 @@ export default {
};
},
methods: {
selecData(list){
this.queryForm.storeIds = list
},
//
exit() {
salesmanExportachi(this.queryForm).then((res) => {
@ -169,10 +168,6 @@ export default {
detailData() {},
//
storeData(v) {
// console.log(v);
// this.queryForm.storeId = v.id;
// this.queryForm.storeNum = v.storeNum;
// this.queryForm.storeName = v.storeName;
this.$set(this.queryForm,'storeId',v.id)
this.$set(this.queryForm,'storeNum',v.storeNum)
this.$set(this.queryForm,'storeName',v.storeName)
@ -221,12 +216,16 @@ export default {
},
//
async getData() {
this.disabled = true
this.listLoading = true
if (this.headOffice == 0) {
this.queryForm.storeId = this.storeId;
this.queryForm.storeName = this.storeName;
}
this.queryForm.staffType = 0;
salesman(this.queryForm).then((res) => {
this.listLoading = false
this.disabled = false
if (res.code == "000000") {
this.list = res.rows;
} else {

@ -882,7 +882,6 @@ export default {
this.$message.success({ message: "已刷新最新数据" });
this.refreshtext = false;
}
console.log( res.pageInfo )
var headOffice = sessionStorage.getItem("headOffice");
var storeName = sessionStorage.getItem("storeName");
var storeId = sessionStorage.getItem("storeId");

@ -0,0 +1,82 @@
<template>
<el-dialog
title="同步多门店数据"
:visible.sync="showVisible"
width="30%"
:before-close="handleClose"
>
<div>
<el-select ref="select" multiple filterable v-model="storeId" placeholder="请选择门店">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancel" size='mini'> </el-button>
<el-button type="primary" @click="handleConfirm" :loading='loading' size='mini' :disabled="storeId == []"> </el-button>
</span>
</el-dialog>
</template>
<script>
import { organizations } from "@/api/storeManage.js";
export default {
props:['storeIds'],
watch:{
showVisible:{
handler(show){
if(show){
this.storeId = [this.storeIds]
this.init()
}
},
immediate:true
}
},
data() {
return {
loading:false,
showVisible:false,
storeId:[],
options:[],
form:{},
};
},
methods:{
handleConfirm(){
this.$emit('confirm',this.storeId)
},
handleCancel(){
this.showVisible = false
this.storeId = []
this.$emit('cancel')
},
handleClose(done){
this.storeId = []
done();
},
//
init(){
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
}
};
</script>
<style scoped>
</style>

@ -51,7 +51,6 @@ export default {
// });
// }else{
let store = this.options[this.options.findIndex(item=>item.id === this.storeId)]
console.log(store)
this.$emit('getData',null,this.storeId,true)
this.$emit('updataStore',store.storeNum + '-' + store.storeName)
sessionStorage.setItem('formData',JSON.stringify(this.form))

@ -351,12 +351,14 @@
</el-row>
</el-form>
</div>
<store ref="shop" @getData='getData' @updataStore='updataStore'/>
<store ref="shop" @getData='getData' @updataStore='updataStore' />
<multiple-store ref="multipleStore" @confirm="handleConfirm" @cancel="handleCancel" :storeIds="storeId"/>
</div>
</template>
<script>
import store from './component/store.vue'
import multipleStore from './component/multipleStore.vue'
import {
editstorePara,
storeParaList,
@ -365,10 +367,12 @@ import {
} from "@/api/storeManage.js";
export default {
components:{
store
store,multipleStore
},
data() {
return {
storeId:"",
data:{},
storeNum:'',
isTrue:null,
headOffice: sessionStorage.getItem("headOffice") * 1, // 0 1
@ -411,6 +415,87 @@ export default {
},
computed: {},
methods: {
handleCancel(){
let storeIdList = [this.storeId]
totalData(this.data,storeIdList).then(res=>{
this.loading = false
this.data = {}
if(res.code == '000000'){
this.getData();
this.$message.success({ message: res.message });
this.editInput = false;
this.isTrue = false
this.storeId = ''
if (this.dataList.allowValid == 1) {
this.$alert(
"充值/疗程设置有效时间 , 请检查相关充值类别/项目有无设置有效期 , 若没有设置有效日期请前往充值类别/项目 设置有效期限 , 没有设置有效期限会影响项目运行",
"提示",
{
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.getData();
},
}
);
}
this.updataStoreNum()
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.updataStoreNum()
},
});
}
})
},
handleConfirm(storeIdList){
totalData(this.data,storeIdList).then(res=>{
this.loading = false
this.data = {}
if(res.code == '000000'){
this.storeId = ''
this.getData();
this.$message.success({ message: res.message });
this.editInput = false;
this.isTrue = false
this.$refs.multipleStore.showVisible = false
this.$refs.multipleStore.storeId = []
if (this.dataList.allowValid == 1) {
this.$alert(
"充值/疗程设置有效时间 , 请检查相关充值类别/项目有无设置有效期 , 若没有设置有效日期请前往充值类别/项目 设置有效期限 , 没有设置有效期限会影响项目运行",
"提示",
{
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.getData();
},
}
);
}
this.updataStoreNum()
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.updataStoreNum()
},
});
}
})
},
shopShow(){
this.$refs.shop.showVisible = true
},
@ -440,6 +525,7 @@ export default {
} else {
if(storeId){
page = { storeId }
this.storeId = storeId
}
if(isTrue)page.type = 0
storeParaList(page).then((res) => {
@ -1127,40 +1213,50 @@ export default {
...dataList,
toreIds:params.toreIds
}
totalData(data).then(res=>{
this.loading = false
if(res.code == '000000'){
this.getData();
this.$message.success({ message: res.message });
this.editInput = false;
this.isTrue = false
if (this.dataList.allowValid == 1) {
this.$alert(
"充值/疗程设置有效时间 , 请检查相关充值类别/项目有无设置有效期 , 若没有设置有效日期请前往充值类别/项目 设置有效期限 , 没有设置有效期限会影响项目运行",
"提示",
{
this.$confirm('是否选择多门店同时修改?', '多门店修改', {
distinguishCancelAndClose: true,
confirmButtonText: '是',
cancelButtonText: '否'
}).then(()=>{
this.$refs.multipleStore.showVisible = true
this.data = data
}).catch(()=>{
let storeIdList = [this.storeId]
totalData(data,storeIdList).then(res=>{
this.loading = false
if(res.code == '000000'){
this.getData();
this.$message.success({ message: res.message });
this.editInput = false;
this.isTrue = false
if (this.dataList.allowValid == 1) {
this.$alert(
"充值/疗程设置有效时间 , 请检查相关充值类别/项目有无设置有效期 , 若没有设置有效日期请前往充值类别/项目 设置有效期限 , 没有设置有效期限会影响项目运行",
"提示",
{
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.getData();
},
}
);
}
this.updataStoreNum()
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.getData();
this.updataStoreNum()
},
}
);
}
this.updataStoreNum()
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.updataStoreNum()
},
});
}
});
}
})
})
}else{
editstorePara(dataList).then((res) => {

@ -1143,6 +1143,78 @@ const router = new VueRouter({
index: "IndividualPerformance"
}
},
{
path: "/scalpProject",
component: () =>
import("../pages/statistics/scalpProject/index.vue"),
meta: {
title: "头皮项目登记表",
index: "scalpProject"
}
},
{
path: "/monCommission",
component: () =>
import("../pages/statistics/monCommission/index.vue"),
meta: {
title: "每日业绩明细表",
index: "monCommission"
}
},
{
path: "/cashReward",
component: () =>
import("../pages/statistics/cashReward/index.vue"),
meta: {
title: "门店现金奖励表",
index: "cashReward"
}
},
{
path: "/monthlyRegistrationDetails",
component: () =>
import("../pages/statistics/cashReward/index.vue"),
meta: {
title: "奖励登记明细",
index: "monthlyRegistrationDetails"
}
},
{
path: "/projectPinCard",
component: () =>
import("../pages/statistics/projectPinCard/index.vue"),
meta: {
title: "大项目销卡登记表",
index: "projectPinCard"
}
},
{
path: "/storeConsultant",
component: () =>
import("../pages/statistics/storeConsultant/index.vue"),
meta: {
title: "管理层每日业绩表",
index: "storeConsultant"
}
},
{
path: "/storeTurnover",
component: () =>
import("../pages/statistics/storeTurnover/index.vue"),
meta: {
title: "门店营业额登记表",
index: "storeTurnover"
}
},
{
path: "/productStatistics",
component: () =>
import("../pages/statistics/productStatistics/index.vue"),
meta: {
title: "产品统计",
index: "productStatistics"
}
},
// 报表统计结束----
]
}

Loading…
Cancel
Save